diff options
author | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2021-12-20 09:58:10 +0100 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2021-12-20 09:58:10 +0100 |
commit | 236c9ad1f87088bb07ebdd136b8432f83dfd1e14 (patch) | |
tree | ae8713c9878593521f2cb517891f123f178fdd83 /drivers/usb/cdns3/cdnsp-gadget.c | |
parent | f2b42379c57682d4b127283da109fa1a3317966a (diff) | |
parent | a7904a538933c525096ca2ccde1e60d0ee62c08e (diff) | |
download | linux-236c9ad1f87088bb07ebdd136b8432f83dfd1e14.tar.bz2 |
Merge 5.16-rc6 into usb-next
We need the USB fixes in here as well.
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/usb/cdns3/cdnsp-gadget.c')
-rw-r--r-- | drivers/usb/cdns3/cdnsp-gadget.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/drivers/usb/cdns3/cdnsp-gadget.c b/drivers/usb/cdns3/cdnsp-gadget.c index 05439e61ffc9..5c9d07cc5410 100644 --- a/drivers/usb/cdns3/cdnsp-gadget.c +++ b/drivers/usb/cdns3/cdnsp-gadget.c @@ -1541,15 +1541,27 @@ static int cdnsp_gadget_pullup(struct usb_gadget *gadget, int is_on) { struct cdnsp_device *pdev = gadget_to_cdnsp(gadget); struct cdns *cdns = dev_get_drvdata(pdev->dev); + unsigned long flags; trace_cdnsp_pullup(is_on); + /* + * Disable events handling while controller is being + * enabled/disabled. + */ + disable_irq(cdns->dev_irq); + spin_lock_irqsave(&pdev->lock, flags); + if (!is_on) { cdnsp_reset_device(pdev); cdns_clear_vbus(cdns); } else { cdns_set_vbus(cdns); } + + spin_unlock_irqrestore(&pdev->lock, flags); + enable_irq(cdns->dev_irq); + return 0; } |