]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
gpio: sama5d2-piobu: Set proper output level for direction_output
authorAxel Lin <axel.lin@ingics.com>
Mon, 31 Dec 2018 09:52:56 +0000 (17:52 +0800)
committerLinus Walleij <linus.walleij@linaro.org>
Fri, 11 Jan 2019 09:34:37 +0000 (10:34 +0100)
Set proper output level base on the argument of direction_output.
Also remove sama5d2_piobu_set_direction() as there is only one caller
now.

Signed-off-by: Axel Lin <axel.lin@ingics.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
drivers/gpio/gpio-sama5d2-piobu.c

index 03a000659fa1f331977f60437fe48ebcbceae23b..7d718557092e69fa69347366cd7e0252374489d9 100644 (file)
@@ -108,16 +108,6 @@ static int sama5d2_piobu_read_value(struct gpio_chip *chip, unsigned int pin,
        return val & mask;
 }
 
-/**
- * sama5d2_piobu_set_direction() - mark pin as input or output
- */
-static int sama5d2_piobu_set_direction(struct gpio_chip *chip,
-                                      unsigned int direction,
-                                      unsigned int pin)
-{
-       return sama5d2_piobu_write_value(chip, pin, PIOBU_DIRECTION, direction);
-}
-
 /**
  * sama5d2_piobu_get_direction() - gpiochip get_direction
  */
@@ -138,7 +128,7 @@ static int sama5d2_piobu_get_direction(struct gpio_chip *chip,
 static int sama5d2_piobu_direction_input(struct gpio_chip *chip,
                                         unsigned int pin)
 {
-       return sama5d2_piobu_set_direction(chip, PIOBU_IN, pin);
+       return sama5d2_piobu_write_value(chip, pin, PIOBU_DIRECTION, PIOBU_IN);
 }
 
 /**
@@ -147,7 +137,13 @@ static int sama5d2_piobu_direction_input(struct gpio_chip *chip,
 static int sama5d2_piobu_direction_output(struct gpio_chip *chip,
                                          unsigned int pin, int value)
 {
-       return sama5d2_piobu_set_direction(chip, PIOBU_OUT, pin);
+       unsigned int val = PIOBU_OUT;
+
+       if (value)
+               val |= PIOBU_HIGH;
+
+       return sama5d2_piobu_write_value(chip, pin, PIOBU_DIRECTION | PIOBU_SOD,
+                                        val);
 }
 
 /**