Hi Felipe, On 12/12/2018 3:43 PM, Minas Harutyunyan wrote: > Initially resetting device address was done in USB RESET interrupt > handler. In case, when power saving mode enabled (hibernation) USB > RESET interrupt handled in dwc2_handle_gpwrdn_intr() and then it > not seen in dwc2_hsotg_irq() handler. This is why reset device > address to zero moved from USB RESET handler to EnumDone handler. > > Signed-off-by: Minas Harutyunyan <hminas@xxxxxxxxxxxx> > --- > drivers/usb/dwc2/gadget.c | 6 +++--- > 1 file changed, 3 insertions(+), 3 deletions(-) > > diff --git a/drivers/usb/dwc2/gadget.c b/drivers/usb/dwc2/gadget.c > index 68ad75a7460d..7f922f19f8e1 100644 > --- a/drivers/usb/dwc2/gadget.c > +++ b/drivers/usb/dwc2/gadget.c > @@ -3072,6 +3072,9 @@ static void dwc2_hsotg_irq_enumdone(struct dwc2_hsotg *hsotg) > > dev_dbg(hsotg->dev, "EnumDone (DSTS=0x%08x)\n", dsts); > > + /* Reset device address to zero */ > + dwc2_clear_bit(hsotg, DCFG, DCFG_DEVADDR_MASK); > + > /* > * note, since we're limited by the size of transfer on EP0, and > * it seems IN transfers must be a even number of packets we do > @@ -3614,9 +3617,6 @@ static irqreturn_t dwc2_hsotg_irq(int irq, void *pw) > /* Report disconnection if it is not already done. */ > dwc2_hsotg_disconnect(hsotg); > > - /* Reset device address to zero */ > - dwc2_clear_bit(hsotg, DCFG, DCFG_DEVADDR_MASK); > - > if (usb_status & GOTGCTL_BSESVLD && connected) > dwc2_hsotg_core_init_disconnected(hsotg, true); > } > This patch not seen yet in your testing/fixes or next. Any reason for delay or you missed it? Thanks, Minas