On Wed, Sep 21, 2016 at 11:01:21AM +0300, Felipe Balbi wrote: > > Hi, > > Bin Liu <b-liu@xxxxxx> writes: > > Hi, > > > > I am trying to check Isoch high bandwidth transfer with g_webcam.ko in > > high-speed connection. > > > > First I hacked webcam.c as follows to enable 640x480@30fps mode. > > > > diff --git a/drivers/usb/gadget/legacy/webcam.c b/drivers/usb/gadget/legacy/webcam.c > > index 72c976b..9eb315f 100644 > > --- a/drivers/usb/gadget/legacy/webcam.c > > +++ b/drivers/usb/gadget/legacy/webcam.c > > @@ -191,15 +191,15 @@ static const struct UVC_FRAME_UNCOMPRESSED(3) uvc_frame_yuv_360p = { > > .bFrameIndex = 1, > > .bmCapabilities = 0, > > .wWidth = cpu_to_le16(640), > > - .wHeight = cpu_to_le16(360), > > + .wHeight = cpu_to_le16(480), > > .dwMinBitRate = cpu_to_le32(18432000), > > .dwMaxBitRate = cpu_to_le32(55296000), > > - .dwMaxVideoFrameBufferSize = cpu_to_le32(460800), > > - .dwDefaultFrameInterval = cpu_to_le32(666666), > > + .dwMaxVideoFrameBufferSize = cpu_to_le32(614400), > > + .dwDefaultFrameInterval = cpu_to_le32(333333), > > .bFrameIntervalType = 3, > > - .dwFrameInterval[0] = cpu_to_le32(666666), > > - .dwFrameInterval[1] = cpu_to_le32(1000000), > > - .dwFrameInterval[2] = cpu_to_le32(5000000), > > + .dwFrameInterval[0] = cpu_to_le32(333333), > > + .dwFrameInterval[1] = cpu_to_le32(666666), > > + .dwFrameInterval[2] = cpu_to_le32(1000000), > > }; > > > > then loaded g_webcam.ko as > > > > # modprobe g_webcam streaming_maxpacket=3072 > > > > The endpoint descriptor showing on the host is > > > > Endpoint Descriptor: > > bLength 7 > > bDescriptorType 5 > > bEndpointAddress 0x8d EP 13 IN > > bmAttributes 5 > > Transfer Type Isochronous > > Synch Type Asynchronous > > Usage Type Data > > wMaxPacketSize 0x1400 3x 1024 bytes > > bInterval 1 > > > > However the usb bus trace shows only one transaction with 1024-bytes packet in > > every SOF. The host only sends one IN packet in every SOF, I am expecting 2~3 > > 1024-bytes transactions, since this would be required to transfer 640x480@30fps > > YUV frames in high-speed. > > > > DId I miss anything in the setup? > > MUSB or DWC3? This looks like a UDC bug to me. Can you show a screenshot Happened on both MUSB and DWC3. > of your bus analyzer? When host sends IN token, are you replying with The trace screenshot on DWC3 is attached. > DATA0, DATA1 or DATA2? Good hint! It is DATA0! > > -- > balbi Regards, -Bin.
Attachment:
dwc3-g_webcam-DATA0-only-bus-trace.png
Description: PNG image