diff options
author | Jan Glauber <jglauber@cavium.com> | 2016-12-09 12:31:57 +0300 |
---|---|---|
committer | Wolfram Sang <wsa@the-dreams.de> | 2016-12-17 21:27:44 +0300 |
commit | 493ff7e2cdda9182fb709d3681315180d9165bd8 (patch) | |
tree | b3c5e698aade608c5d84736dad5bd7a1da9a36a6 /drivers/i2c/busses/i2c-octeon-core.c | |
parent | 59331c215daf600a650e281b6e8ef3e1ed1174c2 (diff) | |
download | linux-493ff7e2cdda9182fb709d3681315180d9165bd8.tar.xz |
i2c: octeon: thunderx: Limit register access retries
Do not infinitely retry register readq and writeq operations
in order to not lock up the CPU in case the TWSI gets stuck.
Return -EIO in case of a failed data read. For all other
cases just return so subsequent operations will fail
and trigger the recovery.
Signed-off-by: Jan Glauber <jglauber@cavium.com>
Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
Diffstat (limited to 'drivers/i2c/busses/i2c-octeon-core.c')
-rw-r--r-- | drivers/i2c/busses/i2c-octeon-core.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/i2c/busses/i2c-octeon-core.c b/drivers/i2c/busses/i2c-octeon-core.c index 3d10f1a802be..1d8775799056 100644 --- a/drivers/i2c/busses/i2c-octeon-core.c +++ b/drivers/i2c/busses/i2c-octeon-core.c @@ -342,7 +342,9 @@ static int octeon_i2c_read(struct octeon_i2c *i2c, int target, if (result) return result; - data[i] = octeon_i2c_data_read(i2c); + data[i] = octeon_i2c_data_read(i2c, &result); + if (result) + return result; if (recv_len && i == 0) { if (data[i] > I2C_SMBUS_BLOCK_MAX + 1) return -EPROTO; |