// SPDX-License-Identifier: BSD-3-Clause
/*
 * Copyright (c) 2020, Xilin Wu <strongtz@yeah.net>
 * Copyright (c) 2022, Molly Sophia <mollysophia379@gmail.com>
 */

/dts-v1/;

#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/pinctrl/qcom,pmic-gpio.h>
#include <dt-bindings/regulator/qcom,rpmh-regulator.h>
#include <dt-bindings/input/linux-event-codes.h>
#include <dt-bindings/sound/qcom,q6afe.h>
#include <dt-bindings/sound/qcom,q6asm.h>
#include "sdm845.dtsi"
#include "pm8998.dtsi"
#include "pmi8998.dtsi"
#include "pm8005.dtsi"

/*
 * Delete following upstream (sdm845.dtsi) reserved
 * memory mappings which are different in this device.
 */
/delete-node/ &rmtfs_mem;
/delete-node/ &adsp_mem;
/delete-node/ &wlan_msa_mem;
/delete-node/ &mpss_region;
/delete-node/ &venus_mem;
/delete-node/ &cdsp_mem;
/delete-node/ &mba_region;
/delete-node/ &slpi_mem;
/delete-node/ &spss_mem;

/ {
	model = "Xiaomi Mi MIX 2S";
	compatible = "xiaomi,polaris", "qcom,sdm845";
	chassis-type = "handset";

	/* required for bootloader to select correct board */
	qcom,msm-id = <0x141 0x20001>;
	qcom,board-id = <0x2a 0x0>;

	aliases {
		serial0 = &uart9;
		serial1 = &uart6;
	};

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

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

		key-vol-up {
			label = "Volume Up";
			linux,code = <KEY_VOLUMEUP>;
			gpios = <&pm8998_gpio 6 GPIO_ACTIVE_LOW>;
			debounce-interval = <15>;
		};
	};

	reserved-memory {
		adsp_mem: memory@8c500000 {
			reg = <0 0x8c500000 0 0x1e00000>;
			no-map;
		};

		wlan_msa_mem: memory@8e300000 {
			reg = <0 0x8e300000 0 0x100000>;
			no-map;
		};

		mpss_region: memory@8e400000 {
			reg = <0 0x8e400000 0 0x7800000>;
			no-map;
		};

		venus_mem: memory@95c00000 {
			reg = <0 0x95c00000 0 0x500000>;
			no-map;
		};

		cdsp_mem: memory@96100000 {
			reg = <0 0x96100000 0 0x800000>;
			no-map;
		};

		mba_region: memory@96900000 {
			reg = <0 0x96900000 0 0x200000>;
			no-map;
		};

		slpi_mem: memory@96b00000 {
			reg = <0 0x96b00000 0 0x1400000>;
			no-map;
		};

		spss_mem: memory@97f00000 {
			reg = <0 0x97f00000 0 0x100000>;
			no-map;
		};

		rmtfs_mem: memory@f6301000 {
			compatible = "qcom,rmtfs-mem";
			reg = <0 0xf6301000 0 0x200000>;
			no-map;

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

	battery: battery {
		compatible = "simple-battery";

		charge-full-design-microamp-hours = <3400000>;
		voltage-min-design-microvolt = <3400000>;
		voltage-max-design-microvolt = <4400000>;
	};

	vreg_tp_vddio: vreg-tp-vddio {
		compatible = "regulator-fixed";
		regulator-name = "vreg_tp_vddio";

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

		gpio = <&tlmm 23 GPIO_ACTIVE_HIGH>;
		regulator-always-on;
		regulator-boot-on;
		enable-active-high;
	};

	vreg_s4a_1p8: vreg-s4a-1p8 {
		compatible = "regulator-fixed";
		regulator-name = "vreg_s4a_1p8";

		regulator-min-microvolt = <1800000>;
		regulator-max-microvolt = <1800000>;
		regulator-always-on;
	};
};

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

		vreg_s2a_1p1: smps2 {
			regulator-min-microvolt = <1100000>;
			regulator-max-microvolt = <1100000>;
		};

		vreg_s3a_1p35: smps3 {
			regulator-min-microvolt = <1352000>;
			regulator-max-microvolt = <1352000>;
		};

		vreg_s5a_2p04: smps5 {
			regulator-min-microvolt = <1904000>;
			regulator-max-microvolt = <2040000>;
		};

		vreg_s7a_1p025: smps7 {
			regulator-min-microvolt = <900000>;
			regulator-max-microvolt = <1028000>;
		};

		vdda_mipi_dsi0_pll:
		vdda_ufs1_core:
		vreg_l1a_0p875: ldo1 {
			regulator-min-microvolt = <880000>;
			regulator-max-microvolt = <880000>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
		};

		vreg_l2a_1p2: ldo2 {
			regulator-min-microvolt = <1200000>;
			regulator-max-microvolt = <1200000>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
			regulator-always-on;
		};

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

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

		vreg_l6a_1p8: ldo6 {
			regulator-min-microvolt = <1856000>;
			regulator-max-microvolt = <1856000>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
		};

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

		vreg_l8a_1p2: ldo8 {
			regulator-min-microvolt = <1200000>;
			regulator-max-microvolt = <1248000>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
		};

		vreg_l9a_1p8: ldo9 {
			regulator-min-microvolt = <1704000>;
			regulator-max-microvolt = <2928000>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
		};

		vreg_l10a_2p95: ldo10 {
			regulator-min-microvolt = <1704000>;
			regulator-max-microvolt = <2928000>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
		};

		vreg_l11a_1p05: ldo11 {
			regulator-min-microvolt = <1000000>;
			regulator-max-microvolt = <1048000>;
			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>;
		};

		vreg_l13a_2p95: ldo13 {
			regulator-min-microvolt = <1800000>;
			regulator-max-microvolt = <2960000>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
		};

		vreg_l14a_1p8: ldo14 {
			regulator-min-microvolt = <1800000>;
			regulator-max-microvolt = <1880000>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
			regulator-always-on;
		};

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

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

		vreg_l17a_1p3: ldo17 {
			regulator-min-microvolt = <1304000>;
			regulator-max-microvolt = <1304000>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
			regulator-always-on;
		};

		vreg_l18a_2p9: ldo18 {
			regulator-min-microvolt = <2704000>;
			regulator-max-microvolt = <2960000>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
		};

		vreg_l19a_3p1: ldo19 {
			regulator-min-microvolt = <2856000>;
			regulator-max-microvolt = <3104000>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
		};

		vreg_l20a_2p95: ldo20 {
			regulator-min-microvolt = <2704000>;
			regulator-max-microvolt = <2960000>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
		};

		vreg_l21a_2p95: ldo21 {
			regulator-min-microvolt = <2704000>;
			regulator-max-microvolt = <2960000>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
		};

		vreg_l22a_3p3: ldo22 {
			regulator-min-microvolt = <2864000>;
			regulator-max-microvolt = <3312000>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
		};

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

		vreg_l24a_3p075: ldo24 {
			regulator-min-microvolt = <3088000>;
			regulator-max-microvolt = <3088000>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
		};

		vreg_l25a_3p3: ldo25 {
			regulator-min-microvolt = <3000000>;
			regulator-max-microvolt = <3312000>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
			regulator-always-on;
		};

		vdda_mipi_dsi0_1p2:
		vdda_ufs1_1p2:
		vreg_l26a_1p2: ldo26 {
			regulator-min-microvolt = <1200000>;
			regulator-max-microvolt = <1200000>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
		};

		vreg_l28a_3p0: ldo28 {
			regulator-min-microvolt = <2856000>;
			regulator-max-microvolt = <3008000>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
			regulator-always-on;
		};

		vreg_lvs1a_1p8: lvs1 {
			regulator-min-microvolt = <1800000>;
			regulator-max-microvolt = <1800000>;
		};

		vreg_lvs2a_1p8: lvs2 {
			regulator-min-microvolt = <1800000>;
			regulator-max-microvolt = <1800000>;
		};
	};

	pmi8998-rpmh-regulators {
		compatible = "qcom,pmi8998-rpmh-regulators";
		qcom,pmic-id = "b";

		vreg_bob: bob {
			regulator-min-microvolt = <3312000>;
			regulator-max-microvolt = <3600000>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_AUTO>;
			regulator-allow-bypass;
		};
	};

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

		vreg_smp3c_0p6: smps3 {
			regulator-min-microvolt = <600000>;
			regulator-max-microvolt = <600000>;
			regulator-always-on;
		};
	};
};

&cdsp_pas {
	firmware-name = "qcom/sdm845/polaris/cdsp.mbn";
	status = "okay";
};

&dsi0 {
	vdda-supply = <&vdda_mipi_dsi0_1p2>;
	status = "okay";

	display_panel: panel@0 {
		compatible = "jdi,fhd-nt35596s";
		#address-cells = <1>;
		#size-cells = <0>;
		reg = <0>;

		reset-gpios = <&tlmm 6 GPIO_ACTIVE_LOW>;
		vddio-supply = <&vreg_l14a_1p8>;
		backlight = <&pmi8998_wled>;
		vddpos-supply = <&lab>;
		vddneg-supply = <&ibb>;

		pinctrl-names = "default", "sleep";
		pinctrl-0 = <&sde_dsi_active>;
		pinctrl-1 = <&sde_dsi_suspend>;

		port {
			panel_in: endpoint {
				remote-endpoint = <&dsi0_out>;
			};
		};
	};
};

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

&dsi0_phy {
	vdds-supply = <&vdda_mipi_dsi0_pll>;
	status = "okay";
};

&gcc {
	protected-clocks = <GCC_QSPI_CORE_CLK>,
				<GCC_QSPI_CORE_CLK_SRC>,
				<GCC_QSPI_CNOC_PERIPH_AHB_CLK>,
				<GCC_LPASS_Q6_AXI_CLK>,
				<GCC_LPASS_SWAY_CLK>;
};

&gmu {
	status = "okay";
};

&gpi_dma0 {
	status = "okay";
};

&gpi_dma1 {
	status = "okay";
};

&gpu {
	status = "okay";

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

&ibb {
	regulator-min-microvolt = <4600000>;
	regulator-max-microvolt = <6000000>;
	regulator-over-current-protection;
	regulator-pull-down;
	regulator-soft-start;
	qcom,discharge-resistor-kohms = <300>;
};

&ipa {
	memory-region = <&ipa_fw_mem>;
	firmware-name = "qcom/sdm845/polaris/ipa_fws.mbn";
	status = "okay";
};

&i2c14 {
	clock-frequency = <400000>;
	status = "okay";

	touchscreen@20 {
		compatible = "syna,rmi4-i2c";
		reg = <0x20>;
		#address-cells = <1>;
		#size-cells = <0>;
		interrupts-extended = <&tlmm 125 0x2008>;

		pinctrl-names = "default", "sleep";
		pinctrl-0 = <&ts_int_default &ts_reset_default>;
		pinctrl-1 = <&ts_int_sleep &ts_reset_sleep>;

		vdd-supply = <&vreg_l28a_3p0>;
		vio-supply = <&vreg_tp_vddio>;

		syna,startup-delay-ms = <0xc8>;
		syna,reset-delay-ms = <0xc8>;

		rmi4-f01@1 {
			syna,nosleep-mode = <0x1>;
			reg = <0x1>;
		};

		rmi4-f12@12 {
			syna,rezero-wait-ms = <0xc8>;
			syna,clip-x-high = <0x438>;
			syna,clip-y-high = <0x870>;
			syna,sensor-type = <0x1>;
			syna,clip-x-low = <0x0>;
			syna,clip-y-low = <0x0>;
		};
	};
};

&lab {
	regulator-min-microvolt = <4600000>;
	regulator-max-microvolt = <6000000>;
	regulator-soft-start;
	regulator-pull-down;
};

&mdss {
	status = "okay";
};

&mss_pil {
	firmware-name = "qcom/sdm845/polaris/mba.mbn", "qcom/sdm845/polaris/modem.mbn";
	status = "okay";
};

&pmi8998_wled {
	qcom,current-limit-microamp = <20000>;
	qcom,current-boost-limit = <970>;
	qcom,ovp-millivolt = <19600>;
	qcom,switching-freq = <600>;
	qcom,num-strings = <4>;
	qcom,cabc;

	status = "okay";
};

&pm8998_gpio {
	volume_up_gpio: pm8998-gpio6-state {
		pinconf {
			qcom,drive-strength = <PMIC_GPIO_STRENGTH_NO>;
			function = "normal";
			pins = "gpio6";
			input-enable;
			bias-pull-up;
		};
	};
};

&pm8998_pon {
	resin {
		interrupts = <0x0 0x8 1 IRQ_TYPE_EDGE_BOTH>;
		compatible = "qcom,pm8941-resin";
		linux,code = <KEY_VOLUMEDOWN>;
		debounce = <15625>;
		bias-pull-up;
	};
};

&q6afedai {
	dai@22 {
		reg = <QUATERNARY_MI2S_RX>;
		qcom,sd-lines = <0>;
	};
};

&q6asmdai {
	dai@0 {
		reg = <0>;
	};

	dai@1 {
		reg = <1>;
	};

	dai@2 {
		reg = <2>;
	};
};

&qupv3_id_0 {
	status = "okay";
};

&qupv3_id_1 {
	status = "okay";
};

&qup_i2c14_default {
	pinconf {
		pins = "gpio33", "gpio34";
		drive-strength = <2>;
		bias-disable;
	};
};

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

	ts_reset_default: ts-reset-default {
		pins = "gpio99";
		function = "gpio";
		drive-strength = <16>;
		output-high;
	};

	ts_int_default: ts-int-default {
		pins = "gpio125";
		function = "gpio";
		bias-pull-down;
		drive-strength = <16>;
		input-enable;
	};

	ts_reset_sleep: ts-reset-sleep {
		pins = "gpio99";
		function = "gpio";
		bias-disable;
		drive-strength = <2>;
	};

	ts_int_sleep: ts-int-sleep {
		pins = "gpio125";
		function = "gpio";
		bias-pull-down;
		drive-strength = <2>;
		input-enable;
	};

	sde_dsi_active: sde-dsi-active {
		pins = "gpio6", "gpio10";
		function = "gpio";
		drive-strength = <8>;
		bias-disable;
	};

	sde_dsi_suspend: sde-dsi-suspend {
		pins = "gpio6", "gpio10";
		function = "gpio";
		drive-strength = <2>;
		bias-pull-down;
	};

	wcd_intr_default: wcd-intr-default {
		pins = "gpio54";
		function = "gpio";
		input-enable;
		bias-pull-down;
		drive-strength = <2>;
	};
};

&uart6 {
	status = "okay";

	pinctrl-0 = <&qup_uart6_4pin>;

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

		/* This path is relative to the qca/ subdir under lib/firmware. */
		firmware-name = "polaris/crnv21.bin";

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

&usb_1 {
	/* We'll use this as USB 2.0 only */
	qcom,select-utmi-as-pipe-clk;
	status = "okay";
};

&usb_1_dwc3 {
	dr_mode = "peripheral";

	/* Fastest mode for USB 2 */
	maximum-speed = "high-speed";

	/* Remove USB3 phy */
	phys = <&usb_1_hsphy>;
	phy-names = "usb2-phy";
};

&usb_1_hsphy {
	vdda-phy-dpdm-supply = <&vreg_l24a_3p075>;
	vdda-pll-supply = <&vreg_l12a_1p8>;
	vdd-supply = <&vreg_l1a_0p875>;

	qcom,preemphasis-width = <QUSB2_V2_PREEMPHASIS_WIDTH_HALF_BIT>;
	qcom,preemphasis-level = <QUSB2_V2_PREEMPHASIS_5_PERCENT>;
	qcom,hstx-trim-value = <QUSB2_V2_HSTX_TRIM_21_6_MA>;
	qcom,imp-res-offset-value = <8>;

	status = "okay";
};

&usb_1_qmpphy {
	vdda-pll-supply = <&vreg_l1a_0p875>;
	vdda-phy-supply = <&vreg_l26a_1p2>;
	status = "okay";
};

&ufs_mem_hc {
	reset-gpios = <&tlmm 150 GPIO_ACTIVE_LOW>;
	vcc-supply = <&vreg_l20a_2p95>;
	vcc-max-microamp = <800000>;
	status = "okay";
};

&ufs_mem_phy {
	vdda-phy-supply = <&vdda_ufs1_core>;
	vdda-pll-supply = <&vdda_ufs1_1p2>;
	status = "okay";
};

&venus {
	firmware-name = "qcom/sdm845/polaris/venus.mbn";
	status = "okay";
};

&wcd9340 {
	pinctrl-0 = <&wcd_intr_default>;
	pinctrl-names = "default";
	clock-names = "extclk";
	clocks = <&rpmhcc RPMH_LN_BB_CLK2>;
	reset-gpios = <&tlmm 64 GPIO_ACTIVE_HIGH>;
	vdd-buck-sido-supply = <&vreg_s4a_1p8>;
	vdd-buck-supply = <&vreg_s4a_1p8>;
	vdd-tx-supply = <&vreg_s4a_1p8>;
	vdd-rx-supply = <&vreg_s4a_1p8>;
	vdd-io-supply = <&vreg_s4a_1p8>;

	qcom,micbias1-microvolt = <2700000>;
	qcom,micbias2-microvolt = <1800000>;
	qcom,micbias3-microvolt = <2700000>;
	qcom,micbias4-microvolt = <2700000>;
};

&wifi {
	vdd-0.8-cx-mx-supply = <&vreg_l5a_0p8>;
	vdd-1.8-xo-supply = <&vreg_l7a_1p8>;
	vdd-1.3-rfa-supply = <&vreg_l17a_1p3>;
	vdd-3.3-ch0-supply = <&vreg_l25a_3p3>;
	vdd-3.3-ch1-supply = <&vreg_l23a_3p3>;

	qcom,snoc-host-cap-skip-quirk;
	status = "okay";
};
