i2c: i2c-cdns: Implement workaround for hold quirk of the rev 1.0
authorMoritz Fischer <moritz.fischer@ettus.com>
Mon, 16 Jan 2017 17:50:46 +0000 (09:50 -0800)
committerHeiko Schocher <hs@denx.de>
Wed, 18 Jan 2017 05:38:20 +0000 (06:38 +0100)
commit08c11aaefb0a81ab53337068d0d21035055665d1
tree268da72259d10b288f633f2b85d136f5e2ea1d77
parent0ec0c5864365f3f222e1652aca98cfbd86bae890
i2c: i2c-cdns: Implement workaround for hold quirk of the rev 1.0

Revision 1.0 of this IP has a quirk where if during a long read transfer
the transfer_size register will go to 0, the master will send a NACK to
the slave prematurely.
The way to work around this is to reprogram the transfer_size register
mid-transfer when the only the receive fifo is known full, i.e. the I2C
bus is known non-active.
The workaround is based on the implementation in the linux-kernel.

Signed-off-by: Moritz Fischer <moritz.fischer@ettus.com>
Cc: Heiko Schocher <hs@denx.de>
Cc: Michal Simek <michal.simek@xilinx.com>
Cc: u-boot@lists.denx.de
drivers/i2c/i2c-cdns.c