On Mon, 30 Mar 2015, Johannes Stezenbach wrote: > Hi Felipe, > > a USB soundcard in fullspeed mode works correctly > when directly connected to a musb OTG port in host mode > on an AM335x SoC, but produces garbled audio output > when connected via a hub. usbmon shows that in both This is a high-speed (USB-2) hub, right? > cases URBs with typically 5 isoc frames of 192 bytes > length are queued. The wMaxPacketSize of the > endpoint is 196 bytes. A USB analyzer connected > via musb and hub revealed that musb breaks > the 192 byte frames into two parts, one 188 byte > and one 4 byte frame, ie. a 192 byte OUT transaction > produces the following token sequence: > > SPLIT > OUT > DATA0 188 bytes > SPLIT > OUT > DATA0 4 bytes That is correct behavior when a full-speed device is connected to a high-speed hub. Have you tried hooking your USB analyzer between the hub and the sound card? In that position it ought to show a single 192-byte OUT packet, as you expect. > The test was done using a 3.18.4 kernel. I reviewed > the relevant code in musb_core.c, musb_host.c and > musb_cppi41.c, and added a few debug prints, but > did not find anything wrong. Since the SPLIT transaction > is handled by hardware, I'm currently thinking this might > be a hardware issue. > Do you have any ideas? Any possible workaround in case > it is a hardware issue? Perhaps the values in the DATA packets are wrong. The best way for you to tell is to move the bus analyzer downstream from the hub and then compare the values you see in the packets with the audio data being played. Alan Stern -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html