Linux kernel staging patches
 help / color / mirror / Atom feed
* [PATCH 0/2] staging: iio: addac: adt7316: error code and probe cleanups
@ 2026-10-18 21:41 Raffaele Tranfaglia via B4 Relay
  2026-10-18 21:41 ` [PATCH 1/2] staging: iio: addac: adt7316: propagate bus error codes Raffaele Tranfaglia via B4 Relay
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Raffaele Tranfaglia via B4 Relay @ 2026-10-18 21:41 UTC (permalink / raw)
  To: Nuno Sá, Michael Hennerich, Jonathan Cameron, David Lechner,
	Andy Shevchenko, Greg Kroah-Hartman
  Cc: linux, linux-iio, linux-staging, linux-kernel,
	Raffaele Tranfaglia

Two small cleanups for the adt7316 driver.

Patch 1 makes the driver return the error codes reported by the bus
helpers instead of replacing them with -EIO, so callers see the
actual cause of a failure.

Patch 2 removes the dev_info() printed on successful probe, as
drivers that are working properly should be quiet (see
Documentation/process/coding-style.rst).

Tested on arm64 QEMU, with i2c-stub providing the device:

  insmod i2c-stub.ko chip_addr=0x48
  i2cset -y 0 0x48 0x4d 0x01
  echo adt7316 0x48 > /sys/bus/i2c/devices/i2c-0/new_device

- probe succeeds and no longer prints a message
- device_id reads back the stub register value
- writing 0/1 to "enabled" updates CONFIG1 (0x18)

Error path, instantiating the device where no stub chip exists:

  echo adt7316 0x49 > /sys/bus/i2c/devices/i2c-0/new_device

  before: probe with driver adt7316 failed with error -5
  after:  probe with driver adt7316 rejects match -19

Signed-off-by: Raffaele Tranfaglia <raffaele.tranfaglia@gmail.com>

Signed-off-by: Raffaele Tranfaglia <raffaele.tranfaglia@gmail.com>
---
Raffaele Tranfaglia (2):
      staging: iio: addac: adt7316: propagate bus error codes
      staging: iio: addac: adt7316: drop informational message in probe

 drivers/staging/iio/addac/adt7316.c | 91 ++++++++++++++++++-------------------
 1 file changed, 43 insertions(+), 48 deletions(-)
---
base-commit: 6a27f3a7d1063aec5aa3d9370161e850fc3a85dd
change-id: 20261018-adt7316-error-codes-48500bb0b1cb

Best regards,
--  
Raffaele Tranfaglia <raffaele.tranfaglia@gmail.com>



^ permalink raw reply	[flat|nested] 4+ messages in thread

* [PATCH 1/2] staging: iio: addac: adt7316: propagate bus error codes
  2026-10-18 21:41 [PATCH 0/2] staging: iio: addac: adt7316: error code and probe cleanups Raffaele Tranfaglia via B4 Relay
@ 2026-10-18 21:41 ` Raffaele Tranfaglia via B4 Relay
  2026-10-18 21:41 ` [PATCH 2/2] staging: iio: addac: adt7316: drop informational message in probe Raffaele Tranfaglia via B4 Relay
  2026-10-19  1:57 ` [PATCH 0/2] staging: iio: addac: adt7316: error code and probe cleanups Ethan Tidmore
  2 siblings, 0 replies; 4+ messages in thread
From: Raffaele Tranfaglia via B4 Relay @ 2026-10-18 21:41 UTC (permalink / raw)
  To: Nuno Sá, Michael Hennerich, Jonathan Cameron, David Lechner,
	Andy Shevchenko, Greg Kroah-Hartman
  Cc: linux, linux-iio, linux-staging, linux-kernel,
	Raffaele Tranfaglia

From: Raffaele Tranfaglia <raffaele.tranfaglia@gmail.com>

Many register accesses replace the error returned by the bus read and
write helpers with -EIO, hiding the actual cause of a failure such as
-ENXIO or -ETIMEDOUT from the I2C or SPI core.

The bus helpers already return a negative errno on failure and 0 on
success, so return their error code unchanged instead. Do the same
for the result of _adt7316_store_enabled() in adt7316_store_enabled().

Assisted-by: LLM
Signed-off-by: Raffaele Tranfaglia <raffaele.tranfaglia@gmail.com>
---
 drivers/staging/iio/addac/adt7316.c | 84 +++++++++++++++++++------------------
 1 file changed, 43 insertions(+), 41 deletions(-)

diff --git a/drivers/staging/iio/addac/adt7316.c b/drivers/staging/iio/addac/adt7316.c
index 8ca6def84584..d495032786db 100644
--- a/drivers/staging/iio/addac/adt7316.c
+++ b/drivers/staging/iio/addac/adt7316.c
@@ -232,7 +232,7 @@ static ssize_t _adt7316_store_enabled(struct adt7316_chip_info *chip,
 
 	ret = chip->bus.write(chip->bus.client, ADT7316_CONFIG1, config1);
 	if (ret)
-		return -EIO;
+		return ret;
 
 	chip->config1 = config1;
 
@@ -247,14 +247,16 @@ static ssize_t adt7316_store_enabled(struct device *dev,
 	struct iio_dev *dev_info = dev_to_iio_dev(dev);
 	struct adt7316_chip_info *chip = iio_priv(dev_info);
 	int enable;
+	int ret;
 
 	if (buf[0] == '1')
 		enable = 1;
 	else
 		enable = 0;
 
-	if (_adt7316_store_enabled(chip, enable) < 0)
-		return -EIO;
+	ret = _adt7316_store_enabled(chip, enable);
+	if (ret < 0)
+		return ret;
 
 	return len;
 }
@@ -296,7 +298,7 @@ static ssize_t adt7316_store_select_ex_temp(struct device *dev,
 
 	ret = chip->bus.write(chip->bus.client, ADT7316_CONFIG1, config1);
 	if (ret)
-		return -EIO;
+		return ret;
 
 	chip->config1 = config1;
 
@@ -337,7 +339,7 @@ static ssize_t adt7316_store_mode(struct device *dev,
 
 	ret = chip->bus.write(chip->bus.client, ADT7316_CONFIG2, config2);
 	if (ret)
-		return -EIO;
+		return ret;
 
 	chip->config2 = config2;
 
@@ -430,7 +432,7 @@ static ssize_t adt7316_store_ad_channel(struct device *dev,
 
 	ret = chip->bus.write(chip->bus.client, ADT7316_CONFIG2, config2);
 	if (ret)
-		return -EIO;
+		return ret;
 
 	chip->config2 = config2;
 
@@ -490,7 +492,7 @@ static ssize_t adt7316_store_disable_averaging(struct device *dev,
 
 	ret = chip->bus.write(chip->bus.client, ADT7316_CONFIG2, config2);
 	if (ret)
-		return -EIO;
+		return ret;
 
 	chip->config2 = config2;
 
@@ -529,7 +531,7 @@ static ssize_t adt7316_store_enable_smbus_timeout(struct device *dev,
 
 	ret = chip->bus.write(chip->bus.client, ADT7316_CONFIG2, config2);
 	if (ret)
-		return -EIO;
+		return ret;
 
 	chip->config2 = config2;
 
@@ -567,7 +569,7 @@ static ssize_t adt7316_store_powerdown(struct device *dev,
 
 	ret = chip->bus.write(chip->bus.client, ADT7316_CONFIG1, config1);
 	if (ret)
-		return -EIO;
+		return ret;
 
 	chip->config1 = config1;
 
@@ -605,7 +607,7 @@ static ssize_t adt7316_store_fast_ad_clock(struct device *dev,
 
 	ret = chip->bus.write(chip->bus.client, ADT7316_CONFIG3, config3);
 	if (ret)
-		return -EIO;
+		return ret;
 
 	chip->config3 = config3;
 
@@ -651,7 +653,7 @@ static ssize_t adt7316_store_da_high_resolution(struct device *dev,
 
 	ret = chip->bus.write(chip->bus.client, ADT7316_CONFIG3, config3);
 	if (ret)
-		return -EIO;
+		return ret;
 
 	chip->config3 = config3;
 
@@ -697,7 +699,7 @@ static ssize_t adt7316_store_AIN_internal_Vref(struct device *dev,
 
 	ret = chip->bus.write(chip->bus.client, ADT7316_CONFIG3, config3);
 	if (ret)
-		return -EIO;
+		return ret;
 
 	chip->config3 = config3;
 
@@ -736,7 +738,7 @@ static ssize_t adt7316_store_enable_prop_DACA(struct device *dev,
 
 	ret = chip->bus.write(chip->bus.client, ADT7316_CONFIG3, config3);
 	if (ret)
-		return -EIO;
+		return ret;
 
 	chip->config3 = config3;
 
@@ -775,7 +777,7 @@ static ssize_t adt7316_store_enable_prop_DACB(struct device *dev,
 
 	ret = chip->bus.write(chip->bus.client, ADT7316_CONFIG3, config3);
 	if (ret)
-		return -EIO;
+		return ret;
 
 	chip->config3 = config3;
 
@@ -818,7 +820,7 @@ static ssize_t adt7316_store_DAC_2Vref_ch_mask(struct device *dev,
 
 	ret = chip->bus.write(chip->bus.client, ADT7316_DAC_CONFIG, dac_config);
 	if (ret)
-		return -EIO;
+		return ret;
 
 	chip->dac_config = dac_config;
 
@@ -878,7 +880,7 @@ static ssize_t adt7316_store_DAC_update_mode(struct device *dev,
 
 	ret = chip->bus.write(chip->bus.client, ADT7316_DAC_CONFIG, dac_config);
 	if (ret)
-		return -EIO;
+		return ret;
 
 	chip->dac_config = dac_config;
 
@@ -934,7 +936,7 @@ static ssize_t adt7316_store_update_DAC(struct device *dev,
 		ret = chip->bus.write(chip->bus.client, ADT7316_LDAC_CONFIG,
 			ldac_config);
 		if (ret)
-			return -EIO;
+			return ret;
 	} else {
 		gpiod_set_value(chip->ldac_pin, 0);
 		gpiod_set_value(chip->ldac_pin, 1);
@@ -975,7 +977,7 @@ static ssize_t adt7316_store_DA_AB_Vref_bypass(struct device *dev,
 
 	ret = chip->bus.write(chip->bus.client, ADT7316_DAC_CONFIG, dac_config);
 	if (ret)
-		return -EIO;
+		return ret;
 
 	chip->dac_config = dac_config;
 
@@ -1014,7 +1016,7 @@ static ssize_t adt7316_store_DA_CD_Vref_bypass(struct device *dev,
 
 	ret = chip->bus.write(chip->bus.client, ADT7316_DAC_CONFIG, dac_config);
 	if (ret)
-		return -EIO;
+		return ret;
 
 	chip->dac_config = dac_config;
 
@@ -1075,7 +1077,7 @@ static ssize_t adt7316_store_DAC_internal_Vref(struct device *dev,
 	ret = chip->bus.write(chip->bus.client, ADT7316_LDAC_CONFIG,
 			ldac_config);
 	if (ret)
-		return -EIO;
+		return ret;
 
 	chip->ldac_config = ldac_config;
 
@@ -1104,12 +1106,12 @@ static ssize_t adt7316_show_ad(struct adt7316_chip_info *chip,
 		ret = chip->bus.read(chip->bus.client,
 			ADT7316_LSB_IN_TEMP_VDD, &lsb);
 		if (ret)
-			return -EIO;
+			return ret;
 
 		ret = chip->bus.read(chip->bus.client,
 			ADT7316_AD_MSB_DATA_BASE + channel, &msb);
 		if (ret)
-			return -EIO;
+			return ret;
 
 		data = msb << ADT7316_T_VALUE_FLOAT_OFFSET;
 		data |= lsb & ADT7316_LSB_IN_TEMP_MASK;
@@ -1118,13 +1120,13 @@ static ssize_t adt7316_show_ad(struct adt7316_chip_info *chip,
 		ret = chip->bus.read(chip->bus.client,
 			ADT7316_LSB_IN_TEMP_VDD, &lsb);
 		if (ret)
-			return -EIO;
+			return ret;
 
 		ret = chip->bus.read(chip->bus.client,
 
 			ADT7316_AD_MSB_DATA_BASE + channel, &msb);
 		if (ret)
-			return -EIO;
+			return ret;
 
 		data = msb << ADT7316_T_VALUE_FLOAT_OFFSET;
 		data |= (lsb & ADT7316_LSB_VDD_MASK) >> ADT7316_LSB_VDD_OFFSET;
@@ -1133,12 +1135,12 @@ static ssize_t adt7316_show_ad(struct adt7316_chip_info *chip,
 		ret = chip->bus.read(chip->bus.client,
 			ADT7316_LSB_EX_TEMP_AIN, &lsb);
 		if (ret)
-			return -EIO;
+			return ret;
 
 		ret = chip->bus.read(chip->bus.client,
 			ADT7316_AD_MSB_DATA_BASE + channel, &msb);
 		if (ret)
-			return -EIO;
+			return ret;
 
 		data = msb << ADT7316_T_VALUE_FLOAT_OFFSET;
 		data |= lsb & (ADT7316_LSB_EX_TEMP_MASK <<
@@ -1241,7 +1243,7 @@ static ssize_t adt7316_show_temp_offset(struct adt7316_chip_info *chip,
 
 	ret = chip->bus.read(chip->bus.client, offset_addr, &val);
 	if (ret)
-		return -EIO;
+		return ret;
 
 	data = (int)val;
 	if (val & 0x80)
@@ -1270,7 +1272,7 @@ static ssize_t adt7316_store_temp_offset(struct adt7316_chip_info *chip,
 
 	ret = chip->bus.write(chip->bus.client, offset_addr, val);
 	if (ret)
-		return -EIO;
+		return ret;
 
 	return len;
 }
@@ -1401,13 +1403,13 @@ static ssize_t adt7316_show_DAC(struct adt7316_chip_info *chip,
 		ret = chip->bus.read(chip->bus.client,
 			ADT7316_DA_DATA_BASE + channel * 2, &lsb);
 		if (ret)
-			return -EIO;
+			return ret;
 	}
 
 	ret = chip->bus.read(chip->bus.client,
 		ADT7316_DA_DATA_BASE + 1 + channel * 2, &msb);
 	if (ret)
-		return -EIO;
+		return ret;
 
 	if (chip->dac_bits == 12)
 		data = lsb >> ADT7316_DA_12_BIT_LSB_SHIFT;
@@ -1447,14 +1449,14 @@ static ssize_t adt7316_store_DAC(struct adt7316_chip_info *chip,
 		ret = chip->bus.write(chip->bus.client,
 			ADT7316_DA_DATA_BASE + channel * 2, lsb_reg);
 		if (ret)
-			return -EIO;
+			return ret;
 	}
 
 	msb = data >> offset;
 	ret = chip->bus.write(chip->bus.client,
 		ADT7316_DA_DATA_BASE + 1 + channel * 2, msb);
 	if (ret)
-		return -EIO;
+		return ret;
 
 	return len;
 }
@@ -1566,7 +1568,7 @@ static ssize_t adt7316_show_device_id(struct device *dev,
 
 	ret = chip->bus.read(chip->bus.client, ADT7316_DEVICE_ID, &id);
 	if (ret)
-		return -EIO;
+		return ret;
 
 	return sysfs_emit(buf, "%d\n", id);
 }
@@ -1584,7 +1586,7 @@ static ssize_t adt7316_show_manufactorer_id(struct device *dev,
 
 	ret = chip->bus.read(chip->bus.client, ADT7316_MANUFACTURE_ID, &id);
 	if (ret)
-		return -EIO;
+		return ret;
 
 	return sysfs_emit(buf, "%d\n", id);
 }
@@ -1603,7 +1605,7 @@ static ssize_t adt7316_show_device_rev(struct device *dev,
 
 	ret = chip->bus.read(chip->bus.client, ADT7316_DEVICE_REV, &rev);
 	if (ret)
-		return -EIO;
+		return ret;
 
 	return sysfs_emit(buf, "%d\n", rev);
 }
@@ -1621,7 +1623,7 @@ static ssize_t adt7316_show_bus_type(struct device *dev,
 
 	ret = chip->bus.read(chip->bus.client, ADT7316_SPI_LOCK_STAT, &stat);
 	if (ret)
-		return -EIO;
+		return ret;
 
 	if (stat)
 		return sysfs_emit(buf, "spi\n");
@@ -1897,7 +1899,7 @@ static inline ssize_t adt7316_show_ad_bound(struct device *dev,
 
 	ret = chip->bus.read(chip->bus.client, this_attr->address, &val);
 	if (ret)
-		return -EIO;
+		return ret;
 
 	data = (int)val;
 
@@ -1946,7 +1948,7 @@ static inline ssize_t adt7316_set_ad_bound(struct device *dev,
 
 	ret = chip->bus.write(chip->bus.client, this_attr->address, val);
 	if (ret)
-		return -EIO;
+		return ret;
 
 	return len;
 }
@@ -1977,7 +1979,7 @@ static ssize_t adt7316_set_int_enabled(struct device *dev,
 
 	ret = chip->bus.write(chip->bus.client, ADT7316_CONFIG1, config1);
 	if (ret)
-		return -EIO;
+		return ret;
 
 	chip->config1 = config1;
 
@@ -2170,11 +2172,11 @@ int adt7316_probe(struct device *dev, struct adt7316_bus *bus,
 
 	ret = chip->bus.write(chip->bus.client, ADT7316_CONFIG1, chip->config1);
 	if (ret)
-		return -EIO;
+		return ret;
 
 	ret = chip->bus.write(chip->bus.client, ADT7316_CONFIG3, chip->config3);
 	if (ret)
-		return -EIO;
+		return ret;
 
 	ret = devm_iio_device_register(dev, indio_dev);
 	if (ret)

-- 
2.56.0



^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [PATCH 2/2] staging: iio: addac: adt7316: drop informational message in probe
  2026-10-18 21:41 [PATCH 0/2] staging: iio: addac: adt7316: error code and probe cleanups Raffaele Tranfaglia via B4 Relay
  2026-10-18 21:41 ` [PATCH 1/2] staging: iio: addac: adt7316: propagate bus error codes Raffaele Tranfaglia via B4 Relay
@ 2026-10-18 21:41 ` Raffaele Tranfaglia via B4 Relay
  2026-10-19  1:57 ` [PATCH 0/2] staging: iio: addac: adt7316: error code and probe cleanups Ethan Tidmore
  2 siblings, 0 replies; 4+ messages in thread
From: Raffaele Tranfaglia via B4 Relay @ 2026-10-18 21:41 UTC (permalink / raw)
  To: Nuno Sá, Michael Hennerich, Jonathan Cameron, David Lechner,
	Andy Shevchenko, Greg Kroah-Hartman
  Cc: linux, linux-iio, linux-staging, linux-kernel,
	Raffaele Tranfaglia

From: Raffaele Tranfaglia <raffaele.tranfaglia@gmail.com>

A successful probe does not need to be announced in the kernel log;
the device can be found in sysfs. Remove the dev_info() and return the
result of devm_iio_device_register() directly.

Assisted-by: LLM
Signed-off-by: Raffaele Tranfaglia <raffaele.tranfaglia@gmail.com>
---
 drivers/staging/iio/addac/adt7316.c | 9 +--------
 1 file changed, 1 insertion(+), 8 deletions(-)

diff --git a/drivers/staging/iio/addac/adt7316.c b/drivers/staging/iio/addac/adt7316.c
index d495032786db..9fcbb640b7a5 100644
--- a/drivers/staging/iio/addac/adt7316.c
+++ b/drivers/staging/iio/addac/adt7316.c
@@ -2178,14 +2178,7 @@ int adt7316_probe(struct device *dev, struct adt7316_bus *bus,
 	if (ret)
 		return ret;
 
-	ret = devm_iio_device_register(dev, indio_dev);
-	if (ret)
-		return ret;
-
-	dev_info(dev, "%s temperature sensor, ADC and DAC registered.\n",
-		 indio_dev->name);
-
-	return 0;
+	return devm_iio_device_register(dev, indio_dev);
 }
 EXPORT_SYMBOL(adt7316_probe);
 

-- 
2.56.0



^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH 0/2] staging: iio: addac: adt7316: error code and probe cleanups
  2026-10-18 21:41 [PATCH 0/2] staging: iio: addac: adt7316: error code and probe cleanups Raffaele Tranfaglia via B4 Relay
  2026-10-18 21:41 ` [PATCH 1/2] staging: iio: addac: adt7316: propagate bus error codes Raffaele Tranfaglia via B4 Relay
  2026-10-18 21:41 ` [PATCH 2/2] staging: iio: addac: adt7316: drop informational message in probe Raffaele Tranfaglia via B4 Relay
@ 2026-10-19  1:57 ` Ethan Tidmore
  2 siblings, 0 replies; 4+ messages in thread
From: Ethan Tidmore @ 2026-10-19  1:57 UTC (permalink / raw)
  To: raffaele.tranfaglia, Nuno Sá, Michael Hennerich,
	Jonathan Cameron, David Lechner, Andy Shevchenko,
	Greg Kroah-Hartman
  Cc: linux, linux-iio, linux-staging, linux-kernel

On Sun Oct 18, 2026 at 4:41 PM CDT, Raffaele Tranfaglia via B4 Relay wrote:
> Two small cleanups for the adt7316 driver.
>
> Patch 1 makes the driver return the error codes reported by the bus
> helpers instead of replacing them with -EIO, so callers see the
> actual cause of a failure.
>
> Patch 2 removes the dev_info() printed on successful probe, as
> drivers that are working properly should be quiet (see
> Documentation/process/coding-style.rst).
>
> Tested on arm64 QEMU, with i2c-stub providing the device:
>
>   insmod i2c-stub.ko chip_addr=0x48
>   i2cset -y 0 0x48 0x4d 0x01
>   echo adt7316 0x48 > /sys/bus/i2c/devices/i2c-0/new_device
>
> - probe succeeds and no longer prints a message
> - device_id reads back the stub register value
> - writing 0/1 to "enabled" updates CONFIG1 (0x18)
>
> Error path, instantiating the device where no stub chip exists:
>
>   echo adt7316 0x49 > /sys/bus/i2c/devices/i2c-0/new_device
>
>   before: probe with driver adt7316 failed with error -5
>   after:  probe with driver adt7316 rejects match -19
>
> Signed-off-by: Raffaele Tranfaglia <raffaele.tranfaglia@gmail.com>
>
> Signed-off-by: Raffaele Tranfaglia <raffaele.tranfaglia@gmail.com>
> ---

This is the current policy regarding AI and staging [1].

Thanks,
ET

[1] https://lore.kernel.org/r/2026080354-skater-urgent-31b2@gregkh

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2026-10-19  1:58 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-10-18 21:41 [PATCH 0/2] staging: iio: addac: adt7316: error code and probe cleanups Raffaele Tranfaglia via B4 Relay
2026-10-18 21:41 ` [PATCH 1/2] staging: iio: addac: adt7316: propagate bus error codes Raffaele Tranfaglia via B4 Relay
2026-10-18 21:41 ` [PATCH 2/2] staging: iio: addac: adt7316: drop informational message in probe Raffaele Tranfaglia via B4 Relay
2026-10-19  1:57 ` [PATCH 0/2] staging: iio: addac: adt7316: error code and probe cleanups Ethan Tidmore

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox