DESK-MX8M-L/Peripherals/USB-C

From DAVE Developer's Wiki
Jump to: navigation, search


History
Version Issue Date Notes
1.0.0 Feb 2023 DESK-MX8M-L-2.0.0 release


Peripheral USB-C[edit | edit source]

SBC ORCA[edit | edit source]

In SBC Orca two USB-C ports were mounted, that is:

  • USB-C 1
  • USB-C 2

USB-C 1[edit | edit source]

The USB-C 1 port is used to power-supply the board and for the transfer of data by Downstream-Facing Port (DFP) mode.

In U-Boot you can use this port only to power-supply the board and not for data transfer.

In Linux you can use this port for data transfer.

For more information, refer to the example in USB1 OTG.

The connector that is inserted in this port works in both verses.

USB-C 2[edit | edit source]

The USB-C 2 port is used for data transfer.

In U-Boot you can use this port to transmit data with an external device and to use the UUU functionality of NXP.

In Linux you can use the dual-role data mode (DRD).

For more information, refer to the example in USB2 OTG.

The connector that is inserted in this port works in both verses.

Device tree configuration[edit | edit source]

From imx8mp-mito8mplus.dtsi:

&iomuxc {
...
...
	pinctrl_typec: typec1grp {
		fsl,pins = <
			MX8MP_IOMUXC_GPIO1_IO13__GPIO1_IO13	0x1c4
		>;
	};

	pinctrl_typec_mux: typec1muxgrp {
		fsl,pins = <
			MX8MP_IOMUXC_GPIO1_IO12__GPIO1_IO12	0x16
		>;
	};
...
...

From imx8mp-mito8mplus-cb1001.dts:

...
...
	ptn36043 {
		compatible = "nxp,ptn36043";
		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_typec_mux>;
		switch-gpios = <&gpio1 12 GPIO_ACTIVE_HIGH>;
		orientation-switch;
		/* this must be left disabled to avoid conflicts with ptn36043_gpio
		 * see usb_dwc3_0 for more details */
		status = "disabled";

		port {
			usb3_data_ss: endpoint {
				remote-endpoint = <&typec_con_ss>;
			};
		};
	};
...
...
	ptn5110: tcpc@50 {
		compatible = "nxp,ptn5110";
		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_typec>;
		reg = <0x50>;
		interrupt-parent = <&gpio1>;
		interrupts = <13 8>;

		/* disable this node to prevent blackout on boot
		*/
		status = "disabled";

		port {
			typec_dr_sw: endpoint {
				remote-endpoint = <&usb3_drd_sw>;
			};
		};

		usb_con: connector {
			compatible = "usb-c-connector";
			label = "USB-C";
			power-role = "dual";
			data-role = "dual";
			try-power-role = "sink";
			source-pdos = <PDO_FIXED(5000, 3000, PDO_FIXED_USB_COMM)>;
			sink-pdos = <PDO_FIXED(5000, 3000, PDO_FIXED_USB_COMM)
				     PDO_VAR(5000, 12000, 3000)>;
			op-sink-microwatt = <15000000>;
			self-powered;

			ports {
				#address-cells = <1>;
				#size-cells = <0>;

				port@1 {
					reg = <1>;
					typec_con_ss: endpoint {
						remote-endpoint = <&usb3_data_ss>;
					};
				};
			};
		};
	};

	extcon_usbotg2: typec@3d {
		compatible = "nxp,ptn5150";
		reg = <0x3d>;
		int-gpios = <&gpio1 00 GPIO_ACTIVE_LOW>;
		vbus-gpio = <&gpio1 14 GPIO_ACTIVE_HIGH>;
		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_ptn5150>;
		status = "okay";
	};
...
...