From: Greg Kroah-Hartman Date: Mon, 6 Jan 2020 15:45:57 +0000 (+0100) Subject: 4.4-stable patches X-Git-Tag: v4.14.163~42 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=51d42fcb65a0fd4b4f1ac9cc6c80a85172ce76d6;p=thirdparty%2Fkernel%2Fstable-queue.git 4.4-stable patches added patches: gpiolib-fix-up-emulated-open-drain-outputs.patch --- diff --git a/queue-4.4/gpiolib-fix-up-emulated-open-drain-outputs.patch b/queue-4.4/gpiolib-fix-up-emulated-open-drain-outputs.patch new file mode 100644 index 00000000000..27f26d0743f --- /dev/null +++ b/queue-4.4/gpiolib-fix-up-emulated-open-drain-outputs.patch @@ -0,0 +1,44 @@ +From 256efaea1fdc4e38970489197409a26125ee0aaa Mon Sep 17 00:00:00 2001 +From: Russell King +Date: Sat, 7 Dec 2019 16:20:18 +0000 +Subject: gpiolib: fix up emulated open drain outputs + +From: Russell King + +commit 256efaea1fdc4e38970489197409a26125ee0aaa upstream. + +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. + +Cc: +Suggested-by: Linus Walleij +Signed-off-by: Russell King +Signed-off-by: Bartosz Golaszewski +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/gpio/gpiolib.c | 8 ++++++++ + 1 file changed, 8 insertions(+) + +--- a/drivers/gpio/gpiolib.c ++++ b/drivers/gpio/gpiolib.c +@@ -163,6 +163,14 @@ int gpiod_get_direction(struct gpio_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 status; + diff --git a/queue-4.4/series b/queue-4.4/series index e0384343b58..ce24a909091 100644 --- a/queue-4.4/series +++ b/queue-4.4/series @@ -17,3 +17,4 @@ mips-avoid-vdso-abi-breakage-due-to-global-register-variable.patch locks-print-unsigned-ino-in-proc-locks.patch dmaengine-fix-access-to-uninitialized-dma_slave_caps.patch compat_ioctl-block-handle-persistent-reservations.patch +gpiolib-fix-up-emulated-open-drain-outputs.patch