diff mbox series

[U-Boot,v2,10/14] usb:ci_udc: Introduce init_after_reset phy function

Message ID 20180921103555.16240-11-ramon.fried@gmail.com
State Accepted
Delegated to: Tom Rini
Headers show
Series Introduce fastboot support for dragonboard410c | expand

Commit Message

Ramon Fried Sept. 21, 2018, 10:35 a.m. UTC
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>
---

Changes in v2: None

 drivers/usb/gadget/ci_udc.c | 6 ++++++
 1 file changed, 6 insertions(+)

Comments

Tom Rini Sept. 30, 2018, 7:26 p.m. UTC | #1
On Fri, Sep 21, 2018 at 01:35:52PM +0300, Ramon Fried wrote:

> 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>

Applied to u-boot/master, thanks!
Lukasz Majewski Oct. 1, 2018, 12:49 p.m. UTC | #2
Hi Ramon,

> 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>
> ---
> 
> Changes in v2: None
> 
>  drivers/usb/gadget/ci_udc.c | 6 ++++++
>  1 file changed, 6 insertions(+)
> 
> diff --git a/drivers/usb/gadget/ci_udc.c b/drivers/usb/gadget/ci_udc.c
> index 2b9dbf06b9..8d23fab3b7 100644
> --- a/drivers/usb/gadget/ci_udc.c
> +++ b/drivers/usb/gadget/ci_udc.c
> @@ -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 */

Reviewed-by: Lukasz Majewski <lukma@denx.de>


Best regards,

Lukasz Majewski

--

DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd@denx.de
diff mbox series

Patch

diff --git a/drivers/usb/gadget/ci_udc.c b/drivers/usb/gadget/ci_udc.c
index 2b9dbf06b9..8d23fab3b7 100644
--- a/drivers/usb/gadget/ci_udc.c
+++ b/drivers/usb/gadget/ci_udc.c
@@ -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 */