From mboxrd@z Thu Jan 1 00:00:00 1970 From: Marek Vasut Date: Mon, 29 Apr 2019 11:56:56 +0200 Subject: [U-Boot] [PATCH v1 05/18] usb: dwc3: switch to peripheral mode when exiting In-Reply-To: <20190405125554.18070-6-jjhiblot@ti.com> References: <20190405125554.18070-1-jjhiblot@ti.com> <20190405125554.18070-6-jjhiblot@ti.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 4/5/19 2:55 PM, Jean-Jacques Hiblot wrote: > This allow the phy to enter idle and then suspend. > the K2 platforms require the PHY to be suspended before the USB domain > clock can be turned off. > > Signed-off-by: Jean-Jacques Hiblot > --- > > drivers/usb/dwc3/core.c | 13 +++++++++++++ > 1 file changed, 13 insertions(+) > > diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c > index 56e2a046bf..ae01490306 100644 > --- a/drivers/usb/dwc3/core.c > +++ b/drivers/usb/dwc3/core.c > @@ -581,6 +581,12 @@ static int dwc3_core_init_mode(struct dwc3 *dwc) > return 0; > } > > +static void dwc3_gadget_run(struct dwc3 *dwc) > +{ > + dwc3_writel(dwc->regs, DWC3_DCTL, DWC3_DCTL_RUN_STOP); > + mdelay(100); That's long, is this really needed ? > +} > + > static void dwc3_core_exit_mode(struct dwc3 *dwc) > { > switch (dwc->dr_mode) { > @@ -598,6 +604,13 @@ static void dwc3_core_exit_mode(struct dwc3 *dwc) > /* do nothing */ > break; > } > + > + /* > + * switch back to peripheral mode > + * This enables the phy to enter idle and then, if enabled, suspend. > + */ > + dwc3_set_mode(dwc, DWC3_GCTL_PRTCAP_DEVICE); > + dwc3_gadget_run(dwc); > } > > #define DWC3_ALIGN_MASK (16 - 1) > -- Best regards, Marek Vasut