Hi Thomas On Wed, Nov 27, 2013 at 4:35 PM, Thomas Petazzoni <thomas.petazz...@free-electrons.com> wrote: > 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 ...] >
I had a problem in the past with fail communication with twl. Can you try the following code? struct control_prog_io *prog_io_base; prog_io_base = (struct control_prog_io *)OMAP34XX_CTRL_BASE; /* Enable i2c2 pullup resisters */ writel(~(PRG_I2C2_PULLUPRESX | PRG_I2C1_PULLUPRESX), &prog_io_base->io1); The pullup for twl bus should be enable by default on reset but for some reason that I had no time to investigate I found it asserted Michael > Thanks! > > Thomas > -- > Thomas Petazzoni, CTO, Free Electrons > Embedded Linux, Kernel and Android engineering > http://free-electrons.com > _______________________________________________ > U-Boot mailing list > U-Boot@lists.denx.de > http://lists.denx.de/mailman/listinfo/u-boot _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot