|
@@ -273,23 +273,23 @@ static s32 pch_i2c_wait_for_bus_idle(struct i2c_algo_pch_data *adap,
|
|
|
s32 timeout)
|
|
|
{
|
|
|
void __iomem *p = adap->pch_base_address;
|
|
|
+ ktime_t ns_val;
|
|
|
+
|
|
|
+ if ((ioread32(p + PCH_I2CSR) & I2CMBB_BIT) == 0)
|
|
|
+ return 0;
|
|
|
|
|
|
/* MAX timeout value is timeout*1000*1000nsec */
|
|
|
- ktime_t ns_val = ktime_add_ns(ktime_get(), timeout*1000*1000);
|
|
|
+ ns_val = ktime_add_ns(ktime_get(), timeout*1000*1000);
|
|
|
do {
|
|
|
- if ((ioread32(p + PCH_I2CSR) & I2CMBB_BIT) == 0)
|
|
|
- break;
|
|
|
msleep(20);
|
|
|
+ if ((ioread32(p + PCH_I2CSR) & I2CMBB_BIT) == 0)
|
|
|
+ return 0;
|
|
|
} while (ktime_lt(ktime_get(), ns_val));
|
|
|
|
|
|
pch_dbg(adap, "I2CSR = %x\n", ioread32(p + PCH_I2CSR));
|
|
|
+ pch_err(adap, "%s: Timeout Error.return%d\n", __func__, -ETIME);
|
|
|
|
|
|
- if (timeout == 0) {
|
|
|
- pch_err(adap, "%s: Timeout Error.return%d\n", __func__, -ETIME);
|
|
|
- return -ETIME;
|
|
|
- }
|
|
|
-
|
|
|
- return 0;
|
|
|
+ return -ETIME;
|
|
|
}
|
|
|
|
|
|
/**
|