diff options
Diffstat (limited to 'drivers/i2c/busses/i2c-designware-core.c')
-rw-r--r-- | drivers/i2c/busses/i2c-designware-core.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/i2c/busses/i2c-designware-core.c b/drivers/i2c/busses/i2c-designware-core.c index 8c48b27ba059..de7fbbb374cd 100644 --- a/drivers/i2c/busses/i2c-designware-core.c +++ b/drivers/i2c/busses/i2c-designware-core.c | |||
@@ -813,6 +813,12 @@ static irqreturn_t i2c_dw_isr(int this_irq, void *dev_id) | |||
813 | tx_aborted: | 813 | tx_aborted: |
814 | if ((stat & (DW_IC_INTR_TX_ABRT | DW_IC_INTR_STOP_DET)) || dev->msg_err) | 814 | if ((stat & (DW_IC_INTR_TX_ABRT | DW_IC_INTR_STOP_DET)) || dev->msg_err) |
815 | complete(&dev->cmd_complete); | 815 | complete(&dev->cmd_complete); |
816 | else if (unlikely(dev->accessor_flags & ACCESS_INTR_MASK)) { | ||
817 | /* workaround to trigger pending interrupt */ | ||
818 | stat = dw_readl(dev, DW_IC_INTR_MASK); | ||
819 | i2c_dw_disable_int(dev); | ||
820 | dw_writel(dev, stat, DW_IC_INTR_MASK); | ||
821 | } | ||
816 | 822 | ||
817 | return IRQ_HANDLED; | 823 | return IRQ_HANDLED; |
818 | } | 824 | } |