Merge branch 'i2c/for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa...
[linux-2.6-microblaze.git] / drivers / irqchip / irq-brcmstb-l2.c
index 313c2c6..d6bcc6b 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
                 */