> 
> On Mon, Jun 29, 2015 at 7:16 AM, Alan Stern <st...@rowland.harvard.edu>
> wrote:
> > On Mon, 29 Jun 2015, Peter Chen wrote:
> >
> >> Just like Steve pointed, it should be a ZLT problem, do you have
> >> below patch in your tree, and the host may not send zlt, but you may
> >> queue an zero-length request, the f_hid does not set req->zero flag
> >> either.
> >>
> >> commit 953c66469735aed8d2ada639a72b150f01dae605
> >> Author: Abbas Raza <abbas_r...@mentor.com>
> >> Date:   Thu Jul 17 19:34:31 2014 +0800
> >>
> >>     usb: chipidea: udc: Disable auto ZLP generation on ep0
> >>
> >>
> >> If it still has problem, send me apps if possible (with needed kernel
> >> patches).
> >
> > Note that a UDC should _never_ queue an extra zero-length packet for
> > an OUT transfer, no matter how req->zero is set.  In other words,
> > req->zero is supposed to affect only IN transfers.
> >
> Yes UDC gadgets receive packets sent by the host on OUT transfers. If ZLT
> transfers are needed for the protocol, a short transfer is needed to end an 
> OUT
> sequence and it must be sent by the sender, in this case the host. The UDC
> should detect receiving a zero length EP0 OUT and that signals the end of the
> 64 byte transfer from host to gadget.
> 

Thanks, Alan & Steve, I will have a patch to fix this in chipidea udc driver.

Peter

Reply via email to