UPSTREAM: usb: dwc3: gadget: simplify dwc3_gadget_ep_queue()
authorFelipe Balbi <balbi@ti.com>
Mon, 16 Nov 2015 21:31:21 +0000 (15:31 -0600)
committerWu Liang feng <wulf@rock-chips.com>
Sun, 6 Mar 2016 12:57:18 +0000 (20:57 +0800)
By moving our sanity checks our internal function
__dwc3_gadget_ep_queue() we can simplify the
externally visible API while also making sure that
callers of __dwc3_gadget_ep_queue() also make use of
the same checks.

Signed-off-by: Felipe Balbi <balbi@ti.com>
(cherry picked from commit bb423984c28e9f94a8f466b791baa762cef0543d)

Change-Id: I6fc7b972e288b4d3ffcb629daed784c87d243e32
Signed-off-by: Wu Liang feng <wulf@rock-chips.com>
drivers/usb/dwc3/gadget.c

index a58376fd65fe6d788fa817d5600696bfd431c791..98fb8028c792a2e7028f5d36eb170d4cc471a900 100644 (file)
@@ -1044,6 +1044,17 @@ static int __dwc3_gadget_ep_queue(struct dwc3_ep *dep, struct dwc3_request *req)
        struct dwc3             *dwc = dep->dwc;
        int                     ret;
 
+       if (!dep->endpoint.desc) {
+               dev_dbg(dwc->dev, "trying to queue request %p to disabled %s\n",
+                               &req->request, dep->endpoint.name);
+               return -ESHUTDOWN;
+       }
+
+       if (WARN(req->dep != dep, "request %p belongs to '%s'\n",
+                               &req->request, req->dep->name)) {
+               return -EINVAL;
+       }
+
        req->request.actual     = 0;
        req->request.status     = -EINPROGRESS;
        req->direction          = dep->direction;
@@ -1161,22 +1172,7 @@ static int dwc3_gadget_ep_queue(struct usb_ep *ep, struct usb_request *request,
        int                             ret;
 
        spin_lock_irqsave(&dwc->lock, flags);
-       if (!dep->endpoint.desc) {
-               dev_dbg(dwc->dev, "trying to queue request %p to disabled %s\n",
-                               request, ep->name);
-               ret = -ESHUTDOWN;
-               goto out;
-       }
-
-       if (WARN(req->dep != dep, "request %p belongs to '%s'\n",
-                               request, req->dep->name)) {
-               ret = -EINVAL;
-               goto out;
-       }
-
        ret = __dwc3_gadget_ep_queue(dep, req);
-
-out:
        spin_unlock_irqrestore(&dwc->lock, flags);
 
        return ret;