]> git.karo-electronics.de Git - linux-beck.git/commit
powerpc/5200/i2c: improve i2c bus error recovery
authorAlbrecht Dreß <albrecht.dress@arcor.de>
Wed, 17 Feb 2010 08:59:14 +0000 (08:59 +0000)
committerGrant Likely <grant.likely@secretlab.ca>
Sun, 1 Aug 2010 23:06:44 +0000 (17:06 -0600)
commit0c2daaafcdec726e89cbccca61d576de8429c537
tree3d63a499f75ec072aafd8265763392faa8f64930
parent652078bac5f206c628a85a9a6598e6b8076bd8e6
powerpc/5200/i2c: improve i2c bus error recovery

This patch improves the recovery of the MPC's I2C bus from errors like bus
hangs resulting in timeouts:
1. make the bus timeout configurable, as it depends on the bus clock and
    the attached slave chip(s); default is still 1 second;
2. detect any of the cases indicated by the CF, BB and RXAK MSR flags if a
    timeout occurs, and add a missing (required) MAL reset;
3. use a more reliable method to fixup the bus if a hang has been detected.
    The sequence is sent 9 times which seems to be necessary if a slave
    "misses" more than one clock cycle.  For 400 kHz bus speed, the fixup is
    also ~70us (81us vs. 150us) faster.

Tested on a custom Lite5200b derived board, with a Dallas RTC, AD sensors
and NXP IO expander chips attached to the i2c.

Changes vs. v1:
- use improved bus fixup sequence for all chips (not only the 5200)
- calculate real clock from defaults if no clock is given in the device tree
- better description (I hope) of the changes.

I didn't split the changes in this file into three parts as recommended by
Grant, as they actually belong together (i.e. they address one single
problem, just in three places of one single source file).

Signed-off-by: Albrecht Dreß <albrecht.dress@arcor.de>
[grant.likely@secretlab.ca: fixup for ->node to ->dev.of_node transition]
Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
Documentation/powerpc/dts-bindings/fsl/i2c.txt
drivers/i2c/busses/i2c-mpc.c