usb: dwc2: gadget: On USB RESET reset device address to zero
authorMinas Harutyunyan <Minas.Harutyunyan@synopsys.com>
Tue, 11 Jul 2017 10:25:13 +0000 (14:25 +0400)
committerFelipe Balbi <felipe.balbi@linux.intel.com>
Tue, 18 Jul 2017 05:57:36 +0000 (08:57 +0300)
Reseted DEVADDR field in DCFG to zero on USB RESET.

Device address in DCFG register does not reset to zero,
which required to pass enumeration, after disconnect and
reconnect.

Acked-by: John Youn <johnyoun@synopsys.com>
Signed-off-by: Minas Harutyunyan <hminas@synopsys.com>
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
drivers/usb/dwc2/gadget.c

index bc3b3fda5000d94813d51bade73eac5f2a2b0b70..c4066cd77e47345bc1f31791ba9955c80a12d452 100644 (file)
@@ -3573,6 +3573,9 @@ irq_retry:
                /* Report disconnection if it is not already done. */
                dwc2_hsotg_disconnect(hsotg);
 
+               /* Reset device address to zero */
+               __bic32(hsotg->regs + DCFG, DCFG_DEVADDR_MASK);
+
                if (usb_status & GOTGCTL_BSESVLD && connected)
                        dwc2_hsotg_core_init_disconnected(hsotg, true);
        }