tegra: i2c: recover from spurious interrupt storm
authorTodd Poynor <toddpoynor@google.com>
Thu, 16 Sep 2010 22:26:37 +0000 (15:26 -0700)
committerColin Cross <ccross@android.com>
Wed, 6 Oct 2010 23:26:51 +0000 (16:26 -0700)
commit1104d84f0f7e6d1779fa0bd679a036e30ec08f4b
tree7ed115fd8eafad74d0c648cbaf42b84a35067055
parent90905b950e42f97bb3cbf486ef1cf9bdd0e05551
tegra: i2c: recover from spurious interrupt storm

Re-init the I2C controller when an IRQ arrives with no
I2C_INT_STATUS bits set to indicate why the interrupt was sent.
Storms of such mystery interrupts are infrequently seen.

Dump some more status when these interrupts arrive.  Set an error
for the current request and wake up the requester (rather than
timing out the request or possibly silently ignoring the interrupts).

If the I2C block is inside the DVC, also ACK the DVC I2C transfer
done interrupt in the ISR error return path, as is done for the
normal return path.

Change-Id: I625b5c245aa8d83dbd7ff076b0fb5cc5682fffa1
Signed-off-by: Todd Poynor <toddpoynor@google.com>
drivers/i2c/busses/i2c-tegra.c