diff options
| -rw-r--r-- | drivers/usb/chipidea/udc.c | 6 | ||||
| -rw-r--r-- | drivers/usb/dwc3/core.c | 1 | ||||
| -rw-r--r-- | drivers/usb/dwc3/dwc3-exynos.c | 2 | ||||
| -rw-r--r-- | drivers/usb/dwc3/dwc3-omap.c | 8 | ||||
| -rw-r--r-- | drivers/usb/dwc3/dwc3-pci.c | 2 | ||||
| -rw-r--r-- | drivers/usb/dwc3/gadget.c | 3 | ||||
| -rw-r--r-- | drivers/usb/gadget/Makefile | 12 | ||||
| -rw-r--r-- | drivers/usb/gadget/f_uac1.c | 1 | ||||
| -rw-r--r-- | drivers/usb/gadget/imx_udc.c | 20 | ||||
| -rw-r--r-- | drivers/usb/gadget/pxa25x_udc.c | 20 | ||||
| -rw-r--r-- | drivers/usb/gadget/pxa27x_udc.c | 18 | ||||
| -rw-r--r-- | drivers/usb/gadget/s3c2410_udc.c | 28 | ||||
| -rw-r--r-- | drivers/usb/gadget/u_uac1.c | 3 | ||||
| -rw-r--r-- | drivers/usb/musb/Kconfig | 4 | ||||
| -rw-r--r-- | drivers/usb/otg/otg.c | 10 | ||||
| -rw-r--r-- | drivers/usb/phy/omap-control-usb.c | 24 | ||||
| -rw-r--r-- | drivers/usb/phy/omap-usb3.c | 8 | ||||
| -rw-r--r-- | drivers/usb/phy/samsung-usbphy.c | 8 |
18 files changed, 84 insertions, 94 deletions
diff --git a/drivers/usb/chipidea/udc.c b/drivers/usb/chipidea/udc.c index 2f45bba8561d..f64fbea1cf20 100644 --- a/drivers/usb/chipidea/udc.c +++ b/drivers/usb/chipidea/udc.c | |||
| @@ -1767,7 +1767,7 @@ static int udc_start(struct ci13xxx *ci) | |||
| 1767 | goto put_transceiver; | 1767 | goto put_transceiver; |
| 1768 | } | 1768 | } |
| 1769 | 1769 | ||
| 1770 | retval = dbg_create_files(&ci->gadget.dev); | 1770 | retval = dbg_create_files(ci->dev); |
| 1771 | if (retval) | 1771 | if (retval) |
| 1772 | goto unreg_device; | 1772 | goto unreg_device; |
| 1773 | 1773 | ||
| @@ -1796,7 +1796,7 @@ remove_trans: | |||
| 1796 | 1796 | ||
| 1797 | dev_err(dev, "error = %i\n", retval); | 1797 | dev_err(dev, "error = %i\n", retval); |
| 1798 | remove_dbg: | 1798 | remove_dbg: |
| 1799 | dbg_remove_files(&ci->gadget.dev); | 1799 | dbg_remove_files(ci->dev); |
| 1800 | unreg_device: | 1800 | unreg_device: |
| 1801 | device_unregister(&ci->gadget.dev); | 1801 | device_unregister(&ci->gadget.dev); |
| 1802 | put_transceiver: | 1802 | put_transceiver: |
| @@ -1836,7 +1836,7 @@ static void udc_stop(struct ci13xxx *ci) | |||
| 1836 | if (ci->global_phy) | 1836 | if (ci->global_phy) |
| 1837 | usb_put_phy(ci->transceiver); | 1837 | usb_put_phy(ci->transceiver); |
| 1838 | } | 1838 | } |
| 1839 | dbg_remove_files(&ci->gadget.dev); | 1839 | dbg_remove_files(ci->dev); |
| 1840 | device_unregister(&ci->gadget.dev); | 1840 | device_unregister(&ci->gadget.dev); |
| 1841 | /* my kobject is dynamic, I swear! */ | 1841 | /* my kobject is dynamic, I swear! */ |
| 1842 | memset(&ci->gadget, 0, sizeof(ci->gadget)); | 1842 | memset(&ci->gadget, 0, sizeof(ci->gadget)); |
diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c index 999909451e37..ffa6b004a84b 100644 --- a/drivers/usb/dwc3/core.c +++ b/drivers/usb/dwc3/core.c | |||
| @@ -583,6 +583,7 @@ static int dwc3_remove(struct platform_device *pdev) | |||
| 583 | break; | 583 | break; |
| 584 | } | 584 | } |
| 585 | 585 | ||
| 586 | dwc3_free_event_buffers(dwc); | ||
| 586 | dwc3_core_exit(dwc); | 587 | dwc3_core_exit(dwc); |
| 587 | 588 | ||
| 588 | return 0; | 589 | return 0; |
diff --git a/drivers/usb/dwc3/dwc3-exynos.c b/drivers/usb/dwc3/dwc3-exynos.c index b50da53e9a52..b082bec7343e 100644 --- a/drivers/usb/dwc3/dwc3-exynos.c +++ b/drivers/usb/dwc3/dwc3-exynos.c | |||
| @@ -23,8 +23,6 @@ | |||
| 23 | #include <linux/usb/nop-usb-xceiv.h> | 23 | #include <linux/usb/nop-usb-xceiv.h> |
| 24 | #include <linux/of.h> | 24 | #include <linux/of.h> |
| 25 | 25 | ||
| 26 | #include "core.h" | ||
| 27 | |||
| 28 | struct dwc3_exynos { | 26 | struct dwc3_exynos { |
| 29 | struct platform_device *dwc3; | 27 | struct platform_device *dwc3; |
| 30 | struct platform_device *usb2_phy; | 28 | struct platform_device *usb2_phy; |
diff --git a/drivers/usb/dwc3/dwc3-omap.c b/drivers/usb/dwc3/dwc3-omap.c index 22f337f57219..afa05e3c9cf4 100644 --- a/drivers/usb/dwc3/dwc3-omap.c +++ b/drivers/usb/dwc3/dwc3-omap.c | |||
| @@ -54,8 +54,6 @@ | |||
| 54 | #include <linux/usb/otg.h> | 54 | #include <linux/usb/otg.h> |
| 55 | #include <linux/usb/nop-usb-xceiv.h> | 55 | #include <linux/usb/nop-usb-xceiv.h> |
| 56 | 56 | ||
| 57 | #include "core.h" | ||
| 58 | |||
| 59 | /* | 57 | /* |
| 60 | * All these registers belong to OMAP's Wrapper around the | 58 | * All these registers belong to OMAP's Wrapper around the |
| 61 | * DesignWare USB3 Core. | 59 | * DesignWare USB3 Core. |
| @@ -465,20 +463,20 @@ static int dwc3_omap_remove(struct platform_device *pdev) | |||
| 465 | return 0; | 463 | return 0; |
| 466 | } | 464 | } |
| 467 | 465 | ||
| 468 | static const struct of_device_id of_dwc3_matach[] = { | 466 | static const struct of_device_id of_dwc3_match[] = { |
| 469 | { | 467 | { |
| 470 | "ti,dwc3", | 468 | "ti,dwc3", |
| 471 | }, | 469 | }, |
| 472 | { }, | 470 | { }, |
| 473 | }; | 471 | }; |
| 474 | MODULE_DEVICE_TABLE(of, of_dwc3_matach); | 472 | MODULE_DEVICE_TABLE(of, of_dwc3_match); |
| 475 | 473 | ||
| 476 | static struct platform_driver dwc3_omap_driver = { | 474 | static struct platform_driver dwc3_omap_driver = { |
| 477 | .probe = dwc3_omap_probe, | 475 | .probe = dwc3_omap_probe, |
| 478 | .remove = dwc3_omap_remove, | 476 | .remove = dwc3_omap_remove, |
| 479 | .driver = { | 477 | .driver = { |
| 480 | .name = "omap-dwc3", | 478 | .name = "omap-dwc3", |
| 481 | .of_match_table = of_dwc3_matach, | 479 | .of_match_table = of_dwc3_match, |
| 482 | }, | 480 | }, |
| 483 | }; | 481 | }; |
| 484 | 482 | ||
diff --git a/drivers/usb/dwc3/dwc3-pci.c b/drivers/usb/dwc3/dwc3-pci.c index 7d70f44567d2..e8d77689a322 100644 --- a/drivers/usb/dwc3/dwc3-pci.c +++ b/drivers/usb/dwc3/dwc3-pci.c | |||
| @@ -45,8 +45,6 @@ | |||
| 45 | #include <linux/usb/otg.h> | 45 | #include <linux/usb/otg.h> |
| 46 | #include <linux/usb/nop-usb-xceiv.h> | 46 | #include <linux/usb/nop-usb-xceiv.h> |
| 47 | 47 | ||
| 48 | #include "core.h" | ||
| 49 | |||
| 50 | /* FIXME define these in <linux/pci_ids.h> */ | 48 | /* FIXME define these in <linux/pci_ids.h> */ |
| 51 | #define PCI_VENDOR_ID_SYNOPSYS 0x16c3 | 49 | #define PCI_VENDOR_ID_SYNOPSYS 0x16c3 |
| 52 | #define PCI_DEVICE_ID_SYNOPSYS_HAPSUSB3 0xabcd | 50 | #define PCI_DEVICE_ID_SYNOPSYS_HAPSUSB3 0xabcd |
diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c index a04342f6cbfa..82e160e96fca 100644 --- a/drivers/usb/dwc3/gadget.c +++ b/drivers/usb/dwc3/gadget.c | |||
| @@ -2159,7 +2159,6 @@ static void dwc3_gadget_phy_suspend(struct dwc3 *dwc, u8 speed) | |||
| 2159 | 2159 | ||
| 2160 | static void dwc3_gadget_conndone_interrupt(struct dwc3 *dwc) | 2160 | static void dwc3_gadget_conndone_interrupt(struct dwc3 *dwc) |
| 2161 | { | 2161 | { |
| 2162 | struct dwc3_gadget_ep_cmd_params params; | ||
| 2163 | struct dwc3_ep *dep; | 2162 | struct dwc3_ep *dep; |
| 2164 | int ret; | 2163 | int ret; |
| 2165 | u32 reg; | 2164 | u32 reg; |
| @@ -2167,8 +2166,6 @@ static void dwc3_gadget_conndone_interrupt(struct dwc3 *dwc) | |||
| 2167 | 2166 | ||
| 2168 | dev_vdbg(dwc->dev, "%s\n", __func__); | 2167 | dev_vdbg(dwc->dev, "%s\n", __func__); |
| 2169 | 2168 | ||
| 2170 | memset(¶ms, 0x00, sizeof(params)); | ||
| 2171 | |||
| 2172 | reg = dwc3_readl(dwc->regs, DWC3_DSTS); | 2169 | reg = dwc3_readl(dwc->regs, DWC3_DSTS); |
| 2173 | speed = reg & DWC3_DSTS_CONNECTSPD; | 2170 | speed = reg & DWC3_DSTS_CONNECTSPD; |
| 2174 | dwc->speed = speed; | 2171 | dwc->speed = speed; |
diff --git a/drivers/usb/gadget/Makefile b/drivers/usb/gadget/Makefile index 97a13c349cc5..82fb22511356 100644 --- a/drivers/usb/gadget/Makefile +++ b/drivers/usb/gadget/Makefile | |||
| @@ -35,6 +35,12 @@ mv_udc-y := mv_udc_core.o | |||
| 35 | obj-$(CONFIG_USB_FUSB300) += fusb300_udc.o | 35 | obj-$(CONFIG_USB_FUSB300) += fusb300_udc.o |
| 36 | obj-$(CONFIG_USB_MV_U3D) += mv_u3d_core.o | 36 | obj-$(CONFIG_USB_MV_U3D) += mv_u3d_core.o |
| 37 | 37 | ||
| 38 | # USB Functions | ||
| 39 | obj-$(CONFIG_USB_F_ACM) += f_acm.o | ||
| 40 | f_ss_lb-y := f_loopback.o f_sourcesink.o | ||
| 41 | obj-$(CONFIG_USB_F_SS_LB) += f_ss_lb.o | ||
| 42 | obj-$(CONFIG_USB_U_SERIAL) += u_serial.o | ||
| 43 | |||
| 38 | # | 44 | # |
| 39 | # USB gadget drivers | 45 | # USB gadget drivers |
| 40 | # | 46 | # |
| @@ -74,9 +80,3 @@ obj-$(CONFIG_USB_G_WEBCAM) += g_webcam.o | |||
| 74 | obj-$(CONFIG_USB_G_NCM) += g_ncm.o | 80 | obj-$(CONFIG_USB_G_NCM) += g_ncm.o |
| 75 | obj-$(CONFIG_USB_G_ACM_MS) += g_acm_ms.o | 81 | obj-$(CONFIG_USB_G_ACM_MS) += g_acm_ms.o |
| 76 | obj-$(CONFIG_USB_GADGET_TARGET) += tcm_usb_gadget.o | 82 | obj-$(CONFIG_USB_GADGET_TARGET) += tcm_usb_gadget.o |
| 77 | |||
| 78 | # USB Functions | ||
| 79 | obj-$(CONFIG_USB_F_ACM) += f_acm.o | ||
| 80 | f_ss_lb-y := f_loopback.o f_sourcesink.o | ||
| 81 | obj-$(CONFIG_USB_F_SS_LB) += f_ss_lb.o | ||
| 82 | obj-$(CONFIG_USB_U_SERIAL) += u_serial.o | ||
diff --git a/drivers/usb/gadget/f_uac1.c b/drivers/usb/gadget/f_uac1.c index f570e667a640..fa8ea4ea00c1 100644 --- a/drivers/usb/gadget/f_uac1.c +++ b/drivers/usb/gadget/f_uac1.c | |||
| @@ -418,6 +418,7 @@ static int audio_get_intf_req(struct usb_function *f, | |||
| 418 | 418 | ||
| 419 | req->context = audio; | 419 | req->context = audio; |
| 420 | req->complete = f_audio_complete; | 420 | req->complete = f_audio_complete; |
| 421 | len = min_t(size_t, sizeof(value), len); | ||
| 421 | memcpy(req->buf, &value, len); | 422 | memcpy(req->buf, &value, len); |
| 422 | 423 | ||
| 423 | return len; | 424 | return len; |
diff --git a/drivers/usb/gadget/imx_udc.c b/drivers/usb/gadget/imx_udc.c index 8efd7555fa21..5bd930d779b9 100644 --- a/drivers/usb/gadget/imx_udc.c +++ b/drivers/usb/gadget/imx_udc.c | |||
| @@ -1334,27 +1334,18 @@ static int imx_udc_start(struct usb_gadget *gadget, | |||
| 1334 | struct usb_gadget_driver *driver) | 1334 | struct usb_gadget_driver *driver) |
| 1335 | { | 1335 | { |
| 1336 | struct imx_udc_struct *imx_usb; | 1336 | struct imx_udc_struct *imx_usb; |
| 1337 | int retval; | ||
| 1338 | 1337 | ||
| 1339 | imx_usb = container_of(gadget, struct imx_udc_struct, gadget); | 1338 | imx_usb = container_of(gadget, struct imx_udc_struct, gadget); |
| 1340 | /* first hook up the driver ... */ | 1339 | /* first hook up the driver ... */ |
| 1341 | imx_usb->driver = driver; | 1340 | imx_usb->driver = driver; |
| 1342 | imx_usb->gadget.dev.driver = &driver->driver; | 1341 | imx_usb->gadget.dev.driver = &driver->driver; |
| 1343 | 1342 | ||
| 1344 | retval = device_add(&imx_usb->gadget.dev); | ||
| 1345 | if (retval) | ||
| 1346 | goto fail; | ||
| 1347 | |||
| 1348 | D_INI(imx_usb->dev, "<%s> registered gadget driver '%s'\n", | 1343 | D_INI(imx_usb->dev, "<%s> registered gadget driver '%s'\n", |
| 1349 | __func__, driver->driver.name); | 1344 | __func__, driver->driver.name); |
| 1350 | 1345 | ||
| 1351 | imx_udc_enable(imx_usb); | 1346 | imx_udc_enable(imx_usb); |
| 1352 | 1347 | ||
| 1353 | return 0; | 1348 | return 0; |
| 1354 | fail: | ||
| 1355 | imx_usb->driver = NULL; | ||
| 1356 | imx_usb->gadget.dev.driver = NULL; | ||
| 1357 | return retval; | ||
| 1358 | } | 1349 | } |
| 1359 | 1350 | ||
| 1360 | static int imx_udc_stop(struct usb_gadget *gadget, | 1351 | static int imx_udc_stop(struct usb_gadget *gadget, |
| @@ -1370,8 +1361,6 @@ static int imx_udc_stop(struct usb_gadget *gadget, | |||
| 1370 | imx_usb->gadget.dev.driver = NULL; | 1361 | imx_usb->gadget.dev.driver = NULL; |
| 1371 | imx_usb->driver = NULL; | 1362 | imx_usb->driver = NULL; |
| 1372 | 1363 | ||
| 1373 | device_del(&imx_usb->gadget.dev); | ||
| 1374 | |||
| 1375 | D_INI(imx_usb->dev, "<%s> unregistered gadget driver '%s'\n", | 1364 | D_INI(imx_usb->dev, "<%s> unregistered gadget driver '%s'\n", |
| 1376 | __func__, driver->driver.name); | 1365 | __func__, driver->driver.name); |
| 1377 | 1366 | ||
| @@ -1477,6 +1466,10 @@ static int __init imx_udc_probe(struct platform_device *pdev) | |||
| 1477 | imx_usb->gadget.dev.parent = &pdev->dev; | 1466 | imx_usb->gadget.dev.parent = &pdev->dev; |
| 1478 | imx_usb->gadget.dev.dma_mask = pdev->dev.dma_mask; | 1467 | imx_usb->gadget.dev.dma_mask = pdev->dev.dma_mask; |
| 1479 | 1468 | ||
| 1469 | ret = device_add(&imx_usb->gadget.dev); | ||
| 1470 | if (retval) | ||
| 1471 | goto fail4; | ||
| 1472 | |||
| 1480 | platform_set_drvdata(pdev, imx_usb); | 1473 | platform_set_drvdata(pdev, imx_usb); |
| 1481 | 1474 | ||
| 1482 | usb_init_data(imx_usb); | 1475 | usb_init_data(imx_usb); |
| @@ -1488,9 +1481,11 @@ static int __init imx_udc_probe(struct platform_device *pdev) | |||
| 1488 | 1481 | ||
| 1489 | ret = usb_add_gadget_udc(&pdev->dev, &imx_usb->gadget); | 1482 | ret = usb_add_gadget_udc(&pdev->dev, &imx_usb->gadget); |
| 1490 | if (ret) | 1483 | if (ret) |
| 1491 | goto fail4; | 1484 | goto fail5; |
| 1492 | 1485 | ||
| 1493 | return 0; | 1486 | return 0; |
| 1487 | fail5: | ||
| 1488 | device_unregister(&imx_usb->gadget.dev); | ||
| 1494 | fail4: | 1489 | fail4: |
| 1495 | for (i = 0; i < IMX_USB_NB_EP + 1; i++) | 1490 | for (i = 0; i < IMX_USB_NB_EP + 1; i++) |
| 1496 | free_irq(imx_usb->usbd_int[i], imx_usb); | 1491 | free_irq(imx_usb->usbd_int[i], imx_usb); |
| @@ -1514,6 +1509,7 @@ static int __exit imx_udc_remove(struct platform_device *pdev) | |||
| 1514 | int i; | 1509 | int i; |
| 1515 | 1510 | ||
| 1516 | usb_del_gadget_udc(&imx_usb->gadget); | 1511 | usb_del_gadget_udc(&imx_usb->gadget); |
| 1512 | device_unregister(&imx_usb->gadget.dev); | ||
| 1517 | imx_udc_disable(imx_usb); | 1513 | imx_udc_disable(imx_usb); |
| 1518 | del_timer(&imx_usb->timer); | 1514 | del_timer(&imx_usb->timer); |
| 1519 | 1515 | ||
diff --git a/drivers/usb/gadget/pxa25x_udc.c b/drivers/usb/gadget/pxa25x_udc.c index 2bbcdce942dc..9aa9dd5168d8 100644 --- a/drivers/usb/gadget/pxa25x_udc.c +++ b/drivers/usb/gadget/pxa25x_udc.c | |||
| @@ -1266,13 +1266,6 @@ static int pxa25x_udc_start(struct usb_gadget *g, | |||
| 1266 | dev->gadget.dev.driver = &driver->driver; | 1266 | dev->gadget.dev.driver = &driver->driver; |
| 1267 | dev->pullup = 1; | 1267 | dev->pullup = 1; |
| 1268 | 1268 | ||
| 1269 | retval = device_add (&dev->gadget.dev); | ||
| 1270 | if (retval) { | ||
| 1271 | dev->driver = NULL; | ||
| 1272 | dev->gadget.dev.driver = NULL; | ||
| 1273 | return retval; | ||
| 1274 | } | ||
| 1275 | |||
| 1276 | /* ... then enable host detection and ep0; and we're ready | 1269 | /* ... then enable host detection and ep0; and we're ready |
| 1277 | * for set_configuration as well as eventual disconnect. | 1270 | * for set_configuration as well as eventual disconnect. |
| 1278 | */ | 1271 | */ |
| @@ -1331,7 +1324,6 @@ static int pxa25x_udc_stop(struct usb_gadget*g, | |||
| 1331 | dev->gadget.dev.driver = NULL; | 1324 | dev->gadget.dev.driver = NULL; |
| 1332 | dev->driver = NULL; | 1325 | dev->driver = NULL; |
| 1333 | 1326 | ||
| 1334 | device_del (&dev->gadget.dev); | ||
| 1335 | dump_state(dev); | 1327 | dump_state(dev); |
| 1336 | 1328 | ||
| 1337 | return 0; | 1329 | return 0; |
| @@ -2146,6 +2138,13 @@ static int __init pxa25x_udc_probe(struct platform_device *pdev) | |||
| 2146 | dev->gadget.dev.parent = &pdev->dev; | 2138 | dev->gadget.dev.parent = &pdev->dev; |
| 2147 | dev->gadget.dev.dma_mask = pdev->dev.dma_mask; | 2139 | dev->gadget.dev.dma_mask = pdev->dev.dma_mask; |
| 2148 | 2140 | ||
| 2141 | retval = device_add(&dev->gadget.dev); | ||
| 2142 | if (retval) { | ||
| 2143 | dev->driver = NULL; | ||
| 2144 | dev->gadget.dev.driver = NULL; | ||
| 2145 | goto err_device_add; | ||
| 2146 | } | ||
| 2147 | |||
| 2149 | the_controller = dev; | 2148 | the_controller = dev; |
| 2150 | platform_set_drvdata(pdev, dev); | 2149 | platform_set_drvdata(pdev, dev); |
| 2151 | 2150 | ||
| @@ -2196,6 +2195,8 @@ lubbock_fail0: | |||
| 2196 | free_irq(irq, dev); | 2195 | free_irq(irq, dev); |
| 2197 | #endif | 2196 | #endif |
| 2198 | err_irq1: | 2197 | err_irq1: |
| 2198 | device_unregister(&dev->gadget.dev); | ||
| 2199 | err_device_add: | ||
| 2199 | if (gpio_is_valid(dev->mach->gpio_pullup)) | 2200 | if (gpio_is_valid(dev->mach->gpio_pullup)) |
| 2200 | gpio_free(dev->mach->gpio_pullup); | 2201 | gpio_free(dev->mach->gpio_pullup); |
| 2201 | err_gpio_pullup: | 2202 | err_gpio_pullup: |
| @@ -2217,10 +2218,11 @@ static int __exit pxa25x_udc_remove(struct platform_device *pdev) | |||
| 2217 | { | 2218 | { |
| 2218 | struct pxa25x_udc *dev = platform_get_drvdata(pdev); | 2219 | struct pxa25x_udc *dev = platform_get_drvdata(pdev); |
| 2219 | 2220 | ||
| 2220 | usb_del_gadget_udc(&dev->gadget); | ||
| 2221 | if (dev->driver) | 2221 | if (dev->driver) |
| 2222 | return -EBUSY; | 2222 | return -EBUSY; |
| 2223 | 2223 | ||
| 2224 | usb_del_gadget_udc(&dev->gadget); | ||
| 2225 | device_unregister(&dev->gadget.dev); | ||
| 2224 | dev->pullup = 0; | 2226 | dev->pullup = 0; |
| 2225 | pullup(dev); | 2227 | pullup(dev); |
| 2226 | 2228 | ||
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); |
diff --git a/drivers/usb/gadget/s3c2410_udc.c b/drivers/usb/gadget/s3c2410_udc.c index fc07b4381286..08f89652533b 100644 --- a/drivers/usb/gadget/s3c2410_udc.c +++ b/drivers/usb/gadget/s3c2410_udc.c | |||
| @@ -1668,8 +1668,7 @@ static void s3c2410_udc_enable(struct s3c2410_udc *dev) | |||
| 1668 | static int s3c2410_udc_start(struct usb_gadget *g, | 1668 | static int s3c2410_udc_start(struct usb_gadget *g, |
| 1669 | struct usb_gadget_driver *driver) | 1669 | struct usb_gadget_driver *driver) |
| 1670 | { | 1670 | { |
| 1671 | struct s3c2410_udc *udc = to_s3c2410(g) | 1671 | struct s3c2410_udc *udc = to_s3c2410(g); |
| 1672 | int retval; | ||
| 1673 | 1672 | ||
| 1674 | dprintk(DEBUG_NORMAL, "%s() '%s'\n", __func__, driver->driver.name); | 1673 | dprintk(DEBUG_NORMAL, "%s() '%s'\n", __func__, driver->driver.name); |
| 1675 | 1674 | ||
| @@ -1677,22 +1676,10 @@ static int s3c2410_udc_start(struct usb_gadget *g, | |||
| 1677 | udc->driver = driver; | 1676 | udc->driver = driver; |
| 1678 | udc->gadget.dev.driver = &driver->driver; | 1677 | udc->gadget.dev.driver = &driver->driver; |
| 1679 | 1678 | ||
| 1680 | /* Bind the driver */ | ||
| 1681 | retval = device_add(&udc->gadget.dev); | ||
| 1682 | if (retval) { | ||
| 1683 | dev_err(&udc->gadget.dev, "Error in device_add() : %d\n", retval); | ||
| 1684 | goto register_error; | ||
| 1685 | } | ||
| 1686 | |||
| 1687 | /* Enable udc */ | 1679 | /* Enable udc */ |
| 1688 | s3c2410_udc_enable(udc); | 1680 | s3c2410_udc_enable(udc); |
| 1689 | 1681 | ||
| 1690 | return 0; | 1682 | return 0; |
| 1691 | |||
| 1692 | register_error: | ||
| 1693 | udc->driver = NULL; | ||
| 1694 | udc->gadget.dev.driver = NULL; | ||
| 1695 | return retval; | ||
| 1696 | } | 1683 | } |
| 1697 | 1684 | ||
| 1698 | static int s3c2410_udc_stop(struct usb_gadget *g, | 1685 | static int s3c2410_udc_stop(struct usb_gadget *g, |
| @@ -1700,7 +1687,6 @@ static int s3c2410_udc_stop(struct usb_gadget *g, | |||
| 1700 | { | 1687 | { |
| 1701 | struct s3c2410_udc *udc = to_s3c2410(g); | 1688 | struct s3c2410_udc *udc = to_s3c2410(g); |
| 1702 | 1689 | ||
| 1703 | device_del(&udc->gadget.dev); | ||
| 1704 | udc->driver = NULL; | 1690 | udc->driver = NULL; |
| 1705 | 1691 | ||
| 1706 | /* Disable udc */ | 1692 | /* Disable udc */ |
| @@ -1842,6 +1828,13 @@ static int s3c2410_udc_probe(struct platform_device *pdev) | |||
| 1842 | udc->gadget.dev.parent = &pdev->dev; | 1828 | udc->gadget.dev.parent = &pdev->dev; |
| 1843 | udc->gadget.dev.dma_mask = pdev->dev.dma_mask; | 1829 | udc->gadget.dev.dma_mask = pdev->dev.dma_mask; |
| 1844 | 1830 | ||
| 1831 | /* Bind the driver */ | ||
| 1832 | retval = device_add(&udc->gadget.dev); | ||
| 1833 | if (retval) { | ||
| 1834 | dev_err(&udc->gadget.dev, "Error in device_add() : %d\n", retval); | ||
| 1835 | goto err_device_add; | ||
| 1836 | } | ||
| 1837 | |||
| 1845 | the_controller = udc; | 1838 | the_controller = udc; |
| 1846 | platform_set_drvdata(pdev, udc); | 1839 | platform_set_drvdata(pdev, udc); |
| 1847 | 1840 | ||
| @@ -1930,6 +1923,8 @@ err_gpio_claim: | |||
| 1930 | err_int: | 1923 | err_int: |
| 1931 | free_irq(IRQ_USBD, udc); | 1924 | free_irq(IRQ_USBD, udc); |
| 1932 | err_map: | 1925 | err_map: |
| 1926 | device_unregister(&udc->gadget.dev); | ||
| 1927 | err_device_add: | ||
| 1933 | iounmap(base_addr); | 1928 | iounmap(base_addr); |
| 1934 | err_mem: | 1929 | err_mem: |
| 1935 | release_mem_region(rsrc_start, rsrc_len); | 1930 | release_mem_region(rsrc_start, rsrc_len); |
| @@ -1947,10 +1942,11 @@ static int s3c2410_udc_remove(struct platform_device *pdev) | |||
| 1947 | 1942 | ||
| 1948 | dev_dbg(&pdev->dev, "%s()\n", __func__); | 1943 | dev_dbg(&pdev->dev, "%s()\n", __func__); |
| 1949 | 1944 | ||
| 1950 | usb_del_gadget_udc(&udc->gadget); | ||
| 1951 | if (udc->driver) | 1945 | if (udc->driver) |
| 1952 | return -EBUSY; | 1946 | return -EBUSY; |
| 1953 | 1947 | ||
| 1948 | usb_del_gadget_udc(&udc->gadget); | ||
| 1949 | device_unregister(&udc->gadget.dev); | ||
| 1954 | debugfs_remove(udc->regs_info); | 1950 | debugfs_remove(udc->regs_info); |
| 1955 | 1951 | ||
| 1956 | if (udc_info && !udc_info->udc_command && | 1952 | if (udc_info && !udc_info->udc_command && |
diff --git a/drivers/usb/gadget/u_uac1.c b/drivers/usb/gadget/u_uac1.c index e0c5e88e03ed..c7d460f43390 100644 --- a/drivers/usb/gadget/u_uac1.c +++ b/drivers/usb/gadget/u_uac1.c | |||
| @@ -240,8 +240,11 @@ static int gaudio_open_snd_dev(struct gaudio *card) | |||
| 240 | snd = &card->playback; | 240 | snd = &card->playback; |
| 241 | snd->filp = filp_open(fn_play, O_WRONLY, 0); | 241 | snd->filp = filp_open(fn_play, O_WRONLY, 0); |
| 242 | if (IS_ERR(snd->filp)) { | 242 | if (IS_ERR(snd->filp)) { |
| 243 | int ret = PTR_ERR(snd->filp); | ||
| 244 | |||
| 243 | ERROR(card, "No such PCM playback device: %s\n", fn_play); | 245 | ERROR(card, "No such PCM playback device: %s\n", fn_play); |
| 244 | snd->filp = NULL; | 246 | snd->filp = NULL; |
| 247 | return ret; | ||
| 245 | } | 248 | } |
| 246 | pcm_file = snd->filp->private_data; | 249 | pcm_file = snd->filp->private_data; |
| 247 | snd->substream = pcm_file->substream; | 250 | snd->substream = pcm_file->substream; |
diff --git a/drivers/usb/musb/Kconfig b/drivers/usb/musb/Kconfig index 45b19e2c60ba..2f7d84af6650 100644 --- a/drivers/usb/musb/Kconfig +++ b/drivers/usb/musb/Kconfig | |||
| @@ -9,8 +9,6 @@ config USB_MUSB_HDRC | |||
| 9 | depends on USB && USB_GADGET | 9 | depends on USB && USB_GADGET |
| 10 | select NOP_USB_XCEIV if (ARCH_DAVINCI || MACH_OMAP3EVM || BLACKFIN) | 10 | select NOP_USB_XCEIV if (ARCH_DAVINCI || MACH_OMAP3EVM || BLACKFIN) |
| 11 | select NOP_USB_XCEIV if (SOC_TI81XX || SOC_AM33XX) | 11 | select NOP_USB_XCEIV if (SOC_TI81XX || SOC_AM33XX) |
| 12 | select TWL4030_USB if MACH_OMAP_3430SDP | ||
| 13 | select TWL6030_USB if MACH_OMAP_4430SDP || MACH_OMAP4_PANDA | ||
| 14 | select OMAP_CONTROL_USB if MACH_OMAP_4430SDP || MACH_OMAP4_PANDA | 12 | select OMAP_CONTROL_USB if MACH_OMAP_4430SDP || MACH_OMAP4_PANDA |
| 15 | select USB_OTG_UTILS | 13 | select USB_OTG_UTILS |
| 16 | help | 14 | help |
| @@ -51,6 +49,8 @@ config USB_MUSB_TUSB6010 | |||
| 51 | config USB_MUSB_OMAP2PLUS | 49 | config USB_MUSB_OMAP2PLUS |
| 52 | tristate "OMAP2430 and onwards" | 50 | tristate "OMAP2430 and onwards" |
| 53 | depends on ARCH_OMAP2PLUS | 51 | depends on ARCH_OMAP2PLUS |
| 52 | select TWL4030_USB if MACH_OMAP_3430SDP | ||
| 53 | select TWL6030_USB if MACH_OMAP_4430SDP || MACH_OMAP4_PANDA | ||
| 54 | 54 | ||
| 55 | config USB_MUSB_AM35X | 55 | config USB_MUSB_AM35X |
| 56 | tristate "AM35x" | 56 | tristate "AM35x" |
diff --git a/drivers/usb/otg/otg.c b/drivers/usb/otg/otg.c index e1814397ca3a..2bd03d261a50 100644 --- a/drivers/usb/otg/otg.c +++ b/drivers/usb/otg/otg.c | |||
| @@ -130,7 +130,7 @@ struct usb_phy *usb_get_phy(enum usb_phy_type type) | |||
| 130 | spin_lock_irqsave(&phy_lock, flags); | 130 | spin_lock_irqsave(&phy_lock, flags); |
| 131 | 131 | ||
| 132 | phy = __usb_find_phy(&phy_list, type); | 132 | phy = __usb_find_phy(&phy_list, type); |
| 133 | if (IS_ERR(phy)) { | 133 | if (IS_ERR(phy) || !try_module_get(phy->dev->driver->owner)) { |
| 134 | pr_err("unable to find transceiver of type %s\n", | 134 | pr_err("unable to find transceiver of type %s\n", |
| 135 | usb_phy_type_string(type)); | 135 | usb_phy_type_string(type)); |
| 136 | goto err0; | 136 | goto err0; |
| @@ -228,7 +228,7 @@ struct usb_phy *usb_get_phy_dev(struct device *dev, u8 index) | |||
| 228 | spin_lock_irqsave(&phy_lock, flags); | 228 | spin_lock_irqsave(&phy_lock, flags); |
| 229 | 229 | ||
| 230 | phy = __usb_find_phy_dev(dev, &phy_bind_list, index); | 230 | phy = __usb_find_phy_dev(dev, &phy_bind_list, index); |
| 231 | if (IS_ERR(phy)) { | 231 | if (IS_ERR(phy) || !try_module_get(phy->dev->driver->owner)) { |
| 232 | pr_err("unable to find transceiver\n"); | 232 | pr_err("unable to find transceiver\n"); |
| 233 | goto err0; | 233 | goto err0; |
| 234 | } | 234 | } |
| @@ -301,8 +301,12 @@ EXPORT_SYMBOL(devm_usb_put_phy); | |||
| 301 | */ | 301 | */ |
| 302 | void usb_put_phy(struct usb_phy *x) | 302 | void usb_put_phy(struct usb_phy *x) |
| 303 | { | 303 | { |
| 304 | if (x) | 304 | if (x) { |
| 305 | struct module *owner = x->dev->driver->owner; | ||
| 306 | |||
| 305 | put_device(x->dev); | 307 | put_device(x->dev); |
| 308 | module_put(owner); | ||
| 309 | } | ||
| 306 | } | 310 | } |
| 307 | EXPORT_SYMBOL(usb_put_phy); | 311 | EXPORT_SYMBOL(usb_put_phy); |
| 308 | 312 | ||
diff --git a/drivers/usb/phy/omap-control-usb.c b/drivers/usb/phy/omap-control-usb.c index 5323b71c3521..1419ceda9759 100644 --- a/drivers/usb/phy/omap-control-usb.c +++ b/drivers/usb/phy/omap-control-usb.c | |||
| @@ -219,32 +219,26 @@ static int omap_control_usb_probe(struct platform_device *pdev) | |||
| 219 | 219 | ||
| 220 | res = platform_get_resource_byname(pdev, IORESOURCE_MEM, | 220 | res = platform_get_resource_byname(pdev, IORESOURCE_MEM, |
| 221 | "control_dev_conf"); | 221 | "control_dev_conf"); |
| 222 | control_usb->dev_conf = devm_request_and_ioremap(&pdev->dev, res); | 222 | control_usb->dev_conf = devm_ioremap_resource(&pdev->dev, res); |
| 223 | if (!control_usb->dev_conf) { | 223 | if (IS_ERR(control_usb->dev_conf)) |
| 224 | dev_err(&pdev->dev, "Failed to obtain io memory\n"); | 224 | return PTR_ERR(control_usb->dev_conf); |
| 225 | return -EADDRNOTAVAIL; | ||
| 226 | } | ||
| 227 | 225 | ||
| 228 | if (control_usb->type == OMAP_CTRL_DEV_TYPE1) { | 226 | if (control_usb->type == OMAP_CTRL_DEV_TYPE1) { |
| 229 | res = platform_get_resource_byname(pdev, IORESOURCE_MEM, | 227 | res = platform_get_resource_byname(pdev, IORESOURCE_MEM, |
| 230 | "otghs_control"); | 228 | "otghs_control"); |
| 231 | control_usb->otghs_control = devm_request_and_ioremap( | 229 | control_usb->otghs_control = devm_ioremap_resource( |
| 232 | &pdev->dev, res); | 230 | &pdev->dev, res); |
| 233 | if (!control_usb->otghs_control) { | 231 | if (IS_ERR(control_usb->otghs_control)) |
| 234 | dev_err(&pdev->dev, "Failed to obtain io memory\n"); | 232 | return PTR_ERR(control_usb->otghs_control); |
| 235 | return -EADDRNOTAVAIL; | ||
| 236 | } | ||
| 237 | } | 233 | } |
| 238 | 234 | ||
| 239 | if (control_usb->type == OMAP_CTRL_DEV_TYPE2) { | 235 | if (control_usb->type == OMAP_CTRL_DEV_TYPE2) { |
| 240 | res = platform_get_resource_byname(pdev, IORESOURCE_MEM, | 236 | res = platform_get_resource_byname(pdev, IORESOURCE_MEM, |
| 241 | "phy_power_usb"); | 237 | "phy_power_usb"); |
| 242 | control_usb->phy_power = devm_request_and_ioremap( | 238 | control_usb->phy_power = devm_ioremap_resource( |
| 243 | &pdev->dev, res); | 239 | &pdev->dev, res); |
| 244 | if (!control_usb->phy_power) { | 240 | if (IS_ERR(control_usb->phy_power)) |
| 245 | dev_dbg(&pdev->dev, "Failed to obtain io memory\n"); | 241 | return PTR_ERR(control_usb->phy_power); |
| 246 | return -EADDRNOTAVAIL; | ||
| 247 | } | ||
| 248 | 242 | ||
| 249 | control_usb->sys_clk = devm_clk_get(control_usb->dev, | 243 | control_usb->sys_clk = devm_clk_get(control_usb->dev, |
| 250 | "sys_clkin"); | 244 | "sys_clkin"); |
diff --git a/drivers/usb/phy/omap-usb3.c b/drivers/usb/phy/omap-usb3.c index fadc0c2b65bb..a6e60b1e102e 100644 --- a/drivers/usb/phy/omap-usb3.c +++ b/drivers/usb/phy/omap-usb3.c | |||
| @@ -212,11 +212,9 @@ static int omap_usb3_probe(struct platform_device *pdev) | |||
| 212 | } | 212 | } |
| 213 | 213 | ||
| 214 | res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "pll_ctrl"); | 214 | res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "pll_ctrl"); |
| 215 | phy->pll_ctrl_base = devm_request_and_ioremap(&pdev->dev, res); | 215 | phy->pll_ctrl_base = devm_ioremap_resource(&pdev->dev, res); |
| 216 | if (!phy->pll_ctrl_base) { | 216 | if (IS_ERR(phy->pll_ctrl_base)) |
| 217 | dev_err(&pdev->dev, "ioremap of pll_ctrl failed\n"); | 217 | return PTR_ERR(phy->pll_ctrl_base); |
| 218 | return -ENOMEM; | ||
| 219 | } | ||
| 220 | 218 | ||
| 221 | phy->dev = &pdev->dev; | 219 | phy->dev = &pdev->dev; |
| 222 | 220 | ||
diff --git a/drivers/usb/phy/samsung-usbphy.c b/drivers/usb/phy/samsung-usbphy.c index 6ea553733832..967101ec15fd 100644 --- a/drivers/usb/phy/samsung-usbphy.c +++ b/drivers/usb/phy/samsung-usbphy.c | |||
| @@ -787,11 +787,9 @@ static int samsung_usbphy_probe(struct platform_device *pdev) | |||
| 787 | return -ENODEV; | 787 | return -ENODEV; |
| 788 | } | 788 | } |
| 789 | 789 | ||
| 790 | phy_base = devm_request_and_ioremap(dev, phy_mem); | 790 | phy_base = devm_ioremap_resource(dev, phy_mem); |
| 791 | if (!phy_base) { | 791 | if (IS_ERR(phy_base)) |
| 792 | dev_err(dev, "%s: register mapping failed\n", __func__); | 792 | return PTR_ERR(phy_base); |
| 793 | return -ENXIO; | ||
| 794 | } | ||
| 795 | 793 | ||
| 796 | sphy = devm_kzalloc(dev, sizeof(*sphy), GFP_KERNEL); | 794 | sphy = devm_kzalloc(dev, sizeof(*sphy), GFP_KERNEL); |
| 797 | if (!sphy) | 795 | if (!sphy) |
