diff options
author | Tomoya MORINAGA <tomoya.rohm@gmail.com> | 2012-03-26 08:34:10 +0200 |
---|---|---|
committer | Wolfram Sang <w.sang@pengutronix.de> | 2012-05-12 14:28:13 +0200 |
commit | 2761a81cee6874f73ebaa81f1a9e45147907c38b (patch) | |
tree | ae1e8331fb76557a1e5793a7a437a44c3b9a6528 /drivers/i2c | |
parent | i2c-mpc: avoid I2C abnormal after resuming from deep sleep (diff) | |
download | linux-2761a81cee6874f73ebaa81f1a9e45147907c38b.tar.xz linux-2761a81cee6874f73ebaa81f1a9e45147907c38b.zip |
i2c-eg20t: Call init() when wait-event timeout occurs
Signed-off-by: Tomoya MORINAGA <tomoya.rohm@gmail.com>
Signed-off-by: Wolfram Sang <w.sang@pengutronix.de>
Diffstat (limited to 'drivers/i2c')
-rw-r--r-- | drivers/i2c/busses/i2c-eg20t.c | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/drivers/i2c/busses/i2c-eg20t.c b/drivers/i2c/busses/i2c-eg20t.c index c811289b61e2..d6309e618cdc 100644 --- a/drivers/i2c/busses/i2c-eg20t.c +++ b/drivers/i2c/busses/i2c-eg20t.c @@ -445,7 +445,10 @@ static s32 pch_i2c_writebytes(struct i2c_adapter *i2c_adap, pch_i2c_init(adap); return -EAGAIN; } else { /* wait-event timeout */ + pch_err(adap, "%s(L.%d):wait-event timeout\n", + __func__, __LINE__); pch_i2c_stop(adap); + pch_i2c_init(adap); return -ETIME; } } else { @@ -469,7 +472,10 @@ static s32 pch_i2c_writebytes(struct i2c_adapter *i2c_adap, pch_i2c_init(adap); return -EAGAIN; } else { /* wait-event timeout */ + pch_err(adap, "%s(L.%d):wait-event timeout\n", + __func__, __LINE__); pch_i2c_stop(adap); + pch_i2c_init(adap); return -ETIME; } @@ -490,7 +496,10 @@ static s32 pch_i2c_writebytes(struct i2c_adapter *i2c_adap, pch_clrbit(adap->pch_base_address, PCH_I2CSR, I2CMIF_BIT); } else { /* wait-event timeout */ + pch_err(adap, "%s(L.%d):wait-event timeout\n", + __func__, __LINE__); pch_i2c_stop(adap); + pch_i2c_init(adap); return -ETIME; } } @@ -598,7 +607,10 @@ static s32 pch_i2c_readbytes(struct i2c_adapter *i2c_adap, struct i2c_msg *msgs, pch_i2c_init(adap); return -EAGAIN; } else { /* wait-event timeout */ + pch_err(adap, "%s(L.%d):wait-event timeout\n", + __func__, __LINE__); pch_i2c_stop(adap); + pch_i2c_init(adap); return -ETIME; } pch_i2c_restart(adap); @@ -621,7 +633,10 @@ static s32 pch_i2c_readbytes(struct i2c_adapter *i2c_adap, struct i2c_msg *msgs, pch_i2c_init(adap); return -EAGAIN; } else { /* wait-event timeout */ + pch_err(adap, "%s(L.%d):wait-event timeout\n", + __func__, __LINE__); pch_i2c_stop(adap); + pch_i2c_init(adap); return -ETIME; } } else { @@ -648,7 +663,10 @@ static s32 pch_i2c_readbytes(struct i2c_adapter *i2c_adap, struct i2c_msg *msgs, pch_i2c_init(adap); return -EAGAIN; } else { /* wait-event timeout */ + pch_err(adap, "%s(L.%d):wait-event timeout\n", + __func__, __LINE__); pch_i2c_stop(adap); + pch_i2c_init(adap); return -ETIME; } @@ -677,7 +695,10 @@ static s32 pch_i2c_readbytes(struct i2c_adapter *i2c_adap, struct i2c_msg *msgs, return -EIO; } } else { /* wait-event timeout */ + pch_err(adap, "%s(L.%d):wait-event timeout\n", + __func__, __LINE__); pch_i2c_stop(adap); + pch_i2c_init(adap); return -ETIME; } @@ -698,7 +719,10 @@ static s32 pch_i2c_readbytes(struct i2c_adapter *i2c_adap, struct i2c_msg *msgs, return -EIO; } } else { /* wait-event timeout */ + pch_err(adap, "%s(L.%d):wait-event timeout\n", + __func__, __LINE__); pch_i2c_stop(adap); + pch_i2c_init(adap); return -ETIME; } |