]> asedeno.scripts.mit.edu Git - linux.git/blobdiff - kernel/irq/pm.c
Merge tag 'pinctrl-v5.4-1' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw...
[linux.git] / kernel / irq / pm.c
index d6961d3c6f9e2673b8ecf0b9d4e610b77e42750a..8f557fa1f4fe47642dd0782ebf55a7be5a3a0f55 100644 (file)
@@ -176,6 +176,26 @@ static void resume_irqs(bool want_early)
        }
 }
 
+/**
+ * rearm_wake_irq - rearm a wakeup interrupt line after signaling wakeup
+ * @irq: Interrupt to rearm
+ */
+void rearm_wake_irq(unsigned int irq)
+{
+       unsigned long flags;
+       struct irq_desc *desc = irq_get_desc_buslock(irq, &flags, IRQ_GET_DESC_CHECK_GLOBAL);
+
+       if (!desc || !(desc->istate & IRQS_SUSPENDED) ||
+           !irqd_is_wakeup_set(&desc->irq_data))
+               return;
+
+       desc->istate &= ~IRQS_SUSPENDED;
+       irqd_set(&desc->irq_data, IRQD_WAKEUP_ARMED);
+       __enable_irq(desc);
+
+       irq_put_desc_busunlock(desc, flags);
+}
+
 /**
  * irq_pm_syscore_ops - enable interrupt lines early
  *