aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMinas Harutyunyan <[email protected]>2017-07-11 14:25:13 +0400
committerFelipe Balbi <[email protected]>2017-07-18 08:57:36 +0300
commit307bc11fcdf9f911a1adacf9e77fe1c490041ee3 (patch)
tree74e7b4b25e9f019832576b3c13e019af431cfdb8
parent4a71fcb8ac5f94c07bf47a43b13258a52e4fe3ad (diff)
usb: dwc2: gadget: On USB RESET reset device address to zero
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 <[email protected]> Signed-off-by: Minas Harutyunyan <[email protected]> Signed-off-by: Felipe Balbi <[email protected]>
-rw-r--r--drivers/usb/dwc2/gadget.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/usb/dwc2/gadget.c b/drivers/usb/dwc2/gadget.c
index bc3b3fda5000..c4066cd77e47 100644
--- a/drivers/usb/dwc2/gadget.c
+++ b/drivers/usb/dwc2/gadget.c
@@ -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);
}