From: Bin Gao Date: Mon, 15 Aug 2016 18:03:23 +0000 (-0700) Subject: gpio: wcove-gpio: add get_direction method X-Git-Tag: v4.9-rc1~122^2~56 X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=7d9e59ce761f2ebe0bf57e6467cc13d932ee109b;p=karo-tx-linux.git gpio: wcove-gpio: add get_direction method This patch adds .get_direction method for the gpio_chip structure of the wcove_gpio driver. Signed-off-by: Bin Gao Signed-off-by: Linus Walleij --- diff --git a/drivers/gpio/gpio-wcove.c b/drivers/gpio/gpio-wcove.c index f5c88df96eaa..e11d6a3fb641 100644 --- a/drivers/gpio/gpio-wcove.c +++ b/drivers/gpio/gpio-wcove.c @@ -164,6 +164,19 @@ static int wcove_gpio_dir_out(struct gpio_chip *chip, unsigned int gpio, CTLO_OUTPUT_SET | value); } +static int wcove_gpio_get_direction(struct gpio_chip *chip, unsigned int gpio) +{ + struct wcove_gpio *wg = gpiochip_get_data(chip); + unsigned int val; + int ret; + + ret = regmap_read(wg->regmap, to_reg(gpio, CTRL_OUT), &val); + if (ret) + return ret; + + return !(val & CTLO_DIR_OUT); +} + static int wcove_gpio_get(struct gpio_chip *chip, unsigned int gpio) { struct wcove_gpio *wg = gpiochip_get_data(chip); @@ -394,6 +407,7 @@ static int wcove_gpio_probe(struct platform_device *pdev) wg->chip.label = KBUILD_MODNAME; wg->chip.direction_input = wcove_gpio_dir_in; wg->chip.direction_output = wcove_gpio_dir_out; + wg->chip.get_direction = wcove_gpio_get_direction; wg->chip.get = wcove_gpio_get; wg->chip.set = wcove_gpio_set; wg->chip.set_single_ended = wcove_gpio_set_single_ended,