mirror of https://gitee.com/openkylin/linux.git
usb: gadget: pxa25x_udc: 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: Peter Chen <peter.chen@freescale.com> Signed-off-by: Felipe Balbi <balbi@ti.com>
This commit is contained in:
parent
afbe47758a
commit
90834d3ecb
|
@ -1283,6 +1283,33 @@ static int pxa25x_udc_start(struct usb_gadget *g,
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
reset_gadget(struct pxa25x_udc *dev, struct usb_gadget_driver *driver)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
|
/* don't disconnect drivers more than once */
|
||||||
|
if (dev->gadget.speed == USB_SPEED_UNKNOWN)
|
||||||
|
driver = NULL;
|
||||||
|
dev->gadget.speed = USB_SPEED_UNKNOWN;
|
||||||
|
|
||||||
|
/* prevent new request submissions, kill any outstanding requests */
|
||||||
|
for (i = 0; i < PXA_UDC_NUM_ENDPOINTS; i++) {
|
||||||
|
struct pxa25x_ep *ep = &dev->ep[i];
|
||||||
|
|
||||||
|
ep->stopped = 1;
|
||||||
|
nuke(ep, -ESHUTDOWN);
|
||||||
|
}
|
||||||
|
del_timer_sync(&dev->timer);
|
||||||
|
|
||||||
|
/* report reset; the driver is already quiesced */
|
||||||
|
if (driver)
|
||||||
|
usb_gadget_udc_reset(&dev->gadget, driver);
|
||||||
|
|
||||||
|
/* re-init driver-visible data structures */
|
||||||
|
udc_reinit(dev);
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
stop_activity(struct pxa25x_udc *dev, struct usb_gadget_driver *driver)
|
stop_activity(struct pxa25x_udc *dev, struct usb_gadget_driver *driver)
|
||||||
{
|
{
|
||||||
|
@ -1721,7 +1748,7 @@ pxa25x_udc_irq(int irq, void *_dev)
|
||||||
/* reset driver and endpoints,
|
/* reset driver and endpoints,
|
||||||
* in case that's not yet done
|
* in case that's not yet done
|
||||||
*/
|
*/
|
||||||
stop_activity (dev, dev->driver);
|
reset_gadget(dev, dev->driver);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
DBG(DBG_VERBOSE, "USB reset end\n");
|
DBG(DBG_VERBOSE, "USB reset end\n");
|
||||||
|
|
Loading…
Reference in New Issue