On Tue, Apr 22, 2014 at 12:24 PM, Javier Martinez Canillas <javier@xxxxxxxxxxxx> wrote: > Hello Yegor, > > On Tue, Apr 22, 2014 at 11:23 AM, <yegorslists@xxxxxxxxxxxxxx> wrote: >> From: Yegor Yefremov <yegorslists@xxxxxxxxxxxxxx> >> >> This patch implements gpio_chip's get_direction() routine, that >> lets other drivers get particular GPIOs direction using >> struct gpio_desc. >> >> Signed-off-by: Yegor Yefremov <yegorslists@xxxxxxxxxxxxxx> >> --- >> drivers/gpio/gpio-omap.c | 28 ++++++++++++++++++++++++++++ >> 1 files changed, 28 insertions(+), 0 deletions(-) >> >> diff --git a/drivers/gpio/gpio-omap.c b/drivers/gpio/gpio-omap.c >> index 19b886c..b55bf7b 100644 >> --- a/drivers/gpio/gpio-omap.c >> +++ b/drivers/gpio/gpio-omap.c >> @@ -102,6 +102,20 @@ static int omap_gpio_to_irq(struct gpio_chip *chip, unsigned offset) >> return irq_find_mapping(bank->domain, offset); >> } >> >> +static int _get_gpio_direction(struct gpio_bank *bank, int gpio) >> +{ >> + void __iomem *reg = bank->base; >> + u32 l; >> + u32 mask = 1 << gpio; >> + >> + reg += bank->regs->direction; >> + l = readl_relaxed(reg); >> + if (l & mask) >> + return 1; >> + >> + return 0; >> +} >> + > > You can avoid the if condition here by using return !!(l & mask) but > the above code is more clear indeed so is up to you. Hm, nice trick. I've reworked the calculation in v2. Yegor -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html