diff options
author | Eunki Kim <eunki_kim@samsung.com> | 2012-10-23 09:39:38 -0400 |
---|---|---|
committer | Kukjin Kim <kgene.kim@samsung.com> | 2012-10-23 09:39:38 -0400 |
commit | 2b88ff4a75f2175902389e3356d6227d7030e382 (patch) | |
tree | 699753b743ba0b373703757f892b8fa242465af2 /drivers/gpio/gpio-samsung.c | |
parent | 453e2dd768de8aa82ee503f1d45395149aa357d6 (diff) |
gpio: samsung: Fix input mode setting function for GPIO int
This patch makes GPIO pin to INTERRUPT mode or INPUT mode according
to bitmap_gpio_int. When the related bit of bitmap_gpio_int is set,
it makes GPIO pin to INTERRUPT mode instrad of INPUT mode in the
samsung_gpiolib_4bit_input function.
Signed-off-by: Eunki Kim <eunki_kim@samsung.com>
Acked-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Kukjin Kim <kgene.kim@samsung.com>
Diffstat (limited to 'drivers/gpio/gpio-samsung.c')
-rw-r--r-- | drivers/gpio/gpio-samsung.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/drivers/gpio/gpio-samsung.c b/drivers/gpio/gpio-samsung.c index a006f0db15af..15be3d9aebe9 100644 --- a/drivers/gpio/gpio-samsung.c +++ b/drivers/gpio/gpio-samsung.c | |||
@@ -596,7 +596,10 @@ static int samsung_gpiolib_4bit_input(struct gpio_chip *chip, | |||
596 | unsigned long con; | 596 | unsigned long con; |
597 | 597 | ||
598 | con = __raw_readl(base + GPIOCON_OFF); | 598 | con = __raw_readl(base + GPIOCON_OFF); |
599 | con &= ~(0xf << con_4bit_shift(offset)); | 599 | if (ourchip->bitmap_gpio_int & BIT(offset)) |
600 | con |= 0xf << con_4bit_shift(offset); | ||
601 | else | ||
602 | con &= ~(0xf << con_4bit_shift(offset)); | ||
600 | __raw_writel(con, base + GPIOCON_OFF); | 603 | __raw_writel(con, base + GPIOCON_OFF); |
601 | 604 | ||
602 | gpio_dbg("%s: %p: CON now %08lx\n", __func__, base, con); | 605 | gpio_dbg("%s: %p: CON now %08lx\n", __func__, base, con); |
@@ -1081,6 +1084,8 @@ static void __init samsung_gpiolib_add_4bit_chips(struct samsung_gpio_chip *chip | |||
1081 | if ((base != NULL) && (chip->base == NULL)) | 1084 | if ((base != NULL) && (chip->base == NULL)) |
1082 | chip->base = base + ((i) * 0x20); | 1085 | chip->base = base + ((i) * 0x20); |
1083 | 1086 | ||
1087 | chip->bitmap_gpio_int = 0; | ||
1088 | |||
1084 | samsung_gpiolib_add(chip); | 1089 | samsung_gpiolib_add(chip); |
1085 | } | 1090 | } |
1086 | } | 1091 | } |