[U-Boot] [PATCH v3] OMAP: I2C: New read, write and probe functions

Lubomir Popov lpopov at mm-sol.com
Fri May 31 12:39:05 CEST 2013


Hi Tom,

On 30/05/13 20:07, Tom Rini wrote:
> On Thu, May 30, 2013 at 10:37:42AM -0400, Tom Rini wrote:
>> On Thu, May 30, 2013 at 01:24:42AM +0300, Lubomir Popov wrote:
>>
>>> Tested on OMAP4/5 only, but should work on older OMAPs and
>>> derivatives as well.
>>>
>>> - Rewritten i2c_read to operate correctly with all types of chips
>>>   (old function could not read consistent data from some I2C slaves).
>>> - Optimised i2c_write.
>>> - New i2c_probe, optionally selectable via CONFIG_I2C_PROBE_WRITE,
>>>   performs write access vs read. The old probe could hang the system
>>>   under certain conditions (e.g. unconfigured pads).
>>> - The read/write/probe functions try to identify unconfigured bus.
>>> - Status functions now read irqstatus_raw as per TRM guidelines
>>>   (except for OMAP243X and OMAP34XX).
>>> - Driver now supports up to I2C5 (OMAP5).
>>>
>>> Signed-off-by: Lubomir Popov <lpopov at mm-sol.com>
>>
>> With CONFIG_I2C_PROBE_WRITE set:
>> Tested-by: Tom Rini <trini at ti.com> on Beagleboard / Beagleboard xM
> 
> But, crap, breaks am335x_evm (and probably beaglebones, etc).  I'll
> dig into this more to see if I can spot something obvious tomorrow.
Made it work on the am335x_evm (tested, with AM3359 on board).
Problem was in the new i2c_probe, which on this board is called by
the SPL and caused a hang (interestingly, when called from regular
u-boot, works fine). Fix is to add a small delay. Clocking and I2C
speed should be identical between SPL and U-Boot, but probably are
not; I did not have time to look with a scope, but don't have any
other reasonable explanation. Whatever, now it is working. I shall
submit the patch tonight.

Would like as well to note that the current u-boot-ti/master
(freshly cloned, no changes whatsoever) does not boot on the
am335x-evm:

U-Boot SPL 2013.04-11562-g47c6ea0 (May 31 2013 - 09:56:46)
musb-hdrc: ConfigData=0xde (UTMI-8, dyn FIFOs, HB-ISO Rx, HB-ISO Tx, SoftConn)
musb-hdrc: MHDRC RTL version 2.0 
musb-hdrc: setup fifo_mode 4
musb-hdrc: 28/31 max ep, 16384/16384 memory
USB Peripheral mode controller at 47401000 using PIO, IRQ 0
musb-hdrc: ConfigData=0xde (UTMI-8, dyn FIFOs, HB-ISO Rx, HB-ISO Tx, SoftConn)
musb-hdrc: MHDRC RTL version 2.0 
musb-hdrc: setup fifo_mode 4
musb-hdrc: 28/31 max ep, 16384/16384 memory
USB Host mode controller at 47401800 using PIO, IRQ 0
### ERROR ### Please RESET the board ###

-- 
Lubo


More information about the U-Boot mailing list