[PATCH v2] staging: iio: addac: adt7316: check SPI write errors in probe

From: Hungyu Lin

Date: Sat May 09 2026 - 05:03:49 EST


The probe function issues three SPI writes to switch the device
from the default I2C protocol to SPI protocol, but ignores their
return values.

Switch the repeated SPI writes to a loop and return an error
if any of them fail, as failing to switch the protocol should
abort the probe.

Signed-off-by: Hungyu Lin <dennylin0707@xxxxxxxxx>
---
Changes in v2:
- Return error instead of just warning
- Clarify that repeated SPI writes are converted to a loop
---
drivers/staging/iio/addac/adt7316-spi.c | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/drivers/staging/iio/addac/adt7316-spi.c b/drivers/staging/iio/addac/adt7316-spi.c
index f91325d11394..056a4505bf30 100644
--- a/drivers/staging/iio/addac/adt7316-spi.c
+++ b/drivers/staging/iio/addac/adt7316-spi.c
@@ -98,6 +98,7 @@ static int adt7316_spi_probe(struct spi_device *spi_dev)
.multi_read = adt7316_spi_multi_read,
.multi_write = adt7316_spi_multi_write,
};
+ int i, ret;

/* don't exceed max specified SPI CLK frequency */
if (spi_dev->max_speed_hz > ADT7316_SPI_MAX_FREQ_HZ) {
@@ -107,9 +108,11 @@ static int adt7316_spi_probe(struct spi_device *spi_dev)
}

/* switch from default I2C protocol to SPI protocol */
- adt7316_spi_write(spi_dev, 0, 0);
- adt7316_spi_write(spi_dev, 0, 0);
- adt7316_spi_write(spi_dev, 0, 0);
+ for (i = 0; i < 3; i++) {
+ ret = adt7316_spi_write(spi_dev, 0, 0);
+ if (ret)
+ return ret;
+ }

return adt7316_probe(&spi_dev->dev, &bus, spi_dev->modalias);
}
--
2.34.1