Imx8mp Verdin USB2.0 on USB1 DT Settings

Hi all,

I know the default settings in the device tree for USB1 on the imx8 Verdin are used for USB On the go. On my custom carrier board I have a USB251xB chip acting as a USB HUb connected to USB1 pins 163 and 165.

The hub is powered from the 3.3VSW supply, so its always powered once the module has booted, for some reason when I do an lsusb command, I do not see the Hub present, nor do any downstream USB devices get recognised by Linux.
The USB VBUS detect pin I have tied high the 5V through a pull-up resistor.

Could you please provide me with a simple device tree example to make this work?

Dear @eoin_oc1,

I hope you’re doing good. As you’re building your own Carrier Board, I recommend you look at the Verdin Carrier Board Design Guide if you haven’t done this already. You can find it here: https://docs.toradex.com/108140-verdin-carrier-board-design-guide.pdf.

About your points, you can find our device trees here:
device-trees/dts-arm64 at toradex_5.4-2.3.x-imx · toradex/device-trees · GitHub.
On the pages, you can find for instance this file that has some USB definitions: device-trees/imx8mp-verdin.dtsi at toradex_5.4-2.3.x-imx · toradex/device-trees · GitHub.

Also, looking at the datasheet of your chip (https://ww1.microchip.com/downloads/aemDocuments/documents/OTH/ProductDocuments/DataSheets/00001692C.pdf), it seems that you could need additional steps such as configuring the i2c slave address on this file: device-trees/imx8mp-pinfunc.h at toradex_5.4-2.3.x-imx · toradex/device-trees · GitHub.

You may also need to enable the kernel module for the driver. On the BSP 5.7.0 Upstream, the module was not built-in.

# zcat /proc/config.gz | grep -i usb | grep 251
# CONFIG_USB_HUB_USB251XB is not set

Finally, we could also try to help you check your schematics to check the right pull up/down resistors if you share the USB Part with us.

Please tell me if this information helps.

Best regards,

i have the config set such that it does not need I2C config
That setting is set in my Kernel Config
I go directly from pins 30-31 to SODIMM 163-165

We always use this chip without I2C connection in a different product.
I think the issue is my device tree, it seems USB1 is setup for a USB-C connector in the Dahlia development board, can you give some tips how to setup my DT for my schematic?

I also have USB1_VBUS SODIMM 159 tied high to 5V

Dear @eoin_oc1,

Have you set anything from your device tree already? On the Linux Kernel Github you can find an example of what would be needed for a device for this device: linux/usb251xb.txt at master · torvalds/linux · GitHub.

Also, in figure 25 of our carrier board design guide, you can see the following sample of the USB Hubs we made for the Verdin Carrier Boards:

. As you correctly said, on the Dahlia and on the Dev Board, the USB2 is the one used for the Hub connection. Here is where you can find its information on our device trees:

Do you think that these files can help you?

Best regards,

Thanks for the tip,

I changed USB1 to this and boom it works :slightly_smiling_face:
&usb_dwc3_0 {
extcon = <&extcon_usb_1_id>;
dr_mode = “host”;
hnp-disable;
srp-disable;
adp-disable;
pinctrl-names = “default”;
pinctrl-0 = <&pinctrl_usb1_en>;
};

Dear @eoin_oc1,

Thanks for the feedback. I’m glad it works now. Could you please tag the message that you think describes the solution the most as solved?

Please feel free if you’d need any further assistance.

Best regards,