]> git.ipfire.org Git - thirdparty/kernel/linux.git/commit
i2c: rcar: fix NACK handling when being a target
authorWolfram Sang <wsa+renesas@sang-engineering.com>
Wed, 15 Jan 2025 12:36:23 +0000 (13:36 +0100)
committerWolfram Sang <wsa+renesas@sang-engineering.com>
Wed, 15 Jan 2025 18:37:33 +0000 (19:37 +0100)
commit093f70c134f70e4632b295240f07d2b50b74e247
treea4660863d2224202b5eca9bd9ab668f107f18af5
parent385f2dbbc957eb2e21df749104cefd6d26d4115a
i2c: rcar: fix NACK handling when being a target

When this controller is a target, the NACK handling had two issues.
First, the return value from the backend was not checked on the initial
WRITE_REQUESTED. So, the driver missed to send a NACK in this case.
Also, the NACK always arrives one byte late on the bus, even in the
WRITE_RECEIVED case. This seems to be a HW issue. We should then not
rely on the backend to correctly NACK the superfluous byte as well. Fix
both issues by introducing a flag which gets set whenever the backend
requests a NACK and keep sending it until we get a STOP condition.

Fixes: de20d1857dd6 ("i2c: rcar: add slave support")
Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
drivers/i2c/busses/i2c-rcar.c