]> pilppa.com Git - linux-2.6-omap-h63xx.git/commitdiff
fix bug: when no USB device is plugged into the port of EZKIT-BF548, USB OTG host...
authorBryan Wu <bryan.wu@analog.com>
Fri, 30 Nov 2007 10:11:16 +0000 (18:11 +0800)
committerTony Lindgren <tony@atomide.com>
Wed, 5 Dec 2007 23:14:00 +0000 (15:14 -0800)
Move IRQ workqueue init before request_irq, otherwise host SUSPEND irq
will call schedule_work() and BUG_ON() will fire because musb_irq_work did
not initialised.

We recorded it at
https://blackfin.uclinux.org/gf/project/uclinux-dist/tracker/?action=TrackerItemEdit&tracker_id=141&tracker_item_id=3740

Although the Blackfin port of MUSB is not merged, this bug should be
common for other platform with MUSB

Signed-off-by: Bryan Wu <bryan.wu@analog.com>
Acked-by: Gadiyar, Anand <gadiyar@ti.com>
Signed-off-by: Tony Lindgren <tony@atomide.com>
drivers/usb/musb/musb_core.c

index 33774a6cc19565a5e9be1c8938379002ec71a504..008f42cad82d396fd08fbd9aded9cb864ace6ede 100644 (file)
@@ -1992,6 +1992,9 @@ musb_init_controller(struct device *dev, int nIrq, void __iomem *ctrl)
        if (status < 0)
                goto fail2;
 
+       /* Init IRQ workqueue before request_irq */
+       INIT_WORK(&musb->irq_work, musb_irq_work);
+
        /* attach to the IRQ */
        if (request_irq (nIrq, musb->isr, 0, dev->bus_id, musb)) {
                dev_err(dev, "request_irq %d failed!\n", nIrq);
@@ -2071,8 +2074,6 @@ fail:
                return status;
        }
 
-       INIT_WORK(&musb->irq_work, musb_irq_work);
-
 #ifdef CONFIG_SYSFS
        status = device_create_file(dev, &dev_attr_mode);
        status = device_create_file(dev, &dev_attr_vbus);