diff mbox series

[v3] iio: adc: ad7944: simplify adi,spi-mode property parsing

Message ID 20240325-ad7944-cleanups-v3-1-3a19120cdd06@baylibre.com (mailing list archive)
State Accepted
Headers show
Series [v3] iio: adc: ad7944: simplify adi,spi-mode property parsing | expand

Commit Message

David Lechner March 25, 2024, 7:40 p.m. UTC
This simplifies the adi,spi-mode property parsing by using
device_property_match_property_string() instead of two separate
functions. Also, the error return value is now more informative
in cases where there was a problem parsing the property.

Suggested-by: Andy Shevchenko <andy.shevchenko@gmail.com>
Signed-off-by: David Lechner <dlechner@baylibre.com>
---
Changes in v3:
- Fix "a problem" in commit message.
- Remove nested if to save a few lines.
- Link to v2: https://lore.kernel.org/r/20240319-ad7944-cleanups-v2-1-50e77269351b@baylibre.com

Changes in v2:
- Reorder error path to avoid else statement
- Link to v1: https://lore.kernel.org/r/20240318-ad7944-cleanups-v1-1-0cbb0349a14f@baylibre.com
---
 drivers/iio/adc/ad7944.c | 21 ++++++++++-----------
 1 file changed, 10 insertions(+), 11 deletions(-)


---
base-commit: 1446d8ef48196409f811c25071b2cc510a49fc60
change-id: 20240318-ad7944-cleanups-9f95a7c598b6

Comments

Jonathan Cameron March 28, 2024, 1:23 p.m. UTC | #1
On Mon, 25 Mar 2024 14:40:36 -0500
David Lechner <dlechner@baylibre.com> wrote:

> This simplifies the adi,spi-mode property parsing by using
> device_property_match_property_string() instead of two separate
> functions. Also, the error return value is now more informative
> in cases where there was a problem parsing the property.
> 
> Suggested-by: Andy Shevchenko <andy.shevchenko@gmail.com>
> Signed-off-by: David Lechner <dlechner@baylibre.com>

For this I'd already picked up part of an earlier version so hopefully
the rebase of my togreg branch needed to take this didn't cause anyone
any major problems.

Anyhow, dropped earlier version in favour of this one.

Jonathan
diff mbox series

Patch

diff --git a/drivers/iio/adc/ad7944.c b/drivers/iio/adc/ad7944.c
index d5ec6b5a41c7..9aa3e98cd75c 100644
--- a/drivers/iio/adc/ad7944.c
+++ b/drivers/iio/adc/ad7944.c
@@ -366,7 +366,6 @@  static int ad7944_probe(struct spi_device *spi)
 	struct ad7944_adc *adc;
 	bool have_refin = false;
 	struct regulator *ref;
-	const char *str_val;
 	int ret;
 
 	indio_dev = devm_iio_device_alloc(dev, sizeof(*adc));
@@ -382,17 +381,17 @@  static int ad7944_probe(struct spi_device *spi)
 
 	adc->timing_spec = chip_info->timing_spec;
 
-	if (device_property_read_string(dev, "adi,spi-mode", &str_val) == 0) {
-		ret = sysfs_match_string(ad7944_spi_modes, str_val);
-		if (ret < 0)
-			return dev_err_probe(dev, -EINVAL,
-					     "unsupported adi,spi-mode\n");
-
-		adc->spi_mode = ret;
-	} else {
-		/* absence of adi,spi-mode property means default mode */
+	ret = device_property_match_property_string(dev, "adi,spi-mode",
+						    ad7944_spi_modes,
+						    ARRAY_SIZE(ad7944_spi_modes));
+	/* absence of adi,spi-mode property means default mode */
+	if (ret == -EINVAL)
 		adc->spi_mode = AD7944_SPI_MODE_DEFAULT;
-	}
+	else if (ret < 0)
+		return dev_err_probe(dev, ret,
+				     "getting adi,spi-mode property failed\n");
+	else
+		adc->spi_mode = ret;
 
 	if (adc->spi_mode == AD7944_SPI_MODE_CHAIN)
 		return dev_err_probe(dev, -EINVAL,