Open main menu

DAVE Developer's Wiki β

DESK-MX8M-L/Peripherals/USB-C

< DESK-MX8M-L
Revision as of 15:08, 16 February 2023 by U0028 (talk | contribs)


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


Contents

Peripheral USB-CEdit

SBC ORCAEdit

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

  • USB-C 1
  • USB-C 2

USB-C 1Edit

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 2Edit

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 configurationEdit

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";
	};
...
...