[U-Boot] [PATCH 01/10] usb:udc:s3c: Reduce dcache invalidate range for UDC receive buffer

Marek Vasut marex at denx.de
Fri Oct 4 12:26:12 CEST 2013


Dear Lukasz Majewski,

> Hi Marek,
> 
> > Dear Lukasz Majewski,
> > 
> > > The s3c udc driver sends data in a max packet size. Therefore the
> > > dcache invalidate range shall be equal to max packet, not the entire
> > > DMA_BUFFER_SIZE.
> > > 
> > > Signed-off-by: Lukasz Majewski <l.majewski at samsung.com>
> > > Cc: Marek Vasut <marex at denx.de>
> > > ---
> > > 
> > >  drivers/usb/gadget/s3c_udc_otg_xfer_dma.c |    2 +-
> > >  1 file changed, 1 insertion(+), 1 deletion(-)
> > > 
> > > diff --git a/drivers/usb/gadget/s3c_udc_otg_xfer_dma.c
> > > b/drivers/usb/gadget/s3c_udc_otg_xfer_dma.c index d7af5e9..5e3ba76
> > > 100644 --- a/drivers/usb/gadget/s3c_udc_otg_xfer_dma.c
> > > +++ b/drivers/usb/gadget/s3c_udc_otg_xfer_dma.c
> > > @@ -117,7 +117,7 @@ static int setdma_rx(struct s3c_ep *ep, struct
> > > s3c_request *req)
> > > 
> > >  	invalidate_dcache_range((unsigned long)
> > > 
> > > ep->dev->dma_buf[ep_num], (unsigned long) ep->dev->dma_buf[ep_num]
> > > -				+ DMA_BUFFER_SIZE);
> > > +				+ ep->ep.maxpacket);
> > 
> > Is this maxpacket _always_ multiple of cacheline big or will you need
> > some ROUND_UP() call here ?
> 
> The maxpacket value is equal to 64 B for EP0 and 512 B for EP1 and EP2
> (wMaxPacketSize field of the descriptor).
> 
> Moreover this invalidation is done on already memaligned buffer (which
> is 16 KiB). In other words, we are copying data to specially prepared
> buffer (per UDC device EP, not usb_request).
> 
> In my opinion the maxpacket don't need to be rounded up.

So it can never happen that ep maxpacket is unaligned?

> > Best regards,
> > Marek Vasut
> 
> Since this is Samsung's UDC specific (not THOR download) - would it be
> possible to take this patch from this patch series (of course if my
> above rationale is acceptable for you)?

You mean for .10 ?

Best regards,
Marek Vasut


More information about the U-Boot mailing list