OSDN Git Service

i2c: npcm7xx: Clear LAST bit after a failed transaction.
authorTali Perry <tali.perry1@gmail.com>
Sun, 20 Sep 2020 20:48:09 +0000 (23:48 +0300)
committerWolfram Sang <wsa@kernel.org>
Sun, 27 Sep 2020 18:05:27 +0000 (20:05 +0200)
commit8947efc077168c53b84d039881a7c967086a248a
tree97fc351bbc8e6d15faf388ebc072c2fab563baee
parenta2bd970aa62f2f7f80fd0d212b1d4ccea5df4aed
i2c: npcm7xx: Clear LAST bit after a failed transaction.

Due to a HW issue, in some scenarios the LAST bit might remain set.
This will cause an unexpected NACK after reading 16 bytes on the next
read.

Example: if user tries to read from a missing device, get a NACK,
then if the next command is a long read ( > 16 bytes),
the master will stop reading after 16 bytes.
To solve this, if a command fails, check if LAST bit is still
set. If it does, reset the module.

Fixes: 56a1485b102e (i2c: npcm7xx: Add Nuvoton NPCM I2C controller driver)
Signed-off-by: Tali Perry <tali.perry1@gmail.com>
Signed-off-by: Wolfram Sang <wsa@kernel.org>
drivers/i2c/busses/i2c-npcm7xx.c