gpio: da8xx_gpio: Fix the _gpio_direction_output function
authorKeerthy <j-keerthy@ti.com>
Thu, 24 Oct 2019 08:22:28 +0000 (13:52 +0530)
committerTom Rini <trini@konsulko.com>
Wed, 30 Oct 2019 21:48:47 +0000 (17:48 -0400)
_gpio_direction_output function currently calls gpio_set_value
with the wrong gpio number. gpio_set_value in the uclass driver
expects a different gpio number and the _gpio_direction_output
is currently providing the number specific to the bank.

Hence fix it by calling the _gpio_set_value function instead.

Reported-by: Faiz Abbas <faiz_abbas@ti.com>
Fixes: 8e51c0f254 ("dm: gpio: Add DM compatibility to GPIO driver for Davinci")
Signed-off-by: Keerthy <j-keerthy@ti.com>
drivers/gpio/da8xx_gpio.c

index bd79448..0a50c68 100644 (file)
@@ -342,13 +342,6 @@ int gpio_free(unsigned int gpio)
 }
 #endif
 
-static int _gpio_direction_output(struct davinci_gpio *bank, unsigned int gpio, int value)
-{
-       clrbits_le32(&bank->dir, 1U << GPIO_BIT(gpio));
-       gpio_set_value(gpio, value);
-       return 0;
-}
-
 static int _gpio_direction_input(struct davinci_gpio *bank, unsigned int gpio)
 {
        setbits_le32(&bank->dir, 1U << GPIO_BIT(gpio));
@@ -377,6 +370,13 @@ static int _gpio_get_dir(struct davinci_gpio *bank, unsigned int gpio)
        return in_le32(&bank->dir) & (1U << GPIO_BIT(gpio));
 }
 
+static int _gpio_direction_output(struct davinci_gpio *bank, unsigned int gpio,
+                                 int value)
+{
+       clrbits_le32(&bank->dir, 1U << GPIO_BIT(gpio));
+       _gpio_set_value(bank, gpio, value);
+       return 0;
+}
 #ifndef CONFIG_DM_GPIO
 
 void gpio_info(void)