|
@@ -1444,6 +1444,7 @@ static int r8a66597_start(struct usb_gadget_driver *driver,
|
|
|
goto error;
|
|
|
}
|
|
|
|
|
|
+ init_controller(r8a66597);
|
|
|
r8a66597_bset(r8a66597, VBSE, INTENB0);
|
|
|
if (r8a66597_read(r8a66597, INTSTS0) & VBSTS) {
|
|
|
r8a66597_start_xclock(r8a66597);
|
|
@@ -1474,15 +1475,12 @@ static int r8a66597_stop(struct usb_gadget_driver *driver)
|
|
|
spin_lock_irqsave(&r8a66597->lock, flags);
|
|
|
if (r8a66597->gadget.speed != USB_SPEED_UNKNOWN)
|
|
|
r8a66597_usb_disconnect(r8a66597);
|
|
|
- spin_unlock_irqrestore(&r8a66597->lock, flags);
|
|
|
-
|
|
|
r8a66597_bclr(r8a66597, VBSE, INTENB0);
|
|
|
+ disable_controller(r8a66597);
|
|
|
+ spin_unlock_irqrestore(&r8a66597->lock, flags);
|
|
|
|
|
|
driver->unbind(&r8a66597->gadget);
|
|
|
|
|
|
- init_controller(r8a66597);
|
|
|
- disable_controller(r8a66597);
|
|
|
-
|
|
|
device_del(&r8a66597->gadget.dev);
|
|
|
r8a66597->driver = NULL;
|
|
|
return 0;
|
|
@@ -1646,8 +1644,6 @@ static int __init r8a66597_probe(struct platform_device *pdev)
|
|
|
goto clean_up3;
|
|
|
r8a66597->ep0_req->complete = nop_completion;
|
|
|
|
|
|
- init_controller(r8a66597);
|
|
|
-
|
|
|
ret = usb_add_gadget_udc(&pdev->dev, &r8a66597->gadget);
|
|
|
if (ret)
|
|
|
goto err_add_udc;
|