// SPDX-License-Identifier: BSD-3-Clause
/*
 * Copyright (c) 2023, Luca Weiss <luca@z3ntu.xyz>
 */

/dts-v1/;

#include "qcom-msm8226.dtsi"
#include "pm8226.dtsi"

/delete-node/ &adsp_region;
/delete-node/ &smem_region;

/ {
	model = "HTC One Mini 2";
	compatible = "htc,memul", "qcom,msm8926", "qcom,msm8226";
	chassis-type = "handset";

	aliases {
		mmc1 = &sdhc_2; /* SDC2 SD card slot */
	};

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

		key-power {
			label = "Power";
			gpios = <&tlmm 106 GPIO_ACTIVE_LOW>;
			linux,code = <KEY_POWER>;
			debounce-interval = <15>;
		};

		key-volume-down {
			label = "Volume Down";
			gpios = <&tlmm 107 GPIO_ACTIVE_LOW>;
			linux,code = <KEY_VOLUMEDOWN>;
			debounce-interval = <15>;
		};

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

	reserved-memory {
		unknown@5b00000 {
			reg = <0x05b00000 0x200000>;
			no-map;
		};

		unknown@7500000 {
			reg = <0x07500000 0xb00000>;
			no-map;
		};

		mpss_region: mpss@8000000 {
			reg = <0x08000000 0x4f00000>;
			no-map;
		};

		unknown@cf00000 {
			reg = <0x0cf00000 0x200000>;
			no-map;
		};

		mba_region: mba@d100000 {
			reg = <0x0d100000 0x3a000>;
			no-map;
		};

		unknown@d13a000 {
			reg = <0x0d13a000 0xc6000>;
			no-map;
		};

		wcnss_region: wcnss@d200000 {
			reg = <0x0d200000 0x650000>;
			no-map;
		};

		unknown@d850000 {
			reg = <0x0d850000 0x3b0000>;
			no-map;
		};

		adsp_region: adsp@dc00000 {
			reg = <0x0dc00000 0x1400000>;
			no-map;
		};

		unknown@f000000 {
			reg = <0x0f000000 0x500000>;
			no-map;
		};

		venus_region: venus@f500000 {
			reg = <0x0f500000 0x500000>;
			no-map;
		};

		smem_region: smem@fa00000 {
			reg = <0x0fa00000 0x100000>;
			no-map;
		};

		unknown@fb00000 {
			reg = <0x0fb00000 0x1b00000>;
			no-map;
		};
	};
};

&adsp {
	firmware-name = "qcom/msm8926/memul/adsp.mbn";
	status = "okay";
};

&blsp1_i2c2 {
	status = "okay";

	magnetometer@d {
		compatible = "asahi-kasei,ak8963";
		reg = <0x0d>;
		interrupts-extended = <&tlmm 66 IRQ_TYPE_EDGE_RISING>;
		vdd-supply = <&pm8226_l19>;
		vid-supply = <&pm8226_l28>;
	};

	accelerometer@18 {
		compatible = "bosch,bma250e";
		reg = <0x18>;
		interrupts-extended = <&tlmm 63 IRQ_TYPE_EDGE_RISING>;
		vdd-supply = <&pm8226_l19>;
		vddio-supply = <&pm8226_l28>;
	};
};

&blsp1_i2c4 {
	status = "okay";

	/* TFA9887 @ 34 */
	/* TFA9887 @ 35 */
};

&blsp1_i2c5 {
	status = "okay";

	touchscreen@20 {
		compatible = "syna,rmi4-i2c";
		reg = <0x20>;

		interrupts-extended = <&tlmm 17 IRQ_TYPE_EDGE_FALLING>;
		vdd-supply = <&pm8226_l19>;

		syna,startup-delay-ms = <160>;

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

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

		rmi4-f12@12 {
			reg = <0x12>;
			syna,sensor-type = <1>;
		};
	};
};

&blsp1_i2c6 {
	status = "okay";

	/* NCP6924 Camera Regulators @ 10 */
	/* PN544 NFC @ 28 */
	/* TPS61310 Flash/Torch @ 33 */
};

&pm8226_vib {
	status = "okay";
};

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

		pm8226_s3: s3 {
			regulator-min-microvolt = <1200000>;
			regulator-max-microvolt = <1350000>;
		};

		pm8226_s4: s4 {
			regulator-min-microvolt = <1800000>;
			regulator-max-microvolt = <2200000>;
		};

		pm8226_s5: s5 {
			regulator-min-microvolt = <1150000>;
			regulator-max-microvolt = <1150000>;
		};

		pm8226_l1: l1 {
			regulator-min-microvolt = <1225000>;
			regulator-max-microvolt = <1225000>;
		};

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

		pm8226_l3: l3 {
			regulator-min-microvolt = <750000>;
			regulator-max-microvolt = <1337500>;
		};

		pm8226_l4: l4 {
			regulator-min-microvolt = <1200000>;
			regulator-max-microvolt = <1200000>;
		};

		pm8226_l5: l5 {
			regulator-min-microvolt = <1200000>;
			regulator-max-microvolt = <1200000>;
		};

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

		pm8226_l7: l7 {
			regulator-min-microvolt = <1850000>;
			regulator-max-microvolt = <1850000>;
		};

		pm8226_l8: l8 {
			regulator-min-microvolt = <1800000>;
			regulator-max-microvolt = <1800000>;
		};

		pm8226_l9: l9 {
			regulator-min-microvolt = <2050000>;
			regulator-max-microvolt = <2050000>;
		};

		pm8226_l10: l10 {
			regulator-min-microvolt = <1800000>;
			regulator-max-microvolt = <1800000>;
		};

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

		pm8226_l14: l14 {
			regulator-min-microvolt = <2750000>;
			regulator-max-microvolt = <2750000>;
		};

		pm8226_l15: l15 {
			regulator-min-microvolt = <3000000>;
			regulator-max-microvolt = <3000000>;
		};

		pm8226_l16: l16 {
			regulator-min-microvolt = <3000000>;
			regulator-max-microvolt = <3350000>;
		};

		pm8226_l17: l17 {
			regulator-min-microvolt = <2950000>;
			regulator-max-microvolt = <2950000>;
		};

		pm8226_l18: l18 {
			regulator-min-microvolt = <2950000>;
			regulator-max-microvolt = <2950000>;
		};

		pm8226_l19: l19 {
			regulator-min-microvolt = <2850000>;
			regulator-max-microvolt = <2850000>;
		};

		pm8226_l20: l20 {
			regulator-min-microvolt = <3075000>;
			regulator-max-microvolt = <3075000>;
		};

		pm8226_l21: l21 {
			regulator-min-microvolt = <1800000>;
			regulator-max-microvolt = <2950000>;
			regulator-allow-set-load;
		};

		pm8226_l22: l22 {
			regulator-min-microvolt = <1800000>;
			regulator-max-microvolt = <2950000>;
		};

		pm8226_l23: l23 {
			regulator-min-microvolt = <1800000>;
			regulator-max-microvolt = <3000000>;
		};

		pm8226_l24: l24 {
			regulator-min-microvolt = <1300000>;
			regulator-max-microvolt = <1350000>;
		};

		pm8226_l25: l25 {
			regulator-min-microvolt = <1775000>;
			regulator-max-microvolt = <2125000>;
		};

		pm8226_l26: l26 {
			regulator-min-microvolt = <1225000>;
			regulator-max-microvolt = <1225000>;
		};

		pm8226_l27: l27 {
			regulator-min-microvolt = <2050000>;
			regulator-max-microvolt = <2050000>;
		};

		pm8226_l28: l28 {
			regulator-min-microvolt = <1800000>;
			regulator-max-microvolt = <1800000>;
		};

		pm8226_lvs1: lvs1 {};
	};
};

&sdhc_2 {
	vmmc-supply = <&pm8226_l18>;
	vqmmc-supply = <&pm8226_l21>;

	bus-width = <4>;
	cd-gpios = <&tlmm 38 GPIO_ACTIVE_LOW>;

	status = "okay";
};

&smbb {
	qcom,fast-charge-safe-current = <1750000>;
	qcom,fast-charge-current-limit = <1750000>;
	qcom,fast-charge-safe-voltage = <4360000>;
	qcom,fast-charge-high-threshold-voltage = <4350000>;
	qcom,auto-recharge-threshold-voltage = <4300000>;
	qcom,minimum-input-voltage = <4300000>;

	status = "okay";
};

&usb {
	extcon = <&smbb>;
	dr_mode = "peripheral";
	status = "okay";
};

&usb_hs_phy {
	extcon = <&smbb>;
	v1p8-supply = <&pm8226_l10>;
	v3p3-supply = <&pm8226_l20>;
};
