Verdin-IMX8MP: Device Tree help for USB1 SuperSpeed?


on our new custom board, I decided to use a Verdin-IMX8MP module.
Almost everything is already working, including USB HighSpeed on the USB-C-Connector connected to Verdin’s USB1.

Now I would like to use the port in SuperSpeed mode, could you kindly point me in the right direction on what device tree changes would be needed?

Some Details:

  • Verdin iMX8M Plus Quad 4GB IT module
  • Ti HD3SS3220 DRP Controller/MUX
  • USB1.ID (SODIMM 161) connected to HD3SS3220 ID pin
  • USB 2.0 connections as with the Toradex Development board (SODIMM 155/157/163/156/159)
  • MSP_39-42 (SODIMM 178/180/184/186) shall be used as USB RX/TX lines, connected to HD3SS3220
  • HD3SS3220 I²C connected to Verdin I2C_1 (SODIMM 12/14), INT connected to SODIMM 16

Right now, I don’t really know where to start.

  • Do I even have to configure the RX/TX pins, they do not seem to be muxed?
  • What device tree settings are needed for the USB Controller / PHY?
  • Do I have to use the HD3SS3220 linux driver at all, or should it also work in standalone mode?
  • Should a USB-C connector be added to the device tree?

Thanks for your help,


Please be aware that USB 1 is also used for recovery mode. We advise against connecting any USB controller or USB hub to it to ensure you don’t lose the capability to do a module recover. If you only need Host mode (DFP) for Super Speed, we recommend using USB 2 instead. All the necessary pins for Super Speed are muxed by default there. Additionally, you won’t need a special driver if the HD3SS3220 is strapped for DFP mode (Port pin pulled up to Vcc).

Thanks for your reply!

I’m already using USB port 2 in host mode with a hub, but I would like to use the USB port 1 as USB-C superspeed dual role port - as UFP for recovery and USB gadget (e.g. ethernet), and ideally also as a DFP, e.g. for external SSDs.

Recovery mode works fine at the moment, as only the superspeed RX/TX signals go through the MUX, USB D+/D- are connected normally.

Simplified schematic:

Right now, I don’t see (yet?) why this wouldn’t work - I think it “should be” “just” a matter of a correct kernel/devicetree configuration?




Once I fixed my cabling issues, USB1 works as a 5GBit superspeed host (tough only as highspeed device).
Not much testing done yet, but I guess that’s good enough for me.

Thank you,