Device tree parsing of GPIO nodes is currently ignoring flags.

Add support for GPIO_ACTIVE_LOW by checking for the presence
of the flag and setting the desc->flags field to the driver
model constant GPIOD_ACTIVE_LOW.

Signed-off-by: Eric Nelson <e...@nelint.com>
---
 drivers/gpio/gpio-uclass.c | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/drivers/gpio/gpio-uclass.c b/drivers/gpio/gpio-uclass.c
index b58d4e6..6d30612 100644
--- a/drivers/gpio/gpio-uclass.c
+++ b/drivers/gpio/gpio-uclass.c
@@ -6,6 +6,7 @@
 
 #include <common.h>
 #include <dm.h>
+#include <dt-bindings/gpio/gpio.h>
 #include <errno.h>
 #include <fdtdec.h>
 #include <malloc.h>
@@ -118,12 +119,16 @@ static int gpio_find_and_xlate(struct gpio_desc *desc,
 {
        struct dm_gpio_ops *ops = gpio_get_ops(desc->dev);
 
+       desc->flags = 0;
        /* Use the first argument as the offset by default */
-       if (args->args_count > 0)
+       if (args->args_count > 0) {
                desc->offset = args->args[0];
+               if ((args->args_count > 1) &&
+                   (args->args[1] & GPIO_ACTIVE_LOW))
+                       desc->flags = GPIOD_ACTIVE_LOW;
+       }
        else
                desc->offset = -1;
-       desc->flags = 0;
 
        return ops->xlate ? ops->xlate(desc->dev, desc, args) : 0;
 }
-- 
2.6.2

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to