diff options
author | David S. Miller <davem@davemloft.net> | 2013-03-20 12:46:26 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2013-03-20 12:46:26 -0400 |
commit | 61816596d1c9026d0ecb20c44f90452c41596ffe (patch) | |
tree | 3027ed6dc62f71e14b9d525405747fa0eb8f074d /drivers/usb/gadget/pxa25x_udc.c | |
parent | 23a9072e3af0d9538e25837fb2b56bb94e4a8e67 (diff) | |
parent | da2191e31409d1058dcbed44e8f53e39a40e86b3 (diff) |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Pull in the 'net' tree to get Daniel Borkmann's flow dissector
infrastructure change.
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/usb/gadget/pxa25x_udc.c')
-rw-r--r-- | drivers/usb/gadget/pxa25x_udc.c | 24 |
1 files changed, 15 insertions, 9 deletions
diff --git a/drivers/usb/gadget/pxa25x_udc.c b/drivers/usb/gadget/pxa25x_udc.c index 2bbcdce942dc..d0f37484b6b0 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 | */ |
@@ -1310,6 +1303,10 @@ stop_activity(struct pxa25x_udc *dev, struct usb_gadget_driver *driver) | |||
1310 | } | 1303 | } |
1311 | del_timer_sync(&dev->timer); | 1304 | del_timer_sync(&dev->timer); |
1312 | 1305 | ||
1306 | /* report disconnect; the driver is already quiesced */ | ||
1307 | if (driver) | ||
1308 | driver->disconnect(&dev->gadget); | ||
1309 | |||
1313 | /* re-init driver-visible data structures */ | 1310 | /* re-init driver-visible data structures */ |
1314 | udc_reinit(dev); | 1311 | udc_reinit(dev); |
1315 | } | 1312 | } |
@@ -1331,7 +1328,6 @@ static int pxa25x_udc_stop(struct usb_gadget*g, | |||
1331 | dev->gadget.dev.driver = NULL; | 1328 | dev->gadget.dev.driver = NULL; |
1332 | dev->driver = NULL; | 1329 | dev->driver = NULL; |
1333 | 1330 | ||
1334 | device_del (&dev->gadget.dev); | ||
1335 | dump_state(dev); | 1331 | dump_state(dev); |
1336 | 1332 | ||
1337 | return 0; | 1333 | return 0; |
@@ -2146,6 +2142,13 @@ static int __init pxa25x_udc_probe(struct platform_device *pdev) | |||
2146 | dev->gadget.dev.parent = &pdev->dev; | 2142 | dev->gadget.dev.parent = &pdev->dev; |
2147 | dev->gadget.dev.dma_mask = pdev->dev.dma_mask; | 2143 | dev->gadget.dev.dma_mask = pdev->dev.dma_mask; |
2148 | 2144 | ||
2145 | retval = device_add(&dev->gadget.dev); | ||
2146 | if (retval) { | ||
2147 | dev->driver = NULL; | ||
2148 | dev->gadget.dev.driver = NULL; | ||
2149 | goto err_device_add; | ||
2150 | } | ||
2151 | |||
2149 | the_controller = dev; | 2152 | the_controller = dev; |
2150 | platform_set_drvdata(pdev, dev); | 2153 | platform_set_drvdata(pdev, dev); |
2151 | 2154 | ||
@@ -2196,6 +2199,8 @@ lubbock_fail0: | |||
2196 | free_irq(irq, dev); | 2199 | free_irq(irq, dev); |
2197 | #endif | 2200 | #endif |
2198 | err_irq1: | 2201 | err_irq1: |
2202 | device_unregister(&dev->gadget.dev); | ||
2203 | err_device_add: | ||
2199 | if (gpio_is_valid(dev->mach->gpio_pullup)) | 2204 | if (gpio_is_valid(dev->mach->gpio_pullup)) |
2200 | gpio_free(dev->mach->gpio_pullup); | 2205 | gpio_free(dev->mach->gpio_pullup); |
2201 | err_gpio_pullup: | 2206 | err_gpio_pullup: |
@@ -2217,10 +2222,11 @@ static int __exit pxa25x_udc_remove(struct platform_device *pdev) | |||
2217 | { | 2222 | { |
2218 | struct pxa25x_udc *dev = platform_get_drvdata(pdev); | 2223 | struct pxa25x_udc *dev = platform_get_drvdata(pdev); |
2219 | 2224 | ||
2220 | usb_del_gadget_udc(&dev->gadget); | ||
2221 | if (dev->driver) | 2225 | if (dev->driver) |
2222 | return -EBUSY; | 2226 | return -EBUSY; |
2223 | 2227 | ||
2228 | usb_del_gadget_udc(&dev->gadget); | ||
2229 | device_unregister(&dev->gadget.dev); | ||
2224 | dev->pullup = 0; | 2230 | dev->pullup = 0; |
2225 | pullup(dev); | 2231 | pullup(dev); |
2226 | 2232 | ||