gpio: htc-egpio: add .get_direction() support
authorLinus Walleij <linus.walleij@linaro.org>
Sat, 12 Nov 2016 13:36:17 +0000 (14:36 +0100)
committerLinus Walleij <linus.walleij@linaro.org>
Sat, 12 Nov 2016 13:36:17 +0000 (14:36 +0100)
This makes is possible to read out the current direction of a
GPIO line on the HTC CPLD GPIO expander.

Suggested-by: Russell King <linux@arm.linux.org.uk>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
drivers/gpio/gpio-htc-egpio.c

index 5ab895b4181986bc4f71c418d9a43ad74b4c0174..27af52850927896a06d7680034417879d0e20e26 100644 (file)
@@ -225,6 +225,15 @@ static int egpio_direction_output(struct gpio_chip *chip,
        }
 }
 
+static int egpio_get_direction(struct gpio_chip *chip, unsigned offset)
+{
+       struct egpio_chip *egpio;
+
+       egpio = gpiochip_get_data(chip);
+
+       return !test_bit(offset, &egpio->is_out);
+}
+
 static void egpio_write_cache(struct egpio_info *ei)
 {
        int               i;
@@ -327,6 +336,7 @@ static int __init egpio_probe(struct platform_device *pdev)
                chip->set             = egpio_set;
                chip->direction_input = egpio_direction_input;
                chip->direction_output = egpio_direction_output;
+               chip->get_direction   = egpio_get_direction;
                chip->base            = pdata->chip[i].gpio_base;
                chip->ngpio           = pdata->chip[i].num_gpios;