aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/i2c/busses
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/i2c/busses')
-rw-r--r--drivers/i2c/busses/i2c-nomadik.c10
1 files changed, 4 insertions, 6 deletions
diff --git a/drivers/i2c/busses/i2c-nomadik.c b/drivers/i2c/busses/i2c-nomadik.c
index 182761eace80..3bf95b90abae 100644
--- a/drivers/i2c/busses/i2c-nomadik.c
+++ b/drivers/i2c/busses/i2c-nomadik.c
@@ -121,9 +121,6 @@ enum i2c_operation {
121 I2C_READ = 0x01 121 I2C_READ = 0x01
122}; 122};
123 123
124/* controller response timeout in ms */
125#define I2C_TIMEOUT_MS 2000
126
127/** 124/**
128 * struct i2c_nmk_client - client specific data 125 * struct i2c_nmk_client - client specific data
129 * @slave_adr: 7-bit slave address 126 * @slave_adr: 7-bit slave address
@@ -213,7 +210,7 @@ static int flush_i2c_fifo(struct nmk_i2c_dev *dev)
213 writel((I2C_CR_FTX | I2C_CR_FRX), dev->virtbase + I2C_CR); 210 writel((I2C_CR_FTX | I2C_CR_FRX), dev->virtbase + I2C_CR);
214 211
215 for (i = 0; i < LOOP_ATTEMPTS; i++) { 212 for (i = 0; i < LOOP_ATTEMPTS; i++) {
216 timeout = jiffies + msecs_to_jiffies(I2C_TIMEOUT_MS); 213 timeout = jiffies + msecs_to_jiffies(dev->adap.timeout);
217 214
218 while (!time_after(jiffies, timeout)) { 215 while (!time_after(jiffies, timeout)) {
219 if ((readl(dev->virtbase + I2C_CR) & 216 if ((readl(dev->virtbase + I2C_CR) &
@@ -434,7 +431,7 @@ static int read_i2c(struct nmk_i2c_dev *dev)
434 dev->virtbase + I2C_IMSCR); 431 dev->virtbase + I2C_IMSCR);
435 432
436 timeout = wait_for_completion_interruptible_timeout( 433 timeout = wait_for_completion_interruptible_timeout(
437 &dev->xfer_complete, msecs_to_jiffies(I2C_TIMEOUT_MS)); 434 &dev->xfer_complete, msecs_to_jiffies(dev->adap.timeout));
438 435
439 if (timeout < 0) { 436 if (timeout < 0) {
440 dev_err(&dev->pdev->dev, 437 dev_err(&dev->pdev->dev,
@@ -498,7 +495,7 @@ static int write_i2c(struct nmk_i2c_dev *dev)
498 dev->virtbase + I2C_IMSCR); 495 dev->virtbase + I2C_IMSCR);
499 496
500 timeout = wait_for_completion_interruptible_timeout( 497 timeout = wait_for_completion_interruptible_timeout(
501 &dev->xfer_complete, msecs_to_jiffies(I2C_TIMEOUT_MS)); 498 &dev->xfer_complete, msecs_to_jiffies(dev->adap.timeout));
502 499
503 if (timeout < 0) { 500 if (timeout < 0) {
504 dev_err(&dev->pdev->dev, 501 dev_err(&dev->pdev->dev,
@@ -917,6 +914,7 @@ static int __devinit nmk_i2c_probe(struct platform_device *pdev)
917 adap->owner = THIS_MODULE; 914 adap->owner = THIS_MODULE;
918 adap->class = I2C_CLASS_HWMON | I2C_CLASS_SPD; 915 adap->class = I2C_CLASS_HWMON | I2C_CLASS_SPD;
919 adap->algo = &nmk_i2c_algo; 916 adap->algo = &nmk_i2c_algo;
917 adap->timeout = pdata->timeout ? pdata->timeout : 20000;
920 snprintf(adap->name, sizeof(adap->name), 918 snprintf(adap->name, sizeof(adap->name),
921 "Nomadik I2C%d at %lx", pdev->id, (unsigned long)res->start); 919 "Nomadik I2C%d at %lx", pdev->id, (unsigned long)res->start);
922 920