usb: dwc2: gadget: prevent new request submission during suspend
authorGregory Herrero <gregory.herrero@intel.com>
Wed, 29 Apr 2015 20:09:08 +0000 (22:09 +0200)
committerFelipe Balbi <balbi@ti.com>
Wed, 29 Apr 2015 20:19:19 +0000 (15:19 -0500)
If usb controller is in partial power down, any write to registers may
cause unpredictable behavior.
Thus, prevent any new request submission once controller is in partial
power down.

Acked-by: John Youn <johnyoun@synopsys.com>
Signed-off-by: Gregory Herrero <gregory.herrero@intel.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
drivers/usb/dwc2/gadget.c

index a360f49d3fd0275c66f1be1212a6ae960d2e0bc0..732761f9466b9e8be5cc962c8e77eda8b65200d2 100644 (file)
@@ -790,6 +790,13 @@ static int s3c_hsotg_ep_queue(struct usb_ep *ep, struct usb_request *req,
                ep->name, req, req->length, req->buf, req->no_interrupt,
                req->zero, req->short_not_ok);
 
+       /* Prevent new request submission when controller is suspended */
+       if (hs->lx_state == DWC2_L2) {
+               dev_dbg(hs->dev, "%s: don't submit request while suspended\n",
+                               __func__);
+               return -EAGAIN;
+       }
+
        /* initialise status of the request */
        INIT_LIST_HEAD(&hs_req->queue);
        req->actual = 0;