Tool/software:
Using a hardware designed board based on the AM64x EVM, currently running Linux. This question/problem comes from USB VBUS is not connected for a USB device configuration.
For a bit of background, the AM64x hardware is designed to plug into a backplane, there is a primary slot (designated a USB host) and the 2ndary slot (designated USB device). An FPGA on the hardware detects the slot, and signals the USB-ID pin accordingly. Signaling across the backplane consists only of the usb_data+ and usb_data-. The purpose is to use this USB connection as ethernet over USB. Software support for this in Linux is readily available.
I was able to validate the USB host (in the primary slot of the backplane) by wiring a backplane 2ndary slot connector to a micro-USB b cable and connected to an AM64x EVM board. Since VBUS is not signaled across the backplane, I hooked pin 1 of the J23 header (USB0_VBUS) to a +5V source on the EVM to supply VBUS power. Once Linux boots on both boards, and doing a "modprobe g_ether" on the EVM board, USB connected, and ethernet over USB worked great. This would also seem to validate the device tree would be correct for the custom board.
The problem is the device mode of the hardware design. While the hardware properly detects USB device mode via USB-ID, however the VBUS signal is not connected to anything. I am currently trying to resolve the issue in the Linux USB drivers.
I modified the cdns3 driver (source file drd.c: function cdns_get_vbus()) to hard code the vbus to always return asserted. This has the positive effect of allowing the driver to fully come up. By doing a "modprobe g_ether" the "usb0" device comes up, and can be modified via "ifconfig". However no USB data signaling seems to be occurring.
This leads to the following questions.
1. Does the internal USB2.0 PHY on the AM64x need USB0_VBUS to provide power in order to operate correct?
2. Are there software adjustments that can be done to start the USB PHY?
If there are any questions, please let me know.