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.majew...@samsung.com>
> > Cc: Marek Vasut <ma...@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.

> 
> 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)?

-- 
Best regards,

Lukasz Majewski

Samsung R&D Institute Poland (SRPOL) | Linux Platform Group
_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to