If the GPIO pin is output, must read the value from OMAP24XX_GPIO_DATAOUT register in __omap_get_gpio_datain(). Signed-off-by: Joonyoung Shim <jy0922.shim@xxxxxxxxxxx> --- diff --git a/arch/arm/plat-omap/gpio.c b/arch/arm/plat-omap/gpio.c index f856a90..296773a 100644 --- a/arch/arm/plat-omap/gpio.c +++ b/arch/arm/plat-omap/gpio.c @@ -428,7 +428,11 @@ static int __omap_get_gpio_datain(int gpio) #endif #if defined(CONFIG_ARCH_OMAP24XX) || defined(CONFIG_ARCH_OMAP34XX) case METHOD_GPIO_24XX: - reg += OMAP24XX_GPIO_DATAIN; + if (__raw_readl(reg + OMAP24XX_GPIO_OE) + & (1 << get_gpio_index(gpio))) + reg += OMAP24XX_GPIO_DATAIN; + else + reg += OMAP24XX_GPIO_DATAOUT; break; #endif default: -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html