Skip to content

Commit

Permalink
i2c-eg20t: Call init() when wait-event timeout occurs
Browse files Browse the repository at this point in the history
Signed-off-by: Tomoya MORINAGA <tomoya.rohm@gmail.com>
Signed-off-by: Wolfram Sang <w.sang@pengutronix.de>
  • Loading branch information
Tomoya MORINAGA authored and Wolfram Sang committed May 12, 2012
1 parent 531183e commit 2761a81
Showing 1 changed file with 24 additions and 0 deletions.
24 changes: 24 additions & 0 deletions drivers/i2c/busses/i2c-eg20t.c
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand All @@ -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;
}

Expand All @@ -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;
}
}
Expand Down Expand Up @@ -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);
Expand All @@ -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 {
Expand All @@ -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;
}

Expand Down Expand Up @@ -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;
}

Expand All @@ -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;
}

Expand Down

0 comments on commit 2761a81

Please sign in to comment.