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

Marek Vasut marex at denx.de
Mon Sep 23 23:23:19 CEST 2013


Dear Troy Kisky,

> On 9/22/2013 5:02 PM, Marek Vasut wrote:
> > 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 at 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
> 
> Actually, I should have said "an IN (tx to the host controller) and then
> an OUT(rx from the host controller)"
> 
> >> 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 ?
> 
> The 1st "IN" transfer (tx to the host), will [copy]/flush on mv_bounce
> and [free]/nothing on mv_debounce.
> The 2nd "OUT" transfer (rx from the host) will flush on mv_bounce and
> invalidate/[copy/free] on mv_debounce.
> 
> > 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);
> > +
> 
> That implements the "On out transfers, only copy the number of bytes
> received from the bounce buffer"
> portion of the commit message.

OK, thanks.

Best regards,
Marek Vasut


More information about the U-Boot mailing list