linux/arch/arm64/boot/dts/qcom/msm8992-lg-h815.dts

// SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
/*
 * MSM8992 LG G4 (h815) device tree.
 *
 * Copyright (c) 2024, Alexander Reimelt <[email protected]>
 */

/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;
	};
};