// SPDX-License-Identifier: BSD-3-Clause
/*
 * Xiaomi Mi 6 (sagit) device tree source based on msm8998-mtp.dtsi
 *
 * Copyright (c) 2022, The Linux Foundation. All rights reserved.
 * Copyright (c) 2022, Degdag Mohamed <degdagmohamed@gmail.com>
 * Copyright (c) 2022, Dzmitry Sankouski <dsankouski@gmail.com>
 */

/dts-v1/;

#include "msm8998.dtsi"
#include "pm8005.dtsi"
#include "pm8998.dtsi"
#include "pmi8998.dtsi"
#include <dt-bindings/input/input.h>
#include <dt-bindings/leds/common.h>
#include <dt-bindings/pinctrl/qcom,pmic-gpio.h>

/*
 * Delete following upstream (msm8998.dtsi) reserved
 * memory mappings which are different in this device.
 */
/delete-node/ &adsp_mem;
/delete-node/ &mpss_mem;
/delete-node/ &venus_mem;
/delete-node/ &mba_mem;
/delete-node/ &slpi_mem;
/delete-node/ &ipa_fw_mem;
/delete-node/ &ipa_gsi_mem;
/delete-node/ &gpu_mem;
/delete-node/ &wlan_msa_mem;

/ {
	model = "Xiaomi Mi 6";
	compatible = "xiaomi,sagit", "qcom,msm8998";
	chassis-type = "handset";
	/* Required for bootloader to select correct board */
	qcom,board-id = <30 0>;

	reserved-memory {
		/*
		 * Xiaomi's ADSP firmware requires 30 MiB in total, so increase the adsp_mem
		 * region by 4 MiB to account for this while relocating the other now
		 * conflicting memory nodes accordingly.
		 */
		adsp_mem: memory@8b200000 {
			reg = <0x0 0x8b200000 0x0 0x1e00000>;
			no-map;
		};

		mpss_mem: memory@8d000000 {
			reg = <0x0 0x8d000000 0x0 0x7000000>;
			no-map;
		};

		venus_mem: memory@94000000 {
			reg = <0x0 0x94000000 0x0 0x500000>;
			no-map;
		};

		mba_mem: memory@94500000 {
			reg = <0x0 0x94500000 0x0 0x200000>;
			no-map;
		};

		slpi_mem: memory@94700000 {
			reg = <0x0 0x94700000 0x0 0xf00000>;
			no-map;
		};

		ipa_fw_mem: memory@95600000 {
			reg = <0x0 0x95600000 0x0 0x10000>;
			no-map;
		};

		ipa_gsi_mem: memory@95610000 {
			reg = <0x0 0x95610000 0x0 0x5000>;
			no-map;
		};

		gpu_mem: memory@95615000 {
			reg = <0x0 0x95615000 0x0 0x100000>;
			no-map;
		};

		wlan_msa_mem: memory@95715000 {
			reg = <0x0 0x95715000 0x0 0x100000>;
			no-map;
		};

		/* Bootloader display framebuffer region */
		cont_splash_mem: memory@9d400000 {
			reg = <0x0 0x9d400000 0x0 0x2400000>;
			no-map;
		};

		/* For getting crash logs using Android downstream kernels */
		ramoops@ac000000 {
			compatible = "ramoops";
			reg = <0x0 0xac000000 0x0 0x200000>;
			console-size = <0x80000>;
			pmsg-size = <0x40000>;
			record-size = <0x8000>;
			ftrace-size = <0x20000>;
		};

		/*
		 * The following memory regions on downstream are "dynamically allocated"
		 * but given the same addresses every time. Hard code them as these addresses
		 * are where the Xiaomi signed firmware expects them to be.
		 */
		ipa_fws_region: memory@f7800000 {
			compatible = "shared-dma-pool";
			reg = <0x0 0xf7800000 0x0 0x5000>;
			no-map;
		};

		zap_shader_region: memory@f7900000 {
			compatible = "shared-dma-pool";
			reg = <0x0 0xf7900000 0x0 0x2000>;
			no-map;
		};
	};

	gpio-keys {
		compatible = "gpio-keys";
		label = "Volume buttons";
		autorepeat;

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

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

	gpio-hall-sensor {
		compatible = "gpio-keys";
		label = "Hall effect sensor";

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

		event-hall-sensor {
			label = "Hall Effect Sensor";
			gpios = <&tlmm 124 GPIO_ACTIVE_LOW>;
			linux,input-type = <EV_SW>;
			linux,code = <SW_LID>;
			linux,can-disable;
			wakeup-source;
		};
	};

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

	disp_vddts_vreg: disp-vddts-regulator {
		compatible = "regulator-fixed";
		regulator-name = "disp-vddts-regulator";
		gpio = <&tlmm 50 GPIO_ACTIVE_HIGH>;
		enable-active-high;
		regulator-boot-on;
	};
};

&blsp1_i2c5 {
	pinctrl-names = "default", "sleep";
	status = "okay";

	touchscreen@20 {
		compatible = "syna,rmi4-i2c";
		reg = <0x20>;
		#address-cells = <1>;
		#size-cells = <0>;

		interrupt-parent = <&tlmm>;
		interrupts = <125 IRQ_TYPE_EDGE_FALLING>;

		pinctrl-names = "default", "sleep";
		pinctrl-0 = <&ts_active_state>;
		pinctrl-1 = <&ts_int_suspend_state &ts_reset_suspend_state>;

		vdd-supply = <&disp_vddts_vreg>;
		vio-supply = <&vreg_l6a_1p8>;

		syna,reset-delay-ms = <20>;
		syna,startup-delay-ms = <20>;

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

		rmi4-f12@12 {
			reg = <0x12>;
			touchscreen-x-mm = <64>;
			touchscreen-y-mm = <114>;
			syna,sensor-type = <1>;
			syna,rezero-wait-ms = <20>;
		};

		rmi4-f1a@1a {
			reg = <0x1a>;
			syna,codes = <KEY_BACK KEY_APPSELECT>;
		};
	};
};

&blsp1_i2c5_sleep {
	/delete-property/ bias-pull-up;
	bias-disable;
};

&blsp1_uart3 {
	status = "okay";

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

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

&blsp1_uart3_on {
	rx-pins {
		/delete-property/ bias-disable;
		/*
		 * Configure a pull-up on 46 (RX). This is needed to
		 * avoid garbage data when the TX pin of the Bluetooth
		 * module is in tri-state (module powered off or not
		 * driving the signal yet).
		 */
		bias-pull-up;
	};

	cts-pins {
		/delete-property/ bias-disable;
		/*
		 * Configure a pull-down on 47 (CTS) to match the pull
		 * of the Bluetooth module.
		 */
		bias-pull-down;
	};
};

&blsp2_uart1 {
	status = "okay";
};

&pm8005_regulators {
	compatible = "qcom,pm8005-regulators";

	vdd_s1-supply = <&vph_pwr>;

	pm8005_s1: s1 { /* VDD_GFX supply */
		regulator-min-microvolt = <524000>;
		regulator-max-microvolt = <1100000>;
		regulator-enable-ramp-delay = <500>;

		/* hack until we rig up the gpu consumer */
		regulator-always-on;
	};
};

&pm8998_gpio {
	vol_up_key_default: vol-up-key-default-state {
		pins = "gpio6";
		function = "normal";
		bias-pull-up;
		input-enable;
		qcom,drive-strength = <PMIC_GPIO_STRENGTH_NO>;
	};

	audio_mclk_pin: audio-mclk-pin-active-state {
		pins = "gpio13";
		function = "func2";
		power-source = <0>;
	};
};

&qusb2phy {
	vdd-supply = <&vreg_l1a_0p875>;
	vdda-pll-supply = <&vreg_l12a_1p8>;
	vdda-phy-dpdm-supply = <&vreg_l24a_3p075>;
	status = "okay";
};

&rpm_requests {
	regulators-0 {
		compatible = "qcom,rpm-pm8998-regulators";

		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>;
		vdd_s7-supply = <&vph_pwr>;
		vdd_s8-supply = <&vph_pwr>;
		vdd_s9-supply = <&vph_pwr>;
		vdd_s10-supply = <&vph_pwr>;
		vdd_s11-supply = <&vph_pwr>;
		vdd_s12-supply = <&vph_pwr>;
		vdd_s13-supply = <&vph_pwr>;
		vdd_l1_l27-supply = <&vreg_s7a_1p025>;
		vdd_l2_l8_l17-supply = <&vreg_s3a_1p35>;
		vdd_l3_l11-supply = <&vreg_s7a_1p025>;
		vdd_l4_l5-supply = <&vreg_s7a_1p025>;
		vdd_l6-supply = <&vreg_s5a_2p04>;
		vdd_l7_l12_l14_l15-supply = <&vreg_s5a_2p04>;
		vdd_l9-supply = <&vreg_bob>;
		vdd_l10_l23_l25-supply = <&vreg_bob>;
		vdd_l13_l19_l21-supply = <&vreg_bob>;
		vdd_l16_l28-supply = <&vreg_bob>;
		vdd_l18_l22-supply = <&vreg_bob>;
		vdd_l20_l24-supply = <&vreg_bob>;
		vdd_l26-supply = <&vreg_s3a_1p35>;
		vdd_lvs1_lvs2-supply = <&vreg_s4a_1p8>;

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

		vreg_s4a_1p8: s4 {
			regulator-min-microvolt = <1800000>;
			regulator-max-microvolt = <1800000>;
			regulator-allow-set-load;
		};

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

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

		vreg_l1a_0p875: l1 {
			regulator-min-microvolt = <880000>;
			regulator-max-microvolt = <880000>;
		};

		vreg_l2a_1p2: l2 {
			regulator-min-microvolt = <1200000>;
			regulator-max-microvolt = <1200000>;
		};

		vreg_l3a_1p0: l3 {
			regulator-min-microvolt = <1000000>;
			regulator-max-microvolt = <1000000>;
		};

		vreg_l5a_0p8: l5 {
			regulator-min-microvolt = <800000>;
			regulator-max-microvolt = <800000>;
		};

		vreg_l6a_1p8: l6 {
			regulator-min-microvolt = <1800000>;
			regulator-max-microvolt = <1800000>;
		};

		vreg_l7a_1p8: l7 {
			regulator-min-microvolt = <1800000>;
			regulator-max-microvolt = <1800000>;
		};

		vreg_l8a_1p2: l8 {
			regulator-min-microvolt = <1200000>;
			regulator-max-microvolt = <1200000>;
		};

		vreg_l9a_1p8: l9 {
			regulator-min-microvolt = <1808000>;
			regulator-max-microvolt = <2960000>;
		};

		vreg_l10a_1p8: l10 {
			regulator-min-microvolt = <1808000>;
			regulator-max-microvolt = <2960000>;
		};

		vreg_l11a_1p0: l11 {
			regulator-min-microvolt = <1000000>;
			regulator-max-microvolt = <1000000>;
		};

		vreg_l12a_1p8: l12 {
			regulator-min-microvolt = <1800000>;
			regulator-max-microvolt = <1800000>;
		};

		vreg_l13a_2p95: l13 {
			regulator-min-microvolt = <1808000>;
			regulator-max-microvolt = <2960000>;
		};

		vreg_l14a_1p8: l14 {
			regulator-min-microvolt = <1800000>;
			regulator-max-microvolt = <1800000>;
		};

		vreg_l15a_1p8: l15 {
			regulator-min-microvolt = <1800000>;
			regulator-max-microvolt = <1800000>;
		};

		vreg_l16a_2p7: l16 {
			regulator-min-microvolt = <2704000>;
			regulator-max-microvolt = <2704000>;
		};

		vreg_l17a_1p3: l17 {
			regulator-min-microvolt = <1304000>;
			regulator-max-microvolt = <1304000>;
		};

		vreg_l18a_2p7: l18 {
			regulator-min-microvolt = <2704000>;
			regulator-max-microvolt = <2704000>;
		};

		vreg_l19a_3p0: l19 {
			regulator-min-microvolt = <3008000>;
			regulator-max-microvolt = <3008000>;
		};

		vreg_l20a_2p95: l20 {
			regulator-min-microvolt = <2960000>;
			regulator-max-microvolt = <2960000>;
			regulator-allow-set-load;
		};

		vreg_l21a_2p95: l21 {
			regulator-min-microvolt = <2960000>;
			regulator-max-microvolt = <2960000>;
			regulator-system-load = <800000>;
			regulator-allow-set-load;
		};

		vreg_l22a_2p85: l22 {
			regulator-min-microvolt = <2864000>;
			regulator-max-microvolt = <2864000>;
		};

		vreg_l23a_3p3: l23 {
			regulator-min-microvolt = <3312000>;
			regulator-max-microvolt = <3312000>;
		};

		vreg_l24a_3p075: l24 {
			regulator-min-microvolt = <3088000>;
			regulator-max-microvolt = <3088000>;
		};

		vreg_l25a_3p3: l25 {
			regulator-min-microvolt = <3104000>;
			regulator-max-microvolt = <3312000>;
		};

		vreg_l26a_1p2: l26 {
			regulator-min-microvolt = <1200000>;
			regulator-max-microvolt = <1200000>;
			regulator-allow-set-load;
		};

		vreg_l28_3p0: l28 {
			regulator-min-microvolt = <3008000>;
			regulator-max-microvolt = <3008000>;
		};

		vreg_lvs1a_1p8: lvs1 { };

		vreg_lvs2a_1p8: lvs2 { };
	};

	regulators-1 {
		compatible = "qcom,rpm-pmi8998-regulators";

		vdd_bob-supply = <&vph_pwr>;

		vreg_bob: bob {
			regulator-min-microvolt = <3312000>;
			regulator-max-microvolt = <3600000>;
		};
	};
};

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

	cci1_default_state: cci1-default-state {
		pins = "gpio19", "gpio20";
		function = "cci_i2c";
		bias-disable;
		drive-strength = <2>;
	};

	cdc_reset_n_state: cdc-reset-n-state {
		pins = "gpio64";
		function = "gpio";
		bias-pull-down;
		drive-strength = <16>;
		output-high;
	};

	hall_sensor_default_state: hall-sensor-default-state {
		pins = "gpio124";
		function = "gpio";
		drive-strength = <2>;
		bias-disable;
		input-enable;
	};

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

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

	mdss_te_active_state: mdss-te-active-state {
		pins = "gpio10";
		function = "mdp_vsync_a";
		drive-strength = <2>;
		bias-pull-down;
	};

	mdss_te_suspend_state: mdss-te-suspend-state {
		pins = "gpio10";
		function = "mdp_vsync_a";
		drive-strength = <2>;
		bias-pull-down;
	};

	msm_mclk0_active_state: msm-mclk0-active-state {
		pins = "gpio13";
		function = "cam_mclk";
		drive-strength = <2>;
		bias-disable;
	};

	msm_mclk0_suspend_state: msm-mclk0-suspend-state {
		pins = "gpio13";
		function = "cam_mclk";
		drive-strength = <2>;
		bias-pull-down;
	};

	msm_mclk1_active_state: msm-mclk1-active-state {
		pins = "gpio14";
		function = "cam_mclk";
		drive-strength = <2>;
		bias-disable;
	};

	msm_mclk1_suspend_state: msm-mclk1-suspend-state {
		pins = "gpio14";
		function = "cam_mclk";
		drive-strength = <2>;
		bias-pull-down;
	};

	nfc_int_active_state: nfc-int-active-state {
		pins = "gpio92";
		function = "gpio";
		drive-strength = <6>;
		bias-pull-up;
	};

	nfc_int_suspend_state: nfc-int-suspend-state {
		pins = "gpio92";
		function = "gpio";
		drive-strength = <6>;
		bias-pull-up;
	};

	nfc_enable_active_state: nfc-enable-active-state {
		pins = "gpio12", "gpio116";
		function = "gpio";
		drive-strength = <6>;
		bias-pull-up;
	};

	nfc_enable_suspend_state: nfc-enable-suspend-state {
		pins = "gpio12", "gpio116";
		function = "gpio";
		drive-strength = <6>;
		bias-disable;
	};

	ts_active_state: ts-active-state {
		pins = "gpio89", "gpio125";
		function = "gpio";
		drive-strength = <16>;
		bias-pull-up;
		input-enable;
	};

	ts_int_suspend_state: ts-int-suspend-state {
		pins = "gpio125";
		function = "gpio";
		drive-strength = <2>;
		bias-disable;
	};

	ts_reset_suspend_state: ts-reset-suspend-state {
		pins = "gpio89";
		function = "gpio";
		drive-strength = <2>;
		bias-disable;
	};

	wcd_int_n_state: wcd-int-n-state {
		pins = "gpio54";
		function = "gpio";
		bias-pull-down;
		drive-strength = <2>;
		input-enable;
	};

	wsa_leftspk_pwr_n_state: wsa-leftspk-pwr-n-state {
		pins = "gpio65";
		function = "gpio";
		bias-disable;
		drive-strength = <2>;
		output-low;
	};

	wsa_rightspk_pwr_n_state: wsa-rightspk-pwr-n-state {
		pins = "gpio66";
		function = "gpio";
		bias-disable;
		drive-strength = <2>;
		output-low;
	};
};

&pm8998_resin {
	linux,code = <KEY_VOLUMEDOWN>;
	status = "okay";
};

&ufshc {
	vcc-supply = <&vreg_l20a_2p95>;
	vccq-supply = <&vreg_l26a_1p2>;
	vccq2-supply = <&vreg_s4a_1p8>;
	vcc-max-microamp = <750000>;
	vccq-max-microamp = <560000>;
	vccq2-max-microamp = <750000>;
	status = "okay";
};

&ufsphy {
	vdda-phy-supply = <&vreg_l1a_0p875>;
	vdda-pll-supply = <&vreg_l2a_1p2>;
	vddp-ref-clk-supply = <&vreg_l26a_1p2>;
	status = "okay";
};

&usb3 {
	/* Disable USB3 clock requirement as the device only supports USB2 */
	qcom,select-utmi-as-pipe-clk;
	status = "okay";
};

&usb3_dwc3 {
	/* Drop the unused USB 3 PHY */
	phys = <&qusb2phy>;
	phy-names = "usb2-phy";

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

	/* Force to peripheral until we can switch modes */
	dr_mode = "peripheral";
};

&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>;
	status = "okay";
};
