]> git.ipfire.org Git - thirdparty/kernel/stable.git/commit
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)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 11 Dec 2020 12:25:01 +0000 (13:25 +0100)
commite5da5a2a68372256464644c365694fdbd749f361
treefe7292f3f2203ba7dfe250d4f9a2acc433878e2f
parentba54b13c835609b3976714d3dde010c57d0fe23e
i2c: imx: Don't generate STOP condition if arbitration has been lost

commit 61e6fe59ede155881a622f5901551b1cc8748f6a upstream.

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>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/i2c/busses/i2c-imx.c