struct twl4030_usb *twl = _twl;
        int status;
 
-#ifdef CONFIG_LOCKDEP
-       /* WORKAROUND for lockdep forcing IRQF_DISABLED on us, which
-        * we don't want and can't tolerate.  Although it might be
-        * friendlier not to borrow this thread context...
-        */
-       local_irq_enable();
-#endif
-
        status = twl4030_usb_linkstat(twl);
        if (status >= 0) {
                /* FIXME add a set_power() method so that B-devices can
         * need both handles, otherwise just one suffices.
         */
        twl->irq_enabled = true;
-       status = request_irq(twl->irq, twl4030_usb_irq,
+       status = request_threaded_irq(twl->irq, NULL, twl4030_usb_irq,
                        IRQF_TRIGGER_FALLING | IRQF_TRIGGER_RISING,
                        "twl4030_usb", twl);
        if (status < 0) {