summaryrefslogtreecommitdiffstats
path: root/kernel/irq/pm.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/irq/pm.c')
-rw-r--r--kernel/irq/pm.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/kernel/irq/pm.c b/kernel/irq/pm.c
index d6961d3c6f9e..8f557fa1f4fe 100644
--- a/kernel/irq/pm.c
+++ b/kernel/irq/pm.c
@@ -177,6 +177,26 @@ static void resume_irqs(bool want_early)
177} 177}
178 178
179/** 179/**
180 * rearm_wake_irq - rearm a wakeup interrupt line after signaling wakeup
181 * @irq: Interrupt to rearm
182 */
183void rearm_wake_irq(unsigned int irq)
184{
185 unsigned long flags;
186 struct irq_desc *desc = irq_get_desc_buslock(irq, &flags, IRQ_GET_DESC_CHECK_GLOBAL);
187
188 if (!desc || !(desc->istate & IRQS_SUSPENDED) ||
189 !irqd_is_wakeup_set(&desc->irq_data))
190 return;
191
192 desc->istate &= ~IRQS_SUSPENDED;
193 irqd_set(&desc->irq_data, IRQD_WAKEUP_ARMED);
194 __enable_irq(desc);
195
196 irq_put_desc_busunlock(desc, flags);
197}
198
199/**
180 * irq_pm_syscore_ops - enable interrupt lines early 200 * irq_pm_syscore_ops - enable interrupt lines early
181 * 201 *
182 * Enable all interrupt lines with %IRQF_EARLY_RESUME set. 202 * Enable all interrupt lines with %IRQF_EARLY_RESUME set.