Hi again, Felipe Balbi <felipe.balbi@xxxxxxxxxxxxxxx> writes: >>> Sure, that would be great. How can I download it? Any link which I can >>> curl? You can send it to me only, if you want; no problem. >> >> You (and anyone reading) can download it here: >> https://drive.google.com/file/d/1WSJ-222bguXTsRZ-mI5u2M7IP9FsZdj7/view?usp=sharing > > I'll download it and have a look, thanks Alright, the LeCroy traces made everything a lot more clear. So here's what happens. A few assumptions first: R is the right port where the Host is connected L is the left port where the device is connected We can start from LeCroy timestamp 61.271965376, that correlates with DWC3 tracepoint 1422.092840, iow: irq/23-dwc3-995 [000] d..1 1422.092840: dwc3_event: event (00120301): Link Change [U2] From there, we see a change to Recovery.Active in timestamp 61.272120896. We don't see a link state change interrupt for this, so it's not reported here. We can see on LeCroy traces that host sends 372025 TS1 data packets for 12ms. From USB specification section 7.5.10.3.1 we read that once entering Recovery.Active a 12ms timer is started and (now on section 7.5.10.3.2) port should transition to SS.Inactive when this timer expires. Hence: irq/23-dwc3-995 [000] d..1 1427.800204: dwc3_event: event (00160301): Link Change [SS.Inactive] From that point, on LeCroy timestamp 61.284317360, we see a transition to Rx.Detect which matches with: irq/23-dwc3-995 [000] d..1 1427.813205: dwc3_event: event (00150301): Link Change [RX.Detect] From RX.Detect we see a series of transitions between Polling.LFPS and back to RX.Detect which eventually time out, meaning that RX.Detect failed and link transitions to SS.Disabled: irq/23-dwc3-995 [000] d..1 1427.911837: dwc3_event: event (00040301): Link Change [SS.Disabled] From there, XHCI puts the SS link to U3 and, in order to do that it must go through RX.Detect, U0 and finally U3 (note that here U0 comes before RX.Detect, but I suppose that's some side effect of tracing since that's not a valid transition per figure 7-14): irq/23-dwc3-995 [000] d..1 1427.911849: dwc3_event: event (00000301): Link Change [U0] irq/23-dwc3-995 [000] d..1 1427.914818: dwc3_event: event (00050301): Link Change [RX.Detect] irq/23-dwc3-995 [000] d..1 1427.917746: dwc3_event: event (00030301): Link Change [U3] Now, we get a reset which is actually an SE0 signal on the bus: irq/23-dwc3-995 [000] d..1 1435.982020: dwc3_event: event (00000101): Reset [U0] For whatever reason that shows as Full Speed J on LeCroy traces. Go figure. In any case, the problem here seems to be that device side was unable to transmit TS1 when exiting U2. Then it was, consequently, unable to perform RX.Detect and link was disabled and switched to full-speed and negotiated high-speed later on by means of chirp sequences. I would really suggest running without LPM to get some more information since this seems to be rather clearly related to U2 exit. At the point of failure, it may also be a good idea to check the state of your PHYs it could be that the PHY got stuck in some weird state. Another thing to look at would be super speed eye diagram measurements, known errata for PHYs and redriver. Please, keep us posted. cheers -- balbi
Attachment:
signature.asc
Description: PGP signature