Skip to content

Commit

Permalink
usb: gadget: s3c-hsudc: move device registration to probe
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Heiko Stübner authored and Felipe Balbi committed Dec 21, 2011
1 parent e9bcb9e commit 103495a
Showing 1 changed file with 8 additions and 9 deletions.
17 changes: 8 additions & 9 deletions drivers/usb/gadget/s3c-hsudc.c
Original file line number Diff line number Diff line change
Expand Up @@ -1156,11 +1156,6 @@ static int s3c_hsudc_start(struct usb_gadget_driver *driver,
hsudc->driver = driver;
hsudc->gadget.dev.driver = &driver->driver;
hsudc->gadget.speed = USB_SPEED_UNKNOWN;
ret = device_add(&hsudc->gadget.dev);
if (ret) {
dev_err(hsudc->dev, "failed to probe gadget device");
return ret;
}

ret = bind(&hsudc->gadget);
if (ret) {
Expand All @@ -1180,8 +1175,6 @@ static int s3c_hsudc_start(struct usb_gadget_driver *driver,
hsudc->gadget.name);
driver->unbind(&hsudc->gadget);

device_del(&hsudc->gadget.dev);

hsudc->driver = NULL;
hsudc->gadget.dev.driver = NULL;
return ret;
Expand Down Expand Up @@ -1222,7 +1215,6 @@ static int s3c_hsudc_stop(struct usb_gadget_driver *driver)
(void) otg_set_peripheral(hsudc->transceiver, NULL);

driver->unbind(&hsudc->gadget);
device_del(&hsudc->gadget.dev);
disable_irq(hsudc->irq);

dev_info(hsudc->dev, "unregistered gadget driver '%s'\n",
Expand Down Expand Up @@ -1307,7 +1299,6 @@ static int __devinit s3c_hsudc_probe(struct platform_device *pdev)

spin_lock_init(&hsudc->lock);

device_initialize(&hsudc->gadget.dev);
dev_set_name(&hsudc->gadget.dev, "gadget");

hsudc->gadget.max_speed = USB_SPEED_HIGH;
Expand Down Expand Up @@ -1348,12 +1339,20 @@ static int __devinit s3c_hsudc_probe(struct platform_device *pdev)
disable_irq(hsudc->irq);
local_irq_enable();

ret = device_register(&hsudc->gadget.dev);
if (ret) {
put_device(&hsudc->gadget.dev);
goto err_add_device;
}

ret = usb_add_gadget_udc(&pdev->dev, &hsudc->gadget);
if (ret)
goto err_add_udc;

return 0;
err_add_udc:
device_unregister(&hsudc->gadget.dev);
err_add_device:
clk_disable(hsudc->uclk);
clk_put(hsudc->uclk);
err_clk:
Expand Down

0 comments on commit 103495a

Please sign in to comment.