RE: Bus noise periodically causes ci_hdrc IRQ lockup

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

 



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





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

  Powered by Linux