]> git.ipfire.org Git - thirdparty/kernel/stable.git/commit
i2c: imx-lpi2c: fix SMBus block read NACK after byte count
authorCarlos Song <carlos.song@nxp.com>
Fri, 23 Jan 2026 10:54:58 +0000 (18:54 +0800)
committerWolfram Sang <wsa+renesas@sang-engineering.com>
Sun, 8 Feb 2026 17:17:09 +0000 (18:17 +0100)
commitefdc383d1cc28d45cbf5a23b5ffa997010aaacb4
tree6d68e0e256b5452d1bb18035ba5bde966652f30e
parent8ed5a41afd0ef8db995a4f90668e73075b1cf940
i2c: imx-lpi2c: fix SMBus block read NACK after byte count

The LPI2C controller sends a NACK at the end of a receive command
unless another receive command is already queued in MTDR. During
SMBus block reads, this causes the controller to NACK immediately
after receiving the block length byte, aborting the transfer before
the data bytes are read.

Fix this by queueing a second receive command as soon as the block
length byte is received, keeping MTDR non-empty and ensuring
continuous ACKs. The initial receive command reads the block length,
and the subsequent command reads the remaining data bytes according
to the reported length.

Fixes: a55fa9d0e42e ("i2c: imx-lpi2c: add low power i2c bus driver")
Signed-off-by: Carlos Song <carlos.song@nxp.com>
Cc: <stable@vger.kernel.org> # v4.10+
Reviewed-by: Frank Li <Frank.Li@nxp.com>
Signed-off-by: Andi Shyti <andi.shyti@kernel.org>
Link: https://lore.kernel.org/r/20260123105459.3448822-1-carlos.song@nxp.com
Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
drivers/i2c/busses/i2c-imx-lpi2c.c