// SPDX-License-Identifier: BSD-3-Clause
/*
 * Copyright (c) 2021, AngeloGioacchino Del Regno
 *                     <angelogioacchino.delregno@somainline.org>
 */

/dts-v1/;

#include <dt-bindings/input/input.h>
#include <dt-bindings/leds/common.h>
#include <dt-bindings/pinctrl/qcom,pmic-gpio.h>
#include "msm8998.dtsi"
#include "pm8005.dtsi"
#include "pm8998.dtsi"
#include "pmi8998.dtsi"

/ {
	model = "F(x)tec Pro1 (QX1000)";
	compatible = "fxtec,pro1", "qcom,msm8998";
	chassis-type = "handset";
	qcom,board-id = <0x02000b 0x10>;

	aliases {
		serial0 = &blsp2_uart1;
		serial1 = &blsp1_uart3;
	};

	/*
	 * Until we hook up type-c detection, we
	 * have to stick with this. But it works.
	 */
	extcon_usb: extcon-usb {
		compatible = "linux,extcon-usb-gpio";
		id-gpio = <&tlmm 38 GPIO_ACTIVE_HIGH>;
	};

	gpio-hall-sensors {
		compatible = "gpio-keys";
		label = "Hall sensors";
		pinctrl-names = "default";
		pinctrl-0 = <&hall_sensor1_default>;

		event-hall-sensor1 {
			label = "Keyboard Hall Sensor";
			gpios = <&tlmm 124 GPIO_ACTIVE_HIGH>;
			debounce-interval = <15>;
			gpio-key,wakeup;
			linux,input-type = <EV_SW>;
			linux,code = <SW_KEYPAD_SLIDE>;
		};
	};

	gpio-kb-extra-keys {
		compatible = "gpio-keys";
		label = "Keyboard extra keys";
		pinctrl-names = "default";
		pinctrl-0 = <&gpio_kb_pins_extra>;

		key-home {
			label = "Home";
			gpios = <&tlmm 21 GPIO_ACTIVE_LOW>;
			linux,code = <KEY_HOMEPAGE>;
			debounce-interval = <15>;
			linux,can-disable;
		};

		key-super-l {
			label = "Super Left";
			gpios = <&tlmm 32 GPIO_ACTIVE_LOW>;
			linux,code = <KEY_FN>;
			debounce-interval = <15>;
			linux,can-disable;
		};

		key-super-r {
			label = "Super Right";
			gpios = <&tlmm 33 GPIO_ACTIVE_LOW>;
			linux,code = <KEY_FN>;
			debounce-interval = <15>;
			linux,can-disable;
		};

		key-shift {
			label = "Shift";
			gpios = <&tlmm 114 GPIO_ACTIVE_LOW>;
			linux,code = <KEY_RIGHTSHIFT>;
			debounce-interval = <15>;
			linux,can-disable;
		};

		key-ctrl {
			label = "Ctrl";
			gpios = <&tlmm 128 GPIO_ACTIVE_LOW>;
			linux,code = <KEY_LEFTCTRL>;
			debounce-interval = <15>;
			linux,can-disable;
		};

		key-alt {
			label = "Alt";
			gpios = <&tlmm 129 GPIO_ACTIVE_LOW>;
			linux,code = <KEY_LEFTALT>;
			debounce-interval = <15>;
			linux,can-disable;
		};
	};

	gpio-keys {
		compatible = "gpio-keys";
		label = "Side buttons";
		pinctrl-names = "default";
		pinctrl-0 = <&vol_up_pin_a>, <&cam_focus_pin_a>,
			    <&cam_snapshot_pin_a>;
		button-vol-up {
			label = "Volume Up";
			gpios = <&pm8998_gpio 6 GPIO_ACTIVE_LOW>;
			linux,input-type = <EV_KEY>;
			linux,code = <KEY_VOLUMEUP>;
			gpio-key,wakeup;
			debounce-interval = <15>;
		};

		button-camera-snapshot {
			label = "Camera Snapshot";
			gpios = <&pm8998_gpio 7 GPIO_ACTIVE_LOW>;
			linux,input-type = <EV_KEY>;
			linux,code = <KEY_CAMERA>;
			debounce-interval = <15>;
		};

		button-camera-focus {
			label = "Camera Focus";
			gpios = <&pm8998_gpio 8 GPIO_ACTIVE_LOW>;
			linux,input-type = <EV_KEY>;
			linux,code = <KEY_CAMERA_FOCUS>;
			debounce-interval = <15>;
		};
	};

	keyboard-leds {
		compatible = "gpio-leds";

		led-0 {
			color = <LED_COLOR_ID_WHITE>;
			default-state = "off";
			function = LED_FUNCTION_KBD_BACKLIGHT;
			gpios = <&tlmm 16 GPIO_ACTIVE_HIGH>;
			label = "white:kbd_backlight";
			retain-state-suspended;
		};

		led-1 {
			color = <LED_COLOR_ID_YELLOW>;
			default-state = "off";
			function = LED_FUNCTION_CAPSLOCK;
			gpios = <&tlmm 26 GPIO_ACTIVE_HIGH>;
			label = "yellow:capslock";
			linux,default-trigger = "kbd-capslock";
		};
	};

	reserved-memory {
		cont_splash_mem: memory@9d400000 {
			reg = <0x0 0x9d400000 0x0 0x2000000>;
			no-map;
		};

		zap_shader_region: memory@f6400000 {
			compatible = "shared-dma-pool";
			reg = <0x0 0xf6400000 0x0 0x2000>;
			no-map;
		};

		ramoops@ffc00000 {
			compatible = "ramoops";
			reg = <0x0 0xffc00000 0x0 0x100000>;
			console-size = <0x60000>;
			ecc-size = <16>;
			ftrace-size = <0x10000>;
			pmsg-size = <0x20000>;
			record-size = <0x10000>;
		};
	};

	ts_vio_vreg: ts-vio-vreg {
		compatible = "regulator-fixed";
		regulator-name = "ts_vio_reg";
		startup-delay-us = <2>;
		enable-active-high;
		gpio = <&tlmm 81 GPIO_ACTIVE_HIGH>;
		pinctrl-names = "default";
		pinctrl-0 = <&ts_vio_default>;
		regulator-always-on;
	};

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

&blsp1_uart3 {
	status = "okay";

	bluetooth {
		compatible = "qcom,wcn3990-bt";

		vddio-supply = <&vreg_s4a_1p8>;
		vddxo-supply = <&vreg_l7a_1p8>;
		vddrf-supply = <&vreg_l17a_1p3>;
		vddch0-supply = <&vreg_l25a_3p3>;
		max-speed = <3200000>;
	};
};

&blsp1_uart3_on {
	rx {
		/delete-property/ bias-disable;
		/*
		 * Configure a pull-up on 45 (RX). This is needed to
		 * avoid garbage data when the TX pin of the Bluetooth
		 * module is in tri-state (module powered off or not
		 * driving the signal yet).
		 */
		bias-pull-up;
	};

	cts {
		/delete-property/ bias-disable;
		/*
		 * Configure a pull-down on 47 (CTS) to match the pull
		 * of the Bluetooth module.
		 */
		bias-pull-down;
	};
};

&blsp2_uart1 {
	status = "okay";
};

&blsp2_i2c1 {
	status = "okay";

	touchscreen@14 {
		compatible = "goodix,gt9286";
		reg = <0x14>;
		interrupt-parent = <&tlmm>;
		interrupts = <125 IRQ_TYPE_LEVEL_LOW>;
		reset-gpios = <&tlmm 89 GPIO_ACTIVE_HIGH>;
		AVDD28-supply = <&vreg_l28_3p0>;
		VDDIO-supply = <&ts_vio_vreg>;
		pinctrl-names = "active";
		pinctrl-0 = <&ts_rst_n>, <&ts_int_n>;
	};
};

&etf {
	status = "okay";
};

&etm1 {
	status = "okay";
};

&etm2 {
	status = "okay";
};

&etm3 {
	status = "okay";
};

&etm4 {
	status = "okay";
};

&etm5 {
	status = "okay";
};

&etm6 {
	status = "okay";
};

&etm7 {
	status = "okay";
};

&etm8 {
	status = "okay";
};

&etr {
	status = "okay";
};

&funnel1 {
	status = "okay";
};

&funnel2 {
	status = "okay";
};

&funnel3 {
	status = "okay";
};

&funnel4 {
	// FIXME: Figure out why clock late_initcall crashes the board with
	// this enabled.
	// status = "okay";
};

&funnel5 {
	// FIXME: Figure out why clock late_initcall crashes the board with
	// this enabled.
	// status = "okay";
};

&pcie0 {
	status = "okay";
};

&pcie_phy {
	status = "okay";
};

&pm8005_regulators {
	vdd_s1-supply = <&vph_pwr>;

	pm8005_s1: s1 { /* VDD_GFX supply */
		regulator-min-microvolt = <524000>;
		regulator-max-microvolt = <1100000>;
		regulator-enable-ramp-delay = <500>;

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

&pm8998_gpio {
	vol_up_pin_a: vol-up-active-state {
		pins = "gpio6";
		function = "normal";
		bias-pull-up;
		input-enable;
		qcom,drive-strength = <PMIC_GPIO_STRENGTH_NO>;
	};

	cam_focus_pin_a: cam-focus-btn-active-state {
		pins = "gpio7";
		function = "normal";
		bias-pull-up;
		input-enable;
		qcom,drive-strength = <PMIC_GPIO_STRENGTH_NO>;
	};

	cam_snapshot_pin_a: cam-snapshot-btn-active-state {
		pins = "gpio8";
		function = "normal";
		bias-pull-up;
		input-enable;
		qcom,drive-strength = <PMIC_GPIO_STRENGTH_NO>;
	};
};

&pm8998_pon {
	resin {
		compatible = "qcom,pm8941-resin";
		interrupts = <GIC_SPI 0x8 1 IRQ_TYPE_EDGE_BOTH>;
		bias-pull-up;
		debounce = <15625>;
		linux,code = <KEY_VOLUMEDOWN>;
	};
};

&qusb2phy {
	status = "okay";

	vdda-pll-supply = <&vreg_l12a_1p8>;
	vdda-phy-dpdm-supply = <&vreg_l24a_3p075>;
};

&replicator1 {
	status = "okay";
};

&rpm_requests {
	pm8998-regulators {
		compatible = "qcom,rpm-pm8998-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_s8-supply = <&vph_pwr>;
		vdd_s9-supply = <&vph_pwr>;
		vdd_s10-supply = <&vph_pwr>;
		vdd_s11-supply = <&vph_pwr>;
		vdd_s12-supply = <&vph_pwr>;
		vdd_s13-supply = <&vph_pwr>;
		vdd_l1_l27-supply = <&vreg_s7a_1p025>;
		vdd_l2_l8_l17-supply = <&vreg_s3a_1p35>;
		vdd_l3_l11-supply = <&vreg_s7a_1p025>;
		vdd_l4_l5-supply = <&vreg_s7a_1p025>;
		vdd_l6-supply = <&vreg_s5a_2p04>;
		vdd_l7_l12_l14_l15-supply = <&vreg_s5a_2p04>;
		vdd_l9-supply = <&vreg_bob>;
		vdd_l10_l23_l25-supply = <&vreg_bob>;
		vdd_l13_l19_l21-supply = <&vreg_bob>;
		vdd_l16_l28-supply = <&vreg_bob>;
		vdd_l18_l22-supply = <&vreg_bob>;
		vdd_l20_l24-supply = <&vreg_bob>;
		vdd_l26-supply = <&vreg_s3a_1p35>;
		vdd_lvs1_lvs2-supply = <&vreg_s4a_1p8>;

		vreg_s3a_1p35: s3 {
			regulator-min-microvolt = <1352000>;
			regulator-max-microvolt = <1352000>;
		};

		vreg_s4a_1p8: s4 {
			regulator-min-microvolt = <1800000>;
			regulator-max-microvolt = <1800000>;
			regulator-allow-set-load;
		};

		vreg_s5a_2p04: s5 {
			regulator-min-microvolt = <1904000>;
			regulator-max-microvolt = <2040000>;
		};

		vreg_s7a_1p025: s7 {
			regulator-min-microvolt = <900000>;
			regulator-max-microvolt = <1028000>;
		};

		vreg_l1a_0p875: l1 {
			regulator-min-microvolt = <880000>;
			regulator-max-microvolt = <880000>;
		};

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

		vreg_l3a_1p0: l3 {
			regulator-min-microvolt = <1000000>;
			regulator-max-microvolt = <1000000>;
		};

		vreg_l5a_0p8: l5 {
			regulator-min-microvolt = <800000>;
			regulator-max-microvolt = <800000>;
		};

		vreg_l6a_1p8: l6 {
			regulator-min-microvolt = <1808000>;
			regulator-max-microvolt = <1808000>;
		};

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

		vreg_l8a_1p2: l8 {
			regulator-min-microvolt = <1200000>;
			regulator-max-microvolt = <1200000>;
		};

		vreg_l9a_1p8: l9 {
			regulator-min-microvolt = <1808000>;
			regulator-max-microvolt = <2960000>;
		};

		vreg_l10a_1p8: l10 {
			regulator-min-microvolt = <1808000>;
			regulator-max-microvolt = <2960000>;
		};

		vreg_l11a_1p0: l11 {
			regulator-min-microvolt = <1000000>;
			regulator-max-microvolt = <1000000>;
		};

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

		vreg_l13a_2p95: l13 {
			regulator-min-microvolt = <1808000>;
			regulator-max-microvolt = <2960000>;
		};

		vreg_l14a_1p88: l14 {
			regulator-min-microvolt = <1880000>;
			regulator-max-microvolt = <1880000>;
		};

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

		vreg_l16a_2p7: l16 {
			regulator-min-microvolt = <2704000>;
			regulator-max-microvolt = <2704000>;
		};

		vreg_l17a_1p3: l17 {
			regulator-min-microvolt = <1304000>;
			regulator-max-microvolt = <1304000>;
		};

		vreg_l18a_2p7: l18 {
			regulator-min-microvolt = <2704000>;
			regulator-max-microvolt = <2704000>;
		};

		vreg_l19a_3p0: l19 {
			regulator-min-microvolt = <3008000>;
			regulator-max-microvolt = <3008000>;
		};

		vreg_l20a_2p95: l20 {
			regulator-min-microvolt = <2960000>;
			regulator-max-microvolt = <2960000>;
			regulator-allow-set-load;
		};

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

		vreg_l22a_2p85: l22 {
			regulator-min-microvolt = <2864000>;
			regulator-max-microvolt = <2864000>;
		};

		vreg_l23a_3p3: l23 {
			regulator-min-microvolt = <3312000>;
			regulator-max-microvolt = <3312000>;
		};

		vreg_l24a_3p075: l24 {
			regulator-min-microvolt = <3088000>;
			regulator-max-microvolt = <3088000>;
		};

		vreg_l25a_3p3: l25 {
			regulator-min-microvolt = <3104000>;
			regulator-max-microvolt = <3312000>;
		};

		vreg_l26a_1p2: l26 {
			regulator-min-microvolt = <1200000>;
			regulator-max-microvolt = <1200000>;
			regulator-allow-set-load;
		};

		vreg_l28_3p0: l28 {
			regulator-min-microvolt = <3008000>;
			regulator-max-microvolt = <3008000>;
		};

		vreg_lvs1a_1p8: lvs1 {
			regulator-min-microvolt = <1800000>;
			regulator-max-microvolt = <1800000>;
		};

		vreg_lvs2a_1p8: lvs2 {
			regulator-min-microvolt = <1800000>;
			regulator-max-microvolt = <1800000>;
		};

	};

	pmi8998-regulators {
		compatible = "qcom,rpm-pmi8998-regulators";

		vdd_bob-supply = <&vph_pwr>;

		vreg_bob: bob {
			regulator-min-microvolt = <3312000>;
			regulator-max-microvolt = <3600000>;
		};
	};
};

&remoteproc_adsp {
	status = "okay";
};

&remoteproc_mss {
	status = "okay";
};

&remoteproc_slpi {
	status = "okay";
};

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

	mdp_vsync_n: mdp-vsync-n {
		pins = "gpio10";
		function = "mdp_vsync_a";
		bias-pull-down;
		drive-strength = <2>;
	};

	gpio_kb_pins_extra: gpio-kb-pins-extra {
		pins = "gpio21", "gpio32", "gpio33", "gpio114",
		       "gpio128", "gpio129";
		function = "gpio";
		drive-strength = <2>;
		bias-pull-up;
	};

	ts_vio_default: ts-vio-def {
		pins = "gpio81";
		function = "gpio";
		bias-disable;
		drive-strength = <2>;
	};

	ts_rst_n: ts-rst-n {
		pins = "gpio89";
		function = "gpio";
		bias-pull-up;
		drive-strength = <8>;
	};

	hall_sensor1_default: hall-sensor1-def {
		pins = "gpio124";
		function = "gpio";
		bias-disable;
		drive-strength = <2>;
		input-enable;
	};

	ts_int_n: ts-int-n {
		pins = "gpio125";
		function = "gpio";
		bias-disable;
		drive-strength = <8>;
	};
};

&sdhc2 {
	status = "okay";
	cd-gpios = <&tlmm 95 GPIO_ACTIVE_LOW>;

	vmmc-supply = <&vreg_l21a_2p95>;
	vqmmc-supply = <&vreg_l13a_2p95>;

	pinctrl-names = "default", "sleep";
	pinctrl-0 = <&sdc2_on &sdc2_cd>;
	pinctrl-1 = <&sdc2_off &sdc2_cd>;
};

&stm {
	status = "okay";
};

&ufshc {
	status = "okay";
	vcc-supply = <&vreg_l20a_2p95>;
	vccq-supply = <&vreg_l26a_1p2>;
	vccq2-supply = <&vreg_s4a_1p8>;
	vcc-max-microamp = <750000>;
	vccq-max-microamp = <560000>;
	vccq2-max-microamp = <750000>;
};

&ufsphy {
	status = "okay";
	vdda-phy-supply = <&vreg_l1a_0p875>;
	vdda-pll-supply = <&vreg_l2a_1p2>;
	vddp-ref-clk-supply = <&vreg_l26a_1p2>;
};

&usb3 {
	status = "okay";
};

&usb3_dwc3 {
	dr_mode = "peripheral";
	extcon = <&extcon_usb>;
};

&usb3phy {
	status = "okay";

	vdda-phy-supply = <&vreg_l1a_0p875>;
	vdda-pll-supply = <&vreg_l2a_1p2>;
};

/* GT9286 analog supply */
&vreg_l28_3p0 {
	regulator-min-microvolt = <2800000>;
	regulator-max-microvolt = <2800000>;
};

&wifi {
	status = "okay";

	vdd-0.8-cx-mx-supply = <&vreg_l5a_0p8>;
	vdd-1.8-xo-supply = <&vreg_l7a_1p8>;
	vdd-1.3-rfa-supply = <&vreg_l17a_1p3>;
	vdd-3.3-ch0-supply = <&vreg_l25a_3p3>;
};
