I have been working on getting USB working on my custom carrier board, and found some inconsistent behavior from the USB PWR Enable pins.
For both the AM62 and IMX8MP compute models I am evaluating, with a completely native OS 7.1.0 install, both USB enable pins (SODIMM 155 [USB_1_EN] and SODIMM 185 [USB_2_EN]) are active low (seems to be the verdin spec) during bootup. Once entering the OS, SODIMM 185 goes high and stays high, killing power to the usb port. SODIMM 155 stays low. I have the USB_1_ID (SODIMM 161) pin tied to ground, and it works and registers in the os as host mode, so I don’t think this is related to the OTG functions.
Its possible to go to the power management for the usb devices, as described in this article… Linux control USB power-enable switch
When reading the pm_qos_no_power_off setting of the usb devices, both are set as 1. When writing a 0 to the USB 2 port, SODIMM 185 goes low, giving power to the usb (but in my testing no comms, which is somewhat expected.)
I found an article about changing the pin settings in the device tree USB Host Power-Enable Polarity
When looking at imx8mp-verdin.dtsi, both usb regulators have the property of enable-active-high. If I remove this property from the usb2 regulator, then the port has power during u-boot, loses power when reaching the OS, and restores power after a few seconds.
USB 1 stays powered during the entire booting process. If I remove enable-active-high from the usb1 regulator, then it turns off after entering the OS.
This seems like inconstant behavior to me, and I didn’t see anything noting this kind of difference in the schematics or design guides I looked at. I can use the USB devices which the change to the device tree, but not sure why the pin polarity seems to be flipped between the 2 USB devices.
Below is a picture of my carrier board setup just to rule out any potential issues on that end. Both regulators are active low.