]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
i2c: spacemit: fix spurious IRQ handling returning IRQ_HANDLED
authorPei Xiao <xiaopei01@kylinos.cn>
Fri, 10 Jul 2026 07:21:13 +0000 (15:21 +0800)
committerAndi Shyti <andi.shyti@kernel.org>
Tue, 14 Jul 2026 15:38:13 +0000 (17:38 +0200)
When the interrupt status register reads zero, the handler should
return IRQ_NONE instead of IRQ_HANDLED. What the return value
actually feeds into is the spurious interrupt accounting in
note_interrupt(): falsely claiming IRQ_HANDLED defeats the "irq XX:
nobody cared" detection, so a stuck interrupt source would never be
caught.

Fixes: 5ea558473fa3 ("i2c: spacemit: add support for SpacemiT K1 SoC")
Signed-off-by: Pei Xiao <xiaopei01@kylinos.cn>
Cc: <stable@vger.kernel.org> # v6.15+
Reviewed-by: Troy Mitchell <troy.mitchell@linux.spacemit.com>
Reviewed-by: Mukesh Savaliya <mukesh.savaliya@oss.qualcomm.com>
Signed-off-by: Andi Shyti <andi.shyti@kernel.org>
Link: https://lore.kernel.org/r/ef8b623f45d4e430721e46572c2598d882044aed.1783667875.git.xiaopei01@kylinos.cn
drivers/i2c/busses/i2c-k1.c

index 9152cf436bea0867bf830b4e49cad4b1fc66e09f..51a0c3d80fc92fa673af4820c9149a566770dbf2 100644 (file)
@@ -596,7 +596,7 @@ static irqreturn_t spacemit_i2c_irq_handler(int irq, void *devid)
 
        status = readl(i2c->base + SPACEMIT_ISR);
        if (!status)
-               return IRQ_HANDLED;
+               return IRQ_NONE;
 
        i2c->status = status;