Commit 63b78ca1 authored by Neil Armstrong's avatar Neil Armstrong Committed by Bjorn Andersson
Browse files

arm64: dts: qcom: sm8650-qrd: add USB-C Altmode Support



Add the necessary nodes to support the USB-C Altmode path by
adding the following
- WCD939x USBSS Mux I2C device
- nb7vpq904m Redriver I2C device
- Port/Endpoint graph links bettween PMIC-Glink, Mux, Redriver and USB PHY nodes.

WCD939x USBSS port 2 Path to Codec will be added later when Audio support
is added.

Signed-off-by: default avatarNeil Armstrong <neil.armstrong@linaro.org>
Link: https://lore.kernel.org/r/20240123-topic-sm8650-upstream-altmode-v3-1-300a5ac80e1e@linaro.org


Signed-off-by: default avatarBjorn Andersson <andersson@kernel.org>
parent f6afb821
Loading
Loading
Loading
Loading
+102 −2
Original line number Diff line number Diff line
@@ -77,7 +77,15 @@ port@1 {
					reg = <1>;

					pmic_glink_ss_in: endpoint {
						remote-endpoint = <&usb_1_dwc3_ss>;
						remote-endpoint = <&redriver_ss_out>;
					};
				};

				port@2 {
					reg = <2>;

					pmic_glink_sbu: endpoint {
						remote-endpoint = <&wcd_usbss_sbu_mux>;
				    };
				};
			};
@@ -446,6 +454,70 @@ &gpi_dma1 {
	status = "okay";
};

&i2c3 {
       status = "okay";

       wcd_usbss: typec-mux@e {
		compatible = "qcom,wcd9395-usbss", "qcom,wcd9390-usbss";
		reg = <0xe>;

		vdd-supply = <&vreg_l15b_1p8>;
		reset-gpios = <&tlmm 152 GPIO_ACTIVE_HIGH>;

		mode-switch;
		orientation-switch;

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

			port@0 {
				reg = <0>;

				wcd_usbss_sbu_mux: endpoint {
					remote-endpoint = <&pmic_glink_sbu>;
				};
			};
		};
       };
};

&i2c6 {
	status = "okay";

	typec-mux@1c {
		compatible = "onnn,nb7vpq904m";
		reg = <0x1c>;

		vcc-supply = <&vreg_l15b_1p8>;

		retimer-switch;
		orientation-switch;

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

			port@0 {
				reg = <0>;

				redriver_ss_out: endpoint {
					remote-endpoint = <&pmic_glink_ss_in>;
				};
			};

			port@1 {
				reg = <1>;

				redriver_ss_in: endpoint {
					data-lanes = <3 2 1 0>;
					remote-endpoint = <&usb_dp_qmpphy_out>;
				};
			};
		};
	};
};

&ipa {
	qcom,gsi-loader = "self";
	memory-region = <&ipa_fw_mem>;
@@ -495,6 +567,15 @@ &mdss_dsi0_phy {
	status = "okay";
};

&mdss_dp0 {
	status = "okay";
};

&mdss_dp0_out {
	data-lanes = <0 1>;
	remote-endpoint = <&usb_dp_qmpphy_dp_in>;
};

&mdss_mdp {
	status = "okay";
};
@@ -600,6 +681,11 @@ &pmk8550_rtc {
	status = "okay";
};

&qup_i2c3_data_clk {
	/* Use internal I2C pull-up */
	bias-pull-up = <2200>;
};

&qupv3_id_0 {
	status = "okay";
};
@@ -787,7 +873,7 @@ &usb_1_dwc3_hs {
};

&usb_1_dwc3_ss {
	remote-endpoint = <&pmic_glink_ss_in>;
	remote-endpoint = <&usb_dp_qmpphy_usb_ss_in>;
};

&usb_1_hsphy {
@@ -803,9 +889,23 @@ &usb_dp_qmpphy {
	vdda-phy-supply = <&vreg_l3i_1p2>;
	vdda-pll-supply = <&vreg_l3g_0p91>;

	orientation-switch;

	status = "okay";
};

&usb_dp_qmpphy_dp_in {
	remote-endpoint = <&mdss_dp0_out>;
};

&usb_dp_qmpphy_out {
	remote-endpoint = <&redriver_ss_in>;
};

&usb_dp_qmpphy_usb_ss_in {
	remote-endpoint = <&usb_1_dwc3_ss>;
};

&xo_board {
	clock-frequency = <76800000>;
};