// SPDX-License-Identifier: BSD-3-Clause
/*
 * Copyright (c) 2017-2019, The Linux Foundation. All rights reserved.
 * Copyright (c) 2020-2023, Linaro Limited
 */

/dts-v1/;

#include <dt-bindings/firmware/qcom,scm.h>
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/gpio-keys.h>
#include <dt-bindings/input/input.h>
#include <dt-bindings/regulator/qcom,rpmh-regulator.h>
#include "sc8180x.dtsi"
#include "sc8180x-pmics.dtsi"

/ {
	model = "Lenovo Flex 5G";
	compatible = "lenovo,flex-5g", "qcom,sc8180x";

	aliases {
		serial0 = &uart13;
	};

	backlight: backlight {
		compatible = "pwm-backlight";
		pwms = <&pmc8180c_lpg 4 1000000>;
		enable-gpios = <&pmc8180c_gpios 8 GPIO_ACTIVE_HIGH>;

		pinctrl-0 = <&bl_pwm_default>;
		pinctrl-names = "default";
	};

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

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

		lid-switch {
			gpios = <&tlmm 121 GPIO_ACTIVE_LOW>;
			linux,input-type = <EV_SW>;
			linux,code = <SW_LID>;
			wakeup-source;
			wakeup-event-action = <EV_ACT_DEASSERTED>;
		};
	};

	pmic-glink {
		compatible = "qcom,sc8180x-pmic-glink", "qcom,pmic-glink";

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

		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_con0_hs: endpoint {
						remote-endpoint = <&usb_prim_role_switch>;
					};
				};

				port@1 {
					reg = <1>;

					pmic_glink_con0_ss: endpoint {
						remote-endpoint = <&usb_prim_qmpphy_out>;
					};
				};

				port@2 {
					reg = <2>;

					pmic_glink_con0_sbu: endpoint {
						remote-endpoint = <&usbprim_sbu_mux>;
					};
				};
			};
		};

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

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

					pmic_glink_con1_hs: endpoint {
						remote-endpoint = <&usb_sec_role_switch>;
					};
				};

				port@1 {
					reg = <1>;

					pmic_glink_con1_ss: endpoint {
						remote-endpoint = <&usb_sec_qmpphy_out>;
					};
				};

				port@2 {
					reg = <2>;

					pmic_glink_con1_sbu: endpoint {
						remote-endpoint = <&usbsec_sbu_mux>;
					};
				};
			};
		};
	};

	reserved-memory {
		rmtfs_mem: rmtfs-region@85500000 {
			compatible = "qcom,rmtfs-mem";
			reg = <0x0 0x85500000 0x0 0x200000>;
			no-map;

			qcom,client-id = <1>;
			qcom,vmid = <QCOM_SCM_VMID_MSS_MSA>;
		};

		wlan_mem: wlan-region@8bc00000 {
			reg = <0x0 0x8bc00000 0x0 0x180000>;
			no-map;
		};

		mpss_mem: mpss-region@8d800000 {
			reg = <0x0 0x8d800000 0x0 0x3000000>;
			no-map;
		};

		adsp_mem: adsp-region@90800000 {
			reg = <0x0 0x90800000 0x0 0x1c00000>;
			no-map;
		};

		gpu_mem: gpu-region@98715000 {
			reg = <0x0 0x98715000 0x0 0x2000>;
			no-map;
		};

		cdsp_mem: cdsp-region@98900000 {
			reg = <0x0 0x98900000 0x0 0x1400000>;
			no-map;
		};
	};

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

	vreg_s4a_1p8: pm8150-s4-regulator {
		compatible = "regulator-fixed";
		regulator-name = "vreg_s4a_1p8";

		regulator-min-microvolt = <1800000>;
		regulator-max-microvolt = <1800000>;

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

		vin-supply = <&vph_pwr>;
	};

	usbprim-sbu-mux {
		compatible = "pericom,pi3usb102", "gpio-sbu-mux";

		enable-gpios = <&tlmm 152 GPIO_ACTIVE_LOW>;
		select-gpios = <&tlmm 100 GPIO_ACTIVE_HIGH>;

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

		mode-switch;
		orientation-switch;

		port {
			usbprim_sbu_mux: endpoint {
				remote-endpoint = <&pmic_glink_con0_sbu>;
			};
		};
	};

	usbsec-sbu-mux {
		compatible = "pericom,pi3usb102", "gpio-sbu-mux";

		enable-gpios = <&tlmm 188 GPIO_ACTIVE_LOW>;
		select-gpios = <&tlmm 187 GPIO_ACTIVE_HIGH>;

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

		mode-switch;
		orientation-switch;

		port {
			usbsec_sbu_mux: endpoint {
				remote-endpoint = <&pmic_glink_con1_sbu>;
			};
		};
	};
};

&apps_rsc {
	regulators-0 {
		compatible = "qcom,pmc8180-rpmh-regulators";
		qcom,pmic-id = "a";

		vdd-s5-supply = <&vph_pwr>;
		vdd-l7-l12-l14-l15-supply = <&vreg_s5a_2p0>;

		vreg_s5a_2p0: smps5 {
			regulator-min-microvolt = <2040000>;
			regulator-max-microvolt = <2100000>;
		};

		vreg_l7a_1p8: ldo7 {
			regulator-min-microvolt = <1800000>;
			regulator-max-microvolt = <1800000>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
		};

		vreg_l9a_1p3: ldo9 {
			regulator-min-microvolt = <1296000>;
			regulator-max-microvolt = <1304000>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
		};

		vreg_l12a_1p8: ldo12 {
			regulator-min-microvolt = <1800000>;
			regulator-max-microvolt = <1800000>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
		};
	};

	regulators-1 {
		compatible = "qcom,pmc8180c-rpmh-regulators";
		qcom,pmic-id = "c";

		vdd-s6-supply = <&vph_pwr>;
		vdd-l2-l3-supply = <&vreg_s6c_1p35>;
		vdd-bob-supply = <&vph_pwr>;

		vreg_s6c_1p35: smps6 {
			regulator-min-microvolt = <1350000>;
			regulator-max-microvolt = <1372000>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
		};

		vreg_l3c_1p2: ldo3 {
			regulator-min-microvolt = <1200000>;
			regulator-max-microvolt = <1200000>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
		};

		vreg_l10c_3p3: ldo10 {
			regulator-min-microvolt = <3000000>;
			regulator-max-microvolt = <3312000>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
		};

		vreg_l11c_3p3: ldo11 {
			regulator-min-microvolt = <3296000>;
			regulator-max-microvolt = <3304000>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
		};

		vreg_bob: bob {
			regulator-min-microvolt = <3296000>;
			regulator-max-microvolt = <3350000>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
		};
	};

	regulators-2 {
		compatible = "qcom,pmc8180-rpmh-regulators";
		qcom,pmic-id = "e";

		vdd-s4-supply = <&vph_pwr>;
		vdd-s5-supply = <&vph_pwr>;
		vdd-l2-l10-supply = <&vreg_bob>;
		vdd-l3-l4-l5-l18-supply = <&vreg_s4e_0p98>;
		vdd-l7-l12-l14-l15-supply = <&vreg_s5e_2p05>;
		vdd-l13-l16-l17-supply = <&vreg_bob>;

		vreg_s4e_0p98: smps4 {
			regulator-min-microvolt = <992000>;
			regulator-max-microvolt = <992000>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
		};

		vreg_s5e_2p05: smps5 {
			regulator-min-microvolt = <2040000>;
			regulator-max-microvolt = <2040000>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
		};

		vreg_l1e_0p75: ldo1 {
			regulator-min-microvolt = <752000>;
			regulator-max-microvolt = <752000>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
		};

		vreg_l5e_0p88: ldo5 {
			regulator-min-microvolt = <880000>;
			regulator-max-microvolt = <880000>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
		};

		vreg_l7e_1p8: ldo7 {
			regulator-min-microvolt = <1800000>;
			regulator-max-microvolt = <1800000>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
		};

		vreg_l10e_2p9: ldo10 {
			regulator-min-microvolt = <2904000>;
			regulator-max-microvolt = <2904000>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
		};

		vreg_l16e_3p0: ldo16 {
			regulator-min-microvolt = <3072000>;
			regulator-max-microvolt = <3072000>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
		};
	};
};

&gpu {
	status = "okay";

	zap-shader {
		memory-region = <&gpu_mem>;
		firmware-name = "qcom/sc8180x/qcdxkmsuc8180.mbn";
	};
};

&i2c1 {
	clock-frequency = <100000>;

	pinctrl-0 = <&i2c1_active>, <&i2c1_hid_active>;
	pinctrl-names = "default";

	status = "okay";

	hid@10 {
		compatible = "hid-over-i2c";
		reg = <0x10>;
		hid-descr-addr = <0x1>;

		interrupts-extended = <&tlmm 122 IRQ_TYPE_LEVEL_LOW>;
	};
};

&i2c7 {
	clock-frequency = <100000>;

	pinctrl-0 = <&i2c7_active>, <&i2c7_hid_active>;
	pinctrl-names = "default";

	status = "okay";

	hid@5 {
		compatible = "hid-over-i2c";
		reg = <0x5>;
		hid-descr-addr = <0x20>;

		interrupts-extended = <&tlmm 37 IRQ_TYPE_LEVEL_LOW>;
	};

	hid@2c {
		compatible = "hid-over-i2c";
		reg = <0x2c>;
		hid-descr-addr = <0x20>;

		interrupts-extended = <&tlmm 24 IRQ_TYPE_LEVEL_LOW>;
	};
};

&mdss {
	status = "okay";
};

&mdss_dp0 {
	status = "okay";
};

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

&mdss_dp1 {
	status = "okay";
};

&mdss_dp1_out {
	data-lanes = <0 1>;
	remote-endpoint = <&usb_sec_qmpphy_dp_in>;
};

&mdss_edp {
	data-lanes = <0 1 2 3>;

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

	status = "okay";

	aux-bus {
		panel {
			compatible = "edp-panel";
			no-hpd;

			backlight = <&backlight>;

			port {
				auo_b140han06_in: endpoint {
					remote-endpoint = <&mdss_edp_out>;
				};
			};
		};
	};

	ports {
		port@1 {
			reg = <1>;
			mdss_edp_out: endpoint {
				remote-endpoint = <&auo_b140han06_in>;
			};
		};
	};
};

&pcie3 {
	perst-gpios = <&tlmm 178 GPIO_ACTIVE_LOW>;
	wake-gpios = <&tlmm 180 GPIO_ACTIVE_HIGH>;
	pinctrl-0 = <&pcie3_default_state>;
	pinctrl-names = "default";

	status = "okay";
};

&pcie3_phy {
	vdda-phy-supply = <&vreg_l5e_0p88>;
	vdda-pll-supply = <&vreg_l3c_1p2>;

	status = "okay";
};

&pmc8180c_lpg {
	status = "okay";
};

&qupv3_id_0 {
	status = "okay";
};

&qupv3_id_1 {
	status = "okay";
};

&qupv3_id_2 {
	status = "okay";
};

&remoteproc_adsp {
	memory-region = <&adsp_mem>;
	firmware-name = "qcom/sc8180x/LENOVO/82AK/qcadsp8180.mbn";

	status = "okay";
};

&remoteproc_cdsp {
	memory-region = <&cdsp_mem>;
	firmware-name = "qcom/sc8180x/LENOVO/82AK/qccdsp8180.mbn";

	status = "okay";
};

&remoteproc_mpss {
	memory-region = <&mpss_mem>;
	firmware-name = "qcom/sc8180x/LENOVO/82AK/qcmpss8180_nm.mbn";

	status = "okay";
};

&uart13 {
	pinctrl-0 = <&uart13_state>;
	pinctrl-names = "default";

	status = "okay";

	bluetooth {
		compatible = "qcom,wcn3998-bt";

		vddio-supply = <&vreg_s4a_1p8>;
		vddxo-supply = <&vreg_l7a_1p8>;
		vddrf-supply = <&vreg_l9a_1p3>;
		vddch0-supply = <&vreg_l11c_3p3>;
		max-speed = <3200000>;
	};
};

&ufs_mem_hc {
	reset-gpios = <&tlmm 190 GPIO_ACTIVE_LOW>;

	vcc-supply = <&vreg_l10e_2p9>;
	vcc-max-microamp = <155000>;

	vccq2-supply = <&vreg_l7e_1p8>;
	vccq2-max-microamp = <425000>;

	status = "okay";
};

&ufs_mem_phy {
	vdda-phy-supply = <&vreg_l5e_0p88>;
	vdda-pll-supply = <&vreg_l3c_1p2>;

	status = "okay";
};

&usb_prim_hsphy {
	vdda-pll-supply = <&vreg_l5e_0p88>;
	vdda18-supply = <&vreg_l12a_1p8>;
	vdda33-supply = <&vreg_l16e_3p0>;

	status = "okay";
};

&usb_prim_qmpphy {
	vdda-phy-supply = <&vreg_l3c_1p2>;
	vdda-pll-supply = <&vreg_l5e_0p88>;

	orientation-switch;

	status = "okay";
};

&usb_prim {
	status = "okay";
};

&usb_prim_dwc3 {
	dr_mode = "host";
};

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

&usb_prim_qmpphy_out {
	remote-endpoint = <&pmic_glink_con0_ss>;
};

&usb_prim_role_switch {
	remote-endpoint = <&pmic_glink_con0_hs>;
};

&usb_sec_hsphy {
	vdda-pll-supply = <&vreg_l5e_0p88>;
	vdda18-supply = <&vreg_l12a_1p8>;
	vdda33-supply = <&vreg_l16e_3p0>;

	status = "okay";
};

&usb_sec_qmpphy {
	vdda-phy-supply = <&vreg_l3c_1p2>;
	vdda-pll-supply = <&vreg_l5e_0p88>;

	orientation-switch;

	status = "okay";
};

&usb_sec_qmpphy_dp_in {
	remote-endpoint = <&mdss_dp1_out>;
};

&usb_sec_qmpphy_out {
	remote-endpoint = <&pmic_glink_con1_ss>;
};

&usb_sec_role_switch {
	remote-endpoint = <&pmic_glink_con1_hs>;
};

&usb_sec {
	status = "okay";
};

&usb_sec_dwc3 {
	dr_mode = "host";
};

&wifi {
	memory-region = <&wlan_mem>;

	vdd-0.8-cx-mx-supply = <&vreg_l1e_0p75>;
	vdd-1.8-xo-supply = <&vreg_l7a_1p8>;
	vdd-1.3-rfa-supply = <&vreg_l9a_1p3>;
	vdd-3.3-ch0-supply = <&vreg_l11c_3p3>;
	vdd-3.3-ch1-supply = <&vreg_l10c_3p3>;

	status = "okay";
};

&xo_board_clk {
	clock-frequency = <38400000>;
};

/* PINCTRL */

&pmc8180c_gpios {
	bl_pwm_default: bl-pwm-default-state {
		en-pins {
			pins = "gpio8";
			function = "normal";
		};

		pwm-pins {
			pins = "gpio10";
			function = "func1";
		};
	};
};

&tlmm {
	gpio-reserved-ranges = <0 4>, <47 4>, <126 4>;

	edp_hpd_active: epd-hpd-active-state {
		pins = "gpio10";
		function = "edp_hot";
	};

	hall_int_active_state: hall-int-active-state {
		pins = "gpio121";
		function = "gpio";

		bias-disable;
	};

	i2c1_active: i2c1-active-state {
		pins = "gpio114", "gpio115";
		function = "qup1";

		bias-pull-up = <1>;
		drive-strength = <2>;
	};

	i2c1_hid_active: i2c1-hid-active-state {
		pins = "gpio122";
		function = "gpio";

		bias-pull-up;
		drive-strength = <2>;
	};

	i2c7_active: i2c7-active-state {
		pins = "gpio98", "gpio99";
		function = "qup7";

		bias-pull-up;
		drive-strength = <2>;
	};

	i2c7_hid_active: i2c7-hid-active-state {
		pins = "gpio37", "gpio24";
		function = "gpio";

		bias-pull-up;
		drive-strength = <2>;
	};

	pcie3_default_state: pcie3-default-state {
		clkreq-pins {
			pins = "gpio179";
			function = "pci_e3";
			bias-pull-up;
		};

		reset-n-pins {
			pins = "gpio178";
			function = "gpio";

			drive-strength = <2>;
			output-low;
			bias-pull-down;
		};

		wake-n-pins {
			pins = "gpio180";
			function = "gpio";

			drive-strength = <2>;
			bias-pull-up;
		};
	};

	usbprim_sbu_default: usbprim-sbu-state {
		oe-n-pins {
			pins = "gpio152";
			function = "gpio";
			bias-disable;
			drive-strength = <16>;
			output-high;
		};

		sel-pins {
			pins = "gpio100";
			function = "gpio";
			bias-disable;
			drive-strength = <16>;
		};
	};

	usbsec_sbu_default: usbsec-sbu-state {
		oe-n-pins {
			pins = "gpio188";
			function = "gpio";
			bias-disable;
			drive-strength = <16>;
			output-high;
		};

		sel-pins {
			pins = "gpio187";
			function = "gpio";
			bias-disable;
			drive-strength = <16>;
		};
	};

	uart13_state: uart13-state {
		cts-pins {
			pins = "gpio43";
			function = "qup13";
			bias-pull-down;
		};

		rts-tx-pins {
			pins = "gpio44", "gpio45";
			function = "qup13";
			drive-strength = <2>;
			bias-disable;
		};

		rx-pins {
			pins = "gpio46";
			function = "qup13";
			bias-pull-up;
		};
	};
};
