Fwd: DWC3 Gadget SS enumeration

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

 



Hi Thinh - I understand you took over maintenance of the DWC3 recently, hope the direct mail is ok; I'm a bit stuck with the dwc3 and hoping for some suggestions.



Basically I am trying to get a usb gadget to enumerate in SuperSpeed mode. The board for the gadget is an imx8mp-evk with a dwc3. I've tested connecting to a couple of different hosts, but I can't get the gadget to enumerate on either host at superspeed. Tracing through the code it seems to understand that it is intended to operate in SuperSpeed - calls to dwc3_gadget_set_speed() are trying to set SuperSpeed for example - however when the dwc3 interrupt route runs dwc3_gadget_conndone_interrupt() at that point it sets high-speed instead. That setting comes from the register at offset 0xc70c, but when I enable trace points for dwc3_readl() and dwc3_writel() I don't see any events that write to that, only reads. I assume that means that the hardware itself is negotiating high-speed mode, and I'm hoping you might be able to suggest reasons that might influence that to happen.


I attached a dump of the tracepoints and registers. I think from DCFG=0x00d8081c that it's setting max speed to superspeed but from DSTS=0x008edb68 that the actual speed is set to high speed, but I could be wrong there. As I say I suspect that this isn't a "software" (or at least kernel) decision - if that's borne out by the traces could you suggest possible causes for the hardware to choose to fall back to high speed?


Thanks very much

Dan

Attachment: dwc3_trace.tar.gz
Description: application/gzip


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

  Powered by Linux