From: Roger Quadros Date: Tue, 12 Apr 2016 08:33:29 +0000 (+0300) Subject: UPSTREAM: usb: dwc3: gadget: Fix suspend/resume during device mode X-Git-Tag: firefly_0821_release~1871 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=2442353fc0e3cd9b88b0af908c8cfa4bf518f483;p=firefly-linux-kernel-4.4.55.git UPSTREAM: usb: dwc3: gadget: Fix suspend/resume during device mode Gadget controller might not be always active during system suspend/resume as gadget driver might not have yet been loaded or might have been unloaded prior to system suspend. Check if we're active and only then perform necessary actions during suspend/resume. Change-Id: I1efb16ec3b2d1c32904c7bcc8cc947d266786e20 Signed-off-by: Roger Quadros Signed-off-by: Felipe Balbi Signed-off-by: Wu Liang feng (cherry picked from commit 9772b47a4c2916d645c551228b6085ea24acbe5d) --- diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c index 1ad3ec336232..33cff7c96226 100644 --- a/drivers/usb/dwc3/gadget.c +++ b/drivers/usb/dwc3/gadget.c @@ -2835,6 +2835,9 @@ void dwc3_gadget_exit(struct dwc3 *dwc) int dwc3_gadget_suspend(struct dwc3 *dwc) { + if (!dwc->gadget_driver) + return 0; + if (dwc->pullups_connected) { dwc3_gadget_disable_irq(dwc); dwc3_gadget_run_stop(dwc, true, true); @@ -2853,6 +2856,9 @@ int dwc3_gadget_resume(struct dwc3 *dwc) struct dwc3_ep *dep; int ret; + if (!dwc->gadget_driver) + return 0; + /* Start with SuperSpeed Default */ dwc3_gadget_ep0_desc.wMaxPacketSize = cpu_to_le16(512);