summaryrefslogtreecommitdiffstats
path: root/common
diff options
context:
space:
mode:
authorHaavard Skinnemoen <haavard.skinnemoen@atmel.com>2008-05-16 11:08:11 +0200
committerWolfgang Denk <wd@denx.de>2008-06-03 20:25:56 +0200
commit110e006fe67fb4a6e1719ae6956c79b7ffc0148b (patch)
tree4263a5a7897272bf7a02bba37058f90e2ea742a4 /common
parentf979690ee337450b2030aba128f95b7a8d9881c0 (diff)
downloadblackbird-obmc-uboot-110e006fe67fb4a6e1719ae6956c79b7ffc0148b.tar.gz
blackbird-obmc-uboot-110e006fe67fb4a6e1719ae6956c79b7ffc0148b.zip
soft_i2c: Pull SDA high before reading
Spotted by Dean Capindale. Systems that support open-drain GPIO properly are allowed provide an empty I2C_TRISTATE define. However, this means that we need to be careful not to drive SDA low when the slave is expected to respond. This patch adds a missing I2C_SDA(1) to read_byte() required to tristate the SDA line on systems that support open-drain GPIO. Signed-off-by: Haavard Skinnemoen <haavard.skinnemoen@atmel.com>
Diffstat (limited to 'common')
-rw-r--r--common/soft_i2c.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/common/soft_i2c.c b/common/soft_i2c.c
index c5d7e205e5..5ef7f303b8 100644
--- a/common/soft_i2c.c
+++ b/common/soft_i2c.c
@@ -252,6 +252,7 @@ static uchar read_byte(int ack)
* Read 8 bits, MSB first.
*/
I2C_TRISTATE;
+ I2C_SDA(1);
data = 0;
for(j = 0; j < 8; j++) {
I2C_SCL(0);
OpenPOWER on IntegriCloud