Am 10.03.2020 um 11:09 schrieb Patrick Delaunay: > 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 <[email protected]>
Reviewed-by: Simon Goldschmidt <[email protected]> > --- > > Changes in v6: None > Changes in v5: None > Changes in v4: None > Changes in v3: None > Changes in v2: > - add clk_disable_bulk in dwc2_usb_remove > > drivers/usb/host/dwc2.c | 2 ++ > 1 file changed, 2 insertions(+) > > 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); >

