usb: dwc3: gadget: don't return anything on prepare trbs
authorFelipe Balbi <balbi@ti.com>
Mon, 28 Nov 2011 10:25:01 +0000 (12:25 +0200)
committerFelipe Balbi <balbi@ti.com>
Wed, 21 Dec 2011 11:24:45 +0000 (13:24 +0200)
all that function does is setup a TRB to be sent
to HW later. There's no need to return anything
actually.

Signed-off-by: Felipe Balbi <balbi@ti.com>
drivers/usb/dwc3/gadget.c

index 317fc7d..984580a 100644 (file)
@@ -544,7 +544,7 @@ static void dwc3_gadget_ep_free_request(struct usb_ep *ep,
  * @dep: endpoint for which this request is prepared
  * @req: dwc3_request pointer
  */
-static int dwc3_prepare_one_trb(struct dwc3_ep *dep,
+static void dwc3_prepare_one_trb(struct dwc3_ep *dep,
                struct dwc3_request *req, unsigned last)
 {
        struct dwc3_trb_hw      *trb_hw;
@@ -559,7 +559,7 @@ static int dwc3_prepare_one_trb(struct dwc3_ep *dep,
        /* Skip the LINK-TRB on ISOC */
        if (((cur_slot & DWC3_TRB_MASK) == DWC3_TRB_NUM - 1) &&
                        usb_endpoint_xfer_isoc(dep->desc))
-               return 0;
+               return;
 
        dwc3_gadget_move_request_queued(req);
        memset(&trb, 0, sizeof(trb));
@@ -607,8 +607,6 @@ static int dwc3_prepare_one_trb(struct dwc3_ep *dep,
 
        dwc3_trb_to_hw(&trb, trb_hw);
        req->trb_dma = dwc3_trb_dma_offset(dep, trb_hw);
-
-       return 0;
 }
 
 /*
@@ -620,10 +618,9 @@ static int dwc3_prepare_one_trb(struct dwc3_ep *dep,
  * transfers. The functions returns once there are not more TRBs available or
  * it run out of requests.
  */
-static struct dwc3_request *dwc3_prepare_trbs(struct dwc3_ep *dep,
-               bool starting)
+static void dwc3_prepare_trbs(struct dwc3_ep *dep, bool starting)
 {
-       struct dwc3_request     *req, *n, *ret = NULL;
+       struct dwc3_request     *req, *n;
        u32                     trbs_left;
        unsigned int            last_one = 0;
 
@@ -639,7 +636,7 @@ static struct dwc3_request *dwc3_prepare_trbs(struct dwc3_ep *dep,
         */
        if (!trbs_left) {
                if (!starting)
-                       return NULL;
+                       return;
                trbs_left = DWC3_TRB_NUM;
                /*
                 * In case we start from scratch, we queue the ISOC requests
@@ -663,7 +660,7 @@ static struct dwc3_request *dwc3_prepare_trbs(struct dwc3_ep *dep,
 
        /* The last TRB is a link TRB, not used for xfer */
        if ((trbs_left <= 1) && usb_endpoint_xfer_isoc(dep->desc))
-               return NULL;
+               return;
 
        list_for_each_entry_safe(req, n, &dep->request_list, list) {
                trbs_left--;
@@ -684,11 +681,8 @@ static struct dwc3_request *dwc3_prepare_trbs(struct dwc3_ep *dep,
                 * multiple TRBs handling, use only one TRB at a time.
                 */
                dwc3_prepare_one_trb(dep, req, true);
-               ret = req;
                break;
        }
-
-       return ret;
 }
 
 static int __dwc3_gadget_kick_transfer(struct dwc3_ep *dep, u16 cmd_param,
@@ -717,11 +711,13 @@ static int __dwc3_gadget_kick_transfer(struct dwc3_ep *dep, u16 cmd_param,
                /* req points to the first request which will be sent */
                req = next_request(&dep->req_queued);
        } else {
+               dwc3_prepare_trbs(dep, start_new);
+
                /*
                 * req points to the first request where HWO changed
                 * from 0 to 1
                 */
-               req = dwc3_prepare_trbs(dep, start_new);
+               req = next_request(&dep->req_queued);
        }
        if (!req) {
                dep->flags |= DWC3_EP_PENDING_REQUEST;