UPSTREAM: usb: dwc3: gadget: rely on sg_is_last() and list_is_last()
authorFelipe Balbi <felipe.balbi@linux.intel.com>
Fri, 13 May 2016 07:07:47 +0000 (10:07 +0300)
committerHuang, Tao <huangtao@rock-chips.com>
Tue, 16 Aug 2016 12:48:19 +0000 (20:48 +0800)
sg_is_last() and list_is_last() will encode the
required information for the driver to make
decisions WRT CHN and LST bits.

While at that, also replace '1' with 'true' for
consistency.

Change-Id: I827e39df3058f696d753e03130a951017ed45bf5
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Signed-off-by: Wu Liang feng <wulf@rock-chips.com>
(cherry picked from commit 6aff483295950abcf3be1a99f56f308bd6a1bab4)

drivers/usb/dwc3/gadget.c

index 887f2c13960010e2cb89aaf6d5365a2329b681de..3d50b0b55adfd8623386490735d6b3895ee4ce76 100644 (file)
@@ -940,10 +940,10 @@ static void dwc3_prepare_trbs(struct dwc3_ep *dep)
                                length = sg_dma_len(s);
                                dma = sg_dma_address(s);
 
-                               if (i == (request->num_mapped_sgs - 1) ||
-                                               sg_is_last(s)) {
-                                       if (list_empty(&dep->pending_list))
+                               if (sg_is_last(s)) {
+                                       if (list_is_last(&req->list, &dep->pending_list))
                                                last_one = true;
+
                                        chain = false;
                                }
 
@@ -969,11 +969,11 @@ static void dwc3_prepare_trbs(struct dwc3_ep *dep)
                        trbs_left--;
 
                        if (!trbs_left)
-                               last_one = 1;
+                               last_one = true;
 
                        /* Is this the last request? */
                        if (list_is_last(&req->list, &dep->pending_list))
-                               last_one = 1;
+                               last_one = true;
 
                        dwc3_prepare_one_trb(dep, req, dma, length,
                                        last_one, false, 0);