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);
 }