Problem enabling USB2 ULPI on ls1012a

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Problem enabling USB2 ULPI on ls1012a

3,228 Views
simonappleby
Contributor II

Hi,

We have a custom board and are struggling with using the USB2.0 interface with a USB3343 ULPI.

The USB3343 is configured for clock out and have confirmed that a 60MHz clock is being generated and fed into the LS1012A's USB2 CLK pin.
We have the RCW bits set correctly to enable ULPI mode on the EC1 pins, but do not see any sign of the interfaces presence.
Reading the USB2.0's address space 0x860_0000 in uBoot shows all zero's.
Are there any other RCW settings required to use the ULPI interface?

We have one ethernet port using 4-wire SGMII, one PCIe and both the USB3 and USB2 interfaces.
The ethernet, USB3 and PCIe ports function as expected.

Thanks in advance.

Our RCW configuration is as follows:

SoC:  LS1012AE Rev2.0 (0x87040020)

Clock Configuration:

       CPU0(A53):1000 MHz  

       Bus:      250  MHz  DDR:      1000 MT/s

Reset Configuration Word (RCW):

       00000000: 0800000a 00000000 00000000 00000000

       00000010: 33050000 c000000c 40000000 00001800

       00000020: 00000000 00000000 00000000 000e4432

       00000030: 00000000 10800120 00000096 00000000

 

Labels (2)
0 Kudos
Reply
10 Replies

3,021 Views
ufedor
NXP Employee
NXP Employee

Please set USB CONTROL[USB_EN]=1.

0 Kudos
Reply

3,021 Views
ufedor
NXP Employee
NXP Employee

Please check that the USBCMD[RST] is cleared, if not - write 1 to USB_CONTROL[USB_EN].

0 Kudos
Reply

3,021 Views
simonappleby
Contributor II

Hi Ufedor,

USBCMD[RST] is cleared. I have tried writing to USB_CONTROL[USB_EN], but writes to this region do not appear to work or have no affect. I have also implemented erratum a008118 concerning not waiting for reset to clear before enabling USB_CONTROL[USB_EN], Again to no affect.

We are using u-boot source from the FRWY reference, U-Boot 2017.07-00013

 

A dump of the register space in u-boot shows nothing present:

=> md.l 0x8600000 141  

08600000: 00000000 00000000 00000000 00000000    ................

08600010: 00000000 00000000 00000000 00000000    ................

08600020: 00000000 00000000 00000000 00000000    ................

08600030: 00000000 00000000 00000000 00000000    ................

08600040: 00000000 00000000 00000000 00000000    ................

08600050: 00000000 00000000 00000000 00000000    ................

08600060: 00000000 00000000 00000000 00000000    ................

<data repeats...>

08600440: 00000000 00000000 00000000 00000000    ................

08600450: 00000000 00000000 00000000 00000000    ................

08600460: 00000000 00000000 00000000 00000000    ................

08600470: 00000000 00000000 00000000 00000000    ................

08600480: 00000000 00000000 00000000 00000000    ................

08600490: 00000000 00000000 00000000 00000000    ................

08600500: 00000000                                                       ....

Does the SAI hardware need to be disabled in DCFG_CCSR for the USB2 registers to appear?

Or is there some other memory specific initialisation to perform before trying to use this module?

0 Kudos
Reply

3,021 Views
ufedor
NXP Employee
NXP Employee

What is DEVDISR1 value?

0 Kudos
Reply

3,021 Views
simonappleby
Contributor II

Hi Ufedor, 

Here is the DCFG_CCSR map:

=> md.l 0x1ee0000 60

01ee0000: ffbf7f22 000000f6 00000000 00000000    "...............

01ee0010: 00000000 00000000 00000000 00000000    ................

01ee0020: 00000000 00000000 00000000 00000000    ................

01ee0030: 00000000 00000000 00000000 00000000    ................

01ee0040: 00000000 00000000 00000000 00000000    ................

01ee0050: 00000000 00000000 00000000 00000000    ................

01ee0060: 00000000 00000000 00000000 00000000    ................

01ee0070: 00000000 00000000 00000000 00000000    ................

01ee0080: 00000000 00000000 00000000 00000000    ................

01ee0090: 00000000 0e000000 00000000 00000000    ................

01ee00a0: 00000000 20000487 40000000 00000000    ....... ...@....

01ee00b0: 00000000 00000000 00000000 00000000    ................

01ee00c0: 00400000 00000000 00400000 00000000    ..@.......@.....

01ee00d0: 00000000 00000000 00000000 00000000    ................

01ee00e0: 00000000 00000000 00000000 00000000    ................

01ee00f0: 00000000 00000000 00000000 00000000    ................

01ee0100: 0a000008 00000000 00000000 00000000    ................

01ee0110: 00000533 0c0000c0 00000040 00180000    3.......@.......

01ee0120: 00000000 00000000 00000000 32440e00    ..............D2

01ee0130: 00000000 20018010 96000000 00000000    ....... ........

01ee0140: 00000000 00000000 00000000 00000000    ................

01ee0150: 00000000 00000000 00000000 00000000    ................

01ee0160: 00000000 00000000 00000000 00000000    ................

01ee0170: 00000000 00000000 00000000 00000000    ................

Thanks

0 Kudos
Reply

3,021 Views
ufedor
NXP Employee
NXP Employee

Please check and confirm that all notes after the "Table 1. Pinout list by bus" in the QorIQ LS1012A Data Sheet are fulfilled in the design.

0 Kudos
Reply

3,021 Views
simonappleby
Contributor II

Hi Ufedor,

We have confirmed all of the notes in table 1 of the data sheet are being followed.

Thanks

0 Kudos
Reply

3,021 Views
ufedor
NXP Employee
NXP Employee

What is the value of the USB CONTROL[USB_EN]?

0 Kudos
Reply

3,021 Views
simonappleby
Contributor II

Hi Ufedor,

We have made some additional progress. It looks like a register in the CSU may not be set correctly.
Modifying 'arch/arm/include/asm/arch-fsl-layerscape/ns_access.h' to add the USB2 permissions after I2C1 enables the USB2 interface. Its registers then appear and we can then see the ULPI.

Thanks 

0 Kudos
Reply

3,021 Views
simonappleby
Contributor II

USB_CONTROL{USB_EN] is zero. The entire memory range of the USB2 controller reads zero, as in the dump of 0x860_0000 shown above.

0 Kudos
Reply