NASR-M board bring-up, USB adventures
It’s USB show time! Xilinx documents suggest the USB3320 as a good USB PHY that works, and I’ve seen multiple development boards that use that chip. If it works for them, it will probably work for me, I thought. Despite being defined in Vivado hardware design, USB was not detected by the Linux kernel. Looking closely, I saw that a reference clock was ok, but there was no signal on the CLKOUT pin.
The RESETB pin of USB3320 was pulled low during boot, but its internal PLL was not producing a 60 MHz signal on CLKOUT. Perhaps USB3320 dislikes my power bus initialization order? Maybe it’s possible to reset the PHY once the power is settled? I’ve spent some time playing with gpios from the shell, then somehow did a reset and saw the 60 MHz signal on the ULPI bus. Unfortunately, the base controller isn’t connected to the USB reset pin, but I can access it via PS/MIO50. Perhaps the best approach is to trigger a reset from U-Boot just before the kernel starts.
I’ll try patching U-Boot to reset the USB PHY and see how it goes.
Lessons learned: Put test points on clock lines when SI permits (probing small QFN’s sucks, believe me).
Reset GPIO's

12MHz reference clock of USB3320

60MHz ULPI clock (after a proper reset)

Tags: nasr-m, zephyr, embedded, petalinux, zynq, linux, xilinx, usb