From: Lothar Waßmann Date: Mon, 25 Aug 2014 12:25:18 +0000 (+0200) Subject: gpio: am33xx: add missing gpio_get_value() function X-Git-Tag: KARO-TX-2014-08-27~6 X-Git-Url: https://git.kernelconcepts.de/?p=karo-tx-uboot.git;a=commitdiff_plain;h=abf794eced56b12f72c4039a0350aae570bc8064 gpio: am33xx: add missing gpio_get_value() function --- diff --git a/drivers/gpio/am33xx_gpio.c b/drivers/gpio/am33xx_gpio.c index f34fdc6bd8..de0bc475ca 100644 --- a/drivers/gpio/am33xx_gpio.c +++ b/drivers/gpio/am33xx_gpio.c @@ -87,7 +87,7 @@ int gpio_set_value(unsigned gpio, int val) return 0; } -int gpio_direction_input(unsigned gpio) +int gpio_get_value(unsigned gpio) { int bank = gpio / 32; int mask = 1 << (gpio % 32); @@ -97,7 +97,19 @@ int gpio_direction_input(unsigned gpio) gpio / 32, gpio % 32); return -EINVAL; } + return (readl(&gpio_base[bank]->datain) & mask) != 0; +} + +int gpio_direction_input(unsigned gpio) +{ + int bank = gpio / 32; + int mask = 1 << (gpio % 32); + if (bank >= ARRAY_SIZE(gpio_base)) { + printf("ERROR: Invalid GPIO: %u (GPIO%u_%u)\n", gpio, + gpio / 32, gpio % 32); + return -EINVAL; + } writel(readl(&gpio_base[bank]->oe) | mask, &gpio_base[bank]->oe); return 0; }