[U-Boot] [PATCH V4 10/17] usb: gadget: mv_udc: optimize bounce

Marek Vasut
2013-09-23T00:02:34Z

Dear Troy Kisky,

> On 9/20/2013 3:58 AM, Marek Vasut wrote:
> > Dear Troy Kisky,
> >
> >> Only perform one copy, either in the bounce
> >> routine for IN transfers, or the debounce
> >> rtn for OUT transfer.
> >>
> >> On out transfers, only copy the number
> >> of bytes received from the bounce buffer
> >>
> >> Signed-off-by: Troy Kisky <troy.kisky@boundarydevices.com>
> >>
> >> ---
> >> v4: no change
> >
> > Just a question here. Are you sure we never Send AND Reserve the data in
> > one turn? Because that would need two copyings.
>
> ??? s/Reserve/Receive/
>
> As far as I'm aware, a single buffer is only ever used to capture or
> provide data not both.
> But, if 2 transfers were queued, an OUT and then an IN using the same
> buffer, if it worked before
> this patch, it should work after as well.

How come? Before, it was doing flush before and inval after the transfer, right
?

btw what does this part of the patch do/mean ? Why is it there?

@@ -387,10 +383,9 @@ static void handle_ep_complete(struct mv_ep *ep)
num, in ? "in" : "out", item->info, item->page0);

len = (item->info >> 16) & 0x7fff;
-
- mv_debounce(ep);
-
ep->req.length -= len;
+ mv_debounce(ep, in);
+
DBG("ept%d %s complete %x\n",
num, in ? "in" : "out", len);
ep->req.complete(&ep->ep, &ep->req);

Best regards,
Marek Vasut