From: Anders Berg <anders.b...@avagotech.com> Fixed ISR to return IRQ_NONE if no interrupt was pending (or no transfer was in progress).
Signed-off-by: Anders Berg <anders.b...@avagotech.com> --- drivers/i2c/busses/i2c-axxia.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/drivers/i2c/busses/i2c-axxia.c b/drivers/i2c/busses/i2c-axxia.c index 7355975..e965793 100644 --- a/drivers/i2c/busses/i2c-axxia.c +++ b/drivers/i2c/busses/i2c-axxia.c @@ -223,6 +223,9 @@ axxia_i2c_init(struct axxia_i2c_dev *idev) /* Timeout in divided clocks */ writel((1<<15) | tmo_clk, &idev->regs->wait_timer_control); + /* Mask all master interrupt bits */ + i2c_int_disable(idev, ~0); + /* Interrupt enable */ writel(0x01, &idev->regs->interrupt_enable); @@ -332,6 +335,12 @@ axxia_i2c_isr(int irq, void *_dev) struct axxia_i2c_dev *idev = _dev; u32 status = readl(&idev->regs->mst_int_status); + if ((readl(&idev->regs->interrupt_status) & 0x1) == 0) + return IRQ_NONE; + + if (!idev->msg) + return IRQ_NONE; + /* Clear interrupt */ writel(0x01, &idev->regs->interrupt_status); -- 1.7.9.5 -- _______________________________________________ linux-yocto mailing list linux-yocto@yoctoproject.org https://lists.yoctoproject.org/listinfo/linux-yocto