// SPDX-License-Identifier: BSD-3-Clause
/*
 * Copyright (c) 2023-2024, Qualcomm Innovation Center, Inc. All rights reserved.
 */

/dts-v1/;

#include <dt-bindings/leds/common.h>
#include "qcs8550-aim300.dtsi"
#include "pm8010.dtsi"
#include "pmr735d_a.dtsi"
#include "pmr735d_b.dtsi"

/ {
	model = "Qualcomm Technologies, Inc. QCS8550 AIM300 AIOT";
	compatible = "qcom,qcs8550-aim300-aiot", "qcom,qcs8550-aim300", "qcom,qcs8550",
		     "qcom,sm8550";

	aliases {
		serial0 = &uart7;
	};

	chosen {
		stdout-path = "serial0:115200n8";
	};

	gpio-keys {
		compatible = "gpio-keys";

		pinctrl-0 = <&volume_up_n>;
		pinctrl-names = "default";

		key-volume-up {
			label = "Volume Up";
			debounce-interval = <15>;
			gpios = <&pm8550_gpios 6 GPIO_ACTIVE_LOW>;
			linux,code = <KEY_VOLUMEUP>;
			linux,can-disable;
			wakeup-source;
		};
	};

	pmic-glink {
		compatible = "qcom,sm8550-pmic-glink", "qcom,pmic-glink";
		#address-cells = <1>;
		#size-cells = <0>;
		orientation-gpios = <&tlmm 11 GPIO_ACTIVE_HIGH>;

		connector@0 {
			compatible = "usb-c-connector";
			reg = <0>;
			power-role = "dual";
			data-role = "dual";

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

				port@0 {
					reg = <0>;

					pmic_glink_hs_in: endpoint {
						remote-endpoint = <&usb_1_dwc3_hs>;
					};
				};

				port@1 {
					reg = <1>;

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

				port@2 {
					reg = <2>;

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

	vph_pwr: regulator-vph-pwr {
		compatible = "regulator-fixed";
		regulator-name = "vph_pwr";
		regulator-min-microvolt = <3700000>;
		regulator-max-microvolt = <3700000>;

		regulator-always-on;
		regulator-boot-on;
	};
};

&apps_rsc {
	regulators-0 {
		vdd-bob1-supply = <&vph_pwr>;
		vdd-bob2-supply = <&vph_pwr>;
	};

	regulators-3 {
		vdd-s4-supply = <&vph_pwr>;
		vdd-s5-supply = <&vph_pwr>;
	};

	regulators-4 {
		vdd-s4-supply = <&vph_pwr>;
	};

	regulators-5 {
		vdd-s1-supply = <&vph_pwr>;
		vdd-s2-supply = <&vph_pwr>;
		vdd-s3-supply = <&vph_pwr>;
		vdd-s4-supply = <&vph_pwr>;
		vdd-s5-supply = <&vph_pwr>;
		vdd-s6-supply = <&vph_pwr>;
	};
};

&i2c_hub_2 {
	status = "okay";

	typec-mux@42 {
		compatible = "fcs,fsa4480";
		reg = <0x42>;

		vcc-supply = <&vreg_bob1>;

		mode-switch;
		orientation-switch;

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

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

		vcc-supply = <&vreg_l15b_1p8>;

		orientation-switch;
		retimer-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>;
				};
			};
		};
	};
};

&mdss_dsi0 {
	status = "okay";

	panel@0 {
		compatible = "visionox,vtdr6130";
		reg = <0>;

		pinctrl-0 = <&dsi_active>, <&te_default>;
		pinctrl-1 = <&dsi_suspend>, <&te_default>;
		pinctrl-names = "default", "sleep";

		reset-gpios = <&tlmm 133 GPIO_ACTIVE_LOW>;

		vci-supply = <&vreg_l13b_3p0>;
		vdd-supply = <&vreg_l11b_1p2>;
		vddio-supply = <&vreg_l12b_1p8>;

		port {
			panel0_in: endpoint {
				remote-endpoint = <&mdss_dsi0_out>;
			};
		};
	};
};

&mdss_dsi0_out {
	remote-endpoint = <&panel0_in>;
	data-lanes = <0 1 2 3>;
};

&mdss_dsi0_phy {
	status = "okay";
};

&pcie0 {
	status = "okay";
};

&pcie0_phy {
	status = "okay";
};

&pcie1 {
	status = "okay";
};

&pcie1_phy {
	status = "okay";
};

&pm8550_gpios {
	volume_up_n: volume-up-n-state {
		pins = "gpio6";
		function = "normal";
		power-source = <1>;
		bias-pull-up;
		input-enable;
	};
};

&pon_pwrkey {
	status = "okay";
};

&pon_resin {
	linux,code = <KEY_VOLUMEDOWN>;

	status = "okay";
};

&qupv3_id_0 {
	status = "okay";
};

&remoteproc_adsp {
	firmware-name = "qcom/qcs8550/adsp.mbn",
			"qcom/qcs8550/adsp_dtb.mbn";
	status = "okay";
};

&remoteproc_cdsp {
	firmware-name = "qcom/qcs8550/cdsp.mbn",
			"qcom/qcs8550/cdsp_dtb.mbn";
	status = "okay";
};

&swr1 {
	status = "okay";
};

&swr2 {
	status = "okay";
};

&tlmm {
	gpio-reserved-ranges = <32 8>;

	dsi_active: dsi-active-state {
		pins = "gpio133";
		function = "gpio";
		drive-strength = <8>;
		bias-disable;
	};

	dsi_suspend: dsi-suspend-state {
		pins = "gpio133";
		function = "gpio";
		drive-strength = <2>;
		bias-pull-down;
	};

	te_default: te-default-state {
		pins = "gpio86";
		function = "mdp_vsync";
		drive-strength = <2>;
		bias-pull-down;
	};
};

&uart7 {
	status = "okay";
};

&usb_1 {
	status = "okay";
};

&usb_1_dwc3_hs {
	remote-endpoint = <&pmic_glink_hs_in>;
};

&usb_1_hsphy {
	status = "okay";
};

&usb_dp_qmpphy {
	status = "okay";
};

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