diff options
| author | Stefan Eichenberger <[email protected]> | 2024-12-16 15:16:40 +0000 |
|---|---|---|
| committer | Andi Shyti <[email protected]> | 2024-12-25 22:45:04 +0000 |
| commit | 768776dd4efc681cdca33a79e29bb508d6de9bc0 (patch) | |
| tree | 96fa1944b98eb1c3f29794171b3a76e2d6f6da0c /drivers/gpu/drm/amd/amdgpu/amdgpu_object.c | |
| parent | Linux 6.13-rc4 (diff) | |
| download | kernel-768776dd4efc681cdca33a79e29bb508d6de9bc0.tar.gz kernel-768776dd4efc681cdca33a79e29bb508d6de9bc0.zip | |
i2c: imx: fix missing stop condition in single-master mode
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 <[email protected]>
Reviewed-by: Frank Li <[email protected]>
Reviewed-by: Francesco Dolcini <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Andi Shyti <[email protected]>
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_object.c')
0 files changed, 0 insertions, 0 deletions
