// SPDX-License-Identifier: BSD-3-Clause
/*
 * Copyright (c) 2022, Danila Tikhonov <JIaxyga@protonmail.com>
 * Copyright (c) 2022, Anton Bambura <jenneron@protonmail.com>
 */
/dts-v1/;

#include "msm8953.dtsi"
#include "pm8953.dtsi"
#include "pmi8950.dtsi"
#include <dt-bindings/leds/common.h>

/delete-node/ &adsp_fw_mem;
/delete-node/ &qseecom_mem;
/delete-node/ &wcnss_fw_mem;

/ {
	model = "Xiaomi Mi A1";
	compatible = "xiaomi,tissot", "qcom,msm8953";
	chassis-type = "handset";
	qcom,msm-id = <293 0>;
	qcom,board-id = <0x1000b 0x00>;

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

		pinctrl-names = "default";
		pinctrl-0 = <&gpio_key_default>, <&gpio_hall_sensor_default>;

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

		key-volume-up {
			label = "Volume Up";
			gpios = <&tlmm 85 GPIO_ACTIVE_LOW>;
			linux,code = <KEY_VOLUMEUP>;
		};
	};

	reserved-memory {
		qseecom_mem: qseecom@84a00000 {
			reg = <0x0 0x84a00000 0x0 0x1900000>;
			no-map;
		};

		adsp_fw_mem: adsp@8d600000 {
			reg = <0x0 0x8d600000 0x0 0x1200000>;
			no-map;
		};

		wcnss_fw_mem: wcnss@8e800000 {
			reg = <0x0 0x8e800000 0x0 0x700000>;
			no-map;
		};

		ramoops@9ff00000 {
			compatible = "ramoops";
			reg = <0x0 0x9ff00000 0x0 0x00100000>;
			record-size = <0x1000>;
			console-size = <0x80000>;
			ftrace-size = <0x1000>;
			pmsg-size = <0x8000>;
		};
	};

	vph_pwr: vph-pwr-regulator {
		compatible = "regulator-fixed";
		regulator-name = "vph_pwr";
		regulator-always-on;
		regulator-boot-on;
	};
};

&hsusb_phy {
	vdd-supply = <&pm8953_l3>;
	vdda-pll-supply = <&pm8953_l7>;
	vdda-phy-dpdm-supply = <&pm8953_l13>;

	status = "okay";
};

&i2c_2 {
	status = "okay";

	max98927_codec: audio-codec@3a {
		compatible = "maxim,max98927";
		reg = <0x3a>;

		reset-gpios = <&tlmm 86 GPIO_ACTIVE_LOW>;

		vmon-slot-no = <1>;
		imon-slot-no = <1>;

		#sound-dai-cells = <0>;
	};

	led-controller@45 {
		compatible = "awinic,aw2013";
		reg = <0x45>;

		vcc-supply = <&pm8953_l10>;

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

		led@0 {
			reg = <0>;
			led-max-microamp = <5000>;
			function = LED_FUNCTION_INDICATOR;
			color = <LED_COLOR_ID_WHITE>;
		};
	};
};

&i2c_3 {
	status = "okay";

	touchscreen@38 {
		compatible = "edt,edt-ft5406";
		reg = <0x38>;

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

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

		reset-gpios = <&tlmm 64 GPIO_ACTIVE_LOW>;

		vcc-supply = <&pm8953_l10>;

		touchscreen-size-x = <1080>;
		touchscreen-size-y = <1920>;
	};
};

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

&pmi8950_wled {
	qcom,num-strings = <2>;
	qcom,external-pfet;
	qcom,cabc;

	status = "okay";
};

&rpm_requests {
	regulators {
		compatible = "qcom,rpm-pm8953-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_l1-supply = <&pm8953_s3>;
		vdd_l2_l3-supply = <&pm8953_s3>;
		vdd_l4_l5_l6_l7_l16_l19-supply = <&pm8953_s4>;
		vdd_l8_l11_l12_l13_l14_l15-supply = <&vph_pwr>;
		vdd_l9_l10_l17_l18_l22-supply = <&vph_pwr>;

		pm8953_s1: s1 {
			regulator-min-microvolt = <870000>;
			regulator-max-microvolt = <1156000>;
		};

		pm8953_s3: s3 {
			regulator-min-microvolt = <1224000>;
			regulator-max-microvolt = <1224000>;
		};

		pm8953_s4: s4 {
			regulator-min-microvolt = <1900000>;
			regulator-max-microvolt = <2050000>;
		};

		pm8953_l1: l1 {
			regulator-min-microvolt = <1000000>;
			regulator-max-microvolt = <1000000>;
		};

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

		pm8953_l3: l3 {
			regulator-min-microvolt = <925000>;
			regulator-max-microvolt = <925000>;
		};

		pm8953_l5: l5 {
			regulator-min-microvolt = <1800000>;
			regulator-max-microvolt = <1800000>;
		};

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

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

		pm8953_l8: l8 {
			regulator-min-microvolt = <2900000>;
			regulator-max-microvolt = <2900000>;
		};

		pm8953_l9: l9 {
			regulator-min-microvolt = <3300000>;
			regulator-max-microvolt = <3300000>;
		};

		pm8953_l10:l10 {
			regulator-min-microvolt = <2850000>;
			regulator-max-microvolt = <2850000>;
		};

		pm8953_l11: l11 {
			regulator-min-microvolt = <2950000>;
			regulator-max-microvolt = <2950000>;
		};

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

		pm8953_l13: l13 {
			regulator-min-microvolt = <3125000>;
			regulator-max-microvolt = <3125000>;
		};

		pm8953_l16: l16 {
			regulator-min-microvolt = <1800000>;
			regulator-max-microvolt = <1800000>;
		};

		pm8953_l17: l17 {
			regulator-min-microvolt = <2750000>;
			regulator-max-microvolt = <2850000>;
		};

		pm8953_l19: l19 {
			regulator-min-microvolt = <1200000>;
			regulator-max-microvolt = <1350000>;
		};

		pm8953_l22: l22 {
			regulator-min-microvolt = <2800000>;
			regulator-max-microvolt = <2800000>;
		};

		pm8953_l23: l23 {
			regulator-min-microvolt = <1200000>;
			regulator-max-microvolt = <1225000>;
		};
	};
};

&sdhc_1 {
	vmmc-supply = <&pm8953_l8>;
	vqmmc-supply = <&pm8953_l5>;

	status = "okay";
};

&sdhc_2 {
	vmmc-supply = <&pm8953_l11>;
	vqmmc-supply = <&pm8953_l12>;

	cd-gpios = <&tlmm 133 GPIO_ACTIVE_HIGH>;

	pinctrl-names = "default", "sleep";
	pinctrl-0 = <&sdc2_clk_on &sdc2_cmd_on &sdc2_data_on &sdc2_cd_on>;
	pinctrl-1 = <&sdc2_clk_off &sdc2_cmd_off &sdc2_data_off &sdc2_cd_off>;

	status = "okay";
};

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

	gpio_hall_sensor_default: gpio-hall-sensor-state {
		pins = "gpio44";
		function = "gpio";
		drive-strength = <2>;
		bias-pull-up;
	};

	ts_int_default: ts-int-default-state {
		pins = "gpio65";
		function = "gpio";
		drive-strength = <2>;
		bias-pull-up;
	};
};

&uart_0 {
	pinctrl-names = "default";
	pinctrl-0 = <&uart_console_active>;

	status = "okay";
};

&usb3 {
	status = "okay";
};

&usb3_dwc3 {
	dr_mode = "peripheral";
};
