Messages in this thread Patch in this message | | | Date | Sat, 7 Feb 2009 13:15:25 +0900 | Subject | [PATCH] OMAP3 GPIO: Fix getting the value of the GPIO output pin | From | Joonyoung Shim <> |
| |
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@samsung.com> ---
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:
| |