From mboxrd@z Thu Jan 1 00:00:00 1970 From: Troy Kisky Date: Mon, 23 Sep 2013 12:12:05 -0700 Subject: [U-Boot] [PATCH V4 10/17] usb: gadget: mv_udc: optimize bounce In-Reply-To: <201309230202.34693.marex@denx.de> References: <1379647780-2623-1-git-send-email-troy.kisky@boundarydevices.com> <201309201258.00209.marex@denx.de> <523C9ACB.7050000@boundarydevices.com> <201309230202.34693.marex@denx.de> Message-ID: <52409285.5030202@boundarydevices.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de 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 >>>> >>>> --- >>>> 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. Thanks Troy