usb: gadget: r8a66597-udc: fix cannot connect after rmmod gadget driver
When we run rmmod a gadget driver, the driver will call disable_controller(). Then, because the bit of USBE in SYSCFG0 was cleared in on_chip=1 mode, we could not connect the usb when we run insmod a gadget driver next time. This patch also cleans up probe() and ->stop() about unnecessary init_controller(). Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com> Signed-off-by: Felipe Balbi <balbi@ti.com>
This commit is contained in:
parent
5db05c09ac
commit
deafeb24e8
1 changed files with 3 additions and 7 deletions
|
@ -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);
|
||||
r8a66597_bclr(r8a66597, VBSE, INTENB0);
|
||||
disable_controller(r8a66597);
|
||||
spin_unlock_irqrestore(&r8a66597->lock, flags);
|
||||
|
||||
r8a66597_bclr(r8a66597, VBSE, INTENB0);
|
||||
|
||||
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;
|
||||
|
|
Loading…
Reference in a new issue