]> git.ipfire.org Git - thirdparty/kernel/stable.git/commit
i2c: imx: Check for I2SR_IAL after every byte
authorChristian Eggers <ceggers@arri.de>
Fri, 9 Oct 2020 11:03:19 +0000 (13:03 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 11 Dec 2020 12:22:07 +0000 (13:22 +0100)
commite385ea09b2e801cef1509e06bc691597aac80a99
treec6faaa5578bc46cc55344b1901849494e18a217d
parent12b2af654bac6ee44c751ee4fcb28cfd78e22ccb
i2c: imx: Check for I2SR_IAL after every byte

commit 1de67a3dee7a279ebe4d892b359fe3696938ec15 upstream.

Arbitration Lost (IAL) can happen after every single byte transfer. If
arbitration is lost, the I2C hardware will autonomously switch from
master mode to slave. If a transfer is not aborted in this state,
consecutive transfers will not be executed by the hardware and will
timeout.

Signed-off-by: Christian Eggers <ceggers@arri.de>
Tested (not extensively) on Vybrid VF500 (Toradex VF50):
Tested-by: Krzysztof Kozlowski <krzk@kernel.org>
Acked-by: Oleksij Rempel <o.rempel@pengutronix.de>
Cc: stable@vger.kernel.org
Signed-off-by: Wolfram Sang <wsa@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/i2c/busses/i2c-imx.c