]> asedeno.scripts.mit.edu Git - linux.git/blobdiff - drivers/gpio/gpio-mvebu.c
gpio: mvebu: implement get_direction
[linux.git] / drivers / gpio / gpio-mvebu.c
index 7d5c55494ccd50a94281be8702508bead6b78804..f97ed32b8bebfeb2aa4eb2963ab39c261096f9f6 100644 (file)
@@ -376,6 +376,16 @@ static int mvebu_gpio_direction_output(struct gpio_chip *chip, unsigned int pin,
        return 0;
 }
 
+static int mvebu_gpio_get_direction(struct gpio_chip *chip, unsigned int pin)
+{
+       struct mvebu_gpio_chip *mvchip = gpiochip_get_data(chip);
+       u32 u;
+
+       regmap_read(mvchip->regs, GPIO_IO_CONF_OFF + mvchip->offset, &u);
+
+       return !!(u & BIT(pin));
+}
+
 static int mvebu_gpio_to_irq(struct gpio_chip *chip, unsigned int pin)
 {
        struct mvebu_gpio_chip *mvchip = gpiochip_get_data(chip);
@@ -1130,6 +1140,7 @@ static int mvebu_gpio_probe(struct platform_device *pdev)
        mvchip->chip.parent = &pdev->dev;
        mvchip->chip.request = gpiochip_generic_request;
        mvchip->chip.free = gpiochip_generic_free;
+       mvchip->chip.get_direction = mvebu_gpio_get_direction;
        mvchip->chip.direction_input = mvebu_gpio_direction_input;
        mvchip->chip.get = mvebu_gpio_get;
        mvchip->chip.direction_output = mvebu_gpio_direction_output;