aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb/dwc3
diff options
context:
space:
mode:
authorFelipe Balbi <balbi@ti.com>2014-11-06 01:27:53 -0500
committerFelipe Balbi <balbi@ti.com>2014-11-10 18:19:34 -0500
commit8e74475b0e0ac2fd3634f3c1b9a109fb1d6269f7 (patch)
treefa867ac1952492503f54f6d8ed9dde64a35fedcf /drivers/usb/dwc3
parent6876d58f2f0548ce130b388c323eed17dc5d8689 (diff)
usb: dwc3: gadget: use udc-core's reset notifier
Replace usb_gadget_driver's disconnect with udc-core's reset notifier at bus reset handler. Signed-off-by: Felipe Balbi <balbi@ti.com> Signed-off-by: Peter Chen <peter.chen@freescale.com> Signed-off-by: Felipe Balbi <balbi@ti.com>
Diffstat (limited to 'drivers/usb/dwc3')
-rw-r--r--drivers/usb/dwc3/gadget.c17
1 files changed, 12 insertions, 5 deletions
diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c
index 398c12f5efe3..f03b136ecfce 100644
--- a/drivers/usb/dwc3/gadget.c
+++ b/drivers/usb/dwc3/gadget.c
@@ -2041,6 +2041,17 @@ static void dwc3_resume_gadget(struct dwc3 *dwc)
2041 if (dwc->gadget_driver && dwc->gadget_driver->resume) { 2041 if (dwc->gadget_driver && dwc->gadget_driver->resume) {
2042 spin_unlock(&dwc->lock); 2042 spin_unlock(&dwc->lock);
2043 dwc->gadget_driver->resume(&dwc->gadget); 2043 dwc->gadget_driver->resume(&dwc->gadget);
2044 }
2045}
2046
2047static void dwc3_reset_gadget(struct dwc3 *dwc)
2048{
2049 if (!dwc->gadget_driver)
2050 return;
2051
2052 if (dwc->gadget.speed != USB_SPEED_UNKNOWN) {
2053 spin_unlock(&dwc->lock);
2054 usb_gadget_udc_reset(&dwc->gadget, dwc->gadget_driver);
2044 spin_lock(&dwc->lock); 2055 spin_lock(&dwc->lock);
2045 } 2056 }
2046} 2057}
@@ -2185,11 +2196,7 @@ static void dwc3_gadget_reset_interrupt(struct dwc3 *dwc)
2185 dwc3_gadget_disconnect_interrupt(dwc); 2196 dwc3_gadget_disconnect_interrupt(dwc);
2186 } 2197 }
2187 2198
2188 /* after reset -> Default State */ 2199 dwc3_reset_gadget(dwc);
2189 usb_gadget_set_state(&dwc->gadget, USB_STATE_DEFAULT);
2190
2191 if (dwc->gadget.speed != USB_SPEED_UNKNOWN)
2192 dwc3_disconnect_gadget(dwc);
2193 2200
2194 reg = dwc3_readl(dwc->regs, DWC3_DCTL); 2201 reg = dwc3_readl(dwc->regs, DWC3_DCTL);
2195 reg &= ~DWC3_DCTL_TSTCTRL_MASK; 2202 reg &= ~DWC3_DCTL_TSTCTRL_MASK;