summaryrefslogtreecommitdiff
path: root/arch/arm/plat-samsung
diff options
context:
space:
mode:
authorHector Palacios <hector.palacios@digi.com>2011-08-30 12:40:47 +0200
committerHector Palacios <hector.palacios@digi.com>2011-09-01 10:36:35 +0200
commit46da238bb6549d53af0014ac7565aad67b92e098 (patch)
treee7d47752f648b0719d912441ddcab6a5b67a26b5 /arch/arm/plat-samsung
parent41bea1607db301b1dcf739fb30736d0f4e59f5a6 (diff)
gpio: ported special handling of s3c PORTA gpios
With the merge to 2.6.35 kernel, the special handling of s3c PORTA gpios was lost. This commit fixes it. Signed-off-by: Hector Palacios <hector.palacios@digi.com>
Diffstat (limited to 'arch/arm/plat-samsung')
-rw-r--r--arch/arm/plat-samsung/gpio.c19
1 files changed, 12 insertions, 7 deletions
diff --git a/arch/arm/plat-samsung/gpio.c b/arch/arm/plat-samsung/gpio.c
index b83a83351cea..2fb267fd2bb5 100644
--- a/arch/arm/plat-samsung/gpio.c
+++ b/arch/arm/plat-samsung/gpio.c
@@ -101,13 +101,18 @@ static void s3c_gpiolib_set(struct gpio_chip *chip,
unsigned long dat;
s3c_gpio_lock(ourchip, flags);
-
- dat = __raw_readl(base + 0x04);
- dat &= ~(1 << offset);
- if (value)
- dat |= 1 << offset;
- __raw_writel(dat, base + 0x04);
-
+ if (S3C2410_GPACON == base) {
+ /* PORT A, special handling */
+ s3c2443_gpio_setpin(offset, value);
+ }
+ else {
+ /* rest of PORTs */
+ dat = __raw_readl(base + 0x04);
+ dat &= ~(1 << offset);
+ if (value)
+ dat |= 1 << offset;
+ __raw_writel(dat, base + 0x04);
+ }
s3c_gpio_unlock(ourchip, flags);
}