From mboxrd@z Thu Jan 1 00:00:00 1970 From: Wolfram Sang Date: Mon, 21 Oct 2019 14:16:29 +0200 Subject: AST2600 i2c irq issue In-Reply-To: <8c62b118777c44d1bf8e1a3c32175644@TWMBX02.aspeed.com> References: <8c62b118777c44d1bf8e1a3c32175644@TWMBX02.aspeed.com> Message-ID: <20191021121629.GE1145@ninjato> List-Id: To: linux-aspeed@lists.ozlabs.org MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit > spin_lock(&bus->lock); > irq_received = readl(bus->base + ASPEED_I2C_INTR_STS_REG); > + if (!irq_received) > + return IRQ_NONE; > + > /* Ack all interrupts except for Rx done */ > writel(irq_received & ~ASPEED_I2CD_INTR_RX_DONE, > bus->base + ASPEED_I2C_INTR_STS_REG); > > > I think it's a right fix for the issue. At least, we need to prevent > any driver state corruption. The state machine would run correctly if > we filtering the garbage interrupt out. Just unlock the spinlock before you return... -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 833 bytes Desc: not available URL: