> >> Chandler > > From the above, we know the controller is at RX active status. But I > > am sorry I got the imprecise instruction from IC guys. The reason we > > do that is to know the RX status change during one packet, for your > > example, there are ISOC packets, so, measure time is about 20us. (1024 bytes). > > > > First, you may need to know the time between two reads, it needs to be > > within 1-10us, then we need to know all reads within 20us, you could > > save the read value at memory, and print it out after all reads are done. Besides, > You need to write debug register from 1 to 8 (not 7). > > > > for (write USBPHY.USBPHYx_DEBUG1n($USBPHY + 0x70) from 1 to 8) > > read all USBPHY.USBPHYx_DEBUG0_STATUS value within 20us > > > > I am not sure if you could do above at userspace. > > > > Peter > > Hi Peter, > > I managed to preform those requests in 20uS. The results are not much different. > > Time: 18uS > 0x020CA060 @ 0x1: 0x00007B2C > 0x020CA060 @ 0x2: 0x00000064 > 0x020CA060 @ 0x3: 0x108401C0 (still changes on every read) > 0x020CA060 @ 0x4: 0x00010001 > 0x020CA060 @ 0x5: 0x01011101 > 0x020CA060 @ 0x6: 0x00000101 > 0x020CA060 @ 0x7: 0x05300010 > 0x020CA060 @ 0x8: 0x81000001 > > I should mention that PORTSC and other registers (besides the DEBUG0_STATUS > @ 3) don't change at all between reads. I did manage to find a way to reset the > root hub through GPIO, and I see the following changes occur: > > PORTSC reg: 18001a05 --> 18001205 > 0x020CA060 @ 0x2: 0x00000064 --> 0x00000024 > > After this change the registers remain static and will go back the previous state > after releasing reset. > Let me summary your observation: - bind/unbind ci_hdrc device can recover connection - Reset HUB can't recover, and will go the previous error state after reset >From the register, we do see something abnormal, and the RX is waiting the SYNC Field. We need to see the dp/dm status to know if HUB is wrong, eg, sending data exceed 20us (larger than 1024 bytes) > I will continue looking into probing Dm/Dp. You would like me to do this > *while* the failure occurs, or after? > After the error occurs. Peter