Message ID | 20230313074552.54457-2-yangyicong@huawei.com |
---|---|
State | New |
Headers | show |
Series | Improvement and fix for HiSilicon I2C driver | expand |
On Mon, Mar 13, 2023 at 03:45:51PM +0800, Yicong Yang wrote: > From: Yicong Yang <yangyicong@hisilicon.com> > > After issuing all the messages we can disable the TX_EMPTY interrupts > to avoid handling redundant interrupts. For doing a sinlge bus > detection (i2cdetect -y -r 0) we can reduce ~97% interrupts (before > ~12000 after ~400). > > Reported-by: Sheng Feng <fengsheng5@huawei.com> > Signed-off-by: Sheng Feng <fengsheng5@huawei.com> > Signed-off-by: Yicong Yang <yangyicong@hisilicon.com> Applied to for-current, thanks!
diff --git a/drivers/i2c/busses/i2c-hisi.c b/drivers/i2c/busses/i2c-hisi.c index 8c6c7075c765..1b7609a34f4a 100644 --- a/drivers/i2c/busses/i2c-hisi.c +++ b/drivers/i2c/busses/i2c-hisi.c @@ -316,6 +316,13 @@ static void hisi_i2c_xfer_msg(struct hisi_i2c_controller *ctlr) max_write == 0) break; } + + /* + * Disable the TX_EMPTY interrupt after finishing all the messages to + * avoid overwhelming the CPU. + */ + if (ctlr->msg_tx_idx == ctlr->msg_num) + hisi_i2c_disable_int(ctlr, HISI_I2C_INT_TX_EMPTY); } static irqreturn_t hisi_i2c_irq(int irq, void *context)