aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/gpio/gpio-samsung.c7
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}