Part Number: AM3356
Tool/software: Linux
Has something changed in the USB0 OTG driver code from SDK6 to ProcessorSDK 1.03 on AM335x that would cause a flash drive not mounting? (Didn't TI move from TI81xx driver to MUSB at some point?)
On the EXACT same customer HW if moving back to SDK6, the same flash drive mounts fine.
From examination of the registers, the USB0_ID line does not even seem to be working correctly (guess we could try forcing USBnMODE [Bit7=IDDIG_MUX] as a experiment)?. The error occurs in a normal use case after Linux is booted and just plugging in the USB flash drive. Tried various flash drives to no avail. Sometimes a reboot might fix but honestly they have not tried automated test to see how often it fails. But when stuck, it seems to stay stuck. No thing shows up in dmesg (which makes sense since no change in the registers).
Please see attached USB0_OTG.txt that has USB register dumps for:
1. This is the case with the sdkpro kernel and musb driver, where the controller does not recognize the insertion of the adapter with a flash drive into the OTG port.
2. These are the cases with the SDK06 kernel and driver. The first one are the register values with the drive/adapter connected and the device has properly enumerated.
3. The second one is with the drive disconnected.
This is the case with the sdkpro kernel and musb driver, where the controller does not recognize the insertion of the adapter with a flash drive into the OTG port. root@xxxxxx:musb-hdrc.0.auto# cat mode root@xxxxxx:musb-hdrc.0.auto# cat /sys/kernel/debug/musb-hdrc.0.auto/regdump MUSB (M)HDRC Register Dump FAddr : 00 Power : e0 Frame : 0000 Index : 0f Testmode : 00 TxMaxPp : 0000 TxCSRp : 0000 RxMaxPp : 0000 RxCSR : 0000 RxCount : 0000 ConfigData : 33 DevCtl : 80 MISC : 44 TxFIFOsz : 07 RxFIFOsz : 07 TxFIFOadd : 0780 RxFIFOadd : 0780 VControl : 00000000 HWVers : 0800 EPInfo : ff RAMInfo : 0d LinkInfo : 5c VPLen : 3c HS_EOF1 : 80 FS_EOF1 : 77 LS_EOF1 : 72 SOFT_RST : 00 DMA_CNTLch0 : 0000 DMA_ADDRch0 : 00000000 DMA_COUNTch0: 00000000 DMA_CNTLch1 : 0000 DMA_ADDRch1 : 00000000 DMA_COUNTch1: 00000000 DMA_CNTLch2 : 0000 DMA_ADDRch2 : 00000000 DMA_COUNTch2: 00000000 DMA_CNTLch3 : 0000 DMA_ADDRch3 : 00000000 DMA_COUNTch3: 00000000 DMA_CNTLch4 : 0000 DMA_ADDRch4 : 00000000 DMA_COUNTch4: 00000000 DMA_CNTLch5 : 0000 DMA_ADDRch5 : 00000000 DMA_COUNTch5: 00000000 DMA_CNTLch6 : 0000 DMA_ADDRch6 : 00000000 DMA_COUNTch6: 00000000 DMA_CNTLch7 : 0000 DMA_ADDRch7 : 00000000 DMA_COUNTch7: 00000000 These are the cases with the SDK06 kernel and driver. The first one are the register values with the drive/adapter connected and the device has properly enumerated. The second one is with the drive disconnected. root@xxxxx:~# cat mode root@xxxxx:~# cat /sys/kernel/debug/musb-hdrc.0/regdump MUSB (M)HDRC Register Dump FAddr : 00 Power : f0 Frame : 00d6 Index : 0f Testmode : 00 TxMaxPp : 0000 TxCSRp : 0000 RxMaxPp : 0000 RxCSR : 0000 RxCount : 0000 ConfigData : 33 DevCtl : 5d MISC : 44 TxFIFOsz : 07 RxFIFOsz : 07 TxFIFOadd : 0780 RxFIFOadd : 0780 VControl : 00000000 HWVers : 0800 EPInfo : ff RAMInfo : 0d LinkInfo : 5c VPLen : 3c HS_EOF1 : 80 FS_EOF1 : 77 LS_EOF1 : 72 SOFT_RST : 00 DMA_CNTLch0 : 0000 DMA_ADDRch0 : 00000000 DMA_COUNTch0: 00000000 DMA_CNTLch1 : 0000 DMA_ADDRch1 : 00000000 DMA_COUNTch1: 00000000 DMA_CNTLch2 : 0000 DMA_ADDRch2 : 00000000 DMA_COUNTch2: 00000000 DMA_CNTLch3 : 0000 DMA_ADDRch3 : 00000000 DMA_COUNTch3: 00000000 DMA_CNTLch4 : 0000 DMA_ADDRch4 : 00000000 DMA_COUNTch4: 00000000 DMA_CNTLch5 : 0000 DMA_ADDRch5 : 00000000 DMA_COUNTch5: 00000000 DMA_CNTLch6 : 0000 DMA_ADDRch6 : 00000000 DMA_COUNTch6: 00000000 DMA_CNTLch7 : 0000 DMA_ADDRch7 : 00000000 DMA_COUNTch7: 00000000 root@xxxxxx:~# cat /sys/kernel/debug/musb-hdrc.0/regdump MUSB (M)HDRC Register Dump FAddr : 00 Power : e0 Frame : 01c0 Index : 0f Testmode : 00 TxMaxPp : 0000 TxCSRp : 0000 RxMaxPp : 0000 RxCSR : 0000 RxCount : 0000 ConfigData : 33 DevCtl : 80 MISC : 44 TxFIFOsz : 07 RxFIFOsz : 07 TxFIFOadd : 0780 RxFIFOadd : 0780 VControl : 00000000 HWVers : 0800 EPInfo : ff RAMInfo : 0d LinkInfo : 5c VPLen : 3c HS_EOF1 : 80 FS_EOF1 : 77 LS_EOF1 : 72 SOFT_RST : 00 DMA_CNTLch0 : 0000 DMA_ADDRch0 : 00000000 DMA_COUNTch0: 00000000 DMA_CNTLch1 : 0000 DMA_ADDRch1 : 00000000 DMA_COUNTch1: 00000000 DMA_CNTLch2 : 0000 DMA_ADDRch2 : 00000000 DMA_COUNTch2: 00000000 DMA_CNTLch3 : 0000 DMA_ADDRch3 : 00000000 DMA_COUNTch3: 00000000 DMA_CNTLch4 : 0000 DMA_ADDRch4 : 00000000 DMA_COUNTch4: 00000000 DMA_CNTLch5 : 0000 DMA_ADDRch5 : 00000000 DMA_COUNTch5: 00000000 DMA_CNTLch6 : 0000 DMA_ADDRch6 : 00000000 DMA_COUNTch6: 00000000 DMA_CNTLch7 : 0000 DMA_ADDRch7 : 00000000 DMA_COUNTch7: 00000000 root@xxxxxx:musb-hdrc.0.auto# cat /sys/kernel/debug/musb-hdrc.0.auto/regdump MUSB (M)HDRC Register Dump FAddr : 00 Power : e0 Frame : 0000 Index : 0f Testmode : 00 TxMaxPp : 0000 TxCSRp : 0000 RxMaxPp : 0000 RxCSR : 0000 RxCount : 0000 ConfigData : 33 DevCtl : 80 MISC : 44 TxFIFOsz : 07 RxFIFOsz : 07 TxFIFOadd : 0780 RxFIFOadd : 0780 VControl : 00000000 HWVers : 0800 EPInfo : ff RAMInfo : 0d LinkInfo : 5c VPLen : 3c HS_EOF1 : 80 FS_EOF1 : 77 LS_EOF1 : 72 SOFT_RST : 00 DMA_CNTLch0 : 0000 DMA_ADDRch0 : 00000000 DMA_COUNTch0: 00000000 DMA_CNTLch1 : 0000 DMA_ADDRch1 : 00000000 DMA_COUNTch1: 00000000 DMA_CNTLch2 : 0000 DMA_ADDRch2 : 00000000 DMA_COUNTch2: 00000000 DMA_CNTLch3 : 0000 DMA_ADDRch3 : 00000000 DMA_COUNTch3: 00000000 DMA_CNTLch4 : 0000 DMA_ADDRch4 : 00000000 DMA_COUNTch4: 00000000 DMA_CNTLch5 : 0000 DMA_ADDRch5 : 00000000 DMA_COUNTch5: 00000000 DMA_CNTLch6 : 0000 DMA_ADDRch6 : 00000000 DMA_COUNTch6: 00000000 DMA_CNTLch7 : 0000 DMA_ADDRch7 : 00000000 DMA_COUNTch7: 00000000