i2c: imx: Don't generate STOP condition if arbitration has been lost
authorChristian Eggers <ceggers@arri.de>
Fri, 9 Oct 2020 11:03:20 +0000 (13:03 +0200)
committerWolfram Sang <wsa@kernel.org>
Wed, 2 Dec 2020 20:28:20 +0000 (21:28 +0100)
commit61e6fe59ede155881a622f5901551b1cc8748f6a
tree862c85c425fc9500c197b9b5b3f39fabead5aab5
parent1de67a3dee7a279ebe4d892b359fe3696938ec15
i2c: imx: Don't generate STOP condition if arbitration has been lost

If arbitration is lost, the master automatically changes to slave mode.
I2SR_IBB may or may not be reset by hardware. Raising a STOP condition
by resetting I2CR_MSTA has no effect and will not clear I2SR_IBB.

So calling i2c_imx_bus_busy() is not required and would busy-wait until
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 # Requires trivial backporting, simple remove
                           # the 3rd argument from the calls to
                           # i2c_imx_bus_busy().
Signed-off-by: Wolfram Sang <wsa@kernel.org>
drivers/i2c/busses/i2c-imx.c