diff options
author | Richard Purdie <rpurdie@rpsys.net> | 2006-04-18 18:18:54 -0400 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2006-04-18 18:18:54 -0400 |
commit | 608c783aaa0abe39e3672f65b786cdade8db6df9 (patch) | |
tree | 63c2ef227582cc4506b4d965ba306d62ea919c9a /arch/arm/mach-pxa | |
parent | 7ea3bbbc8997df1ae7dc4e736d163dabc00f4721 (diff) |
[ARM] 3479/1: Corgi SSP: Fix potential concurrent access problem
Patch from Richard Purdie
corgi_ssp_probe() should not access GPDR directly but should use
pxa_gpio_mode() which has appropriate locking and other safeguards.
Signed-off-by: Richard Purdie <rpurdie@rpsys.net>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'arch/arm/mach-pxa')
-rw-r--r-- | arch/arm/mach-pxa/corgi_ssp.c | 9 |
1 files changed, 3 insertions, 6 deletions
diff --git a/arch/arm/mach-pxa/corgi_ssp.c b/arch/arm/mach-pxa/corgi_ssp.c index b371d723635f..8a25a1c8019f 100644 --- a/arch/arm/mach-pxa/corgi_ssp.c +++ b/arch/arm/mach-pxa/corgi_ssp.c | |||
@@ -196,12 +196,9 @@ static int __init corgi_ssp_probe(struct platform_device *dev) | |||
196 | int ret; | 196 | int ret; |
197 | 197 | ||
198 | /* Chip Select - Disable All */ | 198 | /* Chip Select - Disable All */ |
199 | GPDR(ssp_machinfo->cs_lcdcon) |= GPIO_bit(ssp_machinfo->cs_lcdcon); /* output */ | 199 | pxa_gpio_mode(ssp_machinfo->cs_lcdcon | GPIO_OUT | GPIO_DFLT_HIGH); |
200 | GPSR(ssp_machinfo->cs_lcdcon) = GPIO_bit(ssp_machinfo->cs_lcdcon); /* High - Disable LCD Control/Timing Gen */ | 200 | pxa_gpio_mode(ssp_machinfo->cs_max1111 | GPIO_OUT | GPIO_DFLT_HIGH); |
201 | GPDR(ssp_machinfo->cs_max1111) |= GPIO_bit(ssp_machinfo->cs_max1111); /* output */ | 201 | pxa_gpio_mode(ssp_machinfo->cs_ads7846 | GPIO_OUT | GPIO_DFLT_HIGH); |
202 | GPSR(ssp_machinfo->cs_max1111) = GPIO_bit(ssp_machinfo->cs_max1111); /* High - Disable MAX1111*/ | ||
203 | GPDR(ssp_machinfo->cs_ads7846) |= GPIO_bit(ssp_machinfo->cs_ads7846); /* output */ | ||
204 | GPSR(ssp_machinfo->cs_ads7846) = GPIO_bit(ssp_machinfo->cs_ads7846); /* High - Disable ADS7846*/ | ||
205 | 202 | ||
206 | ret = ssp_init(&corgi_ssp_dev, ssp_machinfo->port, 0); | 203 | ret = ssp_init(&corgi_ssp_dev, ssp_machinfo->port, 0); |
207 | 204 | ||