Patch "iio: hi8435: cleanup reset gpio" has been added to the 4.9-stable tree
Subsystems (2)
This is a note to let you know that I've just added the patch titled
iio: hi8435: cleanup reset gpio
to the 4.9-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
iio-hi8435-cleanup-reset-gpio.patch
and it can be found in the queue-4.9 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From foo@baz Mon Apr 9 17:09:24 CEST 2018
From: Nikita Yushchenko <[email protected]>
Date: Fri, 19 May 2017 17:48:02 +0300
Subject: iio: hi8435: cleanup reset gpio
From: Nikita Yushchenko <[email protected]>
[ Upstream commit 61305664a542f874283f74bf0b27ddb31f5045d7 ]
Reset GPIO is active low.
Currently driver uses gpiod_set_value(1) to clean reset, which depends on device tree to contain GPIO_ACTIVE_HIGH - that does not match reality.
This fixes driver to use _raw version of gpiod_set_value() to enforce active-low semantics despite of what's written in device tree. Allowing device tree to override that only opens possibility for errors and does not add any value.
Additionally, use _cansleep version to make things work with i2c-gpio and other sleeping gpio drivers.
--- drivers/iio/adc/hi8435.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-)
drivers/iio/adc/hi8435.c +7 -5
@@ -453,13 +453,15 @@ static int hi8435_probe(struct spi_devic priv->spi = spi; reset_gpio =devm_gpiod_get (&spi->dev,NULL ,GPIOD_OUT_LOW ); -if (IS_ERR (reset_gpio)) { -/* chip s/w reset if h/w reset failed */ +if (!IS_ERR (reset_gpio)) { +/* need >=100ns low pulse to reset chip */ +gpiod_set_raw_value_cansleep (reset_gpio,0 ); +udelay (1 ); +gpiod_set_raw_value_cansleep (reset_gpio,1 ); + }else { +/* s/w reset chip if h/w reset is not available */ hi8435_writeb (priv,HI8435_CTRL_REG ,HI8435_CTRL_SRST );hi8435_writeb (priv,HI8435_CTRL_REG ,0 ); - }else { -udelay (5 ); -gpiod_set_value (reset_gpio,1 ); }spi_set_drvdata (spi, idev);
Patches currently in stable-queue which might be from [email protected] are
queue-4.9/iio-hi8435-avoid-garbage-event-at-first-enable.patch queue-4.9/iio-hi8435-cleanup-reset-gpio.patch