Hi,

Recently one custom board was having some I2C issues. In looking at it a couple 
things stood out.  I've attached a patches for l-o and l-z for anyone to 
comment on which cares.

Bug Fixes:

        -1- OMAP_I2C_WE_STC_WE should never be enabled for wake up unless I+F 
clk is cut.  Having it set like code does can mess up I2C FSM.

        -2- STT/STP bits are best written together.  There was a 2430-es1'ish 
errata which might have existed.  This is not the case in 3430.  There should 
be no need to use b_hw = 1.
                -a- Any write to I2C_CON is bad before ARDY.  An untimely write 
can mess up I2C FSM for next write.

        -3- There is a possible issue which a double clear of ARDY status in 
irq handler can make sure doesn't happen.

Note: When using I2C with HS mode there is a target bus capacitance for proper 
operation.  Depending on your board the optimal pull up resister level might 
very.  On OMAP3 there seems to be a few options which can allow you to play 
with effective resistance with out a hardware mod (and potential get better 
quality).
        - CONTROL block has pull-up control for special internal pulls
        - Padconf has normal pull-ups
        - T2 has internal controllable pull-ups (default on)
        - Your board might have an external pull up.

Signed-off-by: Richard Woodruff <r-woodru...@ti.com>

Regards,
Richard W.

Attachment: i2c_lo.diff
Description: i2c_lo.diff

Attachment: i2c_lz.diff
Description: i2c_lz.diff

Reply via email to