Hi, Jun Li writes: >> @@ -397,12 +407,18 @@ int dwc3_send_gadget_ep_cmd(struct dwc3_ep *dep, unsigned cmd, >> dwc3_gadget_ep_get_transfer_index(dep); >> } >> >> - if (saved_config) { >> + if (saved_hs_config) { >> reg = dwc3_readl(dwc->regs, DWC3_GUSB2PHYCFG(0)); >> - reg |= saved_config; >> + reg |= saved_hs_config; >> dwc3_writel(dwc->regs, DWC3_GUSB2PHYCFG(0), reg); >> } >> >> + if (saved_ss_config) { >> + reg = dwc3_readl(dwc->regs, DWC3_GUSB3PIPECTL(0)); >> + reg |= saved_ss_config; >> + dwc3_writel(dwc->regs, DWC3_GUSB3PIPECTL(0), reg); >> + } >> + >> return ret; >> } > > Unfortunately this way can't work, once the SS PHY enters P3, disable > suspend_en can't force SS PHY exit P3, unless do this at the very beginning > to prevent SS PHY entering P3(e.g. add "snps,dis_u3_susphy_quirk" for test). It sounds like you have a quirky PHY. If that's the case, then you probably need to use the flag you mentioned above. Please verify with that. -- balbi