diff options
author | Troy Mitchell <troy.mitchell@linux.spacemit.com> | 2025-09-25 05:02:26 +0300 |
---|---|---|
committer | Wolfram Sang <wsa+renesas@sang-engineering.com> | 2025-09-26 00:15:00 +0300 |
commit | 445522fe7aad6131b2747ae8c76f77266054cd84 (patch) | |
tree | 8aa0b8bd176d90ad72622b61b0c856543c92a5c8 /drivers/infiniband/hw/ionic/ionic_controlpath.c | |
parent | 41d6f90ef5dc2841bdd09817c63a3d6188473b9b (diff) | |
download | linux-445522fe7aad6131b2747ae8c76f77266054cd84.tar.xz |
i2c: spacemit: remove stop function to avoid bus error
Previously, STOP handling was split into two separate steps:
1) clear TB/STOP/START/ACK bits
2) issue STOP by calling spacemit_i2c_stop()
This left a small window where the control register was updated
twice, which can confuse the controller. While this race has not
been observed with interrupt-driven transfers, it reliably causes
bus errors in PIO mode.
Inline the STOP sequence into the IRQ handler and ensure that
control register bits are updated atomically in a single writel().
Fixes: 5ea558473fa31 ("i2c: spacemit: add support for SpacemiT K1 SoC")
Signed-off-by: Troy Mitchell <troy.mitchell@linux.spacemit.com>
Reviewed-by: Aurelien Jarno <aurelien@aurel32.net>
Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
Diffstat (limited to 'drivers/infiniband/hw/ionic/ionic_controlpath.c')
0 files changed, 0 insertions, 0 deletions