2015-05-27 02:32:37

by Dinh Nguyen

[permalink] [raw]
Subject: [PATCH] usb: dwc2: fix unnecessary USB overcurrent condition

From: Dinh Nguyen <[email protected]>

For platforms that use a ULPI phy, we should enable the external VbusValid
signal instead.

Signed-off-by: Dinh Nguyen <[email protected]>
Cc: Gregory Herrero <[email protected]>
Cc: Mian Yousaf Kaukab <[email protected]>
Cc: Felipe Balbi <[email protected]>
---
drivers/usb/dwc2/core.c | 5 +++++
1 file changed, 5 insertions(+)

diff --git a/drivers/usb/dwc2/core.c b/drivers/usb/dwc2/core.c
index e5b546f..08ffdc6 100644
--- a/drivers/usb/dwc2/core.c
+++ b/drivers/usb/dwc2/core.c
@@ -807,6 +807,11 @@ int dwc2_core_init(struct dwc2_hsotg *hsotg, bool select_phy, int irq)
if (hsotg->core_params->ts_dline > 0)
usbcfg |= GUSBCFG_TERMSELDLPULSE;

+ /* Set external VBUS indicator as needed. */
+ if (hsotg->core_params->phy_type == DWC2_PHY_TYPE_PARAM_ULPI)
+ usbcfg |= (GUSBCFG_ULPI_INT_VBUS_IND |
+ GUSBCFG_INDICATORPASSTHROUGH);
+
writel(usbcfg, hsotg->regs + GUSBCFG);

/* Reset the Controller */
--
2.2.1


2015-06-10 02:12:33

by John Youn

[permalink] [raw]
Subject: Re: [PATCH] usb: dwc2: fix unnecessary USB overcurrent condition

Hi Dinh,

Responding again to the proper message to add linux-usb. And also
added more comments.

On 5/26/2015 7:32 PM, [email protected] wrote:
> From: Dinh Nguyen <[email protected]>
>
> For platforms that use a ULPI phy, we should enable the external VbusValid
> signal instead.

I don't think it should be for all ULPI phys. Though I'm not that
familiar with ULPI.

>
> Signed-off-by: Dinh Nguyen <[email protected]>
> Cc: Gregory Herrero <[email protected]>
> Cc: Mian Yousaf Kaukab <[email protected]>
> Cc: Felipe Balbi <[email protected]>
> ---
> drivers/usb/dwc2/core.c | 5 +++++
> 1 file changed, 5 insertions(+)
>
> diff --git a/drivers/usb/dwc2/core.c b/drivers/usb/dwc2/core.c
> index e5b546f..08ffdc6 100644
> --- a/drivers/usb/dwc2/core.c
> +++ b/drivers/usb/dwc2/core.c
> @@ -807,6 +807,11 @@ int dwc2_core_init(struct dwc2_hsotg *hsotg, bool select_phy, int irq)
> if (hsotg->core_params->ts_dline > 0)
> usbcfg |= GUSBCFG_TERMSELDLPULSE;
>
> + /* Set external VBUS indicator as needed. */
> + if (hsotg->core_params->phy_type == DWC2_PHY_TYPE_PARAM_ULPI)
> + usbcfg |= (GUSBCFG_ULPI_INT_VBUS_IND |
> + GUSBCFG_INDICATORPASSTHROUGH);
> +

I think these should all be conditional on using the external
vbus, and probably also on the features themselves since it will
depend on the PHY and platform how you want to set these bits.

John