usb:ci_udc: Introduce init_after_reset phy function
authorRamon Fried <ramon.fried@gmail.com>
Fri, 21 Sep 2018 10:35:52 +0000 (13:35 +0300)
committerTom Rini <trini@konsulko.com>
Sun, 30 Sep 2018 17:00:36 +0000 (13:00 -0400)
MSM variant of Chipidea must reinitalize the phy
after controller reset.
Introduce ci_init_after_reset() weak function that
can be used to achieve the above init.

Signed-off-by: Ramon Fried <ramon.fried@gmail.com>
drivers/usb/gadget/ci_udc.c

index 2b9dbf06b991d527965a91e0694cc18c805725fc..8d23fab3b79a2101884d2133476d56ac2b085865 100644 (file)
@@ -104,6 +104,10 @@ static struct usb_ep_ops ci_ep_ops = {
        .free_request   = ci_ep_free_request,
 };
 
+__weak void ci_init_after_reset(struct ehci_ctrl *ctrl)
+{
+}
+
 /* Init values for USB endpoints. */
 static const struct usb_ep ci_ep_init[5] = {
        [0] = { /* EP 0 */
@@ -887,6 +891,8 @@ static int ci_pullup(struct usb_gadget *gadget, int is_on)
                writel(USBCMD_ITC(MICRO_8FRAME) | USBCMD_RST, &udc->usbcmd);
                udelay(200);
 
+               ci_init_after_reset(controller.ctrl);
+
                writel((unsigned long)controller.epts, &udc->epinitaddr);
 
                /* select DEVICE mode */