[U-Boot] [PATCH 1/3] i2c: tegra: use repeated start for reads

Joakim Tjernlund joakim.tjernlund at transmode.se
Thu Jun 26 10:11:36 CEST 2014


> From: Stephen Warren <swarren at wwwdotorg.org>
> To: u-boot at lists.denx.de, Heiko Schocher <hs at denx.de>, 
> Cc: Stephen Warren <swarren at nvidia.com>, Tom Warren <twarren at nvidia.com>
> Date: 2014/06/25 19:05
> Subject: [U-Boot] [PATCH 1/3] i2c: tegra: use repeated start for reads
> Sent by: u-boot-bounces at lists.denx.de
> 
> From: Stephen Warren <swarren at nvidia.com>
> 
> I2C read transactions are typically implemented as follows:
> 
> START(write) address REPEATED_START(read) data... STOP
> 
> However, Tegra's I2C driver currently implements reads as follows:
> 
> START(write) address STOP START(read) data... STOP
> 
> This sequence confuses at least the AS3722 PMIC on the Jetson TK1 board,
> leading to corrupted read data in some cases. Fix the driver to chain
> the transactions together using repeated starts to solve this.

While I agree to use Repeated START I just wanted to share this:
A common reason for STOP START(read) sequence not working sometimes is 
that
the driver initializes STOP but does not wait for the STOP to complete
before issuing a START.

 Jocke 


More information about the U-Boot mailing list