Re: [Discussion] USB: musb-gadget: how to fix ZLP issue in musb_g_tx

Felipe Balbi
2010-09-15T10:57:00Z

Hi,

On Wed, Sep 15, 2010 at 05:53:10AM -0500, Ming Lei wrote:
>1), why is the check for "is_dma" needed here?
>
> if (is_dma || request->actual == request->length) {
> ....
> }

if you programmed dma to request->length (and assuming it worked just
fine) mode1 will only interrupt you when the entire request has been
sent.

>2), why is a zlp needed in the case below?
>
> #ifdef CONFIG_USB_INVENTRA_DMA
> || (is_dma && (!dma->desired_mode ||
> (request->actual & (musb_ep->packet_sz - 1))))
> #endif

in that case, it's not a zlp, it's short packet. Inventra will *NOT*
transfer short packets, you need to set txpktrdy by hand to get it
transfered.

>IMO, it is not difficult to give a good fix for the ZLP problem
>if the two questions are clear.

true, but some re-work needs to be done.

--
balbi