// 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>;
			regulator-always-on;
		};

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