usb: dwc3: gadget: don't force 'LST' always
authorFelipe Balbi <balbi@ti.com>
Mon, 28 Nov 2011 10:27:17 +0000 (12:27 +0200)
committerFelipe Balbi <balbi@ti.com>
Wed, 21 Dec 2011 11:24:46 +0000 (13:24 +0200)
the LST bit is to be set on the last of a series
of consecutive TRBs. We had a workaround for a
problem where data would get corrupted but that
doesn't happen anymore. It's likely that it was
caused by some FPGA instability during development
phase.

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

index 984580a..0292b06 100644 (file)
@@ -672,16 +672,10 @@ static void dwc3_prepare_trbs(struct dwc3_ep *dep, bool starting)
                if (list_empty(&dep->request_list))
                        last_one = 1;
 
-               /*
-                * FIXME we shouldn't need to set LST bit always but we are
-                * facing some weird problem with the Hardware where it doesn't
-                * complete even though it has been previously started.
-                *
-                * While we're debugging the problem, as a workaround to
-                * multiple TRBs handling, use only one TRB at a time.
-                */
-               dwc3_prepare_one_trb(dep, req, true);
-               break;
+               dwc3_prepare_one_trb(dep, req, last_one);
+
+               if (last_one)
+                       break;
        }
 }