Hi,
I am using 816X/389X EVM (TI8168-GP rev 1.1). No Linux. I want to perform USB PHY Initialization in U-boot and follow recommendations described in chapter 24.2.7 of TRM.
while ((0x48180B14 & 0x00000060)>>5)!=0x3); // Wait until Modules come out Reset
*0x48180B14 |= 0x00000060; // RSTST (Clear Reset Presence)
*0x48180514 |= 0x2; // L3_SLOW_CLKSTCTRL (Enable Interconnect Clock)
*0x48180558 |= 0x2; // USB_CLKCTRL (Enable USB OCP Clock)
while(((*0x48180558) & 0x70000)>>16)==0x7); // Wait until USB Module is Ready
// Configure Access Capability to be in Supervisory Mode
*0x48140620 =0x0000_0003 //USB_CTRL Use PLL Ref Clock, Wake USB PHY1/00
When my program writes to USB_CTRL register to wake up USB PHY1/0 it verifies if the write operation was successful by reading USB_CTRL value back. The program writes to USB_CTL 0x03 but reads 0x00. USB_CTL behaves like a read-only register. The Cortex ™-A8 CPU is in Supervisory Mode. What might be wrong?
Below you can find a short dump of a U-boot session demonstrating this problem:
...
Hit any key to stop autoboot: 0
TI8168_EVM#mw.l 48180b10 0x9f 1
TI8168_EVM#md.l 48180b14 1
48180b14: 00000060 `...
TI8168_EVM#mw.l 48180b14 0x60 1
TI8168_EVM#md.l 48180b14 1
48180b14: 00000000 ....
TI8168_EVM#mw.l 48180514 0x02 1
TI8168_EVM#md.l 0x48180558 1
48180558: 00070000 ....
TI8168_EVM#mw.l 0x48180558 0x00070002 1
TI8168_EVM#md.l 0x48180558 1
48180558: 00000002 ....
TI8168_EVM#md.l 0x48140620 1
48140620: 00000000 ....
TI8168_EVM#mw.l 0x48140620 0x03
TI8168_EVM#md.l 0x48140620 1
48140620: 00000000 ....