diff options
author | Felipe Balbi <felipe.balbi@linux.intel.com> | 2016-05-16 14:17:06 +0300 |
---|---|---|
committer | Felipe Balbi <felipe.balbi@linux.intel.com> | 2016-06-20 12:32:36 +0300 |
commit | 3f308d17d7abbf35a6d40a7f16dc70cf43f12c98 (patch) | |
tree | e0adf15e086dad8087599d272ecf1ea7baf8107e /drivers/usb/dwc3/gadget.c | |
parent | 51f5d49ad6f011ee380b866ea617fd90584189a2 (diff) | |
download | lwn-3f308d17d7abbf35a6d40a7f16dc70cf43f12c98.tar.gz lwn-3f308d17d7abbf35a6d40a7f16dc70cf43f12c98.zip |
usb: dwc3: gadget: hold gadget IRQ in dwc->irq_gadget
by holding gadget's IRQ number in dwc->irq_gadget,
it'll be simpler to free_irq() and disable the IRQ
in case an IRQ fires while we are runtime suspended.
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Diffstat (limited to 'drivers/usb/dwc3/gadget.c')
-rw-r--r-- | drivers/usb/dwc3/gadget.c | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c index 7ba4287f5c71..378c14c45fcb 100644 --- a/drivers/usb/dwc3/gadget.c +++ b/drivers/usb/dwc3/gadget.c @@ -1751,6 +1751,7 @@ static int dwc3_gadget_start(struct usb_gadget *g, irq, ret); goto err0; } + dwc->irq_gadget = irq; spin_lock_irqsave(&dwc->lock, flags); if (dwc->gadget_driver) { @@ -1787,15 +1788,13 @@ static int dwc3_gadget_stop(struct usb_gadget *g) { struct dwc3 *dwc = gadget_to_dwc(g); unsigned long flags; - int irq; spin_lock_irqsave(&dwc->lock, flags); __dwc3_gadget_stop(dwc); dwc->gadget_driver = NULL; spin_unlock_irqrestore(&dwc->lock, flags); - irq = platform_get_irq(to_platform_device(dwc->dev), 0); - free_irq(irq, dwc->ev_buf); + free_irq(dwc->irq_gadget, dwc->ev_buf); return 0; } |