irqchip/bcm2835: Enable SKIP_SET_WAKE and MASK_ON_SUSPEND
authorStefan Wahren <wahrenst@gmx.net>
Sun, 30 Jun 2024 15:36:46 +0000 (17:36 +0200)
committerThomas Gleixner <tglx@linutronix.de>
Mon, 15 Jul 2024 13:13:55 +0000 (15:13 +0200)
The BCM2835 ARMCTRL interrupt controller doesn't provide any facility to
configure the wakeup sources. That's the reason why the driver lacks the
irq_set_wake() callback for the interrupt chip.

But this prevent to properly enter power management states like "suspend to
idle".

Enable the flags IRQCHIP_SKIP_SET_WAKE and IRQCHIP_MASK_ON_SUSPEND so the
interrupt suspend logic can handle the chip correctly.

Signed-off-by: Stefan Wahren <wahrenst@gmx.net>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Reviewed-by: Florian Fainelli <florian.fainelli@broadcom.com>
drivers/irqchip/irq-bcm2835.c

index e94e2882286cb25deb865858fc6304852d3f1029..6c20604c2242f2df9dd6b23d89e873c82a59a731 100644 (file)
@@ -102,7 +102,9 @@ static void armctrl_unmask_irq(struct irq_data *d)
 static struct irq_chip armctrl_chip = {
        .name = "ARMCTRL-level",
        .irq_mask = armctrl_mask_irq,
-       .irq_unmask = armctrl_unmask_irq
+       .irq_unmask = armctrl_unmask_irq,
+       .flags = IRQCHIP_MASK_ON_SUSPEND |
+                IRQCHIP_SKIP_SET_WAKE,
 };
 
 static int armctrl_xlate(struct irq_domain *d, struct device_node *ctrlr,