musb AM335x: isoc out transfers to FS device via hub are broken

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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
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

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?

BTW, I have some difficulties matching the register details
in the AM335x Sitara Processors Technical Reference Manual
to the musb source code.  Is there any better documentation
for the USB hardware available?
http://www.ti.com/product/AM3359/technicaldocuments#doctype6


Thanks,
Johannes
--
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




[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux