gpio: gpio-aspeed-sgpio: Fix wrong hwirq base in irq handler
authorSteven Lee <steven_lee@aspeedtech.com>
Tue, 14 Dec 2021 04:02:38 +0000 (12:02 +0800)
committerBartosz Golaszewski <brgl@bgdev.pl>
Mon, 3 Jan 2022 09:50:12 +0000 (10:50 +0100)
Each aspeed sgpio bank has 64 gpio pins(32 input pins and 32 output pins).
The hwirq base for each sgpio bank should be multiples of 64 rather than
multiples of 32.

Signed-off-by: Steven Lee <steven_lee@aspeedtech.com>
Signed-off-by: Bartosz Golaszewski <brgl@bgdev.pl>
drivers/gpio/gpio-aspeed-sgpio.c

index 3d6ef37..b3a9b84 100644 (file)
@@ -395,7 +395,7 @@ static void aspeed_sgpio_irq_handler(struct irq_desc *desc)
                reg = ioread32(bank_reg(data, bank, reg_irq_status));
 
                for_each_set_bit(p, &reg, 32)
                reg = ioread32(bank_reg(data, bank, reg_irq_status));
 
                for_each_set_bit(p, &reg, 32)
-                       generic_handle_domain_irq(gc->irq.domain, i * 32 + p * 2);
+                       generic_handle_domain_irq(gc->irq.domain, (i * 32 + p) * 2);
        }
 
        chained_irq_exit(ic, desc);
        }
 
        chained_irq_exit(ic, desc);