[U-Boot] OMAP3 i2c issues on IGEP, u-boot 2013.10

Thomas Petazzoni
2013-11-27T15:35:17Z

Dear Tom Rini,

On Wed, 27 Nov 2013 09:45:55 -0500, Tom Rini wrote:

> > I see that 960187ffa125b3938fec4b827bd9e8c04a204af8 ("ARM: OMAP: I2C:
> > New read, write and probe functions") has changed significantly the
> > OMAP I2C driver. And it turns out that reverting this commit actually
> > fixes the problem. No more error messages, no more hang at boot. The
> > commit message says that it was tested on OMAP4, OMAP5 and AM335x, but
> > apparently OMAP3 isn't working all that well with this commit.
>
> I don't see this problem on my omap3_beagle, but I don't have that in
> heavy rotation either. Looking things over, can you try the following
> patch, which just drops the extra sanity check for unconfigured pads.
> The kernel doesn't have any logic like this and I suspect that while
> it's reliable enough of a check on some platforms, it's only true for
> the OMAP4+ variant of the block.

Seems a little bit better with this patch. But now, amongst
approximately 12 boots, I had two boots that failed with:

OMAP36XX/37XX-GP ES1.2, CPU-OPP2, L3-200MHz, Max CPU Clock 1 Ghz
IGEPv2 + LPDDR/NAND
I2C: ready
DRAM: 512 MiB
NAND: 512 MiB
MMC: OMAP SD/MMC: 0
*** Warning - bad CRC, using default environment

Timed out in wait_for_event: status=0000
Check if pads/pull-ups of bus 0 are properly configured
i2c_write: error waiting for addr ACK (status=0x0)
Timed out in wait_for_event: status=0000
Check if pads/pull-ups of bus 0 are properly configured
i2c_write: error waiting for addr ACK (status=0x0)
Timed out in wait_for_event: status=0000
Check if pads/pull-ups of bus 0 are properly configured
i2c_write: error waiting for addr ACK (status=0x0)
Timed out in wait_for_event: status=0000
Check if pads/pull-ups of bus 0 are properly configured
i2c_write: error waiting for addr ACK (status=0x0)
Timed out in wait_for_event: status=0000
Check if pads/pull-ups of bus 0 are properly configured
i2c_write: error waiting for addr ACK (status=0x0)
Timed out in wait_for_event: status=0000
Check if pads/pull-ups of bus 0 are properly configured
i2c_read: error waiting for addr ACK (status=0x0)
TWL4030:USB:Read[0xfd] Error 1
[... more of the same stuff indefinitely ...]

Thanks!

Thomas
--
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering