// SPDX-License-Identifier: (GPL-2.0 OR MIT)
/*
 * Copyright 2021 Google LLC
 */

#include "mt8183-kukui.dtsi"
/* Must come after mt8183-kukui.dtsi to modify cros_ec */
#include <arm/cros-ec-keyboard.dtsi>

/ {
	pp1200_mipibrdg: pp1200-mipibrdg {
		compatible = "regulator-fixed";
		regulator-name = "pp1200_mipibrdg";
		pinctrl-names = "default";
		pinctrl-0 = <&pp1200_mipibrdg_en>;

		enable-active-high;
		regulator-boot-on;

		gpio = <&pio 54 GPIO_ACTIVE_HIGH>;
	};

	pp1800_mipibrdg: pp1800-mipibrdg {
		compatible = "regulator-fixed";
		regulator-name = "pp1800_mipibrdg";
		pinctrl-names = "default";
		pinctrl-0 = <&pp1800_lcd_en>;

		enable-active-high;
		regulator-boot-on;

		gpio = <&pio 36 GPIO_ACTIVE_HIGH>;
	};

	pp3300_panel: pp3300-panel {
		compatible = "regulator-fixed";
		regulator-name = "pp3300_panel";
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
		pinctrl-names = "default";
		pinctrl-0 = <&pp3300_panel_pins>;

		enable-active-high;
		regulator-boot-on;

		gpio = <&pio 35 GPIO_ACTIVE_HIGH>;
	};

	vddio_mipibrdg: vddio-mipibrdg {
		compatible = "regulator-fixed";
		regulator-name = "vddio_mipibrdg";
		pinctrl-names = "default";
		pinctrl-0 = <&vddio_mipibrdg_en>;

		enable-active-high;
		regulator-boot-on;

		gpio = <&pio 37 GPIO_ACTIVE_HIGH>;
	};

	volume_buttons: volume-buttons {
		compatible = "gpio-keys";
		pinctrl-names = "default";
		pinctrl-0 = <&volume_button_pins>;

		button-volume-down {
			label = "Volume Down";
			linux,code = <KEY_VOLUMEDOWN>;
			debounce-interval = <100>;

			gpios = <&pio 6 GPIO_ACTIVE_LOW>;
		};

		button-volume-up {
			label = "Volume Up";
			linux,code = <KEY_VOLUMEUP>;
			debounce-interval = <100>;

			gpios = <&pio 5 GPIO_ACTIVE_LOW>;
		};
	};
};

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

&dsi0 {
	status = "okay";
	/delete-node/panel@0;
	ports {
		port {
			dsi_out: endpoint {
				remote-endpoint = <&anx7625_in>;
			};
		};
	};
};

&i2c0 {
	status = "okay";

	touchscreen: touchscreen@10 {
		compatible = "elan,ekth3500";
		reg = <0x10>;

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

		interrupts-extended = <&pio 155 IRQ_TYPE_LEVEL_LOW>;

		reset-gpios = <&pio 156 GPIO_ACTIVE_LOW>;
	};
};

&i2c2 {
	pinctrl-names = "default";
	pinctrl-0 = <&i2c2_pins>;
	status = "okay";
	clock-frequency = <400000>;

	trackpad@15 {
		compatible = "elan,ekth3000";
		reg = <0x15>;

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

		interrupts-extended = <&pio 7 IRQ_TYPE_LEVEL_LOW>;

		wakeup-source;
	};
};

&i2c4 {
	pinctrl-names = "default";
	pinctrl-0 = <&i2c4_pins>;
	status = "okay";
	clock-frequency = <100000>;

	anx_bridge: anx7625@58 {
		compatible = "analogix,anx7625";
		reg = <0x58>;
		pinctrl-names = "default";
		pinctrl-0 = <&anx7625_pins>;
		panel_flags = <1>;
		enable-gpios = <&pio 45 GPIO_ACTIVE_HIGH>;
		reset-gpios = <&pio 73 GPIO_ACTIVE_HIGH>;
		vdd10-supply = <&pp1200_mipibrdg>;
		vdd18-supply = <&pp1800_mipibrdg>;
		vdd33-supply = <&vddio_mipibrdg>;

		#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_panel>;
				backlight = <&backlight_lcd0>;

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

&i2c_tunnel {
	google,remote-bus = <2>;
};

&pio {
	/* 192 lines */
	gpio-line-names =
		"SPI_AP_EC_CS_L",
		"SPI_AP_EC_MOSI",
		"SPI_AP_EC_CLK",
		"I2S3_DO",
		"USB_PD_INT_ODL",
		"",
		"",
		"",
		"",
		"IT6505_HPD_L",
		"I2S3_TDM_D3",
		"SOC_I2C6_1V8_SCL",
		"SOC_I2C6_1V8_SDA",
		"DPI_D0",
		"DPI_D1",
		"DPI_D2",
		"DPI_D3",
		"DPI_D4",
		"DPI_D5",
		"DPI_D6",
		"DPI_D7",
		"DPI_D8",
		"DPI_D9",
		"DPI_D10",
		"DPI_D11",
		"DPI_HSYNC",
		"DPI_VSYNC",
		"DPI_DE",
		"DPI_CK",
		"AP_MSDC1_CLK",
		"AP_MSDC1_DAT3",
		"AP_MSDC1_CMD",
		"AP_MSDC1_DAT0",
		"AP_MSDC1_DAT2",
		"AP_MSDC1_DAT1",
		"",
		"",
		"",
		"",
		"",
		"",
		"OTG_EN",
		"DRVBUS",
		"DISP_PWM",
		"DSI_TE",
		"LCM_RST_1V8",
		"AP_CTS_WIFI_RTS",
		"AP_RTS_WIFI_CTS",
		"SOC_I2C5_1V8_SCL",
		"SOC_I2C5_1V8_SDA",
		"SOC_I2C3_1V8_SCL",
		"SOC_I2C3_1V8_SDA",
		"",
		"",
		"",
		"",
		"",
		"",
		"",
		"",
		"",
		"",
		"",
		"",
		"",
		"",
		"",
		"",
		"",
		"",
		"",
		"",
		"",
		"",
		"",
		"",
		"",
		"",
		"",
		"",
		"",
		"SOC_I2C1_1V8_SDA",
		"SOC_I2C0_1V8_SDA",
		"SOC_I2C0_1V8_SCL",
		"SOC_I2C1_1V8_SCL",
		"AP_SPI_H1_MISO",
		"AP_SPI_H1_CS_L",
		"AP_SPI_H1_MOSI",
		"AP_SPI_H1_CLK",
		"I2S5_BCK",
		"I2S5_LRCK",
		"I2S5_DO",
		"BOOTBLOCK_EN_L",
		"MT8183_KPCOL0",
		"SPI_AP_EC_MISO",
		"UART_DBG_TX_AP_RX",
		"UART_AP_TX_DBG_RX",
		"I2S2_MCK",
		"I2S2_BCK",
		"CLK_5M_WCAM",
		"CLK_2M_UCAM",
		"I2S2_LRCK",
		"I2S2_DI",
		"SOC_I2C2_1V8_SCL",
		"SOC_I2C2_1V8_SDA",
		"SOC_I2C4_1V8_SCL",
		"SOC_I2C4_1V8_SDA",
		"",
		"SCL8",
		"SDA8",
		"FCAM_PWDN_L",
		"",
		"",
		"",
		"",
		"",
		"",
		"",
		"",
		"",
		"",
		"",
		"",
		"",
		"",
		"",
		"",
		"",
		"",
		"",
		"",
		"",
		"",
		"",
		"",
		"",
		"I2S_PMIC",
		"I2S_PMIC",
		"I2S_PMIC",
		"I2S_PMIC",
		"I2S_PMIC",
		"I2S_PMIC",
		"I2S_PMIC",
		"I2S_PMIC",
		"",
		"",
		"",
		"",
		"",
		"",
		/*
		 * AP_FLASH_WP_L is crossystem ABI. Rev1 schematics
		 * call it BIOS_FLASH_WP_R_L.
		 */
		"AP_FLASH_WP_L",
		"EC_AP_INT_ODL",
		"IT6505_INT_ODL",
		"H1_INT_OD_L",
		"",
		"",
		"",
		"",
		"",
		"",
		"",
		"AP_SPI_FLASH_MISO",
		"AP_SPI_FLASH_CS_L",
		"AP_SPI_FLASH_MOSI",
		"AP_SPI_FLASH_CLK",
		"DA7219_IRQ",
		"",
		"",
		"",
		"",
		"",
		"",
		"",
		"",
		"",
		"",
		"",
		"",
		"",
		"",
		"",
		"",
		"",
		"",
		"",
		"",
		"",
		"",
		"",
		"",
		"",
		"";

	pp1200_mipibrdg_en: pp1200-mipibrdg-en {
		pins1 {
			pinmux = <PINMUX_GPIO54__FUNC_GPIO54>;
			output-low;
		};
	};

	pp1800_lcd_en: pp1800-lcd-en {
		pins1 {
			pinmux = <PINMUX_GPIO36__FUNC_GPIO36>;
			output-low;
		};
	};

	pp3300_panel_pins: pp3300-panel-pins {
		panel_3v3_enable: panel-3v3-enable {
			pinmux = <PINMUX_GPIO35__FUNC_GPIO35>;
			output-low;
		};
	};

	ppvarp_lcd_en: ppvarp-lcd-en {
		pins1 {
			pinmux = <PINMUX_GPIO66__FUNC_GPIO66>;
			output-low;
		};
	};

	ppvarn_lcd_en: ppvarn-lcd-en {
		pins1 {
			pinmux = <PINMUX_GPIO166__FUNC_GPIO166>;
			output-low;
		};
	};

	anx7625_pins: anx7625-pins {
		pins1 {
			pinmux = <PINMUX_GPIO45__FUNC_GPIO45>,
				 <PINMUX_GPIO73__FUNC_GPIO73>;
			output-low;
		};
		pins2 {
			pinmux = <PINMUX_GPIO4__FUNC_GPIO4>;
			input-enable;
			bias-pull-up;
		};
	};

	touchscreen_pins: touchscreen-pins {
		touch_int_odl {
			pinmux = <PINMUX_GPIO155__FUNC_GPIO155>;
			input-enable;
			bias-pull-up;
		};

		touch_rst_l {
			pinmux = <PINMUX_GPIO156__FUNC_GPIO156>;
			output-high;
		};
	};

	trackpad_pins: trackpad-pins {
		trackpad_int {
			pinmux = <PINMUX_GPIO7__FUNC_GPIO7>;
			input-enable;
			bias-disable; /* pulled externally */
		};
	};

	vddio_mipibrdg_en: vddio-mipibrdg-en {
		pins1 {
			pinmux = <PINMUX_GPIO37__FUNC_GPIO37>;
			output-low;
		};
	};

	volume_button_pins: volume-button-pins {
		voldn-btn-odl {
			pinmux = <PINMUX_GPIO6__FUNC_GPIO6>;
			input-enable;
			bias-pull-up;
		};

		volup-btn-odl {
			pinmux = <PINMUX_GPIO5__FUNC_GPIO5>;
			input-enable;
			bias-pull-up;
		};
	};
};

