This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

PROCESSOR-SDK-AM64X: AM64x EVM based design USB VBUS PHY Power

Part Number: PROCESSOR-SDK-AM64X

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.

  • Hi Daryl,

    Thanks for the details of your USB use case. Though I don't have a clear picture of it, since I am kind of confused in some places where I am not sure the referred "hardware" is AM64x or the backplane. Anyway, the confusion is not important in answering your question. Here is my comment:

    Though the AM64x EVM always has the USB VBUS pin connected regardless the USB controller is in host mode or device mode, so the cases that without the VBUS pin are not validated. However,

    - The AM64x USB controller in host mode works without the USB VBUS pin, I think your test confirms this.

    - The AM64x USB controller in device mode does require the USB VBUS pin in the hardware perspective. Based on the USB2.0 Specifications, the DP/DM line pullup for notifying the USB host for USB Attach relies on the USB VBUS voltage on the USB device side (AM64x in this case). So without USB VBUS pin, the AM64x USB won't work in device mode. I don't believe there is any software workaround.

  • Great to know, many thanks for your help, much appreciated.