|
|
@@ -888,14 +888,16 @@ static void omap_gpio_unmask_irq(struct irq_data *d)
|
|
|
if (trigger)
|
|
|
omap_set_gpio_triggering(bank, offset, trigger);
|
|
|
|
|
|
- /* For level-triggered GPIOs, the clearing must be done after
|
|
|
- * the HW source is cleared, thus after the handler has run */
|
|
|
- if (bank->level_mask & BIT(offset)) {
|
|
|
- omap_set_gpio_irqenable(bank, offset, 0);
|
|
|
+ omap_set_gpio_irqenable(bank, offset, 1);
|
|
|
+
|
|
|
+ /*
|
|
|
+ * For level-triggered GPIOs, clearing must be done after the source
|
|
|
+ * is cleared, thus after the handler has run. OMAP4 needs this done
|
|
|
+ * after enabing the interrupt to clear the wakeup status.
|
|
|
+ */
|
|
|
+ if (bank->level_mask & BIT(offset))
|
|
|
omap_clear_gpio_irqstatus(bank, offset);
|
|
|
- }
|
|
|
|
|
|
- omap_set_gpio_irqenable(bank, offset, 1);
|
|
|
raw_spin_unlock_irqrestore(&bank->lock, flags);
|
|
|
}
|
|
|
|