diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/usb/gadget/arcotg_udc.c | 9 |
1 files changed, 2 insertions, 7 deletions
diff --git a/drivers/usb/gadget/arcotg_udc.c b/drivers/usb/gadget/arcotg_udc.c index a6bae6c738d3..68c2e1b9c1cc 100644 --- a/drivers/usb/gadget/arcotg_udc.c +++ b/drivers/usb/gadget/arcotg_udc.c @@ -802,13 +802,6 @@ static int fsl_ep_disable(struct usb_ep *_ep) return -EINVAL; } - spin_lock_irqsave(&udc->lock, flags); - udc = (struct fsl_udc *)ep->udc; - if (!udc->driver || (udc->gadget.speed == USB_SPEED_UNKNOWN)) { - spin_unlock_irqrestore(&udc->lock, flags); - return -ESHUTDOWN; - } - /* disable ep on controller */ ep_num = ep_index(ep); epctrl = fsl_readl(&dr_regs->endptctrl[ep_num]); @@ -818,6 +811,8 @@ static int fsl_ep_disable(struct usb_ep *_ep) epctrl &= ~EPCTRL_RX_ENABLE; fsl_writel(epctrl, &dr_regs->endptctrl[ep_num]); + udc = (struct fsl_udc *)ep->udc; + spin_lock_irqsave(&udc->lock, flags); /* nuke all pending requests (does flush) */ nuke(ep, -ESHUTDOWN); |