kernel: drop backported gpio emulated open drain output fix
This patch has been backported to stable kernel 5.4 already. Remove our local patch explicitly now, as by applying the patch (or refreshing) the relevant code is actually added a second time. Refresh remaining patches as well. Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>master
parent
1b2144e81f
commit
807366af38
@ -1,45 +0,0 @@
|
||||
From: Russell King <rmk+kernel@armlinux.org.uk>
|
||||
Bcc: linux@mail.armlinux.org.uk
|
||||
Cc: Linus Walleij <linus.walleij@linaro.org>,Bartosz Golaszewski <bgolaszewski@baylibre.com>,linux-gpio@vger.kernel.org
|
||||
Subject: [PATCH] gpiolib: fix up emulated open drain outputs
|
||||
MIME-Version: 1.0
|
||||
Content-Disposition: inline
|
||||
Content-Transfer-Encoding: 8bit
|
||||
Content-Type: text/plain; charset="utf-8"
|
||||
|
||||
gpiolib has a corner case with open drain outputs that are emulated.
|
||||
When such outputs are outputting a logic 1, emulation will set the
|
||||
hardware to input mode, which will cause gpiod_get_direction() to
|
||||
report that it is in input mode. This is different from the behaviour
|
||||
with a true open-drain output.
|
||||
|
||||
Unify the semantics here.
|
||||
|
||||
Suggested-by: Linus Walleij <linus.walleij@linaro.org>
|
||||
Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
|
||||
---
|
||||
drivers/gpio/gpiolib.c | 8 ++++++++
|
||||
1 file changed, 8 insertions(+)
|
||||
|
||||
diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c
|
||||
index 104ed299d5ea..99d19f80440e 100644
|
||||
--- a/drivers/gpio/gpiolib.c
|
||||
+++ b/drivers/gpio/gpiolib.c
|
||||
@@ -220,6 +220,14 @@ int gpiod_get_direction(struct gpio_desc *desc)
|
||||
chip = gpiod_to_chip(desc);
|
||||
offset = gpio_chip_hwgpio(desc);
|
||||
|
||||
+ /*
|
||||
+ * Open drain emulation using input mode may incorrectly report
|
||||
+ * input here, fix that up.
|
||||
+ */
|
||||
+ if (test_bit(FLAG_OPEN_DRAIN, &desc->flags) &&
|
||||
+ test_bit(FLAG_IS_OUT, &desc->flags))
|
||||
+ return 0;
|
||||
+
|
||||
if (!chip->get_direction)
|
||||
return -ENOTSUPP;
|
||||
|
||||
--
|
||||
2.20.1
|
||||
|
Loading…
Reference in New Issue