// SPDX-License-Identifier: GPL-2.0
/*
 * Device tree for Google Pixel 3a, adapted from google-blueline device tree,
 * xiaomi-lavender device tree, and oneplus-common device tree.
 *
 * Copyright (c) 2022, Richard Acayan. All rights reserved.
 */

/dts-v1/;

#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h>
#include <dt-bindings/pinctrl/qcom,pmic-gpio.h>
#include <dt-bindings/power/qcom-rpmpd.h>
#include "sdm670.dtsi"
#include "pm660.dtsi"
#include "pm660l.dtsi"

/delete-node/ &mpss_region;
/delete-node/ &venus_mem;
/delete-node/ &wlan_msa_mem;
/delete-node/ &cdsp_mem;
/delete-node/ &mba_region;
/delete-node/ &adsp_mem;
/delete-node/ &ipa_fw_mem;
/delete-node/ &ipa_gsi_mem;
/delete-node/ &gpu_mem;

/ {
	model = "Google Pixel 3a";
	compatible = "google,sargo", "qcom,sdm670";

	aliases { };

	chosen {
		stdout-path = "serial0:115200n8";

		#address-cells = <2>;
		#size-cells = <2>;
		ranges;

		framebuffer@9c000000 {
			compatible = "simple-framebuffer";
			reg = <0 0x9c000000 0 (1080 * 2220 * 4)>;
			width = <1080>;
			height = <2220>;
			stride = <(1080 * 4)>;
			format = "a8r8g8b8";
		};
	};

	clocks {
		sleep_clk: sleep-clk {
			compatible = "fixed-clock";
			#clock-cells = <0>;
			clock-frequency = <32764>;
		};

		xo_board: xo-board {
			compatible = "fixed-clock";
			#clock-cells = <0>;
			clock-frequency = <38400000>;
		};
	};

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

		pinctrl-names = "default";
		pinctrl-0 = <&vol_up_pin>;

		key-vol-up {
			label = "Volume Up";
			linux,code = <KEY_VOLUMEUP>;
			gpios = <&pm660l_gpios 7 GPIO_ACTIVE_LOW>;
		};
	};

	reserved-memory {
		#address-cells = <2>;
		#size-cells = <2>;

		mpss_region: mpss@8b000000 {
			reg = <0 0x8b000000 0 0x9800000>;
			no-map;
		};

		venus_mem: venus@94800000 {
			reg = <0 0x94800000 0 0x500000>;
			no-map;
		};

		wlan_msa_mem: wlan-msa@94d00000 {
			reg = <0 0x94d00000 0 0x100000>;
			no-map;
		};

		cdsp_mem: cdsp@94e00000 {
			reg = <0 0x94e00000 0 0x800000>;
			no-map;
		};

		mba_region: mba@95600000 {
			reg = <0 0x95600000 0 0x200000>;
			no-map;
		};

		adsp_mem: adsp@95800000 {
			reg = <0 0x95800000 0 0x2200000>;
			no-map;
		};

		ipa_fw_mem: ipa-fw@97a00000 {
			reg = <0 0x97a00000 0 0x10000>;
			no-map;
		};

		ipa_gsi_mem: ipa-gsi@97a10000 {
			reg = <0 0x97a10000 0 0x5000>;
			no-map;
		};

		gpu_mem: gpu@97a15000 {
			reg = <0 0x97a15000 0 0x2000>;
			no-map;
		};

		framebuffer-region@9c000000 {
			reg = <0 0x9c000000 0 0x2400000>;
			no-map;
		};

		/* Also includes ramoops regions */
		debug_info_mem: debug-info@a1800000 {
			reg = <0 0xa1800000 0 0x411000>;
			no-map;
		};
	};

	/*
	 * The touchscreen regulator seems to be controlled somehow by a gpio.
	 * Model it as a fixed regulator and keep it on. Without schematics we
	 * don't know how this is actually wired up...
	 */
	ts_1p8_supply: ts-1p8-regulator {
		compatible = "regulator-fixed";
		regulator-name = "ts_1p8_supply";

		regulator-min-microvolt = <1800000>;
		regulator-max-microvolt = <1800000>;

		gpio = <&pm660_gpios 12 GPIO_ACTIVE_HIGH>;
		enable-active-high;
	};

	vph_pwr: vph-pwr-regulator {
		compatible = "regulator-fixed";
		regulator-name = "vph_pwr";
		regulator-min-microvolt = <3312000>;
		regulator-max-microvolt = <3312000>;

		regulator-always-on;
		regulator-boot-on;
	};

	/*
	 * Supply map from xiaomi-lavender specifies this as the supply for
	 * ldob1, ldob9, ldob10, ldoa2, and ldoa3, while downstream specifies
	 * this as a power domain. Set this as a fixed regulator with the same
	 * voltage as lavender until display is needed to avoid unneccessarily
	 * using a deprecated binding (regulator-fixed-domain).
	 */
	vreg_s2b_1p05: vreg-s2b-regulator {
		compatible = "regulator-fixed";
		regulator-name = "vreg_s2b";
		regulator-min-microvolt = <1050000>;
		regulator-max-microvolt = <1050000>;
	};
};

&apps_rsc {
	regulators-0 {
		compatible = "qcom,pm660-rpmh-regulators";
		qcom,pmic-id = "a";

		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-l1-l6-l7-supply = <&vreg_s6a_0p87>;
		vdd-l2-l3-supply = <&vreg_s2b_1p05>;
		vdd-l5-supply = <&vreg_s2b_1p05>;
		vdd-l8-l9-l10-l11-l12-l13-l14-supply = <&vreg_s4a_2p04>;
		vdd-l15-l16-l17-l18-l19-supply = <&vreg_bob>;

		/*
		 * S1A (FTAPC0), S2A (FTAPC1), S3A (HFAPC1) are managed
		 * by the Core Power Reduction hardened (CPRh) and the
		 * Operating State Manager (OSM) HW automatically.
		 */

		vreg_s4a_2p04: smps4 {
			regulator-min-microvolt = <1808000>;
			regulator-max-microvolt = <2040000>;
			regulator-enable-ramp-delay = <200>;
		};

		vreg_s6a_0p87: smps6 {
			regulator-min-microvolt = <1224000>;
			regulator-max-microvolt = <1352000>;
			regulator-enable-ramp-delay = <150>;
		};

		/* LDOs */
		vreg_l1a_1p225: ldo1 {
			regulator-min-microvolt = <1200000>;
			regulator-max-microvolt = <1250000>;
			regulator-enable-ramp-delay = <250>;
		};

		vreg_l2a_1p0: ldo2 {
			regulator-min-microvolt = <1000000>;
			regulator-max-microvolt = <1000000>;
			regulator-enable-ramp-delay = <250>;
		};

		vreg_l3a_1p0: ldo3 {
			regulator-min-microvolt = <1000000>;
			regulator-max-microvolt = <1000000>;
			regulator-enable-ramp-delay = <250>;
		};

		vreg_l5a_0p848: ldo5 {
			regulator-min-microvolt = <800000>;
			regulator-max-microvolt = <800000>;
			regulator-enable-ramp-delay = <250>;
		};

		vreg_l6a_1p3: ldo6 {
			regulator-min-microvolt = <1248000>;
			regulator-max-microvolt = <1304000>;
			regulator-enable-ramp-delay = <250>;
		};

		vreg_l7a_1p2: ldo7 {
			regulator-min-microvolt = <1200000>;
			regulator-max-microvolt = <1200000>;
			regulator-enable-ramp-delay = <250>;
		};

		vreg_l8a_1p8: ldo8 {
			regulator-min-microvolt = <1800000>;
			regulator-max-microvolt = <1800000>;
			regulator-enable-ramp-delay = <250>;
		};

		vreg_l9a_1p8: ldo9 {
			regulator-min-microvolt = <1800000>;
			regulator-max-microvolt = <1800000>;
			regulator-enable-ramp-delay = <250>;
		};

		vreg_l10a_1p8: ldo10 {
			regulator-min-microvolt = <1800000>;
			regulator-max-microvolt = <1800000>;
			regulator-enable-ramp-delay = <250>;
		};

		vreg_l11a_1p8: ldo11 {
			regulator-min-microvolt = <1800000>;
			regulator-max-microvolt = <1800000>;
			regulator-enable-ramp-delay = <250>;
		};

		vreg_l12a_1p8: ldo12 {
			regulator-min-microvolt = <1800000>;
			regulator-max-microvolt = <1800000>;
			regulator-enable-ramp-delay = <250>;
		};

		vreg_l13a_1p8: ldo13 {
			regulator-min-microvolt = <1800000>;
			regulator-max-microvolt = <1800000>;
			regulator-enable-ramp-delay = <250>;
		};

		vreg_l14a_1p8: ldo14 {
			regulator-min-microvolt = <1800000>;
			regulator-max-microvolt = <1800000>;
			regulator-enable-ramp-delay = <250>;
		};

		vreg_l15a_1p8: ldo15 {
			regulator-min-microvolt = <1800000>;
			regulator-max-microvolt = <2950000>;
			regulator-enable-ramp-delay = <250>;
		};

		vreg_l16a_2p7: ldo16 {
			regulator-min-microvolt = <2696000>;
			regulator-max-microvolt = <2696000>;
			regulator-enable-ramp-delay = <250>;
		};

		vreg_l17a_1p8: ldo17 {
			regulator-min-microvolt = <1800000>;
			regulator-max-microvolt = <2950000>;
			regulator-enable-ramp-delay = <250>;
		};

		vreg_l19a_3p3: ldo19 {
			regulator-min-microvolt = <3000000>;
			regulator-max-microvolt = <3312000>;
			regulator-enable-ramp-delay = <250>;
		};
	};

	regulators-1 {
		compatible = "qcom,pm660l-rpmh-regulators";
		qcom,pmic-id = "b";

		vdd-s1-supply = <&vph_pwr>;
		vdd-s2-supply = <&vph_pwr>;
		vdd-s3-s4-supply = <&vph_pwr>;
		vdd-s5-supply = <&vph_pwr>;

		vdd-l1-l9-l10-supply = <&vreg_s2b_1p05>;
		vdd-l2-supply = <&vreg_bob>;
		vdd-l3-l5-l7-l8-supply = <&vreg_bob>;
		vdd-l4-l6-supply = <&vreg_bob>;
		vdd-bob-supply = <&vph_pwr>;

		/* LDOs */
		vreg_l1b_0p925: ldo1 {
			regulator-min-microvolt = <880000>;
			regulator-max-microvolt = <900000>;
			regulator-enable-ramp-delay = <250>;
		};

		vreg_l2b_2p95: ldo2 {
			regulator-min-microvolt = <1800000>;
			regulator-max-microvolt = <2960000>;
			regulator-enable-ramp-delay = <250>;
		};

		vreg_l3b_3p0: ldo3 {
			regulator-min-microvolt = <2850000>;
			regulator-max-microvolt = <3008000>;
			regulator-enable-ramp-delay = <250>;
		};

		vreg_l4b_2p95: ldo4 {
			regulator-min-microvolt = <2960000>;
			regulator-max-microvolt = <2960000>;
			regulator-enable-ramp-delay = <250>;
		};

		vreg_l5b_2p95: ldo5 {
			regulator-min-microvolt = <2960000>;
			regulator-max-microvolt = <2960000>;
			regulator-enable-ramp-delay = <250>;
		};

		vreg_l6b_3p3: ldo6 {
			regulator-min-microvolt = <3008000>;
			regulator-max-microvolt = <3300000>;
			regulator-enable-ramp-delay = <250>;
		};

		vreg_l7b_3p125: ldo7 {
			regulator-min-microvolt = <3088000>;
			regulator-max-microvolt = <3100000>;
			regulator-enable-ramp-delay = <250>;
		};

		vreg_l8b_3p3: ldo8 {
			regulator-min-microvolt = <3300000>;
			regulator-max-microvolt = <3312000>;
			regulator-enable-ramp-delay = <250>;
		};

		/*
		 * Downstream specifies a fixed voltage of 3.312 V, but the
		 * PMIC4 BOB ranges don't support that. Widen the range a
		 * little to avoid adding a new BOB regulator type.
		 */
		vreg_bob: bob {
			regulator-min-microvolt = <3296000>;
			regulator-max-microvolt = <3328000>;
			regulator-enable-ramp-delay = <500>;
		};
	};

};

&gcc {
	protected-clocks = <GCC_QSPI_CORE_CLK>,
			   <GCC_QSPI_CORE_CLK_SRC>,
			   <GCC_QSPI_CNOC_PERIPH_AHB_CLK>;
};

&gpi_dma1 {
	status = "okay";
};

&i2c9 {
	clock-frequency = <100000>;
	status = "okay";

	synaptics-rmi4-i2c@20 {
		compatible = "syna,rmi4-i2c";
		reg = <0x20>;
		interrupts-extended = <&tlmm 125 IRQ_TYPE_EDGE_FALLING>;

		pinctrl-names = "default";
		pinctrl-0 = <&touchscreen_default>;

		vio-supply = <&ts_1p8_supply>;

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

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

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

		rmi4-f12@12 {
			reg = <0x12>;
			touchscreen-x-mm = <62>;
			touchscreen-y-mm = <127>;
			syna,sensor-type = <1>;
		};
	};
};

&pm660l_gpios {
	vol_up_pin: vol-up-state {
		pins = "gpio7";
		function = "normal";
		qcom,drive-strength = <PMIC_GPIO_STRENGTH_NO>;
		input-enable;
		bias-pull-up;
	};
};

&pon_pwrkey {
	status = "okay";
};

&pon_resin {
	linux,code = <KEY_VOLUMEDOWN>;
	status = "okay";
};

&qupv3_id_1 {
	status = "okay";
};

&sdhc_1 {
	supports-cqe;
	mmc-hs200-1_8v;
	mmc-hs400-1_8v;
	mmc-ddr-1_8v;

	qcom,ddr-config = <0xc3040873>;

	vmmc-supply = <&vreg_l4b_2p95>;
	vqmmc-supply = <&vreg_l8a_1p8>;

	status = "okay";
};

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

	touchscreen_default: ts-default-state {
		ts-reset-pins {
			pins = "gpio99";
			function = "gpio";
			drive-strength = <2>;
			bias-pull-up;
			output-high;
		};

		ts-irq-pins {
			pins = "gpio125";
			function = "gpio";
			drive-strength = <2>;
			bias-disable;
		};

		ts-switch-pins {
			pins = "gpio135";
			function = "gpio";
			drive-strength = <2>;
			bias-disable;
			output-low;
		};
	};
};

&usb_1_hsphy {
	vdd-supply = <&vreg_l1b_0p925>;
	vdda-pll-supply = <&vreg_l10a_1p8>;
	vdda-phy-dpdm-supply = <&vreg_l7b_3p125>;

	status = "okay";
};

&usb_1 {
	qcom,select-utmi-as-pipe-clk;
	status = "okay";
};

&usb_1_dwc3 {
	/* Only peripheral works for now */
	dr_mode = "peripheral";

	/* Do not assume that sdm670.dtsi will never support USB 3.0 */
	phys = <&usb_1_hsphy>;
	phy-names = "usb2-phy";
	maximum-speed = "high-speed";
};
