AST2600 i2c irq issue
Jae Hyun Yoo
jae.hyun.yoo at linux.intel.com
Tue Oct 22 05:27:23 AEDT 2019
On 10/21/2019 5:16 AM, Wolfram Sang wrote:
>
>> 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...
Thanks Wolfram!
Peter also pointed it out, and Eddie made a patch which includes the
spin_unlock.
Hi Eddie,
Can you please submit your patch into 'i2c-next' upstream?
Thanks,
Jae
More information about the Linux-aspeed
mailing list