aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb/gadget/pxa2xx_udc.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/usb/gadget/pxa2xx_udc.c')
-rw-r--r--drivers/usb/gadget/pxa2xx_udc.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/drivers/usb/gadget/pxa2xx_udc.c b/drivers/usb/gadget/pxa2xx_udc.c
index 1ed506e95985..b78de9694665 100644
--- a/drivers/usb/gadget/pxa2xx_udc.c
+++ b/drivers/usb/gadget/pxa2xx_udc.c
@@ -1623,7 +1623,6 @@ int usb_gadget_register_driver(struct usb_gadget_driver *driver)
1623 if (!driver 1623 if (!driver
1624 || driver->speed < USB_SPEED_FULL 1624 || driver->speed < USB_SPEED_FULL
1625 || !driver->bind 1625 || !driver->bind
1626 || !driver->unbind
1627 || !driver->disconnect 1626 || !driver->disconnect
1628 || !driver->setup) 1627 || !driver->setup)
1629 return -EINVAL; 1628 return -EINVAL;
@@ -1694,7 +1693,7 @@ int usb_gadget_unregister_driver(struct usb_gadget_driver *driver)
1694 1693
1695 if (!dev) 1694 if (!dev)
1696 return -ENODEV; 1695 return -ENODEV;
1697 if (!driver || driver != dev->driver) 1696 if (!driver || driver != dev->driver || !driver->unbind)
1698 return -EINVAL; 1697 return -EINVAL;
1699 1698
1700 local_irq_disable(); 1699 local_irq_disable();
@@ -2638,9 +2637,11 @@ static int __exit pxa2xx_udc_remove(struct platform_device *pdev)
2638{ 2637{
2639 struct pxa2xx_udc *dev = platform_get_drvdata(pdev); 2638 struct pxa2xx_udc *dev = platform_get_drvdata(pdev);
2640 2639
2640 if (dev->driver)
2641 return -EBUSY;
2642
2641 udc_disable(dev); 2643 udc_disable(dev);
2642 remove_proc_files(); 2644 remove_proc_files();
2643 usb_gadget_unregister_driver(dev->driver);
2644 2645
2645 if (dev->got_irq) { 2646 if (dev->got_irq) {
2646 free_irq(IRQ_USB, dev); 2647 free_irq(IRQ_USB, dev);