// SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
/*
 * MSM8992 LG G4 (h815) device tree.
 *
 * Copyright (c) 2024, Alexander Reimelt <alexander.reimelt@posteo.de>
 */

/dts-v1/;

#include "msm8992.dtsi"
#include "pm8994.dtsi"
#include "pmi8994.dtsi"
#include <dt-bindings/leds/common.h>

/* different mapping */
/delete-node/ &cont_splash_mem;

/* disabled downstream */
/delete-node/ &dfps_data_mem;

/ {
	model = "LG G4 (H815)";
	compatible = "lg,h815", "qcom,msm8992";
	chassis-type = "handset";

	qcom,msm-id = <0xfb 0x0>;
	qcom,pmic-id = <0x10009 0x1000a 0x0 0x0>;
	qcom,board-id = <0xb64 0x0>;

	/* psci is broken */
	/delete-node/ psci;

	reserved-memory {
		#address-cells = <2>;
		#size-cells = <2>;
		ranges;

		spin-table@6000000 {
			reg = <0x0 0x06000000 0x0 0x00001000>;
			no-map;
		};

		ramoops@ff00000 {
			compatible = "ramoops";
			reg = <0x0 0x0ff00000 0x0 0x00100000>;
			console-size = <0x20000>;
			pmsg-size = <0x20000>;
			record-size = <0x10000>;
			ecc-size = <0x10>;
		};

		cont_splash_mem: fb@3400000 {
			reg = <0x0 0x03400000 0x0 0x00c00000>;
			no-map;
		};

		crash_fb_mem: crash-fb@4000000 {
			reg = <0x0 0x04000000 0x0 0x00c00000>;
			no-map;
		};
	};

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

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

		label = "Hall Effect Sensor";

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

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

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

&CPU0 {
	enable-method = "spin-table";
};

&CPU1 {
	enable-method = "spin-table";
};

&CPU2 {
	enable-method = "spin-table";
};

&CPU3 {
	enable-method = "spin-table";
};

&CPU4 {
	enable-method = "spin-table";
};

&CPU5 {
	enable-method = "spin-table";
};

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

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

		vdd_s3-supply = <&vph_pwr>;
		vdd_s4-supply = <&vph_pwr>;
		vdd_s5-supply = <&vph_pwr>;
		vdd_s7-supply = <&vph_pwr>;
		vdd_l1-supply = <&pmi8994_s1>;
		vdd_l2_26_28-supply = <&pm8994_s3>;
		vdd_l3_11-supply = <&pm8994_s3>;
		vdd_l4_27_31-supply = <&pm8994_s3>;
		vdd_l5_7-supply = <&pm8994_s5>;
		vdd_l6_12_32-supply = <&pm8994_s5>;
		vdd_l8_16_30-supply = <&vph_pwr>;
		vdd_l9_10_18_22-supply = <&pmi8994_bby>;
		vdd_l13_19_23_24-supply = <&pmi8994_bby>;
		vdd_l14_15-supply = <&pm8994_s5>;
		vdd_l17_29-supply = <&pmi8994_bby>;
		vdd_l20_21-supply = <&pmi8994_bby>;
		vdd_l25-supply = <&pm8994_s5>;
		vdd_lvs1_2-supply = <&pm8994_s4>;

		pm8994_s3: s3 {
			regulator-min-microvolt = <1300000>;
			regulator-max-microvolt = <1300000>;
		};

		/* sdhc1 vqmmc and bcm */
		pm8994_s4: s4 {
			regulator-min-microvolt = <1800000>;
			regulator-max-microvolt = <1800000>;
			regulator-system-load = <325000>;
			regulator-allow-set-load;
		};

		pm8994_s5: s5 {
			regulator-min-microvolt = <2150000>;
			regulator-max-microvolt = <2150000>;
		};

		/* sdhc2 vqmmc */
		pm8994_l13: l13 {
			regulator-min-microvolt = <1800000>;
			regulator-max-microvolt = <2950000>;
			regulator-system-load = <22000>;
			regulator-allow-set-load;
		};

		/* sdhc1 vmmc */
		pm8994_l20: l20 {
			regulator-min-microvolt = <2950000>;
			regulator-max-microvolt = <2950000>;
			regulator-system-load = <570000>;
			regulator-allow-set-load;
		};

		/* sdhc2 vmmc */
		pm8994_l21: l21 {
			regulator-min-microvolt = <2950000>;
			regulator-max-microvolt = <2950000>;
			regulator-system-load = <800000>;
			regulator-allow-set-load;
		};
	};

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

		vdd_s1-supply = <&vph_pwr>;
		vdd_bst_byp-supply = <&vph_pwr>;

		pmi8994_s1: s1 {
			regulator-min-microvolt = <1025000>;
			regulator-max-microvolt = <1025000>;
		};

		/* S2 & S3 - VDD_GFX */

		pmi8994_bby: boost-bypass {
			regulator-min-microvolt = <3150000>;
			regulator-max-microvolt = <3600000>;
		};
	};
};

&sdhc1 {
	mmc-hs400-1_8v;
	vmmc-supply = <&pm8994_l20>;
	vqmmc-supply = <&pm8994_s4>;
	non-removable;
	status = "okay";
};

&sdhc2 {
	vmmc-supply = <&pm8994_l21>;
	vqmmc-supply = <&pm8994_l13>;
	cd-gpios = <&pm8994_gpios 8 GPIO_ACTIVE_LOW>;
	status = "okay";
};

&tlmm {
	hall_sensor_default: hall-sensor-default-state {
		pins = "gpio75";
		function = "gpio";
		drive-strength = <2>;
		bias-pull-up;
	};
};
