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

From: Felipe Balbi
Date: Wed Sep 15 2010 - 06:57:04 EST


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
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/