| From abacc6a8128d1f00743c48fd2bde39ae08e6be87 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Mon, 14 Oct 2019 17:53:41 +0200 |
| Subject: gpio: fix getting nonexclusive gpiods from DT |
| |
| From: Marco Felsch <m.felsch@pengutronix.de> |
| |
| [ Upstream commit be7ae45cfea97e787234e00e1a9eb341acacd84e ] |
| |
| 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> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/gpio/gpiolib.c | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c |
| index d9074191edef4..e4203c1eb869d 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); |
| -- |
| 2.20.1 |
| |