// 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/leds/common.h>
#include <dt-bindings/regulator/qcom,rpmh-regulator.h>
#include <dt-bindings/sound/sc7180-lpass.h>

#include "sc7180.dtsi"
#include "sc7180-firmware-tfa.dtsi"
/* PMICs depend on spmi_bus label and so must come after sc7180.dtsi */
#include "pm6150.dtsi"
#include "pm6150l.dtsi"

/ {
	thermal-zones {
		charger_thermal: charger-thermal {
			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/ &ipa_fw_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;
		};

		mdata_mem: mpss-metadata {
			alloc-ranges = <0x0 0xa0000000 0x0 0x20000000>;
			size = <0x0 0x4000>;
			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>;
	};

	pp1800_ec:
	pp1800_sensors:
	pp1800_ldo: pp1800-ldo-regulator {
		compatible = "regulator-fixed";
		regulator-name = "pp1800_ldo";

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

		/*
		 * Actually should be pp1800_h1 but we don't have any need to
		 * model that so we use the parent of pp1800_h1.
		 */
		vin-supply = <&pp3300_a>;
	};

	pp1800_uf_cam: pp1800-uf-cam-regulator {
		compatible = "regulator-fixed";
		regulator-name = "pp1800_uf_cam";
		status = "disabled";

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

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

		vin-supply = <&pp1800_ldo>;
		regulator-enable-ramp-delay = <1000>;
	};

	pp1800_wf_cam: pp1800-wf-cam-regulator {
		compatible = "regulator-fixed";
		regulator-name = "pp1800_wf_cam";
		status = "disabled";

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

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

		vin-supply = <&pp1800_ldo>;
		regulator-enable-ramp-delay = <1000>;
	};

	pp2800_uf_cam: pp2800-uf-cam-regulator {
		compatible = "regulator-fixed";
		regulator-name = "pp2800_uf_cam";
		status = "disabled";

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

		gpio = <&tlmm 6 GPIO_ACTIVE_HIGH>;
		enable-active-high;
		/*
		 * The pinconf can only be referenced once so we put it on the
		 * first regulator and comment it out here.
		 * pinctrl-names = "default";
		 * pinctrl-0 = <&uf_cam_en>;
		 */

		vin-supply = <&pp3300_a>;
	};

	pp2800_vcm_wf_cam:
	pp2800_wf_cam: pp2800-wf-cam-regulator {
		compatible = "regulator-fixed";
		regulator-name = "pp2800_wf_cam";
		status = "disabled";

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

		gpio = <&tlmm 7 GPIO_ACTIVE_HIGH>;
		enable-active-high;
		/*
		 * The pinconf can only be referenced once so we put it on the
		 * first regulator and comment it out here.
		 * pinctrl-names = "default";
		 * pinctrl-0 = <&wf_cam_en>;
		 */

		vin-supply = <&pp3300_a>;
	};

	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-regulator {
		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>;

		/* The BIOS leaves this regulator 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: switch-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: pwmleds {
		compatible = "pwm-leds";
		status = "disabled";

		keyboard_backlight: led-0 {
			label = "cros_ec::kbd_backlight";
			function = LED_FUNCTION_KBD_BACKLIGHT;
			pwms = <&cros_ec_pwm 0>;
			max-brightness = <1023>;
		};
	};

	sound: sound {
		compatible = "google,sc7180-trogdor";

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

		#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@5 {
			link-name = "MultiMedia2";
			reg = <LPASS_DP_RX>;
			cpu {
				sound-dai = <&lpass_cpu LPASS_DP_RX>;
			};

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

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

&qspi {
	status = "okay";
	pinctrl-names = "default", "sleep";
	pinctrl-0 = <&qspi_clk>, <&qspi_cs0>, <&qspi_data0>, <&qspi_data1>;
	pinctrl-1 = <&qspi_sleep>;

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

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

&apps_rsc {
	regulators-0 {
		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>;
			regulator-always-on;
			regulator-boot-on;
		};

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

	regulators-1 {
		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: &spi6 {
	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>;
		wakeup-source;

		cros_ec_pwm: 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: &spi0 {
	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";
};

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

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

ap_tp_i2c: &i2c7 {
	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>;
};

&lpasscc {
	status = "okay";
};

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

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

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

	dai-link@5 {
		reg = <LPASS_DP_RX>;
	};
};

&lpass_hm {
	status = "okay";
};

&mdss {
	status = "okay";
};

&mdss_dp {
	status = "okay";
	pinctrl-names = "default";
	pinctrl-0 = <&dp_hot_plug_det>;
};

&mdss_dp_out {
	data-lanes = <0 1>;
	link-frequencies = /bits/ 64 <1620000000 2700000000 5400000000>;
};

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

&mdss_dsi0_out {
	data-lanes = <0 1 2 3>;
};

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

&pm6150_adc {
	channel@4f {
		reg = <ADC5_AMUX_THM3_100K_PU>;
		qcom,ratiometric;
		qcom,hw-settle-time = <200>;
		label = "charger_therm";
	};
};

&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";
	reg = <0 0x04080000 0 0x4040>, <0 0x04180000 0 0x48>;
	reg-names = "qdsp6", "rmb";

	clocks = <&gcc GCC_MSS_CFG_AHB_CLK>,
		 <&gcc GCC_MSS_Q6_MEMNOC_AXI_CLK>,
		 <&gcc GCC_MSS_NAV_AXI_CLK>,
		 <&gcc GCC_MSS_SNOC_AXI_CLK>,
		 <&gcc GCC_MSS_MFAB_AXIS_CLK>,
		 <&rpmhcc RPMH_CXO_CLK>;
	clock-names = "iface", "bus", "nav", "snoc_axi", "mnoc_axi", "xo";

	iommus = <&apps_smmu 0x461 0x0>, <&apps_smmu 0x444 0x3>;
	memory-region = <&mba_mem>, <&mpss_mem>, <&mdata_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";

	resets = <&aoss_reset AOSS_CC_MSS_RESTART>,
		 <&pdc_reset PDC_MODEM_SYNC_RESET>;
	reset-names = "mss_restart", "pdc_reset";

	qcom,halt-regs = <&tcsr_regs_1 0x3000 0x5000 0x4000>;
	qcom,spare-regs = <&tcsr_regs_2 0xb3e4>;
};

&scm {
	/* TF-A firmware maps memory cached so mark dma-coherent to match. */
	dma-coherent;
};

&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_spi>, <&qup_spi0_cs_gpio>;
	cs-gpios = <&tlmm 37 GPIO_ACTIVE_LOW>;
};

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

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

	cros_ec_fp: ec@0 {
		compatible = "google,cros-ec-fp", "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>, <&fp_rst_l>, <&fpmcu_boot0>;
		boot0-gpios = <&tlmm 10 GPIO_ACTIVE_HIGH>;
		reset-gpios = <&tlmm 22 GPIO_ACTIVE_LOW>;
		spi-max-frequency = <3000000>;
		vdd-supply = <&pp3300_fp_tp>;
	};
};

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

		qcom,local-bd-address-broken;
	};
};

&uart8 {
	status = "okay";
};

&usb_1 {
	status = "okay";
};

&usb_1_dwc3 {
	dr_mode = "host";
	#address-cells = <1>;
	#size-cells = <0>;

	/* 2.x hub on port 1 */
	usb_hub_2_x: hub@1 {
		compatible = "usbbda,5411";
		reg = <1>;
		vdd-supply = <&pp3300_hub>;
		peer-hub = <&usb_hub_3_x>;
	};

	/* 3.x hub on port 2 */
	usb_hub_3_x: hub@2 {
		compatible = "usbbda,411";
		reg = <2>;
		vdd-supply = <&pp3300_hub>;
		peer-hub = <&usb_hub_2_x>;
	};
};

&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 {
	bias-disable;
};

&pri_mi2s_active {
	drive-strength = <2>;
	bias-pull-down;
};

&pri_mi2s_mclk_active {
	drive-strength = <2>;
	bias-pull-down;
};

&qspi_cs0 {
	bias-disable;		/* External pullup */
};

&qspi_clk {
	drive-strength = <8>;
	bias-disable;		/* Rely on Cr50 internal pulldown */
};

&qspi_data0 {
	bias-disable;		/* Rely on Cr50 internal pulldown */
};

&qspi_data1 {
	bias-pull-down;
};

&qup_i2c2_default {
	drive-strength = <2>;

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

&qup_i2c4_default {
	drive-strength = <2>;

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

&qup_i2c5_default {
	drive-strength = <2>;

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

&qup_i2c7_default {
	drive-strength = <2>;

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

&qup_i2c9_default {
	drive-strength = <2>;

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

&qup_spi0_spi {
	drive-strength = <2>;
	bias-disable;
};

&qup_spi0_cs_gpio {
	drive-strength = <2>;
	bias-disable;
};

&qup_spi6_spi {
	drive-strength = <2>;
	bias-disable;
};

&qup_spi6_cs_gpio {
	drive-strength = <2>;
	bias-disable;
};

&qup_spi10_spi {
	drive-strength = <2>;
	bias-disable;
};

&qup_spi10_cs_gpio {
	drive-strength = <2>;
	bias-disable;
};

&qup_uart3_cts {
	/*
	 * Configure a pull-down on CTS to match the pull of
	 * the Bluetooth module.
	 */
	bias-pull-down;
};

&qup_uart3_rts {
	/* We'll drive RTS, so no pull */
	drive-strength = <2>;
	bias-disable;
};

&qup_uart3_tx {
	/* We'll drive TX, so no pull */
	drive-strength = <2>;
	bias-disable;
};

&qup_uart3_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).
	 */
	bias-pull-up;
};

&qup_uart8_tx {
	drive-strength = <2>;
	bias-disable;
};

&qup_uart8_rx {
	drive-strength = <2>;
	bias-pull-up;
};

&sec_mi2s_active {
	drive-strength = <2>;
	bias-pull-down;
};

/* PINCTRL - board-specific pinctrl */

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

&pm6150l_gpios {
	status = "disabled"; /* No GPIOs are consumed or configured */
	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-state {
		pins = "gpio23";
		function = "gpio";
		bias-pull-down;
	};

	ap_ec_int_l: ap-ec-int-l-state {
		pins = "gpio94";
		function = "gpio";
		bias-pull-up;
	};

	ap_edp_bklten: ap-edp-bklten-state {
		pins = "gpio12";
		function = "gpio";
		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-state {
		pins = "gpio27";
		function = "gpio";
		bias-disable;
	};

	bios_flash_wp_l: bios-flash-wp-l-state {
		pins = "gpio66";
		function = "gpio";
		bias-disable;
	};

	edp_brij_en: edp-brij-en-state {
		pins = "gpio104";
		function = "gpio";
		drive-strength = <2>;
		bias-disable;
	};

	en_pp3300_codec: en-pp3300-codec-state {
		pins = "gpio83";
		function = "gpio";
		drive-strength = <2>;
		bias-disable;
	};

	en_pp3300_dx_edp: en-pp3300-dx-edp-state {
		pins = "gpio30";
		function = "gpio";
		drive-strength = <2>;
		bias-disable;
	};

	en_pp3300_hub: en-pp3300-hub-state {
		pins = "gpio84";
		function = "gpio";
		drive-strength = <2>;
		bias-disable;
	};

	fp_rst_l: fp-rst-l-state {
		pins = "gpio22";
		function = "gpio";
		bias-disable;
		drive-strength = <2>;
	};

	fp_to_ap_irq_l: fp-to-ap-irq-l-state {
		pins = "gpio4";
		function = "gpio";

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

	fpmcu_boot0: fpmcu-boot0-state {
		pins = "gpio10";
		function = "gpio";
		bias-disable;
	};

	h1_ap_int_odl: h1-ap-int-odl-state {
		pins = "gpio42";
		function = "gpio";
		bias-pull-up;
	};

	hp_irq: hp-irq-state {
		pins = "gpio28";
		function = "gpio";
		bias-pull-up;
	};

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

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

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

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

	pen_rst_odl: pen-rst-odl-state {
		pins = "gpio18";
		function = "gpio";
		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-state {
		pins = "gpio24";
		function = "gpio";

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

	qspi_sleep: qspi-sleep-state {
		pins = "gpio63", "gpio64", "gpio65", "gpio68";

		/*
		 * When we're not actively transferring we want pins as GPIOs
		 * with output disabled so that the quad SPI IP block stops
		 * driving them. We rely on the normal pulls configured in
		 * the active state and don't redefine them here. Also note
		 * that we don't need the reverse (output-enable) in the
		 * normal mode since the "output-enable" only matters for
		 * GPIO function.
		 */
		function = "gpio";
		output-disable;
	};

	qup_uart3_sleep: qup-uart3-sleep-state {
		cts-pins {
			/*
			 * Configure a pull-down on CTS to match the pull of
			 * the Bluetooth module.
			 */
			pins = "gpio38";
			function = "gpio";
			bias-pull-down;
		};

		rts-pins {
			/*
			 * 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";
			function = "gpio";
			bias-pull-down;
		};

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

		rx-pins {
			/*
			 * 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";
			function = "gpio";
			bias-pull-up;
		};
	};

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

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

	ts_int_l: ts-int-l-state {
		pins = "gpio9";
		function = "gpio";
		bias-pull-up;
	};

	ts_reset_l: ts-reset-l-state {
		pins = "gpio8";
		function = "gpio";
		bias-disable;

		/*
		 * The reset GPIO to the touchscreen takes almost 2ms to drop
		 * at the default drive strength. When we bump it up to 8mA it
		 * falls in under 500us. We want this to be fast since the Elan
		 * datasheet (and any drivers written based on it) talk about using
		 * a 500 us reset pulse.
		 */
		drive-strength = <8>;
	};

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	uf_cam_en: uf-cam-en-state {
		pins = "gpio6";
		function = "gpio";
		drive-strength = <2>;

		/* External pull down */
		bias-disable;
	};

	wf_cam_en: wf-cam-en-state {
		pins = "gpio7";
		function = "gpio";
		drive-strength = <2>;

		/* External pull down */
		bias-disable;
	};
};
