// SPDX-License-Identifier: BSD-3-Clause
/*
 * Copyright (c) 2020, Konrad Dybcio <konrad.dybcio@somainline.org>
 */

#include "msm8994.dtsi"
#include "pm8994.dtsi"
#include "pmi8994.dtsi"
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/gpio-keys.h>

/ {
	/* required for bootloader to select correct board */

	/*
	 * We support MSM8994 v2 (0x20000) and v2.1 (0x20001).
	 * The V1 chip (0x0 and 0x10000) is significantly different
	 * and requires driver-side changes (including CPR, be warned!!).
	 * Besides that, it's very rare.
	 */
	qcom,msm-id = <207 0x20000>, <207 0x20001>;
	/* We only use pm8994+pmi8994. */
	qcom,pmic-id = <0x10009 0x1000a 0x00 0x00>;
	/* This property is shared across all kitakami devices. */
	qcom,board-id = <8 0>;

	/* Kitakami firmware doesn't support PSCI */
	/delete-node/ psci;

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

		button-0 {
			label = "Volume Down";
			gpios = <&pm8994_gpios 2 GPIO_ACTIVE_LOW>;
			linux,input-type = <1>;
			linux,code = <KEY_VOLUMEDOWN>;
			wakeup-source;
			debounce-interval = <15>;
		};

		button-1 {
			label = "Volume Up";
			gpios = <&pm8994_gpios 3 GPIO_ACTIVE_LOW>;
			linux,input-type = <1>;
			linux,code = <KEY_VOLUMEUP>;
			wakeup-source;
			debounce-interval = <15>;
		};

		button-2 {
			label = "Camera Snapshot";
			gpios = <&pm8994_gpios 4 GPIO_ACTIVE_LOW>;
			linux,input-type = <1>;
			linux,code = <KEY_CAMERA>;
			wakeup-source;
			debounce-interval = <15>;
		};

		button-3 {
			label = "Camera Focus";
			gpios = <&pm8994_gpios 5 GPIO_ACTIVE_LOW>;
			linux,input-type = <1>;
			linux,code = <KEY_VOLUMEUP>;
			wakeup-source;
			debounce-interval = <15>;
		};
	};

	reserved-memory {
		/* This is for getting crash logs using Android downstream kernels */
		ramoops@1fe00000 {
			compatible = "ramoops";
			reg = <0 0x1fe00000 0 0x200000>;
			console-size = <0x100000>;
			record-size = <0x10000>;
			ftrace-size = <0x10000>;
			pmsg-size = <0x80000>;
		};

		fb_region: fb_region@40000000 {
			reg = <0 0x40000000 0 0x1000000>;
			no-map;
		};

		tzapp: memory@c7800000 {
			reg = <0 0xc7800000 0 0x1900000>;
			no-map;
		};
	};
};

&blsp1_spi1 {
	status = "okay";

	/* FPC fingerprint reader */
};

/* I2C1 is disabled on this board */

&blsp1_i2c2 {
	status = "okay";
	clock-frequency = <355000>;

	/* NXP PN547 NFC */
};

&blsp1_i2c6 {
	status = "okay";
	clock-frequency = <355000>;

	touchscreen: rmi4-i2c-dev@2c {
		compatible = "syna,rmi4-i2c";
		reg = <0x2c>;
		#address-cells = <1>;
		#size-cells = <0>;

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

		pinctrl-names = "default";
		pinctrl-0 = <&ts_int_active &ts_reset_active>;

		vdd-supply = <&pm8994_l22>;
		vio-supply = <&pm8994_s4>;

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

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

		rmi4-f11@11 {
			reg = <0x11>;
			syna,sensor-type = <1>;
		};
	};
};

&blsp1_uart2 {
	status = "okay";
};

&blsp2_i2c5 {
	status = "okay";
	clock-frequency = <355000>;

	/* sii8620 HDMI/MHL bridge */
};

&blsp2_uart2 {
	status = "okay";
};

/*
 * Kitakami bootloader only turns cont_splash on when it detects
 * specific downstream MDSS/backlight nodes in the active DTB.
 * One way to use that framebuffer is to load a secondary instance of
 * LK with the downstream DTB appended and then, only from there, load
 * mainline Linux.
 */
&cont_splash_mem {
	reg = <0 0x3401000 0 0x2200000>;
};

&pmi8994_spmi_regulators {
	/*
	 * Yeah, this one *is* managed by RPMPD, but also needs
	 * to be hacked up as a-o due to the GPU device only accepting a single
	 * power domain.. which still isn't enough and forces us to bind
	 * OXILI_CX and OXILI_GX together!
	 */
	vdd_gfx: s2@1700 {
		reg = <0x1700 0x100>;
		regulator-name = "VDD_GFX";
		regulator-min-microvolt = <980000>;
		regulator-max-microvolt = <980000>;

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

&rpm_requests {
	/* PMI8994 should probe first, because pmi8994_bby supplies some of PM8994's regulators */
	pmi8994_regulators: pmi8994-regulators {
		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>;
		};
	};

	pm8994_regulators: pm8994-regulators {
		compatible = "qcom,rpm-pm8994-regulators";

		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 = <&pmi8994_s1>;
		vdd_l2_l26_l28-supply = <&pm8994_s3>;
		vdd_l3_l11-supply = <&pm8994_s3>;
		vdd_l4_l27_l31-supply = <&pm8994_s3>;
		vdd_l6_l12_l32-supply = <&pm8994_s5>;
		vdd_l8_l16_l30-supply = <&vph_pwr>;
		vdd_l9_l10_l18_l22-supply = <&pmi8994_bby>;
		vdd_l13_l19_l23_l24-supply = <&pmi8994_bby>;
		vdd_l14_l15-supply = <&pm8994_s5>;
		vdd_l17_l29-supply = <&pmi8994_bby>;
		vdd_l20_l21-supply = <&pmi8994_bby>;
		vdd_l25-supply = <&pm8994_s3>;
		vdd_lvs1_2-supply = <&pm8994_s4>;

		/* S1, S2, S6 and S12 are managed by RPMPD */

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

		pm8994_s4: s4 {
			regulator-min-microvolt = <1800000>;
			regulator-max-microvolt = <1800000>;
			regulator-system-load = <325000>;
			regulator-allow-set-load;
			regulator-always-on;
		};

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

		pm8994_s7: s7 {
			regulator-min-microvolt = <1000000>;
			regulator-max-microvolt = <1000000>;
		};

		/*
		 * S8 - SPMI-managed VDD_APC0
		 * S9, S10 and S11 (the main one) - SPMI-managed VDD_APC1
		 */

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

		pm8994_l2: l2 {
			regulator-min-microvolt = <1250000>;
			regulator-max-microvolt = <1250000>;
			regulator-system-load = <10000>;
			regulator-allow-set-load;
		};

		pm8994_l3: l3 {
			regulator-min-microvolt = <1100000>;
			regulator-max-microvolt = <1100000>;
			regulator-boot-on;
		};

		pm8994_l4: l4 {
			regulator-min-microvolt = <1225000>;
			regulator-max-microvolt = <1225000>;
		};

		/* L5 is inaccessible from RPM */

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

		/* L7 is inaccessible from RPM */

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

		pm8994_l9: l9 {
			regulator-min-microvolt = <1800000>;
			regulator-max-microvolt = <1800000>;
		};

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

		pm8994_l11: l11 {
			regulator-min-microvolt = <1200000>;
			regulator-max-microvolt = <1200000>;
		};

		pm8994_l12: l12 {
			regulator-min-microvolt = <1800000>;
			regulator-max-microvolt = <1800000>;
			regulator-system-load = <10000>;
			regulator-allow-set-load;
		};

		pm8994_l13: l13 {
			regulator-min-microvolt = <1800000>;
			regulator-max-microvolt = <2950000>;
		};

		pm8994_l14: l14 {
			regulator-min-microvolt = <1800000>;
			regulator-max-microvolt = <1800000>;
			regulator-system-load = <10000>;
			regulator-allow-set-load;
			regulator-boot-on;
		};

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

		pm8994_l16: l16 {
			regulator-min-microvolt = <2700000>;
			regulator-max-microvolt = <2700000>;
		};

		pm8994_l17: l17 {
			regulator-min-microvolt = <2200000>;
			regulator-max-microvolt = <2200000>;
			regulator-boot-on;
		};

		pm8994_l18: l18 {
			regulator-min-microvolt = <2850000>;
			regulator-max-microvolt = <2850000>;
			regulator-always-on;
			regulator-boot-on;
		};

		pm8994_l19: l19 {
			regulator-min-microvolt = <2850000>;
			regulator-max-microvolt = <2850000>;
			regulator-boot-on;
		};

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

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

		pm8994_l22: l22 {
			regulator-min-microvolt = <3000000>;
			regulator-max-microvolt = <3000000>;
			regulator-boot-on;
		};

		pm8994_l23: l23 {
			regulator-min-microvolt = <2800000>;
			regulator-max-microvolt = <2800000>;
			regulator-always-on;
			regulator-boot-on;
		};

		pm8994_l24: l24 {
			regulator-min-microvolt = <3075000>;
			regulator-max-microvolt = <3150000>;
		};

		pm8994_l25: l25 {
			regulator-min-microvolt = <1000000>;
			regulator-max-microvolt = <1000000>;
			regulator-boot-on;
		};

		pm8994_l26: l26 {
			regulator-min-microvolt = <987500>;
			regulator-max-microvolt = <987500>;
		};

		pm8994_l27: l27 {
			regulator-min-microvolt = <1200000>;
			regulator-max-microvolt = <1200000>;
			regulator-boot-on;
		};

		pm8994_l28: l28 {
			regulator-min-microvolt = <1000000>;
			regulator-max-microvolt = <1000000>;
			regulator-system-load = <10000>;
			regulator-allow-set-load;
		};

		pm8994_l29: l29 {
			regulator-min-microvolt = <2700000>;
			regulator-max-microvolt = <2700000>;
			regulator-boot-on;
		};

		pm8994_l30: l30 {
			regulator-min-microvolt = <1800000>;
			regulator-max-microvolt = <1800000>;
			regulator-boot-on;
		};

		pm8994_l31: l31 {
			regulator-min-microvolt = <1200000>;
			regulator-max-microvolt = <1200000>;
			regulator-system-load = <10000>;
			regulator-allow-set-load;
		};

		pm8994_l32: l32 {
			regulator-min-microvolt = <1800000>;
			regulator-max-microvolt = <1800000>;
		};

		pm8994_lvs1: lvs1 {
			regulator-boot-on;
		};
		pm8994_lvs2: lvs2 {
			regulator-boot-on;
		};
	};
};

&sdhc1 {
	/*
	 * There is an issue with the eMMC causing permanent
	 * damage to the card if a quirk isn't addressed.
	 * Until it's fixed, disable the MMC so as not to brick
	 * devices.
	 */
	status = "disabled";

	/*
	 * Downstream pushes 2.95V to the sdhci device,
	 * but upstream driver REALLY wants to make vmmc 1.8v
	 * cause of the hs400-1_8v mode. MMC works fine without
	 * that regulator, so let's not use it for now.
	 * vqmmc is also disabled cause driver stll complains.
	 *
	 * vmmc-supply = <&pm8994_l20>;
	 * vqmmc-supply = <&pm8994_s4>;
	 */
};

&sdhc2 {
	status = "okay";

	cd-gpios = <&tlmm 100 0>;
	vmmc-supply = <&pm8994_l21>;
	vqmmc-supply = <&pm8994_l13>;
};

&tlmm {
	ts_int_active: ts-int-active {
		pins = "gpio42";
		drive-strength = <2>;
		bias-disable;
		input-enable;
	};

	ts_reset_active: ts-reset-active {
		pins = "gpio109";
		drive-strength = <2>;
		bias-disable;
		output-low;
	};
};
