// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
/*
 * Google Herobrine baseboard device tree source
 *
 * The set of things in this file is a bit loosely defined. It's roughly
 * defined as the set of things that the child boards happen to have in
 * common. Since all of the child boards started from the same original
 * design this is hopefully a large set of things but as more derivatives
 * appear things may "bubble down" out of this file. For things that are
 * part of the reference design but might not exist on child nodes we will
 * follow the lead of the SoC dtsi files and leave their status as "disabled".
 *
 * Copyright 2022 Google LLC.
 */

#include <dt-bindings/input/gpio-keys.h>
#include <dt-bindings/input/input.h>
#include <dt-bindings/leds/common.h>

#include "sc7280-qcard.dtsi"
#include "sc7280-chrome-common.dtsi"

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

	/*
	 * FIXED REGULATORS
	 *
	 * Sort order:
	 * 1. parents above children.
	 * 2. higher voltage above lower voltage.
	 * 3. alphabetically by node name.
	 */

	/* 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_s5: pp5000-s5-regulator {
		compatible = "regulator-fixed";
		regulator-name = "pp5000_s5";

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

		vin-supply = <&ppvar_sys>;
	};

	pp3300_z1: pp3300-z1-regulator {
		compatible = "regulator-fixed";
		regulator-name = "pp3300_z1";

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

		vin-supply = <&ppvar_sys>;
	};

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

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

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

		vin-supply = <&pp3300_z1>;
		status = "disabled";
	};

	pp3300_left_in_mlb: pp3300-left-in-mlb-regulator {
		compatible = "regulator-fixed";
		regulator-name = "pp3300_left_in_mlb";

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

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

		vin-supply = <&pp3300_z1>;
	};

	pp3300_mcu_fp:
	pp3300_fp_ls:
	pp3300_fp_mcu: pp3300-fp-regulator {
		compatible = "regulator-fixed";
		regulator-name = "pp3300_fp";

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

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

		/*
		 * WARNING: it is intentional that GPIO 77 isn't listed here.
		 * The userspace script for updating the fingerprint firmware
		 * needs to control the FP regulators during a FW update,
		 * hence the signal can't be owned by the kernel regulator.
		 */

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

		vin-supply = <&pp3300_z1>;
		status = "disabled";
	};

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

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

		/* The BIOS leaves this regulator on */
		regulator-boot-on;

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

		vin-supply = <&pp3300_z1>;
	};

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

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

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

		vin-supply = <&pp3300_z1>;
	};

	pp3300_ssd: pp3300-ssd-regulator {
		compatible = "regulator-fixed";
		regulator-name = "pp3300_ssd";

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

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

		/*
		 * The bootloaer may have left PCIe configured. Powering this
		 * off while the PCIe clocks are still running isn't great,
		 * so it's better to default to this regulator being on.
		 */
		regulator-boot-on;

		vin-supply = <&pp3300_z1>;
	};

	pp2850_vcm_wf_cam: pp2850-vcm-wf-cam-regulator {
		compatible = "regulator-fixed";
		regulator-name = "pp2850_vcm_wf_cam";

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

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

		vin-supply = <&pp3300_z1>;
		status = "disabled";
	};

	pp2850_wf_cam: pp2850-wf-cam-regulator {
		compatible = "regulator-fixed";
		regulator-name = "pp2850_wf_cam";

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

		gpio = <&tlmm 119 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_z1>;
		status = "disabled";
	};

	pp1800_fp: pp1800-fp-regulator {
		compatible = "regulator-fixed";
		regulator-name = "pp1800_fp";

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

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

		/*
		 * WARNING: it is intentional that GPIO 77 isn't listed here.
		 * The userspace script for updating the fingerprint firmware
		 * needs to control the FP regulators during a FW update,
		 * hence the signal can't be owned by the kernel regulator.
		 */

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

		vin-supply = <&pp1800_l18b_s0>;
		status = "disabled";
	};

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

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

		gpio = <&tlmm 119 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 = <&vreg_l19b_s0>;
		status = "disabled";
	};

	pp1200_wf_cam: pp1200-wf-cam-regulator {
		compatible = "regulator-fixed";
		regulator-name = "pp1200_wf_cam";

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

		gpio = <&tlmm 119 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_z1>;
		status = "disabled";
	};

	/* BOARD-SPECIFIC TOP LEVEL NODES */

	max98360a: audio-codec-0 {
		compatible = "maxim,max98360a";
		pinctrl-names = "default";
		pinctrl-0 = <&amp_en>;
		sdmode-gpios = <&tlmm 63 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>;
		};
	};
};

/*
 * ADJUSTMENTS TO QCARD REGULATORS
 *
 * Mostly this is just board-local names for regulators that come from
 * Qcard, but this also has some minor regulator overrides.
 *
 * Names are only listed here if regulators go somewhere other than a
 * testpoint.
 */

/* From Qcard to our board; ordered by PMIC-ID / rail number */

pp1256_s8b: &vreg_s8b_1p256 {};

pp1800_l18b_s0: &vreg_l18b_1p8 {};
pp1800_l18b:    &vreg_l18b_1p8 {};

vreg_l19b_s0: &vreg_l19b_1p8 {};

pp1800_alc5682: &vreg_l2c_1p8 {};
pp1800_l2c:     &vreg_l2c_1p8 {};

vreg_l4c: &vreg_l4c_1p8_3p0 {};

ppvar_l6c: &vreg_l6c_2p96 {};

pp3000_l7c: &vreg_l7c_3p0 {};

pp1800_prox: &vreg_l8c_1p8 {};
pp1800_l8c:  &vreg_l8c_1p8 {};

pp2950_l9c: &vreg_l9c_2p96 {};

pp1800_lcm:  &vreg_l12c_1p8 {};
pp1800_mipi: &vreg_l12c_1p8 {};
pp1800_l12c: &vreg_l12c_1p8 {};

pp3300_lcm:  &vreg_l13c_3p0 {};
pp3300_mipi: &vreg_l13c_3p0 {};
pp3300_l13c: &vreg_l13c_3p0 {};

/* From our board to Qcard; ordered same as node definition above */

vreg_edp_bl: &ppvar_sys {};

ts_avdd:      &pp3300_left_in_mlb {};
vreg_edp_3p3: &pp3300_left_in_mlb {};

/* Regulator overrides from Qcard */

/*
 * Herobrine boards only use l2c to power an external audio codec (like
 * alc5682) and we want that to be at 1.8V, not at some slightly lower voltage.
 */
&vreg_l2c_1p8 {
	regulator-min-microvolt = <1800000>;
};

/* ADDITIONS TO NODES DEFINED IN PARENT DEVICE TREE FILES */

&edp_panel {
	/* Our board provides power to the qcard for the eDP panel. */
	power-supply = <&vreg_edp_3p3>;
};

ap_sar_sensor_i2c: &i2c1 {
	clock-frequency = <400000>;
	status = "disabled";

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

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

		vdd-supply = <&pp1800_prox>;

		label = "proximity-wifi_cellular-0";
		status = "disabled";
	};

	ap_sar_sensor1: proximity@2c {
		compatible = "semtech,sx9324";
		reg = <0x2c>;
		#io-channel-cells = <1>;
		pinctrl-names = "default";
		pinctrl-0 = <&sar1_irq_odl>;

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

		vdd-supply = <&pp1800_prox>;

		label = "proximity-wifi_cellular-1";
		status = "disabled";
	};
};

ap_i2c_tpm: &i2c14 {
	status = "okay";
	clock-frequency = <400000>;

	tpm@50 {
		compatible = "google,cr50";
		reg = <0x50>;

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

		interrupt-parent = <&tlmm>;
		interrupts = <104 IRQ_TYPE_EDGE_RISING>;
	};
};

&mdss {
	status = "okay";
};

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

&mdss_mdp {
	status = "okay";
};

/* NVMe drive, enabled on a per-board basis */
&pcie1 {
	pinctrl-names = "default";
	pinctrl-0 = <&pcie1_clkreq_n>, <&ssd_rst_l>, <&pe_wake_odl>;

	perst-gpios = <&tlmm 2 GPIO_ACTIVE_LOW>;
	vddpe-3v3-supply = <&pp3300_ssd>;
};

&pm8350c_pwm {
	status = "okay";
};

&pm8350c_pwm_backlight {
	status = "okay";

	/* Our board provides power to the qcard for the backlight */
	power-supply = <&vreg_edp_bl>;
};

&pmk8350_rtc {
	status = "disabled";
};

&qupv3_id_0 {
	status = "okay";
};

&qupv3_id_1 {
	status = "okay";
};

/* SD Card, enabled on a per-board basis */
&sdhc_2 {
	pinctrl-0 = <&sdc2_clk>, <&sdc2_cmd>, <&sdc2_data>, <&sd_cd_odl>;
	pinctrl-1 = <&sdc2_clk_sleep>, <&sdc2_cmd_sleep>, <&sdc2_data_sleep>, <&sd_cd_odl>;

	vmmc-supply = <&pp2950_l9c>;
	vqmmc-supply = <&ppvar_l6c>;

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

&spi_flash {
	spi-max-frequency = <50000000>;
};

/* Fingerprint, enabled on a per-board basis */
ap_spi_fp: &spi9 {
	pinctrl-0 = <&qup_spi9_data_clk>, <&qup_spi9_cs_gpio_init_high>, <&qup_spi9_cs_gpio>;

	cs-gpios = <&tlmm 39 GPIO_ACTIVE_LOW>;

	cros_ec_fp: ec@0 {
		compatible = "google,cros-ec-fp", "google,cros-ec-spi";
		reg = <0>;
		interrupt-parent = <&tlmm>;
		interrupts = <61 IRQ_TYPE_LEVEL_LOW>;
		pinctrl-names = "default";
		pinctrl-0 = <&fp_to_ap_irq_l>, <&fp_rst_l>, <&fpmcu_boot0>;
		boot0-gpios = <&tlmm 68 GPIO_ACTIVE_HIGH>;
		reset-gpios = <&tlmm 78 GPIO_ACTIVE_LOW>;
		spi-max-frequency = <3000000>;
		vdd-supply = <&pp3300_fp_mcu>;
	};
};

ap_ec_spi: &spi10 {
	status = "okay";
	pinctrl-0 = <&qup_spi10_data_clk>, <&qup_spi10_cs_gpio_init_high>, <&qup_spi10_cs_gpio>;

	cs-gpios = <&tlmm 43 GPIO_ACTIVE_LOW>;

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

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

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

&keyboard_controller {
	function-row-physmap = <
		MATRIX_KEY(0x00, 0x02, 0)	/* T1 */
		MATRIX_KEY(0x03, 0x02, 0)	/* T2 */
		MATRIX_KEY(0x02, 0x02, 0)	/* T3 */
		MATRIX_KEY(0x01, 0x02, 0)	/* T4 */
		MATRIX_KEY(0x03, 0x04, 0)	/* T5 */
		MATRIX_KEY(0x02, 0x04, 0)	/* T6 */
		MATRIX_KEY(0x01, 0x04, 0)	/* T7 */
		MATRIX_KEY(0x02, 0x09, 0)	/* T8 */
		MATRIX_KEY(0x01, 0x09, 0)	/* T9 */
		MATRIX_KEY(0x00, 0x04, 0)	/* T10 */
	>;
	linux,keymap = <
		MATRIX_KEY(0x00, 0x02, KEY_BACK)
		MATRIX_KEY(0x03, 0x02, KEY_REFRESH)
		MATRIX_KEY(0x02, 0x02, KEY_ZOOM)
		MATRIX_KEY(0x01, 0x02, KEY_SCALE)
		MATRIX_KEY(0x03, 0x04, KEY_SYSRQ)
		MATRIX_KEY(0x02, 0x04, KEY_BRIGHTNESSDOWN)
		MATRIX_KEY(0x01, 0x04, KEY_BRIGHTNESSUP)
		MATRIX_KEY(0x02, 0x09, KEY_MUTE)
		MATRIX_KEY(0x01, 0x09, KEY_VOLUMEDOWN)
		MATRIX_KEY(0x00, 0x04, KEY_VOLUMEUP)

		CROS_STD_MAIN_KEYMAP
	>;
};

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

	qcom,hs-rise-fall-time-bp = <0>;
	qcom,squelch-detector-bp = <(-2090)>;
	qcom,hs-disconnect-bp = <1743>;
	qcom,hs-amplitude-bp = <1780>;
	qcom,hs-crossover-voltage-microvolt = <(-31000)>;
	qcom,hs-output-impedance-micro-ohms = <2600000>;
};

&usb_1_qmpphy {
	status = "okay";
};

/* PINCTRL - ADDITIONS TO NODES IN PARENT DEVICE TREE FILES */

&dp_hot_plug_det {
	bias-disable;
};

&mi2s1_data0 {
	drive-strength = <6>;
	bias-disable;
};

&mi2s1_sclk {
	drive-strength = <6>;
	bias-disable;
};

&mi2s1_ws {
	drive-strength = <6>;
	bias-disable;
};

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

&qspi_cs0 {
	bias-disable;
	drive-strength = <8>;
};

&qspi_clk {
	bias-disable;
	drive-strength = <8>;
};

&qspi_data01 {
	/* High-Z when no transfers; nice to park the lines */
	bias-pull-up;
	drive-strength = <8>;
};

/* For ap_tp_i2c */
&qup_i2c0_data_clk {
	/* Has external pull */
	bias-disable;
	drive-strength = <2>;
};

/* For ap_i2c_tpm */
&qup_i2c14_data_clk {
	/* Has external pull */
	bias-disable;
	drive-strength = <2>;
};

/* For ap_spi_fp */
&qup_spi9_data_clk {
	bias-disable;
	drive-strength = <2>;
};

/* For ap_spi_fp */
&qup_spi9_cs_gpio {
	bias-disable;
	drive-strength = <2>;
};

/* For ap_ec_spi */
&qup_spi10_data_clk {
	bias-disable;
	drive-strength = <2>;
};

/* For ap_ec_spi */
&qup_spi10_cs_gpio {
	bias-disable;
	drive-strength = <2>;
};

/* For uart_dbg */
&qup_uart5_rx {
	bias-pull-up;
};

/* For uart_dbg */
&qup_uart5_tx {
	bias-disable;
	drive-strength = <2>;
};

&sdc2_clk {
	bias-disable;
	drive-strength = <16>;
};

&sdc2_cmd {
	bias-pull-up;
	drive-strength = <10>;
};

&sdc2_data {
	bias-pull-up;
	drive-strength = <10>;
};

/* PINCTRL - board-specific pinctrl */

&pm7325_gpios {
	/*
	 * On a quick glance it might look like KYPD_VOL_UP_N is used, but
	 * that only passes through to a debug connector and not to the actual
	 * volume up key.
	 */
	status = "disabled"; /* No GPIOs are connected */
};

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

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

	amp_en: amp-en-state {
		pins = "gpio63";
		function = "gpio";
		bias-disable;
		drive-strength = <2>;
	};

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

	bios_flash_wp_od: bios-flash-wp-od-state {
		pins = "gpio16";
		function = "gpio";
		/* Has external pull */
		bias-disable;
	};

	en_fp_rails: en-fp-rails-state {
		pins = "gpio77";
		function = "gpio";
		bias-disable;
		drive-strength = <2>;
		output-high;
	};

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

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

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

	fp_to_ap_irq_l: fp-to-ap-irq-l-state {
		pins = "gpio61";
		function = "gpio";
		/* Has external pullup */
		bias-disable;
	};

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

	gsc_ap_int_odl: gsc-ap-int-odl-state {
		pins = "gpio104";
		function = "gpio";
		bias-pull-up;
	};

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

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

	pe_wake_odl: pe-wake-odl-state {
		pins = "gpio3";
		function = "gpio";
		/* Has external pull */
		bias-disable;
		drive-strength = <2>;
	};

	/* For ap_spi_fp */
	qup_spi9_cs_gpio_init_high: qup-spi9-cs-gpio-init-high-state {
		pins = "gpio39";
		function = "gpio";
		output-high;
	};

	/* For ap_ec_spi */
	qup_spi10_cs_gpio_init_high: qup-spi10-cs-gpio-init-high-state {
		pins = "gpio43";
		function = "gpio";
		output-high;
	};

	sar0_irq_odl: sar0-irq-odl-state {
		pins = "gpio141";
		function = "gpio";
		bias-pull-up;
	};

	sar1_irq_odl: sar1-irq-odl-state {
		pins = "gpio140";
		function = "gpio";
		bias-pull-up;
	};

	sd_cd_odl: sd-cd-odl-state {
		pins = "gpio91";
		function = "gpio";
		bias-pull-up;
	};

	ssd_en: ssd-en-state {
		pins = "gpio51";
		function = "gpio";
		bias-disable;
		drive-strength = <2>;
	};

	ssd_rst_l: ssd-rst-l-state {
		pins = "gpio2";
		function = "gpio";
		bias-disable;
		drive-strength = <2>;
		output-low;
	};

	tp_int_odl: tp-int-odl-state {
		pins = "gpio7";
		function = "gpio";
		/* Has external pullup */
		bias-disable;
	};

	wf_cam_en: wf-cam-en-state {
		pins = "gpio119";
		function = "gpio";
		/* Has external pulldown */
		bias-disable;
		drive-strength = <2>;
	};
};
