Skip to content

Commit a6c23da

Browse files
alexelderWolfram Sang
authored andcommitted
i2c: k1: check for transfer error
If spacemit_i2c_xfer_msg() times out waiting for a message transfer to complete, or if the hardware reports an error, it returns a negative error code (-ETIMEDOUT, -EAGAIN, -ENXIO. or -EIO). The sole caller of spacemit_i2c_xfer_msg() is spacemit_i2c_xfer(), which is the i2c_algorithm->xfer callback function. It currently does not save the value returned by spacemit_i2c_xfer_msg(). The result is that transfer errors go unreported, and a caller has no indication anything is wrong. When this code was out for review, the return value *was* checked in early versions. But for some reason, that assignment got dropped between versions 5 and 6 of the series, perhaps related to reworking the code to merge spacemit_i2c_xfer_core() into spacemit_i2c_xfer(). Simply assigning the value returned to "ret" fixes the problem. Fixes: 5ea5584 ("i2c: spacemit: add support for SpacemiT K1 SoC") Signed-off-by: Alex Elder <[email protected]> Cc: <[email protected]> # v6.15+ Reviewed-by: Troy Mitchell <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Andi Shyti <[email protected]> Signed-off-by: Wolfram Sang <[email protected]>
1 parent 9a816eb commit a6c23da

File tree

1 file changed

+1
-1
lines changed

1 file changed

+1
-1
lines changed

drivers/i2c/busses/i2c-k1.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -477,7 +477,7 @@ static int spacemit_i2c_xfer(struct i2c_adapter *adapt, struct i2c_msg *msgs, in
477477

478478
ret = spacemit_i2c_wait_bus_idle(i2c);
479479
if (!ret)
480-
spacemit_i2c_xfer_msg(i2c);
480+
ret = spacemit_i2c_xfer_msg(i2c);
481481
else if (ret < 0)
482482
dev_dbg(i2c->dev, "i2c transfer error: %d\n", ret);
483483
else

0 commit comments

Comments
 (0)