On Mon, Dec 16, 2024 at 04:16:40PM +0100, Stefan Eichenberger wrote: > From: Stefan Eichenberger <stefan.eichenberger@xxxxxxxxxxx> > > A regression was introduced with the implementation of single-master > mode, preventing proper stop conditions from being generated. Devices > that require a valid stop condition, such as EEPROMs, fail to function > correctly as a result. > > The issue only affects devices with the single-master property enabled. > > This commit resolves the issue by re-enabling I2C bus busy bit (IBB) > polling for single-master mode when generating a stop condition. The fix > further ensures that the i2c_imx->stopped flag is cleared at the start > of each transfer, allowing the stop condition to be correctly generated > in i2c_imx_stop(). > > According to the reference manual (IMX8MMRM, Rev. 2, 09/2019, page > 5270), polling the IBB bit to determine if the bus is free is only > necessary in multi-master mode. Consequently, the IBB bit is not polled > for the start condition in single-master mode. > > Fixes: 6692694aca86 ("i2c: imx: do not poll for bus busy in single master mode") > Signed-off-by: Stefan Eichenberger <stefan.eichenberger@xxxxxxxxxxx> Reviewed-by: Francesco Dolcini <francesco.dolcini@xxxxxxxxxxx>