From: Dumitru Ceclan via B4 Relay <devnull+dumitru.ceclan.analog.com@kernel.org> To: Ceclan Dumitru <dumitru.ceclan@analog.com> Cc: Lars-Peter Clausen <lars@metafoo.de>, Michael Hennerich <Michael.Hennerich@analog.com>, Jonathan Cameron <jic23@kernel.org>, Rob Herring <robh@kernel.org>, Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>, Conor Dooley <conor+dt@kernel.org>, David Lechner <dlechner@baylibre.com>, linux-iio@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Dumitru Ceclan <mitrutzceclan@gmail.com> Subject: [PATCH 4/6] iio: adc: ad7173: refactor ain and vref selection Date: Mon, 01 Apr 2024 18:32:22 +0300 [thread overview] Message-ID: <20240401-ad4111-v1-4-34618a9cc502@analog.com> (raw) In-Reply-To: <20240401-ad4111-v1-0-34618a9cc502@analog.com> From: Dumitru Ceclan <dumitru.ceclan@analog.com> Move validation of analog inputs and reference voltage selection to separate functions. Signed-off-by: Dumitru Ceclan <dumitru.ceclan@analog.com> --- drivers/iio/adc/ad7173.c | 59 +++++++++++++++++++++++++++++++++--------------- 1 file changed, 41 insertions(+), 18 deletions(-) diff --git a/drivers/iio/adc/ad7173.c b/drivers/iio/adc/ad7173.c index 699bc6970790..bf5a5b384fe2 100644 --- a/drivers/iio/adc/ad7173.c +++ b/drivers/iio/adc/ad7173.c @@ -910,6 +910,41 @@ static int ad7173_register_clk_provider(struct iio_dev *indio_dev) &st->int_clk_hw); } +static int ad7173_validate_voltage_ain_inputs(struct ad7173_state *st, + unsigned int ain[2]) +{ + struct device *dev = &st->sd.spi->dev; + + if (ain[0] >= st->info->num_inputs || + ain[1] >= st->info->num_inputs) + return dev_err_probe(dev, -EINVAL, + "Input pin number out of range for pair (%d %d).\n", + ain[0], ain[1]); + + return 0; +} + +static int ad7173_validate_reference(struct ad7173_state *st, int ref_sel) +{ + struct device *dev = &st->sd.spi->dev; + int ret; + + if (ref_sel == AD7173_SETUP_REF_SEL_INT_REF && !st->info->has_int_ref) + return dev_err_probe(dev, -EINVAL, + "Internal reference is not available on current model.\n"); + + if (ref_sel == AD7173_SETUP_REF_SEL_EXT_REF2 && !st->info->has_ref2) + return dev_err_probe(dev, -EINVAL, + "External reference 2 is not available on current model.\n"); + + ret = ad7173_get_ref_voltage_milli(st, ref_sel); + if (ret < 0) + return dev_err_probe(dev, ret, + "Cannot use reference %u\n", ref_sel); + + return 0; +} + static int ad7173_fw_parse_channel_config(struct iio_dev *indio_dev) { struct ad7173_channel *chans_st_arr, *chan_st_priv; @@ -970,11 +1005,9 @@ static int ad7173_fw_parse_channel_config(struct iio_dev *indio_dev) if (ret) return ret; - if (ain[0] >= st->info->num_inputs || - ain[1] >= st->info->num_inputs) - return dev_err_probe(dev, -EINVAL, - "Input pin number out of range for pair (%d %d).\n", - ain[0], ain[1]); + ret = ad7173_validate_voltage_ain_inputs(st, ain); + if (ret) + return ret; ret = fwnode_property_match_property_string(child, "adi,reference-select", @@ -985,19 +1018,9 @@ static int ad7173_fw_parse_channel_config(struct iio_dev *indio_dev) else ref_sel = ret; - if (ref_sel == AD7173_SETUP_REF_SEL_INT_REF && - !st->info->has_int_ref) - return dev_err_probe(dev, -EINVAL, - "Internal reference is not available on current model.\n"); - - if (ref_sel == AD7173_SETUP_REF_SEL_EXT_REF2 && !st->info->has_ref2) - return dev_err_probe(dev, -EINVAL, - "External reference 2 is not available on current model.\n"); - - ret = ad7173_get_ref_voltage_milli(st, ref_sel); - if (ret < 0) - return dev_err_probe(dev, ret, - "Cannot use reference %u\n", ref_sel); + ret = ad7173_validate_reference(st, ref_sel); + if (ret) + return ret; if (ref_sel == AD7173_SETUP_REF_SEL_INT_REF) st->adc_mode |= AD7173_ADC_MODE_REF_EN; -- 2.43.0
WARNING: multiple messages have this Message-ID (diff)
From: Dumitru Ceclan <dumitru.ceclan@analog.com> To: Ceclan Dumitru <dumitru.ceclan@analog.com> Cc: Lars-Peter Clausen <lars@metafoo.de>, Michael Hennerich <Michael.Hennerich@analog.com>, Jonathan Cameron <jic23@kernel.org>, Rob Herring <robh@kernel.org>, Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>, Conor Dooley <conor+dt@kernel.org>, David Lechner <dlechner@baylibre.com>, linux-iio@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Dumitru Ceclan <mitrutzceclan@gmail.com> Subject: [PATCH 4/6] iio: adc: ad7173: refactor ain and vref selection Date: Mon, 01 Apr 2024 18:32:22 +0300 [thread overview] Message-ID: <20240401-ad4111-v1-4-34618a9cc502@analog.com> (raw) In-Reply-To: <20240401-ad4111-v1-0-34618a9cc502@analog.com> Move validation of analog inputs and reference voltage selection to separate functions. Signed-off-by: Dumitru Ceclan <dumitru.ceclan@analog.com> --- drivers/iio/adc/ad7173.c | 59 +++++++++++++++++++++++++++++++++--------------- 1 file changed, 41 insertions(+), 18 deletions(-) diff --git a/drivers/iio/adc/ad7173.c b/drivers/iio/adc/ad7173.c index 699bc6970790..bf5a5b384fe2 100644 --- a/drivers/iio/adc/ad7173.c +++ b/drivers/iio/adc/ad7173.c @@ -910,6 +910,41 @@ static int ad7173_register_clk_provider(struct iio_dev *indio_dev) &st->int_clk_hw); } +static int ad7173_validate_voltage_ain_inputs(struct ad7173_state *st, + unsigned int ain[2]) +{ + struct device *dev = &st->sd.spi->dev; + + if (ain[0] >= st->info->num_inputs || + ain[1] >= st->info->num_inputs) + return dev_err_probe(dev, -EINVAL, + "Input pin number out of range for pair (%d %d).\n", + ain[0], ain[1]); + + return 0; +} + +static int ad7173_validate_reference(struct ad7173_state *st, int ref_sel) +{ + struct device *dev = &st->sd.spi->dev; + int ret; + + if (ref_sel == AD7173_SETUP_REF_SEL_INT_REF && !st->info->has_int_ref) + return dev_err_probe(dev, -EINVAL, + "Internal reference is not available on current model.\n"); + + if (ref_sel == AD7173_SETUP_REF_SEL_EXT_REF2 && !st->info->has_ref2) + return dev_err_probe(dev, -EINVAL, + "External reference 2 is not available on current model.\n"); + + ret = ad7173_get_ref_voltage_milli(st, ref_sel); + if (ret < 0) + return dev_err_probe(dev, ret, + "Cannot use reference %u\n", ref_sel); + + return 0; +} + static int ad7173_fw_parse_channel_config(struct iio_dev *indio_dev) { struct ad7173_channel *chans_st_arr, *chan_st_priv; @@ -970,11 +1005,9 @@ static int ad7173_fw_parse_channel_config(struct iio_dev *indio_dev) if (ret) return ret; - if (ain[0] >= st->info->num_inputs || - ain[1] >= st->info->num_inputs) - return dev_err_probe(dev, -EINVAL, - "Input pin number out of range for pair (%d %d).\n", - ain[0], ain[1]); + ret = ad7173_validate_voltage_ain_inputs(st, ain); + if (ret) + return ret; ret = fwnode_property_match_property_string(child, "adi,reference-select", @@ -985,19 +1018,9 @@ static int ad7173_fw_parse_channel_config(struct iio_dev *indio_dev) else ref_sel = ret; - if (ref_sel == AD7173_SETUP_REF_SEL_INT_REF && - !st->info->has_int_ref) - return dev_err_probe(dev, -EINVAL, - "Internal reference is not available on current model.\n"); - - if (ref_sel == AD7173_SETUP_REF_SEL_EXT_REF2 && !st->info->has_ref2) - return dev_err_probe(dev, -EINVAL, - "External reference 2 is not available on current model.\n"); - - ret = ad7173_get_ref_voltage_milli(st, ref_sel); - if (ret < 0) - return dev_err_probe(dev, ret, - "Cannot use reference %u\n", ref_sel); + ret = ad7173_validate_reference(st, ref_sel); + if (ret) + return ret; if (ref_sel == AD7173_SETUP_REF_SEL_INT_REF) st->adc_mode |= AD7173_ADC_MODE_REF_EN; -- 2.43.0
next prev parent reply other threads:[~2024-04-01 15:10 UTC|newest] Thread overview: 58+ messages / expand[flat|nested] mbox.gz Atom feed top 2024-04-01 15:32 [PATCH 0/6] Add support for AD411x Dumitru Ceclan via B4 Relay 2024-04-01 15:32 ` Dumitru Ceclan 2024-04-01 15:32 ` [PATCH 1/6] dt-bindings: adc: ad7173: add support for ad411x Dumitru Ceclan via B4 Relay 2024-04-01 15:32 ` Dumitru Ceclan 2024-04-01 19:37 ` David Lechner 2024-04-01 20:22 ` David Lechner 2024-04-03 7:45 ` Ceclan, Dumitru 2024-04-03 10:08 ` Ceclan, Dumitru 2024-04-03 15:14 ` David Lechner 2024-04-01 21:16 ` David Lechner 2024-04-03 7:50 ` Ceclan, Dumitru 2024-04-03 15:22 ` David Lechner 2024-04-04 13:08 ` Ceclan, Dumitru 2024-04-06 14:26 ` Jonathan Cameron 2024-04-09 8:10 ` Ceclan, Dumitru 2024-04-03 7:43 ` Ceclan, Dumitru 2024-04-03 15:40 ` David Lechner 2024-04-06 14:53 ` Jonathan Cameron 2024-04-09 8:08 ` Ceclan, Dumitru 2024-04-13 10:49 ` Jonathan Cameron 2024-04-15 18:42 ` Ceclan, Dumitru 2024-04-20 14:33 ` Jonathan Cameron 2024-04-23 8:18 ` Ceclan, Dumitru 2024-04-28 17:13 ` Jonathan Cameron 2024-05-09 13:48 ` Ceclan, Dumitru 2024-05-15 21:42 ` David Lechner 2024-05-16 8:18 ` Ceclan, Dumitru 2024-04-01 15:32 ` [PATCH 2/6] iio: adc: ad7173: fix buffers enablement for ad7176-2 Dumitru Ceclan via B4 Relay 2024-04-01 15:32 ` Dumitru Ceclan 2024-04-01 19:38 ` David Lechner 2024-04-06 14:56 ` Jonathan Cameron 2024-04-08 16:40 ` Ceclan, Dumitru 2024-04-13 10:50 ` Jonathan Cameron 2024-04-01 15:32 ` [PATCH 3/6] iio: adc: ad7173: refactor channel configuration parsing Dumitru Ceclan via B4 Relay 2024-04-01 15:32 ` Dumitru Ceclan 2024-04-01 19:39 ` David Lechner 2024-04-03 10:01 ` Ceclan, Dumitru 2024-04-03 15:55 ` David Lechner 2024-04-01 15:32 ` Dumitru Ceclan via B4 Relay [this message] 2024-04-01 15:32 ` [PATCH 4/6] iio: adc: ad7173: refactor ain and vref selection Dumitru Ceclan 2024-04-01 19:40 ` David Lechner 2024-04-03 10:03 ` Ceclan, Dumitru 2024-04-03 16:02 ` David Lechner 2024-04-06 15:03 ` Jonathan Cameron 2024-04-01 15:32 ` [PATCH 5/6] iio: adc: ad7173: Remove index from temp channel Dumitru Ceclan via B4 Relay 2024-04-01 15:32 ` Dumitru Ceclan 2024-04-01 19:40 ` David Lechner 2024-04-01 15:32 ` [PATCH 6/6] iio: adc: ad7173: Add support for AD411x devices Dumitru Ceclan via B4 Relay 2024-04-01 15:32 ` Dumitru Ceclan 2024-04-01 19:45 ` David Lechner 2024-04-02 14:00 ` David Lechner 2024-04-03 9:55 ` Ceclan, Dumitru 2024-04-03 9:53 ` Ceclan, Dumitru 2024-04-03 16:37 ` David Lechner 2024-04-06 15:10 ` Jonathan Cameron 2024-05-14 7:28 ` Ceclan, Dumitru 2024-04-01 21:53 ` David Lechner 2024-04-03 8:15 ` Ceclan, Dumitru
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=20240401-ad4111-v1-4-34618a9cc502@analog.com \ --to=devnull+dumitru.ceclan.analog.com@kernel.org \ --cc=Michael.Hennerich@analog.com \ --cc=conor+dt@kernel.org \ --cc=devicetree@vger.kernel.org \ --cc=dlechner@baylibre.com \ --cc=dumitru.ceclan@analog.com \ --cc=jic23@kernel.org \ --cc=krzysztof.kozlowski+dt@linaro.org \ --cc=lars@metafoo.de \ --cc=linux-iio@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=mitrutzceclan@gmail.com \ --cc=robh@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.