diff options
| author | David Brownell <dbrownell@users.sourceforge.net> | 2009-07-06 18:48:36 -0400 |
|---|---|---|
| committer | Ben Dooks <ben-linux@fluff.org> | 2009-07-14 19:03:56 -0400 |
| commit | 7605fa3b0aedbb6c77471517ba16753f276156d9 (patch) | |
| tree | 33dfad8e4a52bd8a48f3064a7a4f1f5ae96fb6fd | |
| parent | e164ddeeb82920c5b1470b6585767a000c8b0e45 (diff) | |
i2c-davinci: behave with i2cdetect
Make i2c-davinci cope properly with "i2cdetect": don't spew
syslog spam on perfectly normal behaviors, or respond to any
address other than the one reserved for the SMBus host.
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Signed-off-by: Kevin Hilman <khilman@deeprootsystems.com>
Signed-off-by: Ben Dooks <ben-linux@fluff.org>
| -rw-r--r-- | drivers/i2c/busses/i2c-davinci.c | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/drivers/i2c/busses/i2c-davinci.c b/drivers/i2c/busses/i2c-davinci.c index ee3fbb8585fe..1f3d89c3194a 100644 --- a/drivers/i2c/busses/i2c-davinci.c +++ b/drivers/i2c/busses/i2c-davinci.c | |||
| @@ -187,6 +187,11 @@ static int i2c_davinci_init(struct davinci_i2c_dev *dev) | |||
| 187 | davinci_i2c_write_reg(dev, DAVINCI_I2C_CLKH_REG, clkh); | 187 | davinci_i2c_write_reg(dev, DAVINCI_I2C_CLKH_REG, clkh); |
| 188 | davinci_i2c_write_reg(dev, DAVINCI_I2C_CLKL_REG, clkl); | 188 | davinci_i2c_write_reg(dev, DAVINCI_I2C_CLKL_REG, clkl); |
| 189 | 189 | ||
| 190 | /* Respond at reserved "SMBus Host" slave address" (and zero); | ||
| 191 | * we seem to have no option to not respond... | ||
| 192 | */ | ||
| 193 | davinci_i2c_write_reg(dev, DAVINCI_I2C_OAR_REG, 0x08); | ||
| 194 | |||
| 190 | dev_dbg(dev->dev, "input_clock = %d, CLK = %d\n", input_clock, clk); | 195 | dev_dbg(dev->dev, "input_clock = %d, CLK = %d\n", input_clock, clk); |
| 191 | dev_dbg(dev->dev, "PSC = %d\n", | 196 | dev_dbg(dev->dev, "PSC = %d\n", |
| 192 | davinci_i2c_read_reg(dev, DAVINCI_I2C_PSC_REG)); | 197 | davinci_i2c_read_reg(dev, DAVINCI_I2C_PSC_REG)); |
| @@ -387,7 +392,7 @@ static void terminate_write(struct davinci_i2c_dev *dev) | |||
| 387 | davinci_i2c_write_reg(dev, DAVINCI_I2C_MDR_REG, w); | 392 | davinci_i2c_write_reg(dev, DAVINCI_I2C_MDR_REG, w); |
| 388 | 393 | ||
| 389 | if (!dev->terminate) | 394 | if (!dev->terminate) |
| 390 | dev_err(dev->dev, "TDR IRQ while no data to send\n"); | 395 | dev_dbg(dev->dev, "TDR IRQ while no data to send\n"); |
| 391 | } | 396 | } |
| 392 | 397 | ||
| 393 | /* | 398 | /* |
| @@ -473,9 +478,14 @@ static irqreturn_t i2c_davinci_isr(int this_irq, void *dev_id) | |||
| 473 | break; | 478 | break; |
| 474 | 479 | ||
| 475 | case DAVINCI_I2C_IVR_AAS: | 480 | case DAVINCI_I2C_IVR_AAS: |
| 476 | dev_warn(dev->dev, "Address as slave interrupt\n"); | 481 | dev_dbg(dev->dev, "Address as slave interrupt\n"); |
| 477 | }/* switch */ | 482 | break; |
| 478 | }/* while */ | 483 | |
| 484 | default: | ||
| 485 | dev_warn(dev->dev, "Unrecognized irq stat %d\n", stat); | ||
| 486 | break; | ||
| 487 | } | ||
| 488 | } | ||
| 479 | 489 | ||
| 480 | return count ? IRQ_HANDLED : IRQ_NONE; | 490 | return count ? IRQ_HANDLED : IRQ_NONE; |
| 481 | } | 491 | } |
