aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/i2c/busses/i2c-davinci.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/drivers/i2c/busses/i2c-davinci.c b/drivers/i2c/busses/i2c-davinci.c
index ab341aad9038..3d3ae52b6916 100644
--- a/drivers/i2c/busses/i2c-davinci.c
+++ b/drivers/i2c/busses/i2c-davinci.c
@@ -41,8 +41,8 @@
41 41
42#define DAVINCI_I2C_TIMEOUT (1*HZ) 42#define DAVINCI_I2C_TIMEOUT (1*HZ)
43#define DAVINCI_I2C_MAX_TRIES 2 43#define DAVINCI_I2C_MAX_TRIES 2
44#define I2C_DAVINCI_INTR_ALL (DAVINCI_I2C_IMR_AAS | \ 44#define DAVINCI_I2C_OWN_ADDRESS 0x08
45 DAVINCI_I2C_IMR_SCD | \ 45#define I2C_DAVINCI_INTR_ALL (DAVINCI_I2C_IMR_SCD | \
46 DAVINCI_I2C_IMR_ARDY | \ 46 DAVINCI_I2C_IMR_ARDY | \
47 DAVINCI_I2C_IMR_NACK | \ 47 DAVINCI_I2C_IMR_NACK | \
48 DAVINCI_I2C_IMR_AL) 48 DAVINCI_I2C_IMR_AL)
@@ -233,7 +233,7 @@ static int i2c_davinci_init(struct davinci_i2c_dev *dev)
233 /* Respond at reserved "SMBus Host" slave address" (and zero); 233 /* Respond at reserved "SMBus Host" slave address" (and zero);
234 * we seem to have no option to not respond... 234 * we seem to have no option to not respond...
235 */ 235 */
236 davinci_i2c_write_reg(dev, DAVINCI_I2C_OAR_REG, 0x08); 236 davinci_i2c_write_reg(dev, DAVINCI_I2C_OAR_REG, DAVINCI_I2C_OWN_ADDRESS);
237 237
238 dev_dbg(dev->dev, "PSC = %d\n", 238 dev_dbg(dev->dev, "PSC = %d\n",
239 davinci_i2c_read_reg(dev, DAVINCI_I2C_PSC_REG)); 239 davinci_i2c_read_reg(dev, DAVINCI_I2C_PSC_REG));
@@ -386,6 +386,11 @@ i2c_davinci_xfer_msg(struct i2c_adapter *adap, struct i2c_msg *msg, int stop)
386 u16 w; 386 u16 w;
387 unsigned long time_left; 387 unsigned long time_left;
388 388
389 if (msg->addr == DAVINCI_I2C_OWN_ADDRESS) {
390 dev_warn(dev->dev, "transfer to own address aborted\n");
391 return -EADDRNOTAVAIL;
392 }
393
389 /* Introduce a delay, required for some boards (e.g Davinci EVM) */ 394 /* Introduce a delay, required for some boards (e.g Davinci EVM) */
390 if (pdata->bus_delay) 395 if (pdata->bus_delay)
391 udelay(pdata->bus_delay); 396 udelay(pdata->bus_delay);