summaryrefslogtreecommitdiff
path: root/arch
diff options
context:
space:
mode:
authorAlbrecht Dreß <albrecht.dress@arcor.de>2010-02-17 08:59:14 +0000
committerGrant Likely <grant.likely@secretlab.ca>2010-08-01 17:06:44 -0600
commit0c2daaafcdec726e89cbccca61d576de8429c537 (patch)
tree3d63a499f75ec072aafd8265763392faa8f64930 /arch
parent652078bac5f206c628a85a9a6598e6b8076bd8e6 (diff)
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>
Diffstat (limited to 'arch')
0 files changed, 0 insertions, 0 deletions