forked from luck/tmp_suning_uos_patched
i2c-davinci: Fix timeout handling
Properly set the adapter timeout value in jiffies, and then use that value in the driver, rather than a hard-coded constant. Signed-off-by: Jean Delvare <khali@linux-fr.org> Tested-by: Troy Kisky <troy.kisky@boundarydevices.com> Cc: Kevin Hilman <khilman@mvista.com>
This commit is contained in:
parent
8a52c6b4d5
commit
98a679cad5
|
@ -216,7 +216,7 @@ static int i2c_davinci_wait_bus_not_busy(struct davinci_i2c_dev *dev,
|
|||
{
|
||||
unsigned long timeout;
|
||||
|
||||
timeout = jiffies + DAVINCI_I2C_TIMEOUT;
|
||||
timeout = jiffies + dev->adapter.timeout;
|
||||
while (davinci_i2c_read_reg(dev, DAVINCI_I2C_STR_REG)
|
||||
& DAVINCI_I2C_STR_BB) {
|
||||
if (time_after(jiffies, timeout)) {
|
||||
|
@ -289,7 +289,7 @@ i2c_davinci_xfer_msg(struct i2c_adapter *adap, struct i2c_msg *msg, int stop)
|
|||
davinci_i2c_write_reg(dev, DAVINCI_I2C_MDR_REG, flag);
|
||||
|
||||
r = wait_for_completion_interruptible_timeout(&dev->cmd_complete,
|
||||
DAVINCI_I2C_TIMEOUT);
|
||||
dev->adapter.timeout);
|
||||
if (r == 0) {
|
||||
dev_err(dev->dev, "controller timed out\n");
|
||||
i2c_davinci_init(dev);
|
||||
|
@ -546,9 +546,7 @@ static int davinci_i2c_probe(struct platform_device *pdev)
|
|||
strlcpy(adap->name, "DaVinci I2C adapter", sizeof(adap->name));
|
||||
adap->algo = &i2c_davinci_algo;
|
||||
adap->dev.parent = &pdev->dev;
|
||||
|
||||
/* FIXME */
|
||||
adap->timeout = 1;
|
||||
adap->timeout = DAVINCI_I2C_TIMEOUT;
|
||||
|
||||
adap->nr = pdev->id;
|
||||
r = i2c_add_numbered_adapter(adap);
|
||||
|
|
Loading…
Reference in New Issue
Block a user