[PATCH] usb: dwc2: fix reset logic in dwc2_core_reset
Patrice CHOTARD
patrice.chotard at foss.st.com
Mon Aug 18 09:11:56 CEST 2025
On 7/23/25 17:09, Patrick Delaunay wrote:
> Use GUSBCFG_FORCEHOSTMODE to detected the HOST forced mode as it is done
> in the Linux driver drivers/usb/dwc2/core.c:dwc2_core_reset().
>
> The host polling must be executed only if the current mode is host,
> either due to the force HOST mode (which persists after core reset)
> or the connector id pin.
>
> The GUSBCFG_FORCEDEVMODE bits is used to force the device mode (for
> example used on STM32MP1x platform) and when it is activated the DWC2 reset
> failed with the trace:
> "dwc2_core_reset: Waiting for GINTSTS_CURMODE_HOST timeout"
>
> Fixes: c5d685b8993c ("usb: dwc2: Unify flush and reset logic with v4.20a support")
> Signed-off-by: Patrick Delaunay <patrick.delaunay at foss.st.com>
> ---
>
> drivers/usb/common/dwc2_core.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/usb/common/dwc2_core.c b/drivers/usb/common/dwc2_core.c
> index 63062d5cc943..37007134e5b3 100644
> --- a/drivers/usb/common/dwc2_core.c
> +++ b/drivers/usb/common/dwc2_core.c
> @@ -17,7 +17,7 @@ int dwc2_core_reset(struct dwc2_core_regs *regs)
> bool host_mode = false;
>
> if (!(readl(®s->global_regs.gotgctl) & GOTGCTL_CONID_B) ||
> - (readl(®s->global_regs.gusbcfg) & GUSBCFG_FORCEDEVMODE))
> + (readl(®s->global_regs.gusbcfg) & GUSBCFG_FORCEHOSTMODE))
> host_mode = true;
>
> /* Core Soft Reset */
Hi
tested on stm32mp157c-dk2
Tested-by: Patrice Chotard <patrice.chotard at foss.st.com>
Thanks
Patrice
More information about the U-Boot
mailing list