Messages in this thread | | | Date | Mon, 5 Oct 2020 10:16:39 +0200 | From | Krzysztof Kozlowski <> | Subject | Re: [PATCH v2 3/3] i2c: imx: Don't generate STOP condition if arbitration has been lost |
| |
On Fri, Oct 02, 2020 at 05:23:05PM +0200, Christian Eggers wrote: > 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> > Cc: stable@vger.kernel.org # Requires trivial backporting, simple remove > # the 3rd argument from the calls to > # i2c_imx_bus_busy(). > --- > drivers/i2c/busses/i2c-imx.c | 12 ++++++++++-- > 1 file changed, 10 insertions(+), 2 deletions(-) >
Tested (not extensively) on Vybrid VF500 (Toradex VF50): Tested-by: Krzysztof Kozlowski <krzk@kernel.org>
The I2C on Vybrid VF500 still works fine (also bigger transfers). I did not test this actual condition (arbitration) but only a regular I2C driver (BQ27xxx fuel gauge). Obviously this only proves that regular operation is not broken...
Best regards, Krzysztof
| |