[v5.3] gpio: fix getting nonexclusive gpiods from DT
diff mbox series

Message ID 20191014155341.13145-1-brgl@bgdev.pl
State New
Headers show
Series
  • [v5.3] gpio: fix getting nonexclusive gpiods from DT
Related show

Commit Message

Bartosz Golaszewski Oct. 14, 2019, 3:53 p.m. UTC
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>
---
 drivers/gpio/gpiolib.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Sasha Levin Oct. 14, 2019, 11:35 p.m. UTC | #1
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!
Linus Walleij Oct. 16, 2019, 1:06 p.m. UTC | #2
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

Patch
diff mbox series

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);