FX3 needs some firmware implementation in order to switch the mux so that the correct orientation of the Type-C plug is detected. The firmware sequence for USB connect is as under:
1) After the FX3 device gets connected to a Type-C host, the FX3 device gets powered.
2) Once powered, the firmware starts running inside FX3.
3) Configure the GPIO as an output that is used as a MUXSEL line.
4) Before the USB connect, the USB2.0 PHY is disabled in the firmware.
5) Then, the firmware attempts a USB 3.0 connection.
6) If it finds the terminations, it will enumerate as a SuperSpeed device.
7) If it does not find a termination. It will enable a USB2.0 PHY.
8) Then the MUXSEL GPIO is toggled by FX3 in order to change the Mux switch position.
9) Again, the firmware attempts a USB3.0 connection/.
10) If it is a USB 3.0 device, it will enumerate as a USB 3.0 device or else it will enumerate as a USB 2.0 device.