From mboxrd@z Thu Jan 1 00:00:00 1970 From: Eric Nelson Date: Fri, 1 Apr 2016 08:47:36 -0700 Subject: [U-Boot] [PATCH 1/7] dm: gpio: handle GPIO_ACTIVE_LOW flag in DT In-Reply-To: <1459525662-28032-1-git-send-email-eric@nelint.com> References: <56FD8B60.8060103@nelint.com> <1459525662-28032-1-git-send-email-eric@nelint.com> Message-ID: <1459525662-28032-2-git-send-email-eric@nelint.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Device tree parsing of GPIO nodes is currently ignoring flags and architecture-specific xlate routines are handling the parsing of GPIO_ACTIVE_LOW. Since GPIO_ACTIVE_LOW isn't specific to a particular device type, this patch adds support at a global level and removes the need for many of the driver-specific xlate routines. Signed-off-by: Eric Nelson --- drivers/gpio/gpio-uclass.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/drivers/gpio/gpio-uclass.c b/drivers/gpio/gpio-uclass.c index b58d4e6..a3cbb83 100644 --- a/drivers/gpio/gpio-uclass.c +++ b/drivers/gpio/gpio-uclass.c @@ -6,6 +6,7 @@ #include #include +#include #include #include #include @@ -118,12 +119,15 @@ static int gpio_find_and_xlate(struct gpio_desc *desc, { struct dm_gpio_ops *ops = gpio_get_ops(desc->dev); + desc->offset = -1; + 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]; - else - desc->offset = -1; - desc->flags = 0; + if ((args->args_count > 1) && + (args->args[1] & GPIO_ACTIVE_LOW)) + desc->flags = GPIOD_ACTIVE_LOW; + } return ops->xlate ? ops->xlate(desc->dev, desc, args) : 0; } -- 2.6.2