From: Patrick Delaunay Date: Mon, 27 Apr 2020 13:30:00 +0000 (+0200) Subject: usb: host: dwc2: force reset assert X-Git-Tag: v2020.07-rc1~3^2~2 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=66004381661386d14183a436c5e0caeb19f4b415;p=oweals%2Fu-boot.git usb: host: dwc2: force reset assert Assert reset before deassert in dwc2_reset; this patch solve issues when the DWC2 registers are already initialized with value incompatible with host mode. Force a hardware reset of the IP reset all the DWC2 registers at default value, the host driver start with a clean state (Core Soft reset doen in dwc_otg_core_reset is not enought to reset all register). The error can occurs in U-Boot when DWC2 device gadget driver force device mode (called by ums or dfu command, before to execute the usb start command). Signed-off-by: Patrick Delaunay --- diff --git a/drivers/usb/host/dwc2.c b/drivers/usb/host/dwc2.c index b1b79d0a18..640ae3e730 100644 --- a/drivers/usb/host/dwc2.c +++ b/drivers/usb/host/dwc2.c @@ -1151,6 +1151,8 @@ static int dwc2_reset(struct udevice *dev) return ret; } + /* force reset to clear all IP register */ + reset_assert_bulk(&priv->resets); ret = reset_deassert_bulk(&priv->resets); if (ret) { reset_release_bulk(&priv->resets);