diff options
author | Patrick Delaunay <patrick.delaunay@st.com> | 2020-04-27 15:30:00 +0200 |
---|---|---|
committer | Marek Vasut <marek.vasut+renesas@gmail.com> | 2020-04-28 13:52:52 +0200 |
commit | 66004381661386d14183a436c5e0caeb19f4b415 (patch) | |
tree | 0e5440e4188c05a9ef1eee9f7b26a5e0d2044b7b | |
parent | 0bc632c9b189f0350b2ef81d6583704bd10cfdc9 (diff) |
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 <patrick.delaunay@st.com>
-rw-r--r-- | drivers/usb/host/dwc2.c | 2 |
1 files changed, 2 insertions, 0 deletions
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); |