u-boot/drivers/i2c
Nikita Kiryanov 92c23c9226 arm: omap: i2c: don't zero cnt in i2c_write
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>
Tested-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Tested-by: Lubomir Popov <lpopov@mm-sol.com>
2013-12-05 12:25:02 +01:00
..
bfin-twi_i2c.c Blackfin: TWI/I2C: implement multibus support 2010-05-05 10:04:38 +02:00
davinci_i2c.c Add GPL-2.0+ SPDX-License-Identifier to source files 2013-07-24 09:44:38 -04:00
designware_i2c.c designware_i2c: remove 10msec delay in i2c_xfer_finish 2013-11-13 06:22:41 +01:00
designware_i2c.h Add GPL-2.0+ SPDX-License-Identifier to source files 2013-07-24 09:44:38 -04:00
fsl_i2c.c fsl_i2c: add workaround for the erratum I2C A004447 2013-08-20 11:15:31 +02:00
fti2c010.c i2c: fti2c010: serial out r/w address in MSB order 2013-12-05 12:25:01 +01:00
fti2c010.h drivers/i2c: Update fti2c010.[ch], i2c_core.c to use SPDX identifiers 2013-07-25 08:51:42 -04:00
i2c_core.c i2c: eliminate warnings in i2c_reloc_fixup function 2013-10-17 07:24:41 +02:00
Makefile driver:i2c:s3c24x0: adapt driver to new i2c 2013-12-05 07:39:38 +01:00
mv_i2c.c Add GPL-2.0+ SPDX-License-Identifier to source files 2013-07-24 09:44:38 -04:00
mv_i2c.h Add GPL-2.0+ SPDX-License-Identifier to source files 2013-07-24 09:44:38 -04:00
mvtwsi.c Add GPL-2.0+ SPDX-License-Identifier to source files 2013-07-24 09:44:38 -04:00
mxc_i2c.c i2c: mxc: move to new subsystem 2013-10-17 07:20:24 +02:00
mxs_i2c.c i2c: mxs_i2c: Squash endless loop 2013-11-13 06:08:31 +01:00
omap24xx_i2c.c arm: omap: i2c: don't zero cnt in i2c_write 2013-12-05 12:25:02 +01:00
omap24xx_i2c.h Add GPL-2.0+ SPDX-License-Identifier to source files 2013-07-24 09:44:38 -04:00
pca9564_i2c.c Add GPL-2.0+ SPDX-License-Identifier to source files 2013-07-24 09:44:38 -04:00
ppc4xx_i2c.c Merge branch 'master' of git://git.denx.de/u-boot-i2c 2013-07-24 09:50:24 -04:00
rcar_i2c.c i2c: Add support for Renesas rcar 2013-10-17 07:20:25 +02:00
s3c24x0_i2c.c driver:i2c:s3c24x0: fix clock init for hsi2c 2013-12-05 07:39:38 +01:00
s3c24x0_i2c.h i2c: s3c24xx: add hsi2c controller support 2013-10-17 07:20:26 +02:00
sh_i2c.c i2c: sh_i2c: Update to new CONFIG_SYS_I2C framework 2013-11-13 06:08:26 +01:00
sh_sh7734_i2c.c Add GPL-2.0+ SPDX-License-Identifier to source files 2013-07-24 09:44:38 -04:00
soft_i2c.c i2c: soft: Fix typo in CONFIG_SYS_I2C_SOFT_SPEED 2013-08-03 06:01:18 +02:00
tegra_i2c.c tegra: Avoid using I2C prior to relocation 2013-08-13 17:11:25 -04:00
tsi108_i2c.c Add GPL-2.0+ SPDX-License-Identifier to source files 2013-07-24 09:44:38 -04:00
u8500_i2c.c Add GPL-2.0+ SPDX-License-Identifier to source files 2013-07-24 09:44:38 -04:00
u8500_i2c.h Add GPL-2.0+ SPDX-License-Identifier to source files 2013-07-24 09:44:38 -04:00
zynq_i2c.c i2c, zynq: convert zynq i2c driver to new multibus/multiadapter framework 2013-11-13 06:18:27 +01:00