// SPDX-License-Identifier: (GPL-2.0 OR MIT)
/*
 * Copyright (C) 2020 MediaTek Inc.
 * Author: Seiya Wang <seiya.wang@mediatek.com>
 */
/dts-v1/;
#include "mt8192.dtsi"
#include "mt6359.dtsi"
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/spmi/spmi.h>

/ {
	aliases {
		i2c0 = &i2c0;
		i2c1 = &i2c1;
		i2c2 = &i2c2;
		i2c3 = &i2c3;
		i2c7 = &i2c7;
		mmc0 = &mmc0;
		mmc1 = &mmc1;
		serial0 = &uart0;
	};

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

	memory@40000000 {
		device_type = "memory";
		reg = <0 0x40000000 0 0x80000000>;
	};

	backlight_lcd0: backlight-lcd0 {
		compatible = "pwm-backlight";
		pwms = <&pwm0 0 500000>;
		power-supply = <&ppvar_sys>;
		enable-gpios = <&pio 152 0>;
		brightness-levels = <0 1023>;
		num-interpolated-steps = <1023>;
		default-brightness-level = <576>;
	};

	dmic_codec: dmic-codec {
		compatible = "dmic-codec";
		num-channels = <2>;
		wakeup-delay-ms = <50>;
	};

	pp1000_dpbrdg: regulator-1v0-dpbrdg {
		compatible = "regulator-fixed";
		regulator-name = "pp1000_dpbrdg";
		pinctrl-names = "default";
		pinctrl-0 = <&pp1000_dpbrdg_en_pins>;
		regulator-min-microvolt = <1000000>;
		regulator-max-microvolt = <1000000>;
		enable-active-high;
		regulator-boot-on;
		gpio = <&pio 19 GPIO_ACTIVE_HIGH>;
		vin-supply = <&mt6359_vs2_buck_reg>;
	};

	pp1000_mipibrdg: regulator-1v0-mipibrdg {
		compatible = "regulator-fixed";
		regulator-name = "pp1000_mipibrdg";
		pinctrl-names = "default";
		pinctrl-0 = <&pp1000_mipibrdg_en_pins>;
		regulator-min-microvolt = <1000000>;
		regulator-max-microvolt = <1000000>;
		enable-active-high;
		regulator-boot-on;
		gpio = <&pio 129 GPIO_ACTIVE_HIGH>;
		vin-supply = <&mt6359_vs2_buck_reg>;
	};

	pp1800_dpbrdg: regulator-1v8-dpbrdg {
		compatible = "regulator-fixed";
		regulator-name = "pp1800_dpbrdg";
		pinctrl-names = "default";
		pinctrl-0 = <&pp1800_dpbrdg_en_pins>;
		enable-active-high;
		regulator-boot-on;
		gpio = <&pio 126 GPIO_ACTIVE_HIGH>;
		vin-supply = <&mt6359_vio18_ldo_reg>;
	};

	/* system wide LDO 1.8V power rail */
	pp1800_ldo_g: regulator-1v8-g {
		compatible = "regulator-fixed";
		regulator-name = "pp1800_ldo_g";
		regulator-always-on;
		regulator-boot-on;
		regulator-min-microvolt = <1800000>;
		regulator-max-microvolt = <1800000>;
		vin-supply = <&pp3300_g>;
	};

	pp1800_mipibrdg: regulator-1v8-mipibrdg {
		compatible = "regulator-fixed";
		regulator-name = "pp1800_mipibrdg";
		pinctrl-names = "default";
		pinctrl-0 = <&pp1800_mipibrdg_en_pins>;
		enable-active-high;
		regulator-boot-on;
		gpio = <&pio 128 GPIO_ACTIVE_HIGH>;
		vin-supply = <&mt6359_vio18_ldo_reg>;
	};

	pp3300_dpbrdg: regulator-3v3-dpbrdg {
		compatible = "regulator-fixed";
		regulator-name = "pp3300_dpbrdg";
		pinctrl-names = "default";
		pinctrl-0 = <&pp3300_dpbrdg_en_pins>;
		enable-active-high;
		regulator-boot-on;
		gpio = <&pio 26 GPIO_ACTIVE_HIGH>;
		vin-supply = <&pp3300_g>;
	};

	/* system wide switching 3.3V power rail */
	pp3300_g: regulator-3v3-g {
		compatible = "regulator-fixed";
		regulator-name = "pp3300_g";
		regulator-always-on;
		regulator-boot-on;
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
		vin-supply = <&ppvar_sys>;
	};

	/* system wide LDO 3.3V power rail */
	pp3300_ldo_z: regulator-3v3-z {
		compatible = "regulator-fixed";
		regulator-name = "pp3300_ldo_z";
		regulator-always-on;
		regulator-boot-on;
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
		vin-supply = <&ppvar_sys>;
	};

	pp3300_mipibrdg: regulator-3v3-mipibrdg {
		compatible = "regulator-fixed";
		regulator-name = "pp3300_mipibrdg";
		pinctrl-names = "default";
		pinctrl-0 = <&pp3300_mipibrdg_en_pins>;
		enable-active-high;
		regulator-boot-on;
		gpio = <&pio 127 GPIO_ACTIVE_HIGH>;
		vin-supply = <&pp3300_g>;
	};

	/* separately switched 3.3V power rail */
	pp3300_u: regulator-3v3-u {
		compatible = "regulator-fixed";
		regulator-name = "pp3300_u";
		regulator-always-on;
		regulator-boot-on;
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
		/* enable pin wired to GPIO controlled by EC */
		vin-supply = <&pp3300_g>;
	};

	pp3300_wlan: regulator-3v3-wlan {
		compatible = "regulator-fixed";
		regulator-name = "pp3300_wlan";
		regulator-always-on;
		regulator-boot-on;
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
		pinctrl-names = "default";
		pinctrl-0 = <&pp3300_wlan_pins>;
		enable-active-high;
		gpio = <&pio 143 GPIO_ACTIVE_HIGH>;
	};

	/* system wide switching 5.0V power rail */
	pp5000_a: regulator-5v0-a {
		compatible = "regulator-fixed";
		regulator-name = "pp5000_a";
		regulator-always-on;
		regulator-boot-on;
		regulator-min-microvolt = <5000000>;
		regulator-max-microvolt = <5000000>;
		vin-supply = <&ppvar_sys>;
	};

	/* system wide semi-regulated power rail from battery or USB */
	ppvar_sys: regulator-var-sys {
		compatible = "regulator-fixed";
		regulator-name = "ppvar_sys";
		regulator-always-on;
		regulator-boot-on;
	};

	reserved_memory: reserved-memory {
		#address-cells = <2>;
		#size-cells = <2>;
		ranges;

		scp_mem_reserved: scp@50000000 {
			compatible = "shared-dma-pool";
			reg = <0 0x50000000 0 0x2900000>;
			no-map;
		};

		wifi_restricted_dma_region: wifi@c0000000 {
			compatible = "restricted-dma-pool";
			reg = <0 0xc0000000 0 0x4000000>;
		};
	};

	sound: sound {
		mediatek,platform = <&afe>;
		pinctrl-names = "aud_clk_mosi_off",
				"aud_clk_mosi_on",
				"aud_dat_mosi_off",
				"aud_dat_mosi_on",
				"aud_dat_miso_off",
				"aud_dat_miso_on",
				"vow_dat_miso_off",
				"vow_dat_miso_on",
				"vow_clk_miso_off",
				"vow_clk_miso_on",
				"aud_nle_mosi_off",
				"aud_nle_mosi_on",
				"aud_dat_miso2_off",
				"aud_dat_miso2_on",
				"aud_gpio_i2s3_off",
				"aud_gpio_i2s3_on",
				"aud_gpio_i2s8_off",
				"aud_gpio_i2s8_on",
				"aud_gpio_i2s9_off",
				"aud_gpio_i2s9_on",
				"aud_dat_mosi_ch34_off",
				"aud_dat_mosi_ch34_on",
				"aud_dat_miso_ch34_off",
				"aud_dat_miso_ch34_on",
				"aud_gpio_tdm_off",
				"aud_gpio_tdm_on";
		pinctrl-0 = <&aud_clk_mosi_off_pins>;
		pinctrl-1 = <&aud_clk_mosi_on_pins>;
		pinctrl-2 = <&aud_dat_mosi_off_pins>;
		pinctrl-3 = <&aud_dat_mosi_on_pins>;
		pinctrl-4 = <&aud_dat_miso_off_pins>;
		pinctrl-5 = <&aud_dat_miso_on_pins>;
		pinctrl-6 = <&vow_dat_miso_off_pins>;
		pinctrl-7 = <&vow_dat_miso_on_pins>;
		pinctrl-8 = <&vow_clk_miso_off_pins>;
		pinctrl-9 = <&vow_clk_miso_on_pins>;
		pinctrl-10 = <&aud_nle_mosi_off_pins>;
		pinctrl-11 = <&aud_nle_mosi_on_pins>;
		pinctrl-12 = <&aud_dat_miso2_off_pins>;
		pinctrl-13 = <&aud_dat_miso2_on_pins>;
		pinctrl-14 = <&aud_gpio_i2s3_off_pins>;
		pinctrl-15 = <&aud_gpio_i2s3_on_pins>;
		pinctrl-16 = <&aud_gpio_i2s8_off_pins>;
		pinctrl-17 = <&aud_gpio_i2s8_on_pins>;
		pinctrl-18 = <&aud_gpio_i2s9_off_pins>;
		pinctrl-19 = <&aud_gpio_i2s9_on_pins>;
		pinctrl-20 = <&aud_dat_mosi_ch34_off_pins>;
		pinctrl-21 = <&aud_dat_mosi_ch34_on_pins>;
		pinctrl-22 = <&aud_dat_miso_ch34_off_pins>;
		pinctrl-23 = <&aud_dat_miso_ch34_on_pins>;
		pinctrl-24 = <&aud_gpio_tdm_off_pins>;
		pinctrl-25 = <&aud_gpio_tdm_on_pins>;
	};
};

&dsi0 {
	status = "okay";
};

&dsi_out {
	remote-endpoint = <&anx7625_in>;
};

&gic {
	mediatek,broken-save-restore-fw;
};

&gpu {
	mali-supply = <&mt6315_7_vbuck1>;
	status = "okay";
};

&i2c0 {
	status = "okay";

	clock-frequency = <400000>;
	pinctrl-names = "default";
	pinctrl-0 = <&i2c0_pins>;

	touchscreen: touchscreen@10 {
		reg = <0x10>;
		interrupts-extended = <&pio 21 IRQ_TYPE_LEVEL_LOW>;
		pinctrl-names = "default";
		pinctrl-0 = <&touchscreen_pins>;
	};
};

&i2c1 {
	status = "okay";

	clock-frequency = <400000>;
	pinctrl-names = "default";
	pinctrl-0 = <&i2c1_pins>;
};

&i2c2 {
	status = "okay";

	clock-frequency = <400000>;
	clock-stretch-ns = <12600>;
	pinctrl-names = "default";
	pinctrl-0 = <&i2c2_pins>;

	trackpad@15 {
		compatible = "elan,ekth3000";
		reg = <0x15>;
		interrupts-extended = <&pio 15 IRQ_TYPE_LEVEL_LOW>;
		pinctrl-names = "default";
		pinctrl-0 = <&trackpad_pins>;
		vcc-supply = <&pp3300_u>;
		wakeup-source;
	};
};

&i2c3 {
	status = "okay";

	clock-frequency = <400000>;
	pinctrl-names = "default";
	pinctrl-0 = <&i2c3_pins>;

	anx_bridge: anx7625@58 {
		compatible = "analogix,anx7625";
		reg = <0x58>;
		pinctrl-names = "default";
		pinctrl-0 = <&anx7625_pins>;
		enable-gpios = <&pio 41 GPIO_ACTIVE_HIGH>;
		reset-gpios = <&pio 42 GPIO_ACTIVE_HIGH>;
		vdd10-supply = <&pp1000_mipibrdg>;
		vdd18-supply = <&pp1800_mipibrdg>;
		vdd33-supply = <&pp3300_mipibrdg>;

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

			port@0 {
				reg = <0>;

				anx7625_in: endpoint {
					remote-endpoint = <&dsi_out>;
				};
			};

			port@1 {
				reg = <1>;

				anx7625_out: endpoint {
					remote-endpoint = <&panel_in>;
				};
			};
		};

		aux-bus {
			panel: panel {
				compatible = "edp-panel";
				power-supply = <&pp3300_mipibrdg>;
				backlight = <&backlight_lcd0>;

				port {
					panel_in: endpoint {
						remote-endpoint = <&anx7625_out>;
					};
				};
			};
		};
	};
};

&i2c7 {
	status = "okay";

	clock-frequency = <400000>;
	pinctrl-names = "default";
	pinctrl-0 = <&i2c7_pins>;
};

&mfg0 {
	domain-supply = <&mt6315_7_vbuck1>;
};

&mfg1 {
	domain-supply = <&mt6359_vsram_others_ldo_reg>;
};

&mipi_tx0 {
	status = "okay";
};

&mmc0 {
	status = "okay";

	pinctrl-names = "default", "state_uhs";
	pinctrl-0 = <&mmc0_default_pins>;
	pinctrl-1 = <&mmc0_uhs_pins>;
	bus-width = <8>;
	max-frequency = <200000000>;
	vmmc-supply = <&mt6359_vemc_1_ldo_reg>;
	vqmmc-supply = <&mt6359_vufs_ldo_reg>;
	cap-mmc-highspeed;
	mmc-hs200-1_8v;
	mmc-hs400-1_8v;
	supports-cqe;
	cap-mmc-hw-reset;
	mmc-hs400-enhanced-strobe;
	hs400-ds-delay = <0x12814>;
	no-sdio;
	no-sd;
	non-removable;
};

&mmc1 {
	status = "okay";

	pinctrl-names = "default", "state_uhs";
	pinctrl-0 = <&mmc1_default_pins>;
	pinctrl-1 = <&mmc1_uhs_pins>;
	bus-width = <4>;
	max-frequency = <200000000>;
	cd-gpios = <&pio 17 GPIO_ACTIVE_LOW>;
	vmmc-supply = <&mt6360_ldo5_reg>;
	vqmmc-supply = <&mt6360_ldo3_reg>;
	cap-sd-highspeed;
	sd-uhs-sdr50;
	sd-uhs-sdr104;
	no-sdio;
	no-mmc;
};

/* for CORE */
&mt6359_vgpu11_buck_reg {
	regulator-always-on;
};

&mt6359_vgpu11_sshub_buck_reg {
	regulator-always-on;
	regulator-min-microvolt = <575000>;
	regulator-max-microvolt = <575000>;
};

&mt6359_vrf12_ldo_reg {
	regulator-always-on;
};

&mt6359_vsram_others_ldo_reg {
	regulator-min-microvolt = <750000>;
	regulator-max-microvolt = <800000>;
	regulator-coupled-with = <&mt6315_7_vbuck1>;
	regulator-coupled-max-spread = <10000>;
};

&mt6359_vufs_ldo_reg {
	regulator-always-on;
};

&mt6359codec {
	mediatek,dmic-mode = <1>; /* one-wire */
	mediatek,mic-type-0 = <2>; /* DMIC */
	mediatek,mic-type-2 = <2>; /* DMIC */
};

&nor_flash {
	status = "okay";

	pinctrl-names = "default";
	pinctrl-0 = <&nor_flash_pins>;
	assigned-clocks = <&topckgen CLK_TOP_SFLASH_SEL>;
	assigned-clock-parents = <&topckgen CLK_TOP_UNIVPLL_D6_D8>;

	flash@0 {
		compatible = "winbond,w25q64jwm", "jedec,spi-nor";
		reg = <0>;
		spi-max-frequency = <52000000>;
		spi-rx-bus-width = <2>;
		spi-tx-bus-width = <2>;
	};
};

&pcie {
	pinctrl-names = "default";
	pinctrl-0 = <&pcie_pins>;

	pcie0: pcie@0,0 {
		device_type = "pci";
		reg = <0x0000 0 0 0 0>;
		num-lanes = <1>;
		bus-range = <0x1 0x1>;

		#address-cells = <3>;
		#size-cells = <2>;
		ranges;

		wifi: wifi@0,0 {
			reg = <0x10000 0 0 0 0x100000>,
			      <0x10000 0 0x100000 0 0x100000>;
			memory-region = <&wifi_restricted_dma_region>;
		};
	};
};

&pio {
	/* 220 lines */
	gpio-line-names = "I2S_DP_LRCK",
			  "IS_DP_BCLK",
			  "I2S_DP_MCLK",
			  "I2S_DP_DATAOUT",
			  "SAR0_INT_ODL",
			  "EC_AP_INT_ODL",
			  "EDPBRDG_INT_ODL",
			  "DPBRDG_INT_ODL",
			  "DPBRDG_PWREN",
			  "DPBRDG_RST_ODL",
			  "I2S_HP_MCLK",
			  "I2S_HP_BCK",
			  "I2S_HP_LRCK",
			  "I2S_HP_DATAIN",
			  /*
			   * AP_FLASH_WP_L is crossystem ABI. Schematics
			   * call it AP_FLASH_WP_ODL.
			   */
			  "AP_FLASH_WP_L",
			  "TRACKPAD_INT_ODL",
			  "EC_AP_HPD_OD",
			  "SD_CD_ODL",
			  "HP_INT_ODL_ALC",
			  "EN_PP1000_DPBRDG",
			  "AP_GPIO20",
			  "TOUCH_INT_L_1V8",
			  "UART_BT_WAKE_ODL",
			  "AP_GPIO23",
			  "AP_SPI_FLASH_CS_L",
			  "AP_SPI_FLASH_CLK",
			  "EN_PP3300_DPBRDG_DX",
			  "AP_SPI_FLASH_MOSI",
			  "AP_SPI_FLASH_MISO",
			  "I2S_HP_DATAOUT",
			  "AP_GPIO30",
			  "I2S_SPKR_MCLK",
			  "I2S_SPKR_BCLK",
			  "I2S_SPKR_LRCK",
			  "I2S_SPKR_DATAIN",
			  "I2S_SPKR_DATAOUT",
			  "AP_SPI_H1_TPM_CLK",
			  "AP_SPI_H1_TPM_CS_L",
			  "AP_SPI_H1_TPM_MISO",
			  "AP_SPI_H1_TPM_MOSI",
			  "BL_PWM",
			  "EDPBRDG_PWREN",
			  "EDPBRDG_RST_ODL",
			  "EN_PP3300_HUB",
			  "HUB_RST_L",
			  "",
			  "",
			  "",
			  "",
			  "",
			  "",
			  "SD_CLK",
			  "SD_CMD",
			  "SD_DATA3",
			  "SD_DATA0",
			  "SD_DATA2",
			  "SD_DATA1",
			  "",
			  "",
			  "",
			  "",
			  "",
			  "",
			  "PCIE_WAKE_ODL",
			  "PCIE_RST_L",
			  "PCIE_CLKREQ_ODL",
			  "",
			  "",
			  "",
			  "",
			  "",
			  "",
			  "",
			  "",
			  "",
			  "",
			  "",
			  "",
			  "",
			  "",
			  "",
			  "",
			  "",
			  "",
			  "",
			  "",
			  "",
			  "",
			  "",
			  "SPMI_SCL",
			  "SPMI_SDA",
			  "AP_GOOD",
			  "UART_DBG_TX_AP_RX",
			  "UART_AP_TX_DBG_RX",
			  "UART_AP_TX_BT_RX",
			  "UART_BT_TX_AP_RX",
			  "MIPI_DPI_D0_R",
			  "MIPI_DPI_D1_R",
			  "MIPI_DPI_D2_R",
			  "MIPI_DPI_D3_R",
			  "MIPI_DPI_D4_R",
			  "MIPI_DPI_D5_R",
			  "MIPI_DPI_D6_R",
			  "MIPI_DPI_D7_R",
			  "MIPI_DPI_D8_R",
			  "MIPI_DPI_D9_R",
			  "MIPI_DPI_D10_R",
			  "",
			  "",
			  "MIPI_DPI_DE_R",
			  "MIPI_DPI_D11_R",
			  "MIPI_DPI_VSYNC_R",
			  "MIPI_DPI_CLK_R",
			  "MIPI_DPI_HSYNC_R",
			  "PCM_BT_DATAIN",
			  "PCM_BT_SYNC",
			  "PCM_BT_DATAOUT",
			  "PCM_BT_CLK",
			  "AP_I2C_AUDIO_SCL",
			  "AP_I2C_AUDIO_SDA",
			  "SCP_I2C_SCL",
			  "SCP_I2C_SDA",
			  "AP_I2C_WLAN_SCL",
			  "AP_I2C_WLAN_SDA",
			  "AP_I2C_DPBRDG_SCL",
			  "AP_I2C_DPBRDG_SDA",
			  "EN_PP1800_DPBRDG_DX",
			  "EN_PP3300_EDP_DX",
			  "EN_PP1800_EDPBRDG_DX",
			  "EN_PP1000_EDPBRDG",
			  "SCP_JTAG0_TDO",
			  "SCP_JTAG0_TDI",
			  "SCP_JTAG0_TMS",
			  "SCP_JTAG0_TCK",
			  "SCP_JTAG0_TRSTN",
			  "EN_PP3000_VMC_PMU",
			  "EN_PP3300_DISPLAY_DX",
			  "TOUCH_RST_L_1V8",
			  "TOUCH_REPORT_DISABLE",
			  "",
			  "",
			  "AP_I2C_TRACKPAD_SCL_1V8",
			  "AP_I2C_TRACKPAD_SDA_1V8",
			  "EN_PP3300_WLAN",
			  "BT_KILL_L",
			  "WIFI_KILL_L",
			  "SET_VMC_VOLT_AT_1V8",
			  "EN_SPK",
			  "AP_WARM_RST_REQ",
			  "",
			  "",
			  "EN_PP3000_SD_S3",
			  "AP_EDP_BKLTEN",
			  "",
			  "",
			  "",
			  "AP_SPI_EC_CLK",
			  "AP_SPI_EC_CS_L",
			  "AP_SPI_EC_MISO",
			  "AP_SPI_EC_MOSI",
			  "AP_I2C_EDPBRDG_SCL",
			  "AP_I2C_EDPBRDG_SDA",
			  "MT6315_PROC_INT",
			  "MT6315_GPU_INT",
			  "UART_SERVO_TX_SCP_RX",
			  "UART_SCP_TX_SERVO_RX",
			  "BT_RTS_AP_CTS",
			  "AP_RTS_BT_CTS",
			  "UART_AP_WAKE_BT_ODL",
			  "WLAN_ALERT_ODL",
			  "EC_IN_RW_ODL",
			  "H1_AP_INT_ODL",
			  "",
			  "",
			  "",
			  "",
			  "",
			  "",
			  "",
			  "",
			  "",
			  "",
			  "",
			  "MSDC0_CMD",
			  "MSDC0_DAT0",
			  "MSDC0_DAT2",
			  "MSDC0_DAT4",
			  "MSDC0_DAT6",
			  "MSDC0_DAT1",
			  "MSDC0_DAT5",
			  "MSDC0_DAT7",
			  "MSDC0_DSL",
			  "MSDC0_CLK",
			  "MSDC0_DAT3",
			  "MSDC0_RST_L",
			  "SCP_VREQ_VAO",
			  "AUD_DAT_MOSI2",
			  "AUD_NLE_MOSI1",
			  "AUD_NLE_MOSI0",
			  "AUD_DAT_MISO2",
			  "AP_I2C_SAR_SDA",
			  "AP_I2C_SAR_SCL",
			  "AP_I2C_PWR_SCL",
			  "AP_I2C_PWR_SDA",
			  "AP_I2C_TS_SCL_1V8",
			  "AP_I2C_TS_SDA_1V8",
			  "SRCLKENA0",
			  "SRCLKENA1",
			  "AP_EC_WATCHDOG_L",
			  "PWRAP_SPI0_MI",
			  "PWRAP_SPI0_CSN",
			  "PWRAP_SPI0_MO",
			  "PWRAP_SPI0_CK",
			  "AP_RTC_CLK32K",
			  "AUD_CLK_MOSI",
			  "AUD_SYNC_MOSI",
			  "AUD_DAT_MOSI0",
			  "AUD_DAT_MOSI1",
			  "AUD_DAT_MISO0",
			  "AUD_DAT_MISO1";

	anx7625_pins: anx7625-default-pins {
		pins-out {
			pinmux = <PINMUX_GPIO41__FUNC_GPIO41>,
				 <PINMUX_GPIO42__FUNC_GPIO42>;
			output-low;
		};

		pins-in {
			pinmux = <PINMUX_GPIO6__FUNC_GPIO6>;
			input-enable;
			bias-pull-up;
		};
	};

	aud_clk_mosi_off_pins: aud-clk-mosi-off-pins {
		pins-mosi-off {
			pinmux = <PINMUX_GPIO214__FUNC_GPIO214>,
				 <PINMUX_GPIO215__FUNC_GPIO215>;
		};
	};

	aud_clk_mosi_on_pins: aud-clk-mosi-on-pins {
		pins-mosi-on {
			pinmux = <PINMUX_GPIO214__FUNC_AUD_CLK_MOSI>,
				 <PINMUX_GPIO215__FUNC_AUD_SYNC_MOSI>;
			drive-strength = <10>;
		};
	};

	aud_dat_miso_ch34_off_pins: aud-dat-miso-ch34-off-pins {
		pins-miso-off {
			pinmux = <PINMUX_GPIO199__FUNC_GPIO199>;
		};
	};

	aud_dat_miso_ch34_on_pins: aud-dat-miso-ch34-on-pins {
		pins-miso-on {
			pinmux = <PINMUX_GPIO199__FUNC_AUD_DAT_MISO2>;
		};
	};

	aud_dat_miso_off_pins: aud-dat-miso-off-pins {
		pins-miso-off {
			pinmux = <PINMUX_GPIO218__FUNC_GPIO218>,
				 <PINMUX_GPIO219__FUNC_GPIO219>;
		};
	};

	aud_dat_miso_on_pins: aud-dat-miso-on-pins {
		pins-miso-on {
			pinmux = <PINMUX_GPIO218__FUNC_AUD_DAT_MISO0>,
				 <PINMUX_GPIO219__FUNC_AUD_DAT_MISO1>;
			drive-strength = <10>;
		};
	};

	aud_dat_miso2_off_pins: aud-dat-miso2-off-pins {
		pins-miso-off {
			pinmux = <PINMUX_GPIO199__FUNC_GPIO199>;
		};
	};

	aud_dat_miso2_on_pins: aud-dat-miso2-on-pins {
		pins-miso-on {
			pinmux = <PINMUX_GPIO199__FUNC_AUD_DAT_MISO2>;
		};
	};

	aud_dat_mosi_ch34_off_pins: aud-dat-mosi-ch34-off-pins {
		pins-mosi-off {
			pinmux = <PINMUX_GPIO196__FUNC_GPIO196>;
		};
	};

	aud_dat_mosi_ch34_on_pins: aud-dat-mosi-ch34-on-pins {
		pins-mosi-on {
			pinmux = <PINMUX_GPIO196__FUNC_AUD_DAT_MOSI2>;
		};
	};

	aud_dat_mosi_off_pins: aud-dat-mosi-off-pins {
		pins-mosi-off {
			pinmux = <PINMUX_GPIO216__FUNC_GPIO216>,
				 <PINMUX_GPIO217__FUNC_GPIO217>;
		};
	};

	aud_dat_mosi_on_pins: aud-dat-mosi-on-pins {
		pins-mosi-on {
			pinmux = <PINMUX_GPIO216__FUNC_AUD_DAT_MOSI0>,
				 <PINMUX_GPIO217__FUNC_AUD_DAT_MOSI1>;
			drive-strength = <10>;
		};
	};

	aud_gpio_i2s3_off_pins: aud-gpio-i2s3-off-pins {
		pins-i2s3-off {
			pinmux = <PINMUX_GPIO32__FUNC_GPIO32>,
				 <PINMUX_GPIO33__FUNC_GPIO33>,
				 <PINMUX_GPIO35__FUNC_GPIO35>;
		};
	};

	aud_gpio_i2s3_on_pins: aud-gpio-i2s3-on-pins {
		pins-i2s3-on {
			pinmux = <PINMUX_GPIO32__FUNC_I2S3_BCK>,
				 <PINMUX_GPIO33__FUNC_I2S3_LRCK>,
				 <PINMUX_GPIO35__FUNC_I2S3_DO>;
		};
	};

	aud_gpio_i2s8_off_pins: aud-gpio-i2s8-off-pins {
		pins-i2s8-off {
			pinmux = <PINMUX_GPIO10__FUNC_GPIO10>,
				 <PINMUX_GPIO11__FUNC_GPIO11>,
				 <PINMUX_GPIO12__FUNC_GPIO12>,
				 <PINMUX_GPIO13__FUNC_GPIO13>;
		};
	};

	aud_gpio_i2s8_on_pins: aud-gpio-i2s8-on-pins {
		pins-i2s8-on {
			pinmux = <PINMUX_GPIO10__FUNC_I2S8_MCK>,
				 <PINMUX_GPIO11__FUNC_I2S8_BCK>,
				 <PINMUX_GPIO12__FUNC_I2S8_LRCK>,
				 <PINMUX_GPIO13__FUNC_I2S8_DI>;
		};
	};

	aud_gpio_i2s9_off_pins: aud-gpio-i2s9-off-pins {
		pins-i2s9-off {
			pinmux = <PINMUX_GPIO29__FUNC_GPIO29>;
		};
	};

	aud_gpio_i2s9_on_pins: aud-gpio-i2s9-on-pins {
		pins-i2s9-on {
			pinmux = <PINMUX_GPIO29__FUNC_I2S9_DO>;
		};
	};

	aud_gpio_tdm_off_pins: aud-gpio-tdm-off-pins {
		pins-tdm-off {
			pinmux = <PINMUX_GPIO0__FUNC_GPIO0>,
				 <PINMUX_GPIO1__FUNC_GPIO1>,
				 <PINMUX_GPIO2__FUNC_GPIO2>,
				 <PINMUX_GPIO3__FUNC_GPIO3>;
		};
	};

	aud_gpio_tdm_on_pins: aud-gpio-tdm-on-pins {
		pins-tdm-on {
			pinmux = <PINMUX_GPIO0__FUNC_TDM_LRCK>,
				 <PINMUX_GPIO1__FUNC_TDM_BCK>,
				 <PINMUX_GPIO2__FUNC_TDM_MCK>,
				 <PINMUX_GPIO3__FUNC_TDM_DATA0>;
		};
	};

	aud_nle_mosi_off_pins: aud-nle-mosi-off-pins {
		pins-nle-mosi-off {
			pinmux = <PINMUX_GPIO197__FUNC_GPIO197>,
				 <PINMUX_GPIO198__FUNC_GPIO198>;
		};
	};

	aud_nle_mosi_on_pins: aud-nle-mosi-on-pins {
		pins-nle-mosi-on {
			pinmux = <PINMUX_GPIO197__FUNC_AUD_NLE_MOSI1>,
				 <PINMUX_GPIO198__FUNC_AUD_NLE_MOSI0>;
		};
	};

	cr50_int: cr50-irq-default-pins {
		pins-gsc-ap-int-odl {
			pinmux = <PINMUX_GPIO171__FUNC_GPIO171>;
			input-enable;
		};
	};

	cros_ec_int: cros-ec-irq-default-pins {
		pins-ec-ap-int-odl {
			pinmux = <PINMUX_GPIO5__FUNC_GPIO5>;
			input-enable;
			bias-pull-up;
		};
	};

	i2c0_pins: i2c0-default-pins {
		pins-bus {
			pinmux = <PINMUX_GPIO204__FUNC_SCL0>,
				 <PINMUX_GPIO205__FUNC_SDA0>;
			bias-pull-up = <MTK_PULL_SET_RSEL_011>;
			drive-strength-microamp = <1000>;
		};
	};

	i2c1_pins: i2c1-default-pins {
		pins-bus {
			pinmux = <PINMUX_GPIO118__FUNC_SCL1>,
				 <PINMUX_GPIO119__FUNC_SDA1>;
			bias-pull-up = <MTK_PULL_SET_RSEL_011>;
			drive-strength-microamp = <1000>;
		};
	};

	i2c2_pins: i2c2-default-pins {
		pins-bus {
			pinmux = <PINMUX_GPIO141__FUNC_SCL2>,
				 <PINMUX_GPIO142__FUNC_SDA2>;
			bias-pull-up = <MTK_PULL_SET_RSEL_011>;
		};
	};

	i2c3_pins: i2c3-default-pins {
		pins-bus {
			pinmux = <PINMUX_GPIO160__FUNC_SCL3>,
				 <PINMUX_GPIO161__FUNC_SDA3>;
			bias-disable;
			drive-strength-microamp = <1000>;
		};
	};

	i2c7_pins: i2c7-default-pins {
		pins-bus {
			pinmux = <PINMUX_GPIO124__FUNC_SCL7>,
				 <PINMUX_GPIO125__FUNC_SDA7>;
			bias-disable;
			drive-strength-microamp = <1000>;
		};
	};

	mmc0_default_pins: mmc0-default-pins {
		pins-cmd-dat {
			pinmux = <PINMUX_GPIO184__FUNC_MSDC0_DAT0>,
				 <PINMUX_GPIO188__FUNC_MSDC0_DAT1>,
				 <PINMUX_GPIO185__FUNC_MSDC0_DAT2>,
				 <PINMUX_GPIO193__FUNC_MSDC0_DAT3>,
				 <PINMUX_GPIO186__FUNC_MSDC0_DAT4>,
				 <PINMUX_GPIO189__FUNC_MSDC0_DAT5>,
				 <PINMUX_GPIO187__FUNC_MSDC0_DAT6>,
				 <PINMUX_GPIO190__FUNC_MSDC0_DAT7>,
				 <PINMUX_GPIO183__FUNC_MSDC0_CMD>;
			input-enable;
			drive-strength = <8>;
			bias-pull-up = <MTK_PUPD_SET_R1R0_01>;
		};

		pins-clk {
			pinmux = <PINMUX_GPIO192__FUNC_MSDC0_CLK>;
			drive-strength = <8>;
			bias-pull-down = <MTK_PUPD_SET_R1R0_10>;
		};

		pins-rst {
			pinmux = <PINMUX_GPIO194__FUNC_MSDC0_RSTB>;
			drive-strength = <8>;
			bias-pull-down = <MTK_PUPD_SET_R1R0_01>;
		};
	};

	mmc0_uhs_pins: mmc0-uhs-pins {
		pins-cmd-dat {
			pinmux = <PINMUX_GPIO184__FUNC_MSDC0_DAT0>,
				 <PINMUX_GPIO188__FUNC_MSDC0_DAT1>,
				 <PINMUX_GPIO185__FUNC_MSDC0_DAT2>,
				 <PINMUX_GPIO193__FUNC_MSDC0_DAT3>,
				 <PINMUX_GPIO186__FUNC_MSDC0_DAT4>,
				 <PINMUX_GPIO189__FUNC_MSDC0_DAT5>,
				 <PINMUX_GPIO187__FUNC_MSDC0_DAT6>,
				 <PINMUX_GPIO190__FUNC_MSDC0_DAT7>,
				 <PINMUX_GPIO183__FUNC_MSDC0_CMD>;
			input-enable;
			drive-strength = <10>;
			bias-pull-up = <MTK_PUPD_SET_R1R0_01>;
		};

		pins-clk {
			pinmux = <PINMUX_GPIO192__FUNC_MSDC0_CLK>;
			drive-strength = <10>;
			bias-pull-down = <MTK_PUPD_SET_R1R0_10>;
		};

		pins-rst {
			pinmux = <PINMUX_GPIO194__FUNC_MSDC0_RSTB>;
			drive-strength = <8>;
			bias-pull-down = <MTK_PUPD_SET_R1R0_01>;
		};

		pins-ds {
			pinmux = <PINMUX_GPIO191__FUNC_MSDC0_DSL>;
			drive-strength = <10>;
			bias-pull-down = <MTK_PUPD_SET_R1R0_10>;
		};
	};

	mmc1_default_pins: mmc1-default-pins {
		pins-cmd-dat {
			pinmux = <PINMUX_GPIO54__FUNC_MSDC1_DAT0>,
				 <PINMUX_GPIO56__FUNC_MSDC1_DAT1>,
				 <PINMUX_GPIO55__FUNC_MSDC1_DAT2>,
				 <PINMUX_GPIO53__FUNC_MSDC1_DAT3>,
				 <PINMUX_GPIO52__FUNC_MSDC1_CMD>;
			input-enable;
			drive-strength = <8>;
			bias-pull-up = <MTK_PUPD_SET_R1R0_01>;
		};

		pins-clk {
			pinmux = <PINMUX_GPIO51__FUNC_MSDC1_CLK>;
			drive-strength = <8>;
			bias-pull-down = <MTK_PUPD_SET_R1R0_10>;
		};

		pins-insert {
			pinmux = <PINMUX_GPIO17__FUNC_GPIO17>;
			input-enable;
			bias-pull-up;
		};
	};

	mmc1_uhs_pins: mmc1-uhs-pins {
		pins-cmd-dat {
			pinmux = <PINMUX_GPIO54__FUNC_MSDC1_DAT0>,
				 <PINMUX_GPIO56__FUNC_MSDC1_DAT1>,
				 <PINMUX_GPIO55__FUNC_MSDC1_DAT2>,
				 <PINMUX_GPIO53__FUNC_MSDC1_DAT3>,
				 <PINMUX_GPIO52__FUNC_MSDC1_CMD>;
			input-enable;
			drive-strength = <8>;
			bias-pull-up = <MTK_PUPD_SET_R1R0_01>;
		};

		pins-clk {
			pinmux = <PINMUX_GPIO51__FUNC_MSDC1_CLK>;
			input-enable;
			drive-strength = <8>;
			bias-pull-down = <MTK_PUPD_SET_R1R0_10>;
		};
	};

	nor_flash_pins: nor-flash-default-pins {
		pins-cs-io1 {
			pinmux = <PINMUX_GPIO24__FUNC_SPINOR_CS>,
				 <PINMUX_GPIO28__FUNC_SPINOR_IO1>;
			input-enable;
			bias-pull-up;
			drive-strength = <10>;
		};

		pins-io0 {
			pinmux = <PINMUX_GPIO27__FUNC_SPINOR_IO0>;
			bias-pull-up;
			drive-strength = <10>;
		};

		pins-clk {
			pinmux = <PINMUX_GPIO25__FUNC_SPINOR_CK>;
			input-enable;
			bias-pull-up;
			drive-strength = <10>;
		};
	};

	pcie_pins: pcie-default-pins {
		pins-pcie-wake {
			pinmux = <PINMUX_GPIO63__FUNC_PCIE_WAKE_N>;
			bias-pull-up;
		};

		pins-pcie-pereset {
			pinmux = <PINMUX_GPIO64__FUNC_PCIE_PERESET_N>;
		};

		pins-pcie-clkreq {
			pinmux = <PINMUX_GPIO65__FUNC_PCIE_CLKREQ_N>;
			bias-pull-up;
		};

		pins-wifi-kill {
			pinmux = <PINMUX_GPIO145__FUNC_GPIO145>; /* WIFI_KILL_L */
			output-high;
		};
	};

	pp1000_dpbrdg_en_pins: pp1000-dpbrdg-en-pins {
		pins-en {
			pinmux = <PINMUX_GPIO19__FUNC_GPIO19>;
			output-low;
		};
	};

	pp1000_mipibrdg_en_pins: pp1000-mipibrdg-en-pins {
		pins-en {
			pinmux = <PINMUX_GPIO129__FUNC_GPIO129>;
			output-low;
		};
	};

	pp1800_dpbrdg_en_pins: pp1800-dpbrdg-en-pins {
		pins-en {
			pinmux = <PINMUX_GPIO126__FUNC_GPIO126>;
			output-low;
		};
	};

	pp1800_mipibrdg_en_pins: pp1800-mipibrd-en-pins {
		pins-en {
			pinmux = <PINMUX_GPIO128__FUNC_GPIO128>;
			output-low;
		};
	};

	pp3300_dpbrdg_en_pins: pp3300-dpbrdg-en-pins {
		pins-en {
			pinmux = <PINMUX_GPIO26__FUNC_GPIO26>;
			output-low;
		};
	};

	pp3300_mipibrdg_en_pins: pp3300-mipibrdg-en-pins {
		pins-en {
			pinmux = <PINMUX_GPIO127__FUNC_GPIO127>;
			output-low;
		};
	};

	pp3300_wlan_pins: pp3300-wlan-pins {
		pins-pcie-en-pp3300-wlan {
			pinmux = <PINMUX_GPIO143__FUNC_GPIO143>;
			output-high;
		};
	};

	pwm0_pins: pwm0-default-pins {
		pins-pwm {
			pinmux = <PINMUX_GPIO40__FUNC_DISP_PWM>;
		};

		pins-inhibit {
			pinmux = <PINMUX_GPIO152__FUNC_GPIO152>;
			output-high;
		};
	};

	scp_pins: scp-pins {
		pins-vreq-vao {
			pinmux = <PINMUX_GPIO195__FUNC_SCP_VREQ_VAO>;
		};
	};

	spi1_pins: spi1-default-pins {
		pins-cs-mosi-clk {
			pinmux = <PINMUX_GPIO157__FUNC_SPI1_A_CSB>,
				 <PINMUX_GPIO159__FUNC_SPI1_A_MO>,
				 <PINMUX_GPIO156__FUNC_SPI1_A_CLK>;
			bias-disable;
		};

		pins-miso {
			pinmux = <PINMUX_GPIO158__FUNC_SPI1_A_MI>;
			bias-pull-down;
		};
	};

	spi5_pins: spi5-default-pins {
		pins-bus {
			pinmux = <PINMUX_GPIO38__FUNC_SPI5_A_MI>,
				 <PINMUX_GPIO37__FUNC_GPIO37>,
				 <PINMUX_GPIO39__FUNC_SPI5_A_MO>,
				 <PINMUX_GPIO36__FUNC_SPI5_A_CLK>;
			bias-disable;
		};
	};

	trackpad_pins: trackpad-default-pins {
		pins-int-n {
			pinmux = <PINMUX_GPIO15__FUNC_GPIO15>;
			input-enable;
			bias-pull-up = <MTK_PUPD_SET_R1R0_11>;
		};
	};

	touchscreen_pins: touchscreen-default-pins {
		pins-irq {
			pinmux = <PINMUX_GPIO21__FUNC_GPIO21>;
			input-enable;
			bias-pull-up;
		};

		pins-reset {
			pinmux = <PINMUX_GPIO137__FUNC_GPIO137>;
			output-high;
		};

		pins-report-sw {
			pinmux = <PINMUX_GPIO138__FUNC_GPIO138>;
			output-low;
		};
	};

	vow_clk_miso_off_pins: vow-clk-miso-off-pins {
		pins-miso-off {
			pinmux = <PINMUX_GPIO219__FUNC_GPIO219>;
		};
	};

	vow_clk_miso_on_pins: vow-clk-miso-on-pins {
		pins-miso-on {
			pinmux = <PINMUX_GPIO219__FUNC_VOW_CLK_MISO>;
		};
	};

	vow_dat_miso_off_pins: vow-dat-miso-off-pins {
		pins-miso-off {
			pinmux = <PINMUX_GPIO218__FUNC_GPIO218>;
		};
	};

	vow_dat_miso_on_pins: vow-dat-miso-on-pins {
		pins-miso-on {
			pinmux = <PINMUX_GPIO218__FUNC_VOW_DAT_MISO>;
		};
	};
};

&pmic {
	interrupts-extended = <&pio 214 IRQ_TYPE_LEVEL_HIGH>;
};

&pwm0 {
	status = "okay";

	pinctrl-names = "default";
	pinctrl-0 = <&pwm0_pins>;
};

&scp {
	status = "okay";

	firmware-name = "mediatek/mt8192/scp.img";
	memory-region = <&scp_mem_reserved>;
	pinctrl-names = "default";
	pinctrl-0 = <&scp_pins>;

	cros-ec {
		compatible = "google,cros-ec-rpmsg";
		mediatek,rpmsg-name = "cros-ec-rpmsg";
	};
};

&spi1 {
	status = "okay";

	mediatek,pad-select = <0>;
	pinctrl-names = "default";
	pinctrl-0 = <&spi1_pins>;

	cros_ec: ec@0 {
		compatible = "google,cros-ec-spi";
		reg = <0>;
		interrupts-extended = <&pio 5 IRQ_TYPE_LEVEL_LOW>;
		spi-max-frequency = <3000000>;
		pinctrl-names = "default";
		pinctrl-0 = <&cros_ec_int>;

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

		base_detection: cbas {
			compatible = "google,cros-cbas";
		};

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

			status = "disabled";
		};

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

		mt6360_ldo3_reg: regulator@0 {
			compatible = "google,cros-ec-regulator";
			reg = <0>;
			regulator-min-microvolt = <1800000>;
			regulator-max-microvolt = <3300000>;
		};

		mt6360_ldo5_reg: regulator@1 {
			compatible = "google,cros-ec-regulator";
			reg = <1>;
			regulator-min-microvolt = <3300000>;
			regulator-max-microvolt = <3300000>;
		};

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

&spi5 {
	status = "okay";

	cs-gpios = <&pio 37 GPIO_ACTIVE_LOW>;
	mediatek,pad-select = <0>;
	pinctrl-names = "default";
	pinctrl-0 = <&spi5_pins>;

	cr50@0 {
		compatible = "google,cr50";
		reg = <0>;
		interrupts-extended = <&pio 171 IRQ_TYPE_EDGE_RISING>;
		spi-max-frequency = <1000000>;
		pinctrl-names = "default";
		pinctrl-0 = <&cr50_int>;
	};
};

&spmi {
	#address-cells = <2>;
	#size-cells = <0>;

	mt6315_6: pmic@6 {
		compatible = "mediatek,mt6315-regulator";
		reg = <0x6 SPMI_USID>;

		regulators {
			mt6315_6_vbuck1: vbuck1 {
				regulator-compatible = "vbuck1";
				regulator-name = "Vbcpu";
				regulator-min-microvolt = <300000>;
				regulator-max-microvolt = <1193750>;
				regulator-enable-ramp-delay = <256>;
				regulator-allowed-modes = <0 1 2>;
				regulator-always-on;
			};

			mt6315_6_vbuck3: vbuck3 {
				regulator-compatible = "vbuck3";
				regulator-name = "Vlcpu";
				regulator-min-microvolt = <300000>;
				regulator-max-microvolt = <1193750>;
				regulator-enable-ramp-delay = <256>;
				regulator-allowed-modes = <0 1 2>;
				regulator-always-on;
			};
		};
	};

	mt6315_7: pmic@7 {
		compatible = "mediatek,mt6315-regulator";
		reg = <0x7 SPMI_USID>;

		regulators {
			mt6315_7_vbuck1: vbuck1 {
				regulator-compatible = "vbuck1";
				regulator-name = "Vgpu";
				regulator-min-microvolt = <606250>;
				regulator-max-microvolt = <800000>;
				regulator-enable-ramp-delay = <256>;
				regulator-allowed-modes = <0 1 2>;
				regulator-coupled-with = <&mt6359_vsram_others_ldo_reg>;
				regulator-coupled-max-spread = <10000>;
			};
		};
	};
};

&uart0 {
	status = "okay";
};

&xhci {
	status = "okay";

	wakeup-source;
	vusb33-supply = <&pp3300_g>;
	vbus-supply = <&pp5000_a>;
};

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