// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
/*
 * Google Trogdor device tree source (common between revisions)
 *
 * Copyright 2019 Google LLC.
 */

#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/gpio-keys.h>
#include <dt-bindings/input/input.h>
#include <dt-bindings/regulator/qcom,rpmh-regulator.h>
#include <dt-bindings/sound/sc7180-lpass.h>

/* PMICs depend on spmi_bus label and so must come after SoC */
#include "pm6150.dtsi"
#include "pm6150l.dtsi"

/ {
	thermal-zones {
		charger_thermal: charger-thermal {
			polling-delay-passive = <0>;
			polling-delay = <0>;

			thermal-sensors = <&pm6150_adc_tm 0>;

			trips {
				charger-crit {
					temperature = <125000>;
					hysteresis = <1000>;
					type = "critical";
				};
			};
		};
	};
};

/*
 * Reserved memory changes
 *
 * Delete all unused memory nodes and define the peripheral memory regions
 * required by the board dts.
 */

/delete-node/ &hyp_mem;
/delete-node/ &xbl_mem;
/delete-node/ &aop_mem;
/delete-node/ &sec_apps_mem;
/delete-node/ &tz_mem;

/* Increase the size from 2MB to 8MB */
&rmtfs_mem {
	reg = <0x0 0x94600000 0x0 0x800000>;
};

/ {
	reserved-memory {
		atf_mem: memory@80b00000 {
			reg = <0x0 0x80b00000 0x0 0x100000>;
			no-map;
		};

		mpss_mem: memory@86000000 {
			reg = <0x0 0x86000000 0x0 0x2000000>;
			no-map;
		};

		venus_mem: memory@8f600000 {
			reg = <0 0x8f600000 0 0x500000>;
			no-map;
		};

		wlan_mem: memory@94100000 {
			reg = <0x0 0x94100000 0x0 0x200000>;
			no-map;
		};

		mba_mem: memory@94400000 {
			reg = <0x0 0x94400000 0x0 0x200000>;
			no-map;
		};
	};

	aliases {
		bluetooth0 = &bluetooth;
		hsuart0 = &uart3;
		serial0 = &uart8;
		wifi0 = &wifi;
	};

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

	/* FIXED REGULATORS - parents above children */

	/* This is the top level supply and variable voltage */
	ppvar_sys: ppvar-sys-regulator {
		compatible = "regulator-fixed";
		regulator-name = "ppvar_sys";
		regulator-always-on;
		regulator-boot-on;
	};

	/* This divides ppvar_sys by 2, so voltage is variable */
	src_vph_pwr: src-vph-pwr-regulator {
		compatible = "regulator-fixed";
		regulator-name = "src_vph_pwr";

		/* EC turns on with switchcap_on; always on for AP */
		regulator-always-on;
		regulator-boot-on;

		vin-supply = <&ppvar_sys>;
	};

	pp5000_a: pp5000-a-regulator {
		compatible = "regulator-fixed";
		regulator-name = "pp5000_a";

		/* EC turns on with en_pp5000_a; always on for AP */
		regulator-always-on;
		regulator-boot-on;
		regulator-min-microvolt = <5000000>;
		regulator-max-microvolt = <5000000>;

		vin-supply = <&ppvar_sys>;
	};

	pp3300_a: pp3300-a-regulator {
		compatible = "regulator-fixed";
		regulator-name = "pp3300_a";

		/* EC turns on with en_pp3300_a; always on for AP */
		regulator-always-on;
		regulator-boot-on;
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;

		/*
		 * Actually should be pp3300 but that's practically an alias for
		 * pp3300_a so we use pp3300's vin-supply here to avoid one more
		 * node.
		 */
		vin-supply = <&ppvar_sys>;
	};

	pp3300_audio:
	pp3300_codec: pp3300-codec-regulator {
		compatible = "regulator-fixed";
		regulator-name = "pp3300_codec";

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

		gpio = <&tlmm 83 GPIO_ACTIVE_HIGH>;
		enable-active-high;
		pinctrl-names = "default";
		pinctrl-0 = <&en_pp3300_codec>;

		vin-supply = <&pp3300_a>;
	};

	pp3300_dx_edp:
	pp3300_ts: pp3300-dx-edp-regulator {
		compatible = "regulator-fixed";
		regulator-name = "pp3300_dx_edp";

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

		gpio = <&tlmm 30 GPIO_ACTIVE_HIGH>;
		enable-active-high;
		pinctrl-names = "default";
		pinctrl-0 = <&en_pp3300_dx_edp>;

		vin-supply = <&pp3300_a>;
	};

	pp3300_fp_tp: pp3300-fp-tp-regulator {
		compatible = "regulator-fixed";
		regulator-name = "pp3300_fp_tp";

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

		/* AP turns on with PP1800_VIO_OUT; always on for AP */
		regulator-always-on;
		regulator-boot-on;

		vin-supply = <&pp3300_a>;
	};

	pp3300_hub: pp3300-hub {
		compatible = "regulator-fixed";
		regulator-name = "pp3300_hub";

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

		gpio = <&tlmm 84 GPIO_ACTIVE_HIGH>;
		enable-active-high;
		pinctrl-names = "default";
		pinctrl-0 = <&en_pp3300_hub>;

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

		vin-supply = <&pp3300_a>;
	};

	/* BOARD-SPECIFIC TOP LEVEL NODES */

	backlight: backlight {
		compatible = "pwm-backlight";

		/* The panels don't seem to like anything below ~ 5% */
		brightness-levels = <
			196 256 324 400 484 576 676 784 900 1024 1156 1296
			1444 1600 1764 1936 2116 2304 2500 2704 2916 3136
			3364 3600 3844 4096
		>;
		num-interpolated-steps = <64>;
		default-brightness-level = <951>;

		pwms = <&cros_ec_pwm 1>;
		enable-gpios = <&tlmm 12 GPIO_ACTIVE_HIGH>;
		power-supply = <&ppvar_sys>;
		pinctrl-names = "default";
		pinctrl-0 = <&ap_edp_bklten>;
	};

	gpio_keys: gpio-keys {
		compatible = "gpio-keys";
		status = "disabled";
		pinctrl-names = "default";
		pinctrl-0 = <&pen_pdct_l>;

		pen_insert: pen-insert {
			label = "Pen Insert";

			/* Insert = low, eject = high */
			gpios = <&tlmm 52 GPIO_ACTIVE_LOW>;
			linux,code = <SW_PEN_INSERTED>;
			linux,input-type = <EV_SW>;
			wakeup-event-action = <EV_ACT_DEASSERTED>;
			wakeup-source;
		};
	};

	max98360a: audio-codec-0 {
		compatible = "maxim,max98360a";
		pinctrl-names = "default";
		pinctrl-0 = <&amp_en>;
		sdmode-gpios = <&tlmm 23 GPIO_ACTIVE_HIGH>;
		#sound-dai-cells = <0>;
	};

	pwmleds {
		compatible = "pwm-leds";
		keyboard_backlight: keyboard-backlight {
			status = "disabled";
			label = "cros_ec::kbd_backlight";
			pwms = <&cros_ec_pwm 0>;
			max-brightness = <1023>;
		};
	};

	sound: sound {
		compatible = "google,sc7180-trogdor";
		model = "sc7180-rt5682-max98357a-1mic";

		audio-routing =
			"Headphone Jack", "HPOL",
			"Headphone Jack", "HPOR";

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

		dai-link@0 {
			link-name = "MultiMedia0";
			reg = <MI2S_PRIMARY>;
			cpu {
				sound-dai = <&lpass_cpu MI2S_PRIMARY>;
			};

			sound_multimedia0_codec: codec {
				sound-dai = <&alc5682 0 /* aif1 */>;
			};
		};

		dai-link@1 {
			link-name = "MultiMedia1";
			reg = <MI2S_SECONDARY>;
			cpu {
				sound-dai = <&lpass_cpu MI2S_SECONDARY>;
			};

			sound_multimedia1_codec: codec {
				sound-dai = <&max98360a>;
			};
		};

		dai-link@2 {
			link-name = "MultiMedia2";
			reg = <2>;
			cpu {
				sound-dai = <&lpass_cpu 2>;
			};

			codec {
				sound-dai = <&mdss_dp>;
			};
		};
	};
};

&qfprom {
	vcc-supply = <&pp1800_l11a>;
};

&qspi {
	status = "okay";
	pinctrl-names = "default";
	pinctrl-0 = <&qspi_clk>, <&qspi_cs0>, <&qspi_data01>;

	flash@0 {
		compatible = "jedec,spi-nor";
		reg = <0>;

		spi-max-frequency = <37500000>;
		spi-tx-bus-width = <2>;
		spi-rx-bus-width = <2>;
	};
};

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

		vddpx_1:
		vdd2:
		pp1125_s1a: smps1 {
			regulator-min-microvolt = <1128000>;
			regulator-max-microvolt = <1128000>;
		};

		vdd_qlink_lv:
		vdd_qlink_lv_ck:
		vdd_qusb_hs0_core:
		vdd_ufs1_core:
		vdda_mipi_csi0_0p9:
		vdda_mipi_csi1_0p9:
		vdda_mipi_csi2_0p9:
		vdda_mipi_csi3_0p9:
		vdda_mipi_dsi0_pll:
		vdda_pll_cc_ebi01:
		vdda_qrefs_0p9:
		vdda_usb_ss_dp_core:
		pp900_l4a: ldo4 {
			regulator-min-microvolt = <824000>;
			regulator-max-microvolt = <928000>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
		};

		vdd_cx_wlan:
		pp800_l9a: ldo9 {
			regulator-min-microvolt = <488000>;
			regulator-max-microvolt = <800000>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
		};

		vdd1:
		vddpx_3:
		vddpx_7:
		vio_in:
		pp1800_l10a: ldo10 {
			regulator-min-microvolt = <1800000>;
			regulator-max-microvolt = <1800000>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
		};

		vdd_qfprom:
		vdda_apc1_cs_1p8:
		vdda_qrefs_1p8:
		vdda_qusb_hs0_1p8:
		vddpx_11:
		vreg_bb_clk:
		pp1800_l11a: ldo11 {
			regulator-min-microvolt = <1800000>;
			regulator-max-microvolt = <1800000>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
		};

		mcp_vccq:
		pp1800_l12a_r: ldo12 {
			regulator-min-microvolt = <1800000>;
			regulator-max-microvolt = <1800000>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
		};

		/*
		 * On trogdor this needs to match l10a since we use it to
		 * give power to things like SPI flash which communicate back
		 * on lines powered by l10a.  Thus we force to 1.8V.
		 */
		pp1800_l13a: ldo13 {
			regulator-min-microvolt = <1800000>;
			regulator-max-microvolt = <1800000>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
		};

		pp1800_prox:
		pp1800_l14a: ldo14 {
			regulator-min-microvolt = <1800000>;
			regulator-max-microvolt = <1800000>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
		};

		pp1800_alc5682:
		pp1800_l15a: ldo15 {
			regulator-min-microvolt = <1800000>;
			regulator-max-microvolt = <1800000>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
		};

		vdda_qusb_hs0_3p1:
		vdd_pdphy:
		pp3100_l17a: ldo17 {
			regulator-min-microvolt = <2920000>;
			regulator-max-microvolt = <3232000>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
		};

		pp1800_pen:
		pp1800_l18a: ldo18 {
			regulator-min-microvolt = <1800000>;
			regulator-max-microvolt = <1800000>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
		};

		mcp_vcc:
		pp2850_l19a: ldo19 {
			regulator-min-microvolt = <2960000>;
			regulator-max-microvolt = <2960000>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
		};
	};

	pm6150l-rpmh-regulators {
		compatible = "qcom,pm6150l-rpmh-regulators";
		qcom,pmic-id = "c";

		pp1300_s8c: smps8 {
			regulator-min-microvolt = <1120000>;
			regulator-max-microvolt = <1408000>;
		};

		pp1800_l1c: ldo1 {
			regulator-min-microvolt = <1616000>;
			regulator-max-microvolt = <1984000>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
		};

		vdd_wcss_adc_dac:
		pp1300_l2c: ldo2 {
			regulator-min-microvolt = <1168000>;
			regulator-max-microvolt = <1304000>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
		};

		pp1200_brij:
		vdd_ufs1_1p2:
		vdda_csi0_1p25:
		vdda_csi1_1p25:
		vdda_csi2_1p25:
		vdda_csi3_1p25:
		vdda_hv_ebi0:
		vdda_mipi_dsi0_1p2:
		vdda_usb_ss_dp_1p2:
		vddpx_10:
		pp1200_l3c: ldo3 {
			regulator-min-microvolt = <1200000>;
			regulator-max-microvolt = <1200000>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
		};

		vddpx_2:
		ppvar_l6c: ldo6 {
			regulator-min-microvolt = <1800000>;
			regulator-max-microvolt = <2952000>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
		};

		pp3300_l7c: ldo7 {
			regulator-min-microvolt = <3304000>;
			regulator-max-microvolt = <3304000>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
		};

		pp1800_brij_vccio:
		pp1800_edp_vpll:
		pp1800_l8c: ldo8 {
			regulator-min-microvolt = <1800000>;
			regulator-max-microvolt = <1800000>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
		};

		pp2950_l9c: ldo9 {
			regulator-min-microvolt = <2952000>;
			regulator-max-microvolt = <2952000>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
		};

		pp3300_l10c: ldo10 {
			regulator-min-microvolt = <3000000>;
			regulator-max-microvolt = <3400000>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
		};

		pp3300_l11c: ldo11 {
			regulator-min-microvolt = <3000000>;
			regulator-max-microvolt = <3400000>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
		};

		src_vreg_bob: bob {
			regulator-min-microvolt = <3008000>;
			regulator-max-microvolt = <3960000>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_AUTO>;
		};
	};
};

&ap_ec_spi {
	status = "okay";
	cros_ec: ec@0 {
		compatible = "google,cros-ec-spi";
		reg = <0>;
		interrupt-parent = <&tlmm>;
		interrupts = <94 IRQ_TYPE_LEVEL_LOW>;
		pinctrl-names = "default";
		pinctrl-0 = <&ap_ec_int_l>;
		spi-max-frequency = <3000000>;

		cros_ec_pwm: ec-pwm {
			compatible = "google,cros-ec-pwm";
			#pwm-cells = <1>;
		};

		i2c_tunnel: i2c-tunnel {
			compatible = "google,cros-ec-i2c-tunnel";
			google,remote-bus = <0>;
			#address-cells = <1>;
			#size-cells = <0>;
		};

		typec {
			compatible = "google,cros-ec-typec";
			#address-cells = <1>;
			#size-cells = <0>;

			usb_c0: connector@0 {
				compatible = "usb-c-connector";
				reg = <0>;
				label = "left";
				power-role = "dual";
				data-role = "host";
				try-power-role = "source";
			};

			usb_c1: connector@1 {
				compatible = "usb-c-connector";
				reg = <1>;
				label = "right";
				power-role = "dual";
				data-role = "host";
				try-power-role = "source";
			};
		};
	};
};

&ap_h1_spi {
	status = "okay";
	cr50: tpm@0 {
		compatible = "google,cr50";
		reg = <0>;
		pinctrl-names = "default";
		pinctrl-0 = <&h1_ap_int_odl>;
		spi-max-frequency = <800000>;
		interrupt-parent = <&tlmm>;
		interrupts = <42 IRQ_TYPE_EDGE_RISING>;
	};
};

&camcc {
	status = "disabled";
};

&dsi0 {
	status = "okay";
	vdda-supply = <&vdda_mipi_dsi0_1p2>;

	ports {
		port@1 {
			endpoint {
				remote-endpoint = <&sn65dsi86_in>;
				data-lanes = <0 1 2 3>;
			};
		};
	};
};

&dsi_phy {
	status = "okay";
	vdds-supply = <&vdda_mipi_dsi0_pll>;
};

edp_brij_i2c: &i2c2 {
	status = "okay";
	clock-frequency = <400000>;

	sn65dsi86_bridge: bridge@2d {
		compatible = "ti,sn65dsi86";
		reg = <0x2d>;
		pinctrl-names = "default";
		pinctrl-0 = <&edp_brij_en>, <&edp_brij_irq>;
		gpio-controller;
		#gpio-cells = <2>;

		interrupt-parent = <&tlmm>;
		interrupts = <11 IRQ_TYPE_LEVEL_HIGH>;

		enable-gpios = <&tlmm 104 GPIO_ACTIVE_HIGH>;

		vpll-supply = <&pp1800_edp_vpll>;
		vccio-supply = <&pp1800_brij_vccio>;
		vcca-supply = <&pp1200_brij>;
		vcc-supply = <&pp1200_brij>;

		clocks = <&rpmhcc RPMH_LN_BB_CLK3>;
		clock-names = "refclk";

		no-hpd;

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

			port@0 {
				reg = <0>;
				sn65dsi86_in: endpoint {
					remote-endpoint = <&dsi0_out>;
				};
			};

			port@1 {
				reg = <1>;
				sn65dsi86_out: endpoint {
					data-lanes = <0 1>;
					remote-endpoint = <&panel_in_edp>;
				};
			};
		};

		aux-bus {
			panel: panel {
				/* Compatible will be filled in per-board */
				power-supply = <&pp3300_dx_edp>;
				backlight = <&backlight>;
				hpd-gpios = <&sn65dsi86_bridge 2 GPIO_ACTIVE_HIGH>;

				port {
					panel_in_edp: endpoint {
						remote-endpoint = <&sn65dsi86_out>;
					};
				};
			};
		};
	};
};

ap_sar_sensor_i2c: &i2c5 {
	clock-frequency = <400000>;

	ap_sar_sensor: proximity@28 {
		compatible = "semtech,sx9310";
		reg = <0x28>;
		#io-channel-cells = <1>;
		pinctrl-names = "default";
		pinctrl-0 = <&p_sensor_int_l>;

		interrupt-parent = <&tlmm>;
		interrupts = <24 IRQ_TYPE_LEVEL_LOW>;

		vdd-supply = <&pp3300_a>;
		svdd-supply = <&pp1800_prox>;

		status = "disabled";
		label = "proximity-wifi";
	};
};

ap_tp_i2c: &i2c7 {
	status = "okay";
	clock-frequency = <400000>;

	trackpad: trackpad@15 {
		compatible = "elan,ekth3000";
		reg = <0x15>;
		pinctrl-names = "default";
		pinctrl-0 = <&tp_int_odl>;

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

		vcc-supply = <&pp3300_fp_tp>;

		wakeup-source;
	};
};

hp_i2c: &i2c9 {
	status = "okay";
	clock-frequency = <400000>;

	alc5682: codec@1a {
		compatible = "realtek,rt5682i";
		reg = <0x1a>;
		pinctrl-names = "default";
		pinctrl-0 = <&hp_irq>;

		#sound-dai-cells = <1>;

		interrupt-parent = <&tlmm>;
		/*
		 * This will get ignored because the interrupt type
		 * is set in rt5682.c.
		 */
		interrupts = <28 IRQ_TYPE_EDGE_BOTH>;

		AVDD-supply = <&pp1800_alc5682>;
		MICVDD-supply = <&pp3300_codec>;
		VBAT-supply = <&pp3300_audio>;

		realtek,dmic1-data-pin = <1>;
		realtek,dmic1-clk-pin = <1>;
		realtek,jd-src = <1>;
	};
};

&ipa {
	status = "okay";

	/*
	 * Trogdor doesn't have QHEE (Qualcomm's EL2 blob), so the
	 * modem needs to cover certain init steps (GSI init), and
	 * the AP needs to wait for it.
	 */
	modem-init;
};

&lpass_cpu {
	status = "okay";

	pinctrl-names = "default";
	pinctrl-0 = <&sec_mi2s_active>, <&pri_mi2s_active>, <&pri_mi2s_mclk_active>;

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

	mi2s@0 {
		reg = <MI2S_PRIMARY>;
		qcom,playback-sd-lines = <1>;
		qcom,capture-sd-lines = <0>;
	};

	secondary_mi2s: mi2s@1 {
		reg = <MI2S_SECONDARY>;
		qcom,playback-sd-lines = <0>;
	};

	hdmi-primary@0 {
		reg = <LPASS_DP_RX>;
	};
};

&mdp {
	status = "okay";
};

&mdss {
	status = "okay";
};

&mdss_dp {
	status = "okay";
	pinctrl-names = "default";
	pinctrl-0 = <&dp_hot_plug_det>;
	data-lanes = <0 1>;
	vdda-1p2-supply = <&vdda_usb_ss_dp_1p2>;
	vdda-0p9-supply = <&vdda_usb_ss_dp_core>;
};

&pm6150_adc {
	charger-thermistor@4f {
		reg = <ADC5_AMUX_THM3_100K_PU>;
		qcom,ratiometric;
		qcom,hw-settle-time = <200>;
	};
};

&pm6150_adc_tm {
	status = "okay";

	charger-thermistor@0 {
		reg = <0>;
		io-channels = <&pm6150_adc ADC5_AMUX_THM3_100K_PU>;
		qcom,ratiometric;
		qcom,hw-settle-time-us = <200>;
	};
};

&pm6150_pon {
	status = "disabled";
};

&qupv3_id_0 {
	status = "okay";
};

&qupv3_id_1 {
	status = "okay";
};

&remoteproc_mpss {
	status = "okay";
	compatible = "qcom,sc7180-mss-pil";
	iommus = <&apps_smmu 0x461 0x0>, <&apps_smmu 0x444 0x3>;
	memory-region = <&mba_mem &mpss_mem>;

	/* This gets overridden for SKUs with LTE support. */
	firmware-name = "qcom/sc7180-trogdor/modem-nolte/mba.mbn",
			"qcom/sc7180-trogdor/modem-nolte/qdsp6sw.mbn";
};

&sdhc_1 {
	status = "okay";

	pinctrl-names = "default", "sleep";
	pinctrl-0 = <&sdc1_on>;
	pinctrl-1 = <&sdc1_off>;
	vmmc-supply = <&mcp_vcc>;
	vqmmc-supply = <&mcp_vccq>;
};

&sdhc_2 {
	pinctrl-names = "default", "sleep";
	pinctrl-0 = <&sdc2_on>;
	pinctrl-1 = <&sdc2_off>;
	vmmc-supply = <&pp2950_l9c>;
	vqmmc-supply = <&ppvar_l6c>;

	cd-gpios = <&tlmm 69 GPIO_ACTIVE_LOW>;
};

&spi0 {
	pinctrl-0 = <&qup_spi0_cs_gpio_init_high>, <&qup_spi0_cs_gpio>;
	cs-gpios = <&tlmm 37 GPIO_ACTIVE_LOW>;
};

&spi6 {
	pinctrl-0 = <&qup_spi6_cs_gpio_init_high>, <&qup_spi6_cs_gpio>;
	cs-gpios = <&tlmm 62 GPIO_ACTIVE_LOW>;
};

ap_spi_fp: &spi10 {
	pinctrl-0 = <&qup_spi10_cs_gpio_init_high>, <&qup_spi10_cs_gpio>;
	cs-gpios = <&tlmm 89 GPIO_ACTIVE_LOW>;

	cros_ec_fp: ec@0 {
		compatible = "google,cros-ec-spi";
		reg = <0>;
		interrupt-parent = <&tlmm>;
		interrupts = <4 IRQ_TYPE_LEVEL_LOW>;
		pinctrl-names = "default";
		pinctrl-0 = <&fp_to_ap_irq_l>;
		spi-max-frequency = <3000000>;
	};
};

#include <arm/cros-ec-keyboard.dtsi>
#include <arm/cros-ec-sbs.dtsi>

&uart3 {
	status = "okay";

	/delete-property/interrupts;
	interrupts-extended = <&intc GIC_SPI 604 IRQ_TYPE_LEVEL_HIGH>,
				<&tlmm 41 IRQ_TYPE_EDGE_FALLING>;

	pinctrl-names = "default", "sleep";
	pinctrl-1 = <&qup_uart3_sleep>;

	bluetooth: bluetooth {
		compatible = "qcom,wcn3991-bt";
		vddio-supply = <&pp1800_l10a>;
		vddxo-supply = <&pp1800_l1c>;
		vddrf-supply = <&pp1300_l2c>;
		vddch0-supply = <&pp3300_l10c>;
		max-speed = <3200000>;
	};
};

&uart8 {
	status = "okay";
};

&usb_1 {
	status = "okay";
};

&usb_1_dwc3 {
	dr_mode = "host";
};

&usb_1_hsphy {
	status = "okay";
	vdd-supply = <&vdd_qusb_hs0_core>;
	vdda-pll-supply = <&vdda_qusb_hs0_1p8>;
	vdda-phy-dpdm-supply = <&vdda_qusb_hs0_3p1>;
	qcom,imp-res-offset-value = <8>;
	qcom,preemphasis-level = <QUSB2_V2_PREEMPHASIS_15_PERCENT>;
	qcom,preemphasis-width = <QUSB2_V2_PREEMPHASIS_WIDTH_HALF_BIT>;
	qcom,bias-ctrl-value = <0x22>;
	qcom,charge-ctrl-value = <3>;
	qcom,hsdisc-trim-value = <0>;
};

&usb_1_qmpphy {
	status = "okay";
	vdda-phy-supply = <&vdda_usb_ss_dp_1p2>;
	vdda-pll-supply = <&vdda_usb_ss_dp_core>;
};

&venus {
	video-firmware {
		iommus = <&apps_smmu 0x0c42 0x0>;
	};
};

&wifi {
	status = "okay";
	vdd-0.8-cx-mx-supply = <&vdd_cx_wlan>;
	vdd-1.8-xo-supply = <&pp1800_l1c>;
	vdd-1.3-rfa-supply = <&pp1300_l2c>;
	vdd-3.3-ch0-supply = <&pp3300_l10c>;
	vdd-3.3-ch1-supply = <&pp3300_l11c>;

	wifi-firmware {
		iommus = <&apps_smmu 0xc2 0x1>;
	};
};

/* PINCTRL - additions to nodes defined in sc7180.dtsi */

&dp_hot_plug_det {
	pinconf {
		pins = "gpio117";
		bias-disable;
	};
};

&pri_mi2s_active {
	pinconf {
		pins = "gpio53", "gpio54", "gpio55", "gpio56";
		drive-strength = <2>;
		bias-pull-down;
	};
};

&pri_mi2s_mclk_active {
	pinconf {
		pins = "gpio57";
		drive-strength = <2>;
		bias-pull-down;
	};
};

&qspi_cs0 {
	pinconf {
		pins = "gpio68";
		bias-disable;
	};
};

&qspi_clk {
	pinconf {
		pins = "gpio63";
		drive-strength = <8>;
		bias-disable;
	};
};

&qspi_data01 {
	pinconf {
		pins = "gpio64", "gpio65";

		/* High-Z when no transfers; nice to park the lines */
		bias-pull-up;
	};
};

&qup_i2c2_default {
	pinconf {
		pins = "gpio15", "gpio16";
		drive-strength = <2>;

		/* Has external pullup */
		bias-disable;
	};
};

&qup_i2c4_default {
	pinconf {
		pins = "gpio115", "gpio116";
		drive-strength = <2>;

		/* Has external pullup */
		bias-disable;
	};
};

&qup_i2c5_default {
	pinconf {
		pins = "gpio25", "gpio26";
		drive-strength = <2>;

		/* Has external pullup */
		bias-disable;
	};
};

&qup_i2c7_default {
	pinconf {
		pins = "gpio6", "gpio7";
		drive-strength = <2>;

		/* Has external pullup */
		bias-disable;
	};
};

&qup_i2c9_default {
	pinconf {
		pins = "gpio46", "gpio47";
		drive-strength = <2>;

		/* Has external pullup */
		bias-disable;
	};
};

&qup_spi0_cs_gpio {
	pinconf {
		pins = "gpio34", "gpio35", "gpio36", "gpio37";
		drive-strength = <2>;
		bias-disable;
	};
};

&qup_spi6_cs_gpio {
	pinconf {
		pins = "gpio59", "gpio60", "gpio61", "gpio62";
		drive-strength = <2>;
		bias-disable;
	};
};

&qup_spi10_cs_gpio {
	pinconf {
		pins = "gpio86", "gpio87", "gpio88", "gpio89";
		drive-strength = <2>;
		bias-disable;
	};
};

&qup_uart3_default {
	pinconf-cts {
		/*
		 * Configure a pull-down on CTS to match the pull of
		 * the Bluetooth module.
		 */
		pins = "gpio38";
		bias-pull-down;
	};

	pinconf-rts-tx {
		/* We'll drive RTS and TX, so no pull */
		pins = "gpio39", "gpio40";
		drive-strength = <2>;
		bias-disable;
	};

	pinconf-rx {
		/*
		 * Configure a pull-up on 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).
		 */
		pins = "gpio41";
		bias-pull-up;
	};
};

&qup_uart8_default {
	pinconf-tx {
		pins = "gpio44";
		drive-strength = <2>;
		bias-disable;
	};

	pinconf-rx {
		pins = "gpio45";
		drive-strength = <2>;
		bias-pull-up;
	};
};

&sec_mi2s_active {
	pinconf {
		pins = "gpio49", "gpio50", "gpio51";
		drive-strength = <2>;
		bias-pull-down;
	};
};

/* PINCTRL - board-specific pinctrl */

&pm6150_gpio {
	status = "disabled"; /* No GPIOs are connected */
};

&pm6150l_gpio {
	gpio-line-names = "AP_SUSPEND",
			  "",
			  "",
			  "",
			  "",
			  "",
			  "",
			  "",
			  "",
			  "",
			  "",
			  "";
};

&tlmm {
	/*
	 * pinctrl settings for pins that have no real owners.
	 */
	pinctrl-names = "default";
	pinctrl-0 = <&bios_flash_wp_l>, <&ap_suspend_l_neuter>;

	amp_en: amp-en {
		pinmux {
			pins = "gpio23";
			function = "gpio";
		};

		pinconf {
			pins = "gpio23";
			bias-pull-down;
		};
	};

	ap_ec_int_l: ap-ec-int-l {
		pinmux {
			pins = "gpio94";
			function = "gpio";
			input-enable;
		};

		pinconf {
			pins = "gpio94";
			bias-pull-up;
		};
	};

	ap_edp_bklten: ap-edp-bklten {
		pinmux {
			pins = "gpio12";
			function = "gpio";
		};

		pinconf {
			pins = "gpio12";
			drive-strength = <2>;
			bias-disable;

			/* Force backlight to be disabled to match state at boot. */
			output-low;
		};
	};

	ap_suspend_l_neuter: ap-suspend-l-neuter {
		pinmux  {
			pins = "gpio27";
			function = "gpio";
		};

		pinconf {
			pins = "gpio27";
			bias-disable;
		};
	};

	bios_flash_wp_l: bios-flash-wp-l {
		pinmux {
			pins = "gpio66";
			function = "gpio";
			input-enable;
		};

		pinconf {
			pins = "gpio66";
			bias-disable;
		};
	};

	edp_brij_en: edp-brij-en {
		pinmux {
			pins = "gpio104";
			function = "gpio";
		};

		pinconf {
			pins = "gpio104";
			drive-strength = <2>;
			bias-disable;
		};
	};

	edp_brij_irq: edp-brij-irq {
		pinmux {
			pins = "gpio11";
			function = "gpio";
		};

		pinconf {
			pins = "gpio11";
			drive-strength = <2>;
			bias-pull-down;
		};
	};

	en_pp3300_codec: en-pp3300-codec {
		pinmux {
			pins = "gpio83";
			function = "gpio";
		};

		pinconf {
			pins = "gpio83";
			drive-strength = <2>;
			bias-disable;
		};
	};

	en_pp3300_dx_edp: en-pp3300-dx-edp {
		pinmux {
			pins = "gpio30";
			function = "gpio";
		};

		pinconf {
			pins = "gpio30";
			drive-strength = <2>;
			bias-disable;
		};
	};

	en_pp3300_hub: en-pp3300-hub {
		pinmux {
			pins = "gpio84";
			function = "gpio";
		};

		pinconf {
			pins = "gpio84";
			drive-strength = <2>;
			bias-disable;
		};
	};

	fp_to_ap_irq_l: fp-to-ap-irq-l {
		pinmux {
			pins = "gpio4";
			function = "gpio";
			input-enable;
		};

		pinconf {
			pins = "gpio4";

			/* Has external pullup */
			bias-disable;
		};
	};

	h1_ap_int_odl: h1-ap-int-odl {
		pinmux {
			pins = "gpio42";
			function = "gpio";
			input-enable;
		};

		pinconf {
			pins = "gpio42";
			bias-pull-up;
		};
	};

	hp_irq: hp-irq {
		pinmux {
			pins = "gpio28";
			function = "gpio";
		};

		pinconf {
			pins = "gpio28";
			bias-pull-up;
		};
	};

	pen_irq_l: pen-irq-l {
		pinmux {
			pins = "gpio21";
			function = "gpio";
		};

		pinconf {
			pins = "gpio21";

			/* Has external pullup */
			bias-disable;
		};
	};

	pen_pdct_l: pen-pdct-l {
		pinmux {
			pins = "gpio52";
			function = "gpio";
		};

		pinconf {
			pins = "gpio52";

			/* Has external pullup */
			bias-disable;
		};
	};

	pen_rst_odl: pen-rst-odl {
		pinmux  {
			pins = "gpio18";
			function = "gpio";
		};

		pinconf {
			pins = "gpio18";
			bias-disable;
			drive-strength = <2>;

			/*
			 * The pen driver doesn't currently support
			 * driving this reset line.  By specifying
			 * output-high here we're relying on the fact
			 * that this pin has a default pulldown at boot
			 * (which makes sure the pen was in reset if it
			 * was powered) and then we set it high here to
			 * take it out of reset.  Better would be if the
			 * pen driver could control this and we could
			 * remove "output-high" here.
			 */
			output-high; /* TODO: Remove this? */
		};
	};

	p_sensor_int_l: p-sensor-int-l {
		pinmux {
			pins = "gpio24";
			function = "gpio";
			input-enable;
		};

		pinconf {
			pins = "gpio24";
			/* Has external pullup */
			bias-disable;
		};
	};

	qup_spi0_cs_gpio_init_high: qup-spi0-cs-gpio-init-high {
		pinconf {
			pins = "gpio37";
			output-high;
		};
	};

	qup_spi6_cs_gpio_init_high: qup-spi6-cs-gpio-init-high {
		pinconf {
			pins = "gpio62";
			output-high;
		};
	};

	qup_spi10_cs_gpio_init_high: qup-spi10-cs-gpio-init-high {
		pinconf {
			pins = "gpio89";
			output-high;
		};
	};

	qup_uart3_sleep: qup-uart3-sleep {
		pinmux {
			pins = "gpio38", "gpio39",
			       "gpio40", "gpio41";
			function = "gpio";
		};

		pinconf-cts {
			/*
			 * Configure a pull-down on CTS to match the pull of
			 * the Bluetooth module.
			 */
			pins = "gpio38";
			bias-pull-down;
		};

		pinconf-rts {
			/*
			 * Configure pull-down on RTS. As RTS is active low
			 * signal, pull it low to indicate the BT SoC that it
			 * can wakeup the system anytime from suspend state by
			 * pulling RX low (by sending wakeup bytes).
			 */
			 pins = "gpio39";
			 bias-pull-down;
		};

		pinconf-tx {
			/*
			 * Configure pull-up on TX when it isn't actively driven
			 * to prevent BT SoC from receiving garbage during sleep.
			 */
			pins = "gpio40";
			bias-pull-up;
		};

		pinconf-rx {
			/*
			 * Configure a pull-up on RX. This is needed to avoid
			 * garbage data when the TX pin of the Bluetooth module
			 * is floating which may cause spurious wakeups.
			 */
			pins = "gpio41";
			bias-pull-up;
		};
	};

	/* Named trackpad_int_1v8_odl on earlier revision schematics */
	trackpad_int_1v8_odl:
	tp_int_odl: tp-int-odl {
		pinmux {
			pins = "gpio0";
			function = "gpio";
		};

		pinconf {
			pins = "gpio0";

			/* Has external pullup */
			bias-disable;
		};
	};

	ts_int_l: ts-int-l {
		pinmux  {
			pins = "gpio9";
			function = "gpio";
		};

		pinconf {
			pins = "gpio9";
			bias-pull-up;
		};
	};

	ts_reset_l: ts-reset-l {
		pinmux  {
			pins = "gpio8";
			function = "gpio";
		};

		pinconf {
			pins = "gpio8";
			bias-disable;
			drive-strength = <2>;
		};
	};

	sdc1_on: sdc1-on {
		pinconf-clk {
			pins = "sdc1_clk";
			bias-disable;
			drive-strength = <16>;
		};

		pinconf-cmd {
			pins = "sdc1_cmd";
			bias-pull-up;
			drive-strength = <10>;
		};

		pinconf-data {
			pins = "sdc1_data";
			bias-pull-up;
			drive-strength = <10>;
		};

		pinconf-rclk {
			pins = "sdc1_rclk";
			bias-pull-down;
		};
	};

	sdc1_off: sdc1-off {
		pinconf-clk {
			pins = "sdc1_clk";
			bias-disable;
			drive-strength = <2>;
		};

		pinconf-cmd {
			pins = "sdc1_cmd";
			bias-pull-up;
			drive-strength = <2>;
		};

		pinconf-data {
			pins = "sdc1_data";
			bias-pull-up;
			drive-strength = <2>;
		};

		pinconf-rclk {
			pins = "sdc1_rclk";
			bias-pull-down;
		};
	};

	sdc2_on: sdc2-on {
		pinconf-clk {
			pins = "sdc2_clk";
			bias-disable;
			drive-strength = <16>;
		};

		pinconf-cmd {
			pins = "sdc2_cmd";
			bias-pull-up;
			drive-strength = <10>;
		};

		pinconf-data {
			pins = "sdc2_data";
			bias-pull-up;
			drive-strength = <10>;
		};

		pinconf-sd-cd {
			pins = "gpio69";
			bias-pull-up;
			drive-strength = <2>;
		};
	};

	sdc2_off: sdc2-off {
		pinconf-clk {
			pins = "sdc2_clk";
			bias-disable;
			drive-strength = <2>;
		};

		pinconf-cmd {
			pins = "sdc2_cmd";
			bias-pull-up;
			drive-strength = <2>;
		};

		pinconf-data {
			pins = "sdc2_data";
			bias-pull-up;
			drive-strength = <2>;
		};

		pinconf-sd-cd {
			pins = "gpio69";
			bias-pull-up;
			drive-strength = <2>;
		};
	};
};
