diff options
author | Russell King <rmk+kernel@arm.linux.org.uk> | 2012-01-26 08:34:21 -0500 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2012-03-24 07:29:52 -0400 |
commit | 07be45f57ebe037977c8033a008e9012617b1915 (patch) | |
tree | a3b7f11eb00c78e5817c68412cad0e412a5c55db /arch | |
parent | e5c0fc4185c551c270868dcb6573604db2bc3171 (diff) |
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>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/arm/common/sa1111.c | 7 | ||||
-rw-r--r-- | arch/arm/include/asm/hardware/sa1111.h | 1 | ||||
-rw-r--r-- | arch/arm/mach-pxa/lubbock.c | 1 | ||||
-rw-r--r-- | arch/arm/mach-sa1100/badge4.c | 1 | ||||
-rw-r--r-- | arch/arm/mach-sa1100/jornada720.c | 1 | ||||
-rw-r--r-- | arch/arm/mach-sa1100/neponset.c | 1 |
6 files changed, 7 insertions, 5 deletions
diff --git a/arch/arm/common/sa1111.c b/arch/arm/common/sa1111.c index 4bdf1bb283dc..17694cf64aa6 100644 --- a/arch/arm/common/sa1111.c +++ b/arch/arm/common/sa1111.c | |||
@@ -833,11 +833,8 @@ __sa1111_probe(struct device *me, struct resource *mem, int irq) | |||
833 | g_sa1111 = sachip; | 833 | g_sa1111 = sachip; |
834 | 834 | ||
835 | has_devs = ~0; | 835 | has_devs = ~0; |
836 | if (machine_is_assabet() || machine_is_jornada720() || | 836 | if (pd) |
837 | machine_is_badge4()) | 837 | has_devs &= ~pd->disable_devs; |
838 | has_devs &= ~SA1111_DEVID_PS2_MSE; | ||
839 | else | ||
840 | has_devs &= ~SA1111_DEVID_SAC; | ||
841 | 838 | ||
842 | for (i = 0; i < ARRAY_SIZE(sa1111_devices); i++) | 839 | for (i = 0; i < ARRAY_SIZE(sa1111_devices); i++) |
843 | if (sa1111_devices[i].devid & has_devs) | 840 | if (sa1111_devices[i].devid & has_devs) |
diff --git a/arch/arm/include/asm/hardware/sa1111.h b/arch/arm/include/asm/hardware/sa1111.h index 37ad29d482f4..74afe20fffff 100644 --- a/arch/arm/include/asm/hardware/sa1111.h +++ b/arch/arm/include/asm/hardware/sa1111.h | |||
@@ -584,6 +584,7 @@ void sa1111_set_sleep_io(struct sa1111_dev *sadev, unsigned int bits, unsigned i | |||
584 | 584 | ||
585 | struct sa1111_platform_data { | 585 | struct sa1111_platform_data { |
586 | int irq_base; /* base for cascaded on-chip IRQs */ | 586 | int irq_base; /* base for cascaded on-chip IRQs */ |
587 | unsigned disable_devs; | ||
587 | void *data; | 588 | void *data; |
588 | int (*enable)(void *, unsigned); | 589 | int (*enable)(void *, unsigned); |
589 | void (*disable)(void *, unsigned); | 590 | void (*disable)(void *, unsigned); |
diff --git a/arch/arm/mach-pxa/lubbock.c b/arch/arm/mach-pxa/lubbock.c index 6ebd276aebeb..6bb3f47b1f14 100644 --- a/arch/arm/mach-pxa/lubbock.c +++ b/arch/arm/mach-pxa/lubbock.c | |||
@@ -223,6 +223,7 @@ static struct resource sa1111_resources[] = { | |||
223 | 223 | ||
224 | static struct sa1111_platform_data sa1111_info = { | 224 | static struct sa1111_platform_data sa1111_info = { |
225 | .irq_base = LUBBOCK_SA1111_IRQ_BASE, | 225 | .irq_base = LUBBOCK_SA1111_IRQ_BASE, |
226 | .disable_devs = SA1111_DEVID_SAC, | ||
226 | }; | 227 | }; |
227 | 228 | ||
228 | static struct platform_device sa1111_device = { | 229 | static struct platform_device sa1111_device = { |
diff --git a/arch/arm/mach-sa1100/badge4.c b/arch/arm/mach-sa1100/badge4.c index d84924993bad..8fb80f02c2a9 100644 --- a/arch/arm/mach-sa1100/badge4.c +++ b/arch/arm/mach-sa1100/badge4.c | |||
@@ -66,6 +66,7 @@ static void badge4_sa1111_disable(void *data, unsigned devid) | |||
66 | 66 | ||
67 | static struct sa1111_platform_data sa1111_info = { | 67 | static struct sa1111_platform_data sa1111_info = { |
68 | .irq_base = IRQ_BOARD_END, | 68 | .irq_base = IRQ_BOARD_END, |
69 | .disable_devs = SA1111_DEVID_PS2_MSE, | ||
69 | .enable = badge4_sa1111_enable, | 70 | .enable = badge4_sa1111_enable, |
70 | .disable = badge4_sa1111_disable, | 71 | .disable = badge4_sa1111_disable, |
71 | }; | 72 | }; |
diff --git a/arch/arm/mach-sa1100/jornada720.c b/arch/arm/mach-sa1100/jornada720.c index ee121d6f0480..dcd6d026aa68 100644 --- a/arch/arm/mach-sa1100/jornada720.c +++ b/arch/arm/mach-sa1100/jornada720.c | |||
@@ -211,6 +211,7 @@ static struct resource sa1111_resources[] = { | |||
211 | 211 | ||
212 | static struct sa1111_platform_data sa1111_info = { | 212 | static struct sa1111_platform_data sa1111_info = { |
213 | .irq_base = IRQ_BOARD_END, | 213 | .irq_base = IRQ_BOARD_END, |
214 | .disable_devs = SA1111_DEVID_PS2_MSE, | ||
214 | }; | 215 | }; |
215 | 216 | ||
216 | static u64 sa1111_dmamask = 0xffffffffUL; | 217 | static u64 sa1111_dmamask = 0xffffffffUL; |
diff --git a/arch/arm/mach-sa1100/neponset.c b/arch/arm/mach-sa1100/neponset.c index b4fa53a1427e..b40a7192f09f 100644 --- a/arch/arm/mach-sa1100/neponset.c +++ b/arch/arm/mach-sa1100/neponset.c | |||
@@ -242,6 +242,7 @@ static struct resource sa1111_resources[] = { | |||
242 | 242 | ||
243 | static struct sa1111_platform_data sa1111_info = { | 243 | static struct sa1111_platform_data sa1111_info = { |
244 | .irq_base = IRQ_BOARD_END, | 244 | .irq_base = IRQ_BOARD_END, |
245 | .disable_devs = SA1111_DEVID_PS2_MSE, | ||
245 | }; | 246 | }; |
246 | 247 | ||
247 | static u64 sa1111_dmamask = 0xffffffffUL; | 248 | static u64 sa1111_dmamask = 0xffffffffUL; |