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

/dts-v1/;

#include "msm8998-mtp.dtsi"

#include <dt-bindings/input/input.h>
#include <dt-bindings/leds/common.h>
#include <dt-bindings/pinctrl/qcom,pmic-gpio.h>

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

	/*
	 * 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";
		input-name = "hall-sensors";
		label = "Hall sensors";
		pinctrl-names = "default";
		pinctrl-0 = <&hall_sensor1_default>;

		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";
		input-name = "extra-kb-keys";
		label = "Keyboard extra keys";
		pinctrl-names = "default";
		pinctrl-0 = <&gpio_kb_pins_extra>;

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

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

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

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

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

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

	gpio-keys {
		compatible = "gpio-keys";
		input-name = "side-buttons";
		label = "Side buttons";
		#address-cells = <1>;
		#size-cells = <0>;
		pinctrl-names = "default";
		pinctrl-0 = <&vol_up_pin_a>, <&cam_focus_pin_a>,
			    <&cam_snapshot_pin_a>;
		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>;
		};

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

		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";

		backlight {
			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;
		};

		caps-lock {
			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;
	};
};

&blsp2_i2c1 {
	status = "ok";

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

&mmcc {
	status = "ok";
};

&mmss_smmu {
	status = "ok";
};

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

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

	cam_snapshot_pin_a: cam-snapshot-btn-active {
		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>;
	};
};

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

&ufshc {
	status = "ok";
};

&ufsphy {
	status = "ok";
};

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

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