OSDN Git Service

gpiolib: don't clear FLAG_IS_OUT when emulating open-drain/open-source
authorBartosz Golaszewski <bgolaszewski@baylibre.com>
Tue, 1 Oct 2019 09:44:53 +0000 (11:44 +0200)
committerBartosz Golaszewski <bgolaszewski@baylibre.com>
Tue, 1 Oct 2019 09:44:53 +0000 (11:44 +0200)
commite735244e2cf068f98b6384681a38993e0517a838
treed754d7427e44d9f89a64c9ed2a6c216dbdf60f6c
parent54ecb8f7028c5eb3d740bb82b0f1d90f2df63c5c
gpiolib: don't clear FLAG_IS_OUT when emulating open-drain/open-source

When emulating open-drain/open-source by not actively driving the output
lines - we're simply changing their mode to input. This is wrong as it
will then make it impossible to change the value of such line - it's now
considered to actually be in input mode. If we want to still use the
direction_input() callback for simplicity then we need to set FLAG_IS_OUT
manually in gpiod_direction_output() and not clear it in
gpio_set_open_drain_value_commit() and
gpio_set_open_source_value_commit().

Fixes: c663e5f56737 ("gpio: support native single-ended hardware drivers")
Cc: stable@vger.kernel.org
Reported-by: Kent Gibson <warthog618@gmail.com>
Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
drivers/gpio/gpiolib.c