mirror of https://gitee.com/openkylin/linux.git
ARM: sa1111: provide a generic way to prevent devices from registering
Some platforms don't want certain devices to be registered, because, eg, the interface is not wired. Provide a way for platforms to prevent various devices from being registered via a devid bitmask in the platform data. Acked-by: Nicolas Pitre <nico@linaro.org> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
This commit is contained in:
parent
e5c0fc4185
commit
07be45f57e
|
@ -833,11 +833,8 @@ __sa1111_probe(struct device *me, struct resource *mem, int irq)
|
||||||
g_sa1111 = sachip;
|
g_sa1111 = sachip;
|
||||||
|
|
||||||
has_devs = ~0;
|
has_devs = ~0;
|
||||||
if (machine_is_assabet() || machine_is_jornada720() ||
|
if (pd)
|
||||||
machine_is_badge4())
|
has_devs &= ~pd->disable_devs;
|
||||||
has_devs &= ~SA1111_DEVID_PS2_MSE;
|
|
||||||
else
|
|
||||||
has_devs &= ~SA1111_DEVID_SAC;
|
|
||||||
|
|
||||||
for (i = 0; i < ARRAY_SIZE(sa1111_devices); i++)
|
for (i = 0; i < ARRAY_SIZE(sa1111_devices); i++)
|
||||||
if (sa1111_devices[i].devid & has_devs)
|
if (sa1111_devices[i].devid & has_devs)
|
||||||
|
|
|
@ -584,6 +584,7 @@ void sa1111_set_sleep_io(struct sa1111_dev *sadev, unsigned int bits, unsigned i
|
||||||
|
|
||||||
struct sa1111_platform_data {
|
struct sa1111_platform_data {
|
||||||
int irq_base; /* base for cascaded on-chip IRQs */
|
int irq_base; /* base for cascaded on-chip IRQs */
|
||||||
|
unsigned disable_devs;
|
||||||
void *data;
|
void *data;
|
||||||
int (*enable)(void *, unsigned);
|
int (*enable)(void *, unsigned);
|
||||||
void (*disable)(void *, unsigned);
|
void (*disable)(void *, unsigned);
|
||||||
|
|
|
@ -223,6 +223,7 @@ static struct resource sa1111_resources[] = {
|
||||||
|
|
||||||
static struct sa1111_platform_data sa1111_info = {
|
static struct sa1111_platform_data sa1111_info = {
|
||||||
.irq_base = LUBBOCK_SA1111_IRQ_BASE,
|
.irq_base = LUBBOCK_SA1111_IRQ_BASE,
|
||||||
|
.disable_devs = SA1111_DEVID_SAC,
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct platform_device sa1111_device = {
|
static struct platform_device sa1111_device = {
|
||||||
|
|
|
@ -66,6 +66,7 @@ static void badge4_sa1111_disable(void *data, unsigned devid)
|
||||||
|
|
||||||
static struct sa1111_platform_data sa1111_info = {
|
static struct sa1111_platform_data sa1111_info = {
|
||||||
.irq_base = IRQ_BOARD_END,
|
.irq_base = IRQ_BOARD_END,
|
||||||
|
.disable_devs = SA1111_DEVID_PS2_MSE,
|
||||||
.enable = badge4_sa1111_enable,
|
.enable = badge4_sa1111_enable,
|
||||||
.disable = badge4_sa1111_disable,
|
.disable = badge4_sa1111_disable,
|
||||||
};
|
};
|
||||||
|
|
|
@ -211,6 +211,7 @@ static struct resource sa1111_resources[] = {
|
||||||
|
|
||||||
static struct sa1111_platform_data sa1111_info = {
|
static struct sa1111_platform_data sa1111_info = {
|
||||||
.irq_base = IRQ_BOARD_END,
|
.irq_base = IRQ_BOARD_END,
|
||||||
|
.disable_devs = SA1111_DEVID_PS2_MSE,
|
||||||
};
|
};
|
||||||
|
|
||||||
static u64 sa1111_dmamask = 0xffffffffUL;
|
static u64 sa1111_dmamask = 0xffffffffUL;
|
||||||
|
|
|
@ -242,6 +242,7 @@ static struct resource sa1111_resources[] = {
|
||||||
|
|
||||||
static struct sa1111_platform_data sa1111_info = {
|
static struct sa1111_platform_data sa1111_info = {
|
||||||
.irq_base = IRQ_BOARD_END,
|
.irq_base = IRQ_BOARD_END,
|
||||||
|
.disable_devs = SA1111_DEVID_PS2_MSE,
|
||||||
};
|
};
|
||||||
|
|
||||||
static u64 sa1111_dmamask = 0xffffffffUL;
|
static u64 sa1111_dmamask = 0xffffffffUL;
|
||||||
|
|
Loading…
Reference in New Issue