Commit 07be45f5 authored by Russell King's avatar Russell King

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: default avatarNicolas Pitre <nico@linaro.org>
Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
parent e5c0fc41
...@@ -833,11 +833,8 @@ __sa1111_probe(struct device *me, struct resource *mem, int irq) ...@@ -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 ...@@ -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[] = { ...@@ -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) ...@@ -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[] = { ...@@ -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[] = { ...@@ -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;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment