Hi I discovered recently while doing other cleanups.that reads and writes from I2C bus to i2c-designware-slave.c don't work correctly. First two patches are fixes to slave code and meant for normal development cycle since it looks these issues have been always here. I Cc'ed Michael Wu <michael.wu@xxxxxxxxxx> who has fixed i2c-designware-slave.c before and Tian Ye <tianye@xxxxxxxxx> who recently reported a write issue. Could you test first two patches (or the whole set) that my patches won't cause regressions to your existing test cases or does the 2nd patch fix the write issue? Rest of patches are minor changes and cleanups to both master and slave parts. Patchset is done on top of commit fd142e074e89 ("Merge branch 'i2c/for-current-fixed' into i2c/for-next") but may apply on top of v6.1-rc1 too. Jarkko Nikula (11): i2c: designware: Fix slave state machine for sequential reads i2c: designware: Empty receive FIFO in slave interrupt handler i2c: designware: Define software status flags with BIT() i2c: designware: Remove needless initializations from i2c_dw_reg_slave() i2c: designware: Remove unused completion code from i2c-designware-slave i2c: designware: Simplify slave interrupt handler nesting i2c: designware: Do not process interrupt when device is suspended i2c: designware: Move debug print in i2c_dw_isr() i2c: designware: Simplify master interrupt handler nesting i2c: designware: Remove common i2c_dw_disable_int() i2c: designware: Align defines in i2c-designware-core.h drivers/i2c/busses/i2c-designware-common.c | 5 - drivers/i2c/busses/i2c-designware-core.h | 235 ++++++++++----------- drivers/i2c/busses/i2c-designware-master.c | 44 ++-- drivers/i2c/busses/i2c-designware-slave.c | 77 +++---- 4 files changed, 164 insertions(+), 197 deletions(-) -- 2.35.1