Patch "i2c: aspeed: Fix the dummy irq expected print" has been added to the 5.4-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    i2c: aspeed: Fix the dummy irq expected print

to the 5.4-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     i2c-aspeed-fix-the-dummy-irq-expected-print.patch
and it can be found in the queue-5.4 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit b162f2dca7819539cfad03aa5af7641c1b6d6b91
Author: Tommy Huang <tommy_huang@xxxxxxxxxxxxxx>
Date:   Tue Mar 5 09:19:06 2024 +0800

    i2c: aspeed: Fix the dummy irq expected print
    
    [ Upstream commit ac168d6770aa12ee201c7474e1361810d5fc723a ]
    
    When the i2c error condition occurred and master state was not
    idle, the master irq function will goto complete state without any
    other interrupt handling. It would cause dummy irq expected print.
    Under this condition, assign the irq_status into irq_handle.
    
    For example, when the abnormal start / stop occurred (bit 5) with
    normal stop status (bit 4) at same time. Then the normal stop status
    would not be handled and it would cause irq expected print in
    the aspeed_i2c_bus_irq.
    
    ...
    aspeed-i2c-bus x. i2c-bus: irq handled != irq.
    Expected 0x00000030, but was 0x00000020
    ...
    
    Fixes: 3e9efc3299dd ("i2c: aspeed: Handle master/slave combined irq events properly")
    Cc: Jae Hyun Yoo <jae.hyun.yoo@xxxxxxxxxxxxxxx>
    Signed-off-by: Tommy Huang <tommy_huang@xxxxxxxxxxxxxx>
    Signed-off-by: Andi Shyti <andi.shyti@xxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/i2c/busses/i2c-aspeed.c b/drivers/i2c/busses/i2c-aspeed.c
index 3f0b072a4cc84..6b41f60ad71ed 100644
--- a/drivers/i2c/busses/i2c-aspeed.c
+++ b/drivers/i2c/busses/i2c-aspeed.c
@@ -440,6 +440,7 @@ static u32 aspeed_i2c_master_irq(struct aspeed_i2c_bus *bus, u32 irq_status)
 			irq_status);
 		irq_handled |= (irq_status & ASPEED_I2CD_INTR_MASTER_ERRORS);
 		if (bus->master_state != ASPEED_I2C_MASTER_INACTIVE) {
+			irq_handled = irq_status;
 			bus->cmd_err = ret;
 			bus->master_state = ASPEED_I2C_MASTER_INACTIVE;
 			goto out_complete;




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux