
Hi Lubomir, On Monday 02 December 2013 09:17 PM, Lubomir Popov wrote:
Hi Nikita,
On 28/11/13 18:04, Nikita Kiryanov wrote:
Writing zero into I2Ci.I2C_CNT register causes random I2C failures in OMAP3 based devices. This seems to be related to the following advisory which apears in multiple erratas for OMAP3 SoCs (OMAP35xx, DM37xx), as well as OMAP4430 TRM:
Advisory: I2C Module Does Not Allow 0-Byte Data Requests Details: When configured as the master, the I2C module does not allow 0-byte data transfers. Note: Programming I2Ci.I2C_CNT[15:0]: DCOUNT = 0 will cause undefined behavior. Workaround(s): No workaround. Do not use 0-byte data requests.
The writes in question are unnecessary from a functional point of view. Most of them are done after I/O has finished, and the only one that preceds I/O (in i2c_probe()) is also unnecessary because a stop bit is sent before actual data transmission takes place.
Therefore, remove all writes that zero the cnt register.
Cc: Heiko Schocher hs@denx.de Cc: Thomas Petazzoni thomas.petazzoni@free-electrons.com Cc: Tom Rini trini@ti.com Cc: Lubomir Popov lpopov@mm-sol.com Cc: Enric Balletbo Serra eballetbo@gmail.com Signed-off-by: Nikita Kiryanov nikita@compulab.co.il
Changes in V2: Removed all instances of writew(0, &i2c_base->cnt) instead of just the one in i2c_write (following a test of V1 by Thomas Petazzoni).
Tested-by: Lubomir Popov lpopov@mm-sol.com
In addition to the OMAP5430/32 tests performed last week, tested today on OMAP4 (4430/60/70) and on AM3359. Thus tests have covered OMAP4/5- compatible I2C IPs with revnb_lo=[0x000a to 0x000c] (revnb_hi is 0x5040 for all those IPs).
May I know on top of which tree,tag you are trying this patch ? I tried OMAP4 on top of v2014.01-rc1, but I am not able to boot. I applied this patch and still not able to boot. There is a mail thread going on, on this topic. So I just wanted to know that I am not missing very obvious.
Thanks and regards, Lokesh