[PATCH] mfd: tps65910: add error handling for dummy I2C transfer in probe

From: Wenyuan Li

Date: Tue Mar 24 2026 - 05:59:11 EST


In tps65910_i2c_probe(), a dummy I2C transfer is performed to work
around silicon erratum SWCZ010. However, the return value of
i2c_master_send() is not checked.

If this dummy transfer fails, the driver continues execution without
detecting the error. This may lead to subsequent I2C operations also
failing, but the driver would incorrectly report success.

Add proper return value checking for the dummy I2C transfer. If the
transfer fails, log the error and return an appropriate error code
to the caller.

Signed-off-by: Wenyuan Li <2063309626@xxxxxx>
---
drivers/mfd/tps65910.c | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/drivers/mfd/tps65910.c b/drivers/mfd/tps65910.c
index 6a7b7a697fb7..6134b28d3ec3 100644
--- a/drivers/mfd/tps65910.c
+++ b/drivers/mfd/tps65910.c
@@ -472,7 +472,14 @@ static int tps65910_i2c_probe(struct i2c_client *i2c)
* first I2C transfer. So issue a dummy transfer before the first
* real transfer.
*/
- i2c_master_send(i2c, "", 1);
+ ret = i2c_master_send(i2c, "", 1);
+ if (ret != 1) {
+ int err = ret < 0 ? ret : -EIO;
+
+ dev_err(&i2c->dev, "dummy transfer failed: %pe\n", ERR_PTR(err));
+ return err;
+ }
+
tps65910->regmap = devm_regmap_init_i2c(i2c, &tps65910_regmap_config);
if (IS_ERR(tps65910->regmap)) {
ret = PTR_ERR(tps65910->regmap);
--
2.43.0