Message ID | 20191014155341.13145-1-brgl@bgdev.pl |
---|---|
State | New |
Headers | show |
Series | [v5.3] gpio: fix getting nonexclusive gpiods from DT | expand |
On Mon, Oct 14, 2019 at 05:53:41PM +0200, Bartosz Golaszewski wrote: >From: Marco Felsch <m.felsch@pengutronix.de> > >Since commit ec757001c818 ("gpio: Enable nonexclusive gpiods from DT >nodes") we are able to get GPIOD_FLAGS_BIT_NONEXCLUSIVE marked gpios. >Currently the gpiolib uses the wrong flags variable for the check. We >need to check the gpiod_flags instead of the of_gpio_flags else we >return -EBUSY for GPIOD_FLAGS_BIT_NONEXCLUSIVE marked and requested >gpiod's. > >Fixes: ec757001c818 gpio: Enable nonexclusive gpiods from DT nodes >Cc: stable@vger.kernel.org >Signed-off-by: Marco Felsch <m.felsch@pengutronix.de> >[Bartosz: the function was moved to gpiolib-of.c so updated the patch] >Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com> >[Bartosz: backported to v5.3.y] >Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com> Queued this one for 5.3, thanks!
On Mon, Oct 14, 2019 at 5:53 PM Bartosz Golaszewski <brgl@bgdev.pl> wrote: > From: Marco Felsch <m.felsch@pengutronix.de> > > Since commit ec757001c818 ("gpio: Enable nonexclusive gpiods from DT > nodes") we are able to get GPIOD_FLAGS_BIT_NONEXCLUSIVE marked gpios. > Currently the gpiolib uses the wrong flags variable for the check. We > need to check the gpiod_flags instead of the of_gpio_flags else we > return -EBUSY for GPIOD_FLAGS_BIT_NONEXCLUSIVE marked and requested > gpiod's. > > Fixes: ec757001c818 gpio: Enable nonexclusive gpiods from DT nodes > Cc: stable@vger.kernel.org > Signed-off-by: Marco Felsch <m.felsch@pengutronix.de> > [Bartosz: the function was moved to gpiolib-of.c so updated the patch] > Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com> > [Bartosz: backported to v5.3.y] > Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com> Thanks for fixing up this backport Bartosz, much appreciated! Yours, Linus Walleij
diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c index d9074191edef..e4203c1eb869 100644 --- a/drivers/gpio/gpiolib.c +++ b/drivers/gpio/gpiolib.c @@ -4303,7 +4303,7 @@ struct gpio_desc *gpiod_get_from_of_node(struct device_node *node, transitory = flags & OF_GPIO_TRANSITORY; ret = gpiod_request(desc, label); - if (ret == -EBUSY && (flags & GPIOD_FLAGS_BIT_NONEXCLUSIVE)) + if (ret == -EBUSY && (dflags & GPIOD_FLAGS_BIT_NONEXCLUSIVE)) return desc; if (ret) return ERR_PTR(ret);