diff options
Diffstat (limited to 'drivers/usb')
-rw-r--r-- | drivers/usb/gadget/pxa27x_udc.c | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/drivers/usb/gadget/pxa27x_udc.c b/drivers/usb/gadget/pxa27x_udc.c index f7d25795821a..2fc867652ef5 100644 --- a/drivers/usb/gadget/pxa27x_udc.c +++ b/drivers/usb/gadget/pxa27x_udc.c | |||
@@ -1814,11 +1814,6 @@ static int pxa27x_udc_start(struct usb_gadget *g, | |||
1814 | udc->gadget.dev.driver = &driver->driver; | 1814 | udc->gadget.dev.driver = &driver->driver; |
1815 | dplus_pullup(udc, 1); | 1815 | dplus_pullup(udc, 1); |
1816 | 1816 | ||
1817 | retval = device_add(&udc->gadget.dev); | ||
1818 | if (retval) { | ||
1819 | dev_err(udc->dev, "device_add error %d\n", retval); | ||
1820 | goto fail; | ||
1821 | } | ||
1822 | if (!IS_ERR_OR_NULL(udc->transceiver)) { | 1817 | if (!IS_ERR_OR_NULL(udc->transceiver)) { |
1823 | retval = otg_set_peripheral(udc->transceiver->otg, | 1818 | retval = otg_set_peripheral(udc->transceiver->otg, |
1824 | &udc->gadget); | 1819 | &udc->gadget); |
@@ -1876,7 +1871,6 @@ static int pxa27x_udc_stop(struct usb_gadget *g, | |||
1876 | 1871 | ||
1877 | udc->driver = NULL; | 1872 | udc->driver = NULL; |
1878 | 1873 | ||
1879 | device_del(&udc->gadget.dev); | ||
1880 | 1874 | ||
1881 | if (!IS_ERR_OR_NULL(udc->transceiver)) | 1875 | if (!IS_ERR_OR_NULL(udc->transceiver)) |
1882 | return otg_set_peripheral(udc->transceiver->otg, NULL); | 1876 | return otg_set_peripheral(udc->transceiver->otg, NULL); |
@@ -2480,13 +2474,24 @@ static int __init pxa_udc_probe(struct platform_device *pdev) | |||
2480 | driver_name, udc->irq, retval); | 2474 | driver_name, udc->irq, retval); |
2481 | goto err_irq; | 2475 | goto err_irq; |
2482 | } | 2476 | } |
2477 | |||
2478 | retval = device_add(&udc->gadget.dev); | ||
2479 | if (retval) { | ||
2480 | dev_err(udc->dev, "device_add error %d\n", retval); | ||
2481 | goto err_dev_add; | ||
2482 | } | ||
2483 | |||
2483 | retval = usb_add_gadget_udc(&pdev->dev, &udc->gadget); | 2484 | retval = usb_add_gadget_udc(&pdev->dev, &udc->gadget); |
2484 | if (retval) | 2485 | if (retval) |
2485 | goto err_add_udc; | 2486 | goto err_add_udc; |
2486 | 2487 | ||
2487 | pxa_init_debugfs(udc); | 2488 | pxa_init_debugfs(udc); |
2489 | |||
2488 | return 0; | 2490 | return 0; |
2491 | |||
2489 | err_add_udc: | 2492 | err_add_udc: |
2493 | device_unregister(&udc->gadget.dev); | ||
2494 | err_dev_add: | ||
2490 | free_irq(udc->irq, udc); | 2495 | free_irq(udc->irq, udc); |
2491 | err_irq: | 2496 | err_irq: |
2492 | iounmap(udc->regs); | 2497 | iounmap(udc->regs); |
@@ -2507,6 +2512,7 @@ static int __exit pxa_udc_remove(struct platform_device *_dev) | |||
2507 | int gpio = udc->mach->gpio_pullup; | 2512 | int gpio = udc->mach->gpio_pullup; |
2508 | 2513 | ||
2509 | usb_del_gadget_udc(&udc->gadget); | 2514 | usb_del_gadget_udc(&udc->gadget); |
2515 | device_del(&udc->gadget.dev); | ||
2510 | usb_gadget_unregister_driver(udc->driver); | 2516 | usb_gadget_unregister_driver(udc->driver); |
2511 | free_irq(udc->irq, udc); | 2517 | free_irq(udc->irq, udc); |
2512 | pxa_cleanup_debugfs(udc); | 2518 | pxa_cleanup_debugfs(udc); |