Hi Jiawen, Sanket and Basavaraj I hope you could give a quick test to this patchset to see it won't cause regression on your HW. This is mostly the same than the first version what Jiawen tested earlier but in this 3rd version I decided to drop semphore touching code patches from v2 due they being out of scope and fix a few things noted by Andy. Changes are in the patch 3/6 with two minor fixes to comments while moving them and the patch 6/6 where i2c_dw_wait_transfer() is slightly modified by Andy's suggestion plus I decided to remove one comment which became unclear after this patch. v2: https://lore.kernel.org/linux-i2c/20240206145158.227254-1-jarkko.nikula@xxxxxxxxxxxxxxx/ v1: https://lore.kernel.org/linux-i2c/20240131141653.2689260-1-jarkko.nikula@xxxxxxxxxxxxxxx/ Jarkko Nikula (6): i2c: designware: Uniform initialization flow for polling mode i2c: designware: Do not enable interrupts shortly in polling mode i2c: designware: Use accessors to DW_IC_INTR_MASK register i2c: designware: Move interrupt handling functions before i2c_dw_xfer() i2c: designware: Fix RX FIFO depth define on Wangxun 10Gb NIC i2c: designware: Implement generic polling mode code for Wangxun 10Gb NIC drivers/i2c/busses/i2c-designware-common.c | 2 +- drivers/i2c/busses/i2c-designware-core.h | 23 +- drivers/i2c/busses/i2c-designware-master.c | 419 +++++++++----------- drivers/i2c/busses/i2c-designware-pcidrv.c | 2 +- drivers/i2c/busses/i2c-designware-platdrv.c | 2 +- 5 files changed, 208 insertions(+), 240 deletions(-) -- 2.43.0