From: Nuno Sa via B4 Relay <devnull+nuno.sa.analog.com@kernel.org> To: linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, linux-iio@vger.kernel.org Cc: Olivier MOYSAN <olivier.moysan@foss.st.com>, Greg Kroah-Hartman <gregkh@linuxfoundation.org>, "Rafael J. Wysocki" <rafael@kernel.org>, Rob Herring <robh+dt@kernel.org>, Frank Rowand <frowand.list@gmail.com>, Jonathan Cameron <jic23@kernel.org>, Lars-Peter Clausen <lars@metafoo.de>, Michael Hennerich <Michael.Hennerich@analog.com>, Nuno Sa <nuno.sa@analog.com> Subject: [PATCH 04/12] iio: adc: ad9467: fix reset gpio handling Date: Tue, 21 Nov 2023 11:20:17 +0100 [thread overview] Message-ID: <20231121-dev-iio-backend-v1-4-6a3d542eba35@analog.com> (raw) In-Reply-To: <20231121-dev-iio-backend-v1-0-6a3d542eba35@analog.com> From: Nuno Sa <nuno.sa@analog.com> The reset gpio was being requested with GPIOD_OUT_LOW which means, not asserted. Then it was being asserted but never de-asserted which means the devices was left in reset. Fix it by de-asserting the gpio. While at it, moved the handling to it's own function and dropped 'reset_gpio' from the 'struct ad9467_state' as we only need it during probe. On top of that, refactored things so that we now request the gpio asserted (i.e in reset) and then de-assert it. Fixes: ad6797120238 ("iio: adc: ad9467: add support AD9467 ADC") Signed-off-by: Nuno Sa <nuno.sa@analog.com> --- drivers/iio/adc/ad9467.c | 33 ++++++++++++++++++++------------- 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/drivers/iio/adc/ad9467.c b/drivers/iio/adc/ad9467.c index 39eccc28debe..368ea57be117 100644 --- a/drivers/iio/adc/ad9467.c +++ b/drivers/iio/adc/ad9467.c @@ -121,7 +121,6 @@ struct ad9467_state { unsigned int output_mode; struct gpio_desc *pwrdown_gpio; - struct gpio_desc *reset_gpio; }; static int ad9467_spi_read(struct spi_device *spi, unsigned int reg) @@ -378,6 +377,23 @@ static int ad9467_preenable_setup(struct adi_axi_adc_conv *conv) return ad9467_outputmode_set(st->spi, st->output_mode); } +static int ad9467_reset(struct device *dev) +{ + struct gpio_desc *gpio; + + gpio = devm_gpiod_get_optional(dev, "reset", GPIOD_OUT_HIGH); + if (IS_ERR(gpio)) + return PTR_ERR(gpio); + if (!gpio) + return 0; + + fsleep(1); + gpiod_direction_output(gpio, 0); + fsleep(10); + + return 0; +} + static int ad9467_probe(struct spi_device *spi) { const struct ad9467_chip_info *info; @@ -408,18 +424,9 @@ static int ad9467_probe(struct spi_device *spi) if (IS_ERR(st->pwrdown_gpio)) return PTR_ERR(st->pwrdown_gpio); - st->reset_gpio = devm_gpiod_get_optional(&spi->dev, "reset", - GPIOD_OUT_LOW); - if (IS_ERR(st->reset_gpio)) - return PTR_ERR(st->reset_gpio); - - if (st->reset_gpio) { - udelay(1); - ret = gpiod_direction_output(st->reset_gpio, 1); - if (ret) - return ret; - mdelay(10); - } + ret = ad9467_reset(&spi->dev); + if (ret) + return ret; conv->chip_info = &info->axi_adc_info; -- 2.42.1
WARNING: multiple messages have this Message-ID (diff)
From: Nuno Sa <nuno.sa@analog.com> To: linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, linux-iio@vger.kernel.org Cc: Olivier MOYSAN <olivier.moysan@foss.st.com>, Greg Kroah-Hartman <gregkh@linuxfoundation.org>, "Rafael J. Wysocki" <rafael@kernel.org>, Rob Herring <robh+dt@kernel.org>, Frank Rowand <frowand.list@gmail.com>, Jonathan Cameron <jic23@kernel.org>, Lars-Peter Clausen <lars@metafoo.de>, Michael Hennerich <Michael.Hennerich@analog.com>, Nuno Sa <nuno.sa@analog.com> Subject: [PATCH 04/12] iio: adc: ad9467: fix reset gpio handling Date: Tue, 21 Nov 2023 11:20:17 +0100 [thread overview] Message-ID: <20231121-dev-iio-backend-v1-4-6a3d542eba35@analog.com> (raw) In-Reply-To: <20231121-dev-iio-backend-v1-0-6a3d542eba35@analog.com> The reset gpio was being requested with GPIOD_OUT_LOW which means, not asserted. Then it was being asserted but never de-asserted which means the devices was left in reset. Fix it by de-asserting the gpio. While at it, moved the handling to it's own function and dropped 'reset_gpio' from the 'struct ad9467_state' as we only need it during probe. On top of that, refactored things so that we now request the gpio asserted (i.e in reset) and then de-assert it. Fixes: ad6797120238 ("iio: adc: ad9467: add support AD9467 ADC") Signed-off-by: Nuno Sa <nuno.sa@analog.com> --- drivers/iio/adc/ad9467.c | 33 ++++++++++++++++++++------------- 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/drivers/iio/adc/ad9467.c b/drivers/iio/adc/ad9467.c index 39eccc28debe..368ea57be117 100644 --- a/drivers/iio/adc/ad9467.c +++ b/drivers/iio/adc/ad9467.c @@ -121,7 +121,6 @@ struct ad9467_state { unsigned int output_mode; struct gpio_desc *pwrdown_gpio; - struct gpio_desc *reset_gpio; }; static int ad9467_spi_read(struct spi_device *spi, unsigned int reg) @@ -378,6 +377,23 @@ static int ad9467_preenable_setup(struct adi_axi_adc_conv *conv) return ad9467_outputmode_set(st->spi, st->output_mode); } +static int ad9467_reset(struct device *dev) +{ + struct gpio_desc *gpio; + + gpio = devm_gpiod_get_optional(dev, "reset", GPIOD_OUT_HIGH); + if (IS_ERR(gpio)) + return PTR_ERR(gpio); + if (!gpio) + return 0; + + fsleep(1); + gpiod_direction_output(gpio, 0); + fsleep(10); + + return 0; +} + static int ad9467_probe(struct spi_device *spi) { const struct ad9467_chip_info *info; @@ -408,18 +424,9 @@ static int ad9467_probe(struct spi_device *spi) if (IS_ERR(st->pwrdown_gpio)) return PTR_ERR(st->pwrdown_gpio); - st->reset_gpio = devm_gpiod_get_optional(&spi->dev, "reset", - GPIOD_OUT_LOW); - if (IS_ERR(st->reset_gpio)) - return PTR_ERR(st->reset_gpio); - - if (st->reset_gpio) { - udelay(1); - ret = gpiod_direction_output(st->reset_gpio, 1); - if (ret) - return ret; - mdelay(10); - } + ret = ad9467_reset(&spi->dev); + if (ret) + return ret; conv->chip_info = &info->axi_adc_info; -- 2.42.1
next prev parent reply other threads:[~2023-11-21 10:17 UTC|newest] Thread overview: 72+ messages / expand[flat|nested] mbox.gz Atom feed top 2023-11-21 10:20 [PATCH 00/12] iio: add new backend framework Nuno Sa via B4 Relay 2023-11-21 10:20 ` Nuno Sa 2023-11-21 10:20 ` [PATCH 01/12] driver: core: allow modifying device_links flags Nuno Sa via B4 Relay 2023-11-21 10:20 ` Nuno Sa 2023-11-21 10:20 ` [PATCH 02/12] of: property: add device link support for io-backends Nuno Sa via B4 Relay 2023-11-21 10:20 ` Nuno Sa 2023-11-21 10:20 ` [PATCH 03/12] iio: add the IIO backend framework Nuno Sa via B4 Relay 2023-11-21 10:20 ` Nuno Sa 2023-12-04 15:38 ` Jonathan Cameron 2023-12-06 12:05 ` Nuno Sá 2023-12-06 17:15 ` Jonathan Cameron 2023-11-21 10:20 ` Nuno Sa via B4 Relay [this message] 2023-11-21 10:20 ` [PATCH 04/12] iio: adc: ad9467: fix reset gpio handling Nuno Sa 2023-11-30 21:41 ` David Lechner 2023-12-01 8:47 ` Nuno Sá 2023-12-01 17:01 ` David Lechner 2023-12-02 8:36 ` Nuno Sá 2023-12-04 15:15 ` Jonathan Cameron 2023-12-04 16:41 ` Nuno Sá 2023-11-21 10:20 ` [PATCH 05/12] iio: adc: ad9467: don't ignore error codes Nuno Sa via B4 Relay 2023-11-21 10:20 ` Nuno Sa 2023-11-30 21:44 ` David Lechner 2023-12-01 8:47 ` Nuno Sá 2023-12-04 15:19 ` Jonathan Cameron 2023-11-21 10:20 ` [PATCH 06/12] iio: adc: ad9467: add mutex to struct ad9467_state Nuno Sa via B4 Relay 2023-11-21 10:20 ` Nuno Sa 2023-11-30 21:50 ` David Lechner 2023-12-01 8:49 ` Nuno Sá 2023-12-04 15:21 ` Jonathan Cameron 2023-12-04 15:23 ` Jonathan Cameron 2023-12-04 16:10 ` Nuno Sá 2023-12-04 16:51 ` Jonathan Cameron 2023-11-21 10:20 ` [PATCH 07/12] iio: adc: ad9467: fix scale setting Nuno Sa via B4 Relay 2023-11-21 10:20 ` Nuno Sa 2023-11-21 10:20 ` [PATCH 08/12] iio: adc: ad9467: use spi_get_device_match_data() Nuno Sa via B4 Relay 2023-11-21 10:20 ` Nuno Sa 2023-11-21 10:20 ` [PATCH 09/12] iio: adc: ad9467: use chip_info variables instead of array Nuno Sa via B4 Relay 2023-11-21 10:20 ` Nuno Sa 2023-12-04 15:25 ` Jonathan Cameron 2023-12-04 16:24 ` Nuno Sá 2023-11-21 10:20 ` [PATCH 10/12] iio: adc: ad9467: convert to backend framework Nuno Sa via B4 Relay 2023-11-21 10:20 ` Nuno Sa 2023-11-22 0:54 ` kernel test robot 2023-11-30 23:30 ` David Lechner 2023-12-01 0:12 ` David Lechner 2023-12-01 9:08 ` Nuno Sá 2023-12-01 17:44 ` David Lechner 2023-12-02 8:46 ` Nuno Sá 2023-12-04 8:56 ` Nuno Sá 2023-12-04 15:48 ` Jonathan Cameron 2023-12-04 16:23 ` Nuno Sá 2023-12-04 16:57 ` Jonathan Cameron 2023-12-01 9:17 ` Nuno Sá 2023-11-21 10:20 ` [PATCH 11/12] iio: adc: adi-axi-adc: convert to regmap Nuno Sa via B4 Relay 2023-11-21 10:20 ` Nuno Sa 2023-12-04 15:51 ` Jonathan Cameron 2023-12-04 16:15 ` Nuno Sá 2023-11-21 10:20 ` [PATCH 12/12] iio: adc: adi-axi-adc: move to backend framework Nuno Sa via B4 Relay 2023-11-21 10:20 ` Nuno Sa 2023-11-21 23:27 ` kernel test robot 2023-11-25 7:42 ` kernel test robot 2023-11-30 23:33 ` David Lechner 2023-12-01 8:50 ` Nuno Sá 2023-11-23 17:36 ` [PATCH 00/12] iio: add new " Olivier MOYSAN 2023-11-24 9:15 ` Nuno Sá 2023-11-30 23:54 ` David Lechner 2023-12-01 8:41 ` Nuno Sá 2023-12-01 9:14 ` Nuno Sá 2023-12-02 3:53 ` David Lechner 2023-12-02 9:37 ` Nuno Sá 2023-12-02 16:16 ` David Lechner 2023-12-04 14:49 ` Jonathan Cameron
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20231121-dev-iio-backend-v1-4-6a3d542eba35@analog.com \ --to=devnull+nuno.sa.analog.com@kernel.org \ --cc=Michael.Hennerich@analog.com \ --cc=devicetree@vger.kernel.org \ --cc=frowand.list@gmail.com \ --cc=gregkh@linuxfoundation.org \ --cc=jic23@kernel.org \ --cc=lars@metafoo.de \ --cc=linux-iio@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=nuno.sa@analog.com \ --cc=olivier.moysan@foss.st.com \ --cc=rafael@kernel.org \ --cc=robh+dt@kernel.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.