aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb/gadget/s3c-hsudc.c
diff options
context:
space:
mode:
authorHeiko Stübner <heiko@sntech.de>2011-12-19 13:41:05 -0500
committerFelipe Balbi <balbi@ti.com>2011-12-21 06:24:39 -0500
commit103495aaf0e7674f6d7995982b48118188c247eb (patch)
tree2df5b113c7598b294685a2910a22327014993751 /drivers/usb/gadget/s3c-hsudc.c
parente9bcb9e5feb0f5d1ccf155b6ca9e1b8f7147f0d6 (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.c17
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;
1356err_add_udc: 1353err_add_udc:
1354 device_unregister(&hsudc->gadget.dev);
1355err_add_device:
1357 clk_disable(hsudc->uclk); 1356 clk_disable(hsudc->uclk);
1358 clk_put(hsudc->uclk); 1357 clk_put(hsudc->uclk);
1359err_clk: 1358err_clk: