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

		regulator-enable-ramp-delay = <3000>;

		/*
		 * eDP panel specs nearly always have a spec that says you
		 * shouldn't turn them off an on again without waiting 500ms.
		 * Add this as a board constraint since this rail is shared
		 * between the panel and touchscreen.
		 */
		off-on-delay-us = <500000>;

		/*
		 * Stat the regulator on. This has the advantage of starting
		 * the slow process of powering the panel on as soon as we
		 * probe the regulator. It also avoids tripping the
		 * off-on-delay immediately on every bootup.
		 */
		regulator-boot-on;

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

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

/* 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;		/* External pullup */
	drive-strength = <8>;
};

&qspi_clk {
	bias-pull-down;		/* No external pulls */
	drive-strength = <8>;
};

&qspi_data0 {
	bias-pull-down;		/* No external pulls */
	drive-strength = <8>;
};

&qspi_data1 {
	bias-disable;		/* External pulldown */
	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>;
	};
};
