From mboxrd@z Thu Jan 1 00:00:00 1970 From: Marek Vasut Date: Wed, 15 Aug 2018 12:13:58 +0200 Subject: [U-Boot] [PATCH] usb: dwc2: Add reset ctrl to driver In-Reply-To: <1534356079-2986-2-git-send-email-ley.foon.tan@intel.com> References: <1534356079-2986-1-git-send-email-ley.foon.tan@intel.com> <1534356079-2986-2-git-send-email-ley.foon.tan@intel.com> Message-ID: List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de On 08/15/2018 08:01 PM, Ley Foon Tan wrote: > Add code to reset all reset signals as in usb DT node. A reset property > is an optional feature, so only print out a warning and do not fail if a > reset property is not present. > > If a reset property is discovered, then use it to deassert, thus > bringing the IP out of reset. > > Signed-off-by: Ley Foon Tan > --- > drivers/usb/host/dwc2.c | 17 +++++++++++++++++ > 1 file changed, 17 insertions(+) > > diff --git a/drivers/usb/host/dwc2.c b/drivers/usb/host/dwc2.c > index cbe065b..b77e0c6 100644 > --- a/drivers/usb/host/dwc2.c > +++ b/drivers/usb/host/dwc2.c > @@ -15,6 +15,7 @@ > #include > #include > #include > +#include > > #include "dwc2.h" > > @@ -1124,12 +1125,28 @@ int _submit_int_msg(struct dwc2_priv *priv, struct usb_device *dev, > } > } > > +static void dwc2_reset(struct udevice *dev) > +{ > + struct reset_ctl_bulk reset_bulk; > + int ret; > + > + ret = reset_get_bulk(dev, &reset_bulk); > + if (ret) { > + dev_warn(dev, "Can't get reset: %d\n", ret); > + return; > + } > + > + reset_deassert_bulk(&reset_bulk); > +} > + > static int dwc2_init_common(struct udevice *dev, struct dwc2_priv *priv) > { > struct dwc2_core_regs *regs = priv->regs; > uint32_t snpsid; > int i, j; > > + dwc2_reset(dev); > + > snpsid = readl(®s->gsnpsid); > dev_info(dev, "Core Release: %x.%03x\n", > snpsid >> 12 & 0xf, snpsid & 0xfff); > .remove() should assert the reset again. -- Best regards, Marek Vasut