I'm using TMDSEVM3517 board, and want to use EHCI host controller (PORT1) with SMSC USB3320 PHY.
But, the ULPI DIR signal remains asserted (high), so EHCI controller can no longer communicate with the transceiver.
What I do for initialization is below:
* initialize DPLL4 to make 48M_FCLK (and UART3 is correctly working).
* setting GPIO for hsusb1_*** signals (set to Mode 3).
* set gpio_57 to output pin, and start USB1 ULPI PHY reset (low active).
* enable USBTLL clock to CM_FCLKEN3_CORE register.
* enable USBTLL clock to CM_ICLKEN3_CORE register.
* disable AUTO_USBTLL to CM_AUTOIDLE3_CORE register.
* enable USBHOST clock to CM_ICLKEN_USBHOST register.
* disable AUTOIDLE to CM_AUTOIDLE_USBHOST register.
* enable USBHOST1, USBHOST2 clocks to CM_FCLKEN_USBHOST register.
* initialize DPLL5 to make 120M_FCLK. (SYS_CLK=13MHz)
CM_CLKSEL4_PLL setting parameters:
DPLL_MULT=120, DPLL_DIV=12
CM_CLKSEL5_PLL setting parameters:
DPLL_DIV_120M=1.
CM_CLKEN2_PLL setting parameters:
PERIPH2_DPLL_FREQSEL=0x4 (1.0MHz-1.25MHz).
LPMODE, RAMPTIME, DRIFTGUARD set to disable.
( if DPLL5 initialize before enabling USBTLL and USBHOST clocks,
ST_120M_CLK and ST_FUNC120M_CLK are remain not active although
ST_PERIPH2_CLK is locked... why? )
* do USBTLL module soft reset.
* set UHH_SYSCONFIG to NO STADBY/NO IDLE.
(CLOCKACTIVITY, ENAWAKEUP, AUTOIDLE is set to 1.)
* set UHH_HOSTCONFIG to ULPI mode
clear P1_ULPI_BYPASS, P2_CONNECT_STATUS, P3_CONNECT_STATUS, ENA_INCR_ALIGN.
set ENA_INCR16, ENA_INCR8, ENA_INCR4.
P1_CONNECT_STATUS is remain set to 1.
* set EHCI_INSNREG04 register bit5.
* wait more than 20msec, then clear USB1 ULPI PHY reset with gpio_57 (high).
* start ULPI PHY access though INSNREG05_ULPI register, but CONTROL bit remains 1.
Checking signals of SMSC USB3320:
* 60MHz clock is input to REFCLK pin.
* RESETB signal changes to high from low with gpio_57 (set to high) operation.
* DIR signal is once changed to low after RESETB signal changes to high,
but changed to high again after about 1usec, and remains high.
Why ULPI DIR signal not becames low? What's wrong in initilization?
Thanks in advance.