IRQCHIP: brcmstb-l2: don't clear wakeable interrupts at init time
[sfrench/cifs-2.6.git] / drivers / irqchip / irq-brcmstb-l2.c
index 313c2c64498a2753ff0340ae5e5905ac2bca8ce8..d6bcc6be077777551bf5a970938d3703fdc477d0 100644 (file)
@@ -136,7 +136,11 @@ int __init brcmstb_l2_intc_of_init(struct device_node *np,
 
        /* Disable all interrupts by default */
        writel(0xffffffff, data->base + CPU_MASK_SET);
-       writel(0xffffffff, data->base + CPU_CLEAR);
+
+       /* Wakeup interrupts may be retained from S5 (cold boot) */
+       data->can_wake = of_property_read_bool(np, "brcm,irq-can-wake");
+       if (!data->can_wake)
+               writel(0xffffffff, data->base + CPU_CLEAR);
 
        data->parent_irq = irq_of_parse_and_map(np, 0);
        if (!data->parent_irq) {
@@ -188,8 +192,7 @@ int __init brcmstb_l2_intc_of_init(struct device_node *np,
        ct->chip.irq_suspend = brcmstb_l2_intc_suspend;
        ct->chip.irq_resume = brcmstb_l2_intc_resume;
 
-       if (of_property_read_bool(np, "brcm,irq-can-wake")) {
-               data->can_wake = true;
+       if (data->can_wake) {
                /* This IRQ chip can wake the system, set all child interrupts
                 * in wake_enabled mask
                 */