[pacth] I2C bug fixes for L-O and L-Z

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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-woodruff2@xxxxxx>

Regards,
Richard W.

Attachment: i2c_lo.diff
Description: i2c_lo.diff

Attachment: i2c_lz.diff
Description: i2c_lz.diff


[Index of Archives]     [Linux Arm (vger)]     [ARM Kernel]     [ARM MSM]     [Linux Tegra]     [Linux WPAN Networking]     [Linux Wireless Networking]     [Maemo Users]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux