diff options
Diffstat (limited to 'kernel/irq/pm.c')
-rw-r--r-- | kernel/irq/pm.c | 20 |
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 | */ | ||
183 | void 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. |