diff options
author | Heiko Stübner <heiko@sntech.de> | 2011-12-19 13:41:05 -0500 |
---|---|---|
committer | Felipe Balbi <balbi@ti.com> | 2011-12-21 06:24:39 -0500 |
commit | 103495aaf0e7674f6d7995982b48118188c247eb (patch) | |
tree | 2df5b113c7598b294685a2910a22327014993751 /drivers/usb/gadget/s3c-hsudc.c | |
parent | e9bcb9e5feb0f5d1ccf155b6ca9e1b8f7147f0d6 (diff) |
usb: gadget: s3c-hsudc: move device registration to probe
Instead of adding and deleting the gadget device in the start and stop
invocations. Use device_register in the probe method to initialize
and add the gadget device.
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
Signed-off-by: Felipe Balbi <balbi@ti.com>
Diffstat (limited to 'drivers/usb/gadget/s3c-hsudc.c')
-rw-r--r-- | drivers/usb/gadget/s3c-hsudc.c | 17 |
1 files changed, 8 insertions, 9 deletions
diff --git a/drivers/usb/gadget/s3c-hsudc.c b/drivers/usb/gadget/s3c-hsudc.c index a6a789a05091..fd181329f451 100644 --- a/drivers/usb/gadget/s3c-hsudc.c +++ b/drivers/usb/gadget/s3c-hsudc.c | |||
@@ -1156,11 +1156,6 @@ static int s3c_hsudc_start(struct usb_gadget_driver *driver, | |||
1156 | hsudc->driver = driver; | 1156 | hsudc->driver = driver; |
1157 | hsudc->gadget.dev.driver = &driver->driver; | 1157 | hsudc->gadget.dev.driver = &driver->driver; |
1158 | hsudc->gadget.speed = USB_SPEED_UNKNOWN; | 1158 | hsudc->gadget.speed = USB_SPEED_UNKNOWN; |
1159 | ret = device_add(&hsudc->gadget.dev); | ||
1160 | if (ret) { | ||
1161 | dev_err(hsudc->dev, "failed to probe gadget device"); | ||
1162 | return ret; | ||
1163 | } | ||
1164 | 1159 | ||
1165 | ret = bind(&hsudc->gadget); | 1160 | ret = bind(&hsudc->gadget); |
1166 | if (ret) { | 1161 | if (ret) { |
@@ -1180,8 +1175,6 @@ static int s3c_hsudc_start(struct usb_gadget_driver *driver, | |||
1180 | hsudc->gadget.name); | 1175 | hsudc->gadget.name); |
1181 | driver->unbind(&hsudc->gadget); | 1176 | driver->unbind(&hsudc->gadget); |
1182 | 1177 | ||
1183 | device_del(&hsudc->gadget.dev); | ||
1184 | |||
1185 | hsudc->driver = NULL; | 1178 | hsudc->driver = NULL; |
1186 | hsudc->gadget.dev.driver = NULL; | 1179 | hsudc->gadget.dev.driver = NULL; |
1187 | return ret; | 1180 | return ret; |
@@ -1222,7 +1215,6 @@ static int s3c_hsudc_stop(struct usb_gadget_driver *driver) | |||
1222 | (void) otg_set_peripheral(hsudc->transceiver, NULL); | 1215 | (void) otg_set_peripheral(hsudc->transceiver, NULL); |
1223 | 1216 | ||
1224 | driver->unbind(&hsudc->gadget); | 1217 | driver->unbind(&hsudc->gadget); |
1225 | device_del(&hsudc->gadget.dev); | ||
1226 | disable_irq(hsudc->irq); | 1218 | disable_irq(hsudc->irq); |
1227 | 1219 | ||
1228 | dev_info(hsudc->dev, "unregistered gadget driver '%s'\n", | 1220 | dev_info(hsudc->dev, "unregistered gadget driver '%s'\n", |
@@ -1307,7 +1299,6 @@ static int __devinit s3c_hsudc_probe(struct platform_device *pdev) | |||
1307 | 1299 | ||
1308 | spin_lock_init(&hsudc->lock); | 1300 | spin_lock_init(&hsudc->lock); |
1309 | 1301 | ||
1310 | device_initialize(&hsudc->gadget.dev); | ||
1311 | dev_set_name(&hsudc->gadget.dev, "gadget"); | 1302 | dev_set_name(&hsudc->gadget.dev, "gadget"); |
1312 | 1303 | ||
1313 | hsudc->gadget.max_speed = USB_SPEED_HIGH; | 1304 | hsudc->gadget.max_speed = USB_SPEED_HIGH; |
@@ -1348,12 +1339,20 @@ static int __devinit s3c_hsudc_probe(struct platform_device *pdev) | |||
1348 | disable_irq(hsudc->irq); | 1339 | disable_irq(hsudc->irq); |
1349 | local_irq_enable(); | 1340 | local_irq_enable(); |
1350 | 1341 | ||
1342 | ret = device_register(&hsudc->gadget.dev); | ||
1343 | if (ret) { | ||
1344 | put_device(&hsudc->gadget.dev); | ||
1345 | goto err_add_device; | ||
1346 | } | ||
1347 | |||
1351 | ret = usb_add_gadget_udc(&pdev->dev, &hsudc->gadget); | 1348 | ret = usb_add_gadget_udc(&pdev->dev, &hsudc->gadget); |
1352 | if (ret) | 1349 | if (ret) |
1353 | goto err_add_udc; | 1350 | goto err_add_udc; |
1354 | 1351 | ||
1355 | return 0; | 1352 | return 0; |
1356 | err_add_udc: | 1353 | err_add_udc: |
1354 | device_unregister(&hsudc->gadget.dev); | ||
1355 | err_add_device: | ||
1357 | clk_disable(hsudc->uclk); | 1356 | clk_disable(hsudc->uclk); |
1358 | clk_put(hsudc->uclk); | 1357 | clk_put(hsudc->uclk); |
1359 | err_clk: | 1358 | err_clk: |