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

/dts-v1/;
#include "mt8186-corsola.dtsi"

/ {
	/delete-node/ speaker-codec;

	pp1000_edpbrdg: regulator-pp1000-edpbrdg {
		compatible = "regulator-fixed";
		regulator-name = "pp1000_edpbrdg";
		pinctrl-names = "default";
		pinctrl-0 = <&en_pp1000_edpbrdg>;
		enable-active-high;
		regulator-boot-on;
		gpio = <&pio 29 GPIO_ACTIVE_HIGH>;
		vin-supply = <&pp3300_z2>;
	};

	pp1800_edpbrdg_dx: regulator-pp1800-edpbrdg-dx {
		compatible = "regulator-fixed";
		regulator-name = "pp1800_edpbrdg_dx";
		pinctrl-names = "default";
		pinctrl-0 = <&en_pp1800_edpbrdg>;
		enable-active-high;
		regulator-boot-on;
		gpio = <&pio 30 GPIO_ACTIVE_HIGH>;
		vin-supply = <&mt6366_vio18_reg>;
	};

	pp3300_edp_dx: regulator-pp3300-edp-dx {
		compatible = "regulator-fixed";
		regulator-name = "pp3300_edp_dx";
		pinctrl-names = "default";
		pinctrl-0 = <&en_pp3300_edpbrdg>;
		enable-active-high;
		regulator-boot-on;
		gpio = <&pio 31 GPIO_ACTIVE_HIGH>;
		vin-supply = <&pp3300_z2>;
	};

	pp1800_tchscr_report_disable: regulator-pp1800-tchscr-report-disable {
		compatible = "regulator-fixed";
		regulator-name = "pp1800_tchscr_report_disable";
		pinctrl-names = "default";
		regulator-boot-on;
		pinctrl-0 = <&touch_pin_report>;
		gpio = <&pio 37 GPIO_ACTIVE_LOW>;
	};
};

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

&i2c0 {
	clock-frequency = <400000>;

	anx_bridge: anx7625@58 {
		compatible = "analogix,anx7625";
		reg = <0x58>;
		pinctrl-names = "default";
		pinctrl-0 = <&anx7625_pins>;
		enable-gpios = <&pio 96 GPIO_ACTIVE_HIGH>;
		reset-gpios = <&pio 98 GPIO_ACTIVE_HIGH>;
		vdd10-supply = <&pp1000_edpbrdg>;
		vdd18-supply = <&pp1800_edpbrdg_dx>;
		vdd33-supply = <&pp3300_edp_dx>;
		analogix,lane0-swing = /bits/ 8 <0x70 0x30>;
		analogix,lane1-swing = /bits/ 8 <0x70 0x30>;

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

			port@0 {
				reg = <0>;

				anx7625_in: endpoint {
					remote-endpoint = <&dsi_out>;
					data-lanes = <0 1 2 3>;
				};
			};

			port@1 {
				reg = <1>;

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

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

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

&i2c2 {
	/delete-node/ trackpad@15;

	touchpad@15 {
		compatible = "hid-over-i2c";
		reg = <0x15>;
		interrupts-extended = <&pio 11 IRQ_TYPE_LEVEL_LOW>;
		post-power-on-delay-ms = <10>;
		hid-descr-addr = <0x0001>;
		vdd-supply = <&pp3300_s3>;
		wakeup-source;
	};
};

&i2c5 {
	clock-frequency = <400000>;
	/delete-node/ codec@1a;

	rt5650: rt5650@1a {
		compatible = "realtek,rt5650";
		reg = <0x1a>;
		avdd-supply = <&mt6366_vio18_reg>;
		cpvdd-supply = <&mt6366_vio18_reg>;
		pinctrl-names = "default";
		pinctrl-0 = <&speaker_codec_pins_default>;
		cbj-sleeve-gpios = <&pio 150 GPIO_ACTIVE_HIGH>;
		interrupt-parent = <&pio>;
		interrupts = <17 IRQ_TYPE_EDGE_BOTH>;
		#sound-dai-cells = <0>;
		realtek,dmic1-data-pin = <2>;
		realtek,jd-mode = <2>;
	};
};

&i2c_tunnel {
	/delete-node/ sbs-battery@b;

	battery: sbs-battery@f {
		compatible = "sbs,sbs-battery";
		reg = <0xf>;
		sbs,i2c-retry-count = <2>;
		sbs,poll-retry-count = <1>;
	};
};

&keyboard_controller {
	keypad,num-columns = <15>;

	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 */
		MATRIX_KEY(0x00, 0x01, 0)        /* T11 */
		MATRIX_KEY(0x01, 0x05, 0)        /* T12 */
	>;

	linux,keymap = <
		CROS_STD_MAIN_KEYMAP
		MATRIX_KEY(0x00, 0x02, KEY_BACK)           /* T1 */
		MATRIX_KEY(0x03, 0x02, KEY_REFRESH)        /* T2 */
		MATRIX_KEY(0x02, 0x02, KEY_ZOOM)           /* T3 */
		MATRIX_KEY(0x01, 0x02, KEY_SCALE)          /* T4 */
		MATRIX_KEY(0x03, 0x04, KEY_SYSRQ)          /* T5 */
		MATRIX_KEY(0x02, 0x04, KEY_BRIGHTNESSDOWN) /* T6 */
		MATRIX_KEY(0x01, 0x04, KEY_BRIGHTNESSUP)   /* T7 */
		MATRIX_KEY(0x02, 0x09, KEY_MUTE)           /* T8 */
		MATRIX_KEY(0x01, 0x09, KEY_VOLUMEDOWN)	   /* T9 */
		MATRIX_KEY(0x00, 0x04, KEY_VOLUMEUP)	   /* T10 */
		MATRIX_KEY(0x00, 0x01, KEY_MICMUTE)        /* T11 */
		MATRIX_KEY(0x01, 0x05, KEY_CONTROLPANEL)   /* T12 */
		MATRIX_KEY(0x03, 0x05, KEY_PREVIOUSSONG)   /* T13 */
		MATRIX_KEY(0x00, 0x09, KEY_PLAYPAUSE)	   /* T14 */
		MATRIX_KEY(0x00, 0x0b, KEY_NEXTSONG)	   /* T15 */
		MATRIX_KEY(0x03, 0x00, KEY_LEFTMETA)	   /* Search*/
		MATRIX_KEY(0x01, 0x0e, KEY_LEFTCTRL)	   /* Left Control*/
		MATRIX_KEY(0x06, 0x0d, KEY_LEFTALT)        /* Left ALT*/
		MATRIX_KEY(0x03, 0x0e, KEY_RIGHTCTRL)      /* Right Control*/
		MATRIX_KEY(0x06, 0x0a, KEY_BACKSLASH)      /* BACKSLASH*/
	>;
};

&mmc1_pins_default {
	pins-clk {
		drive-strength = <8>;
	};

	pins-cmd-dat {
		drive-strength = <8>;
	};
};

&mmc1_pins_uhs {
	pins-clk {
		drive-strength = <8>;
	};

	pins-cmd-dat {
		drive-strength = <8>;
	};
};

&pen_insert {
	wakeup-event-action = <EV_ACT_ANY>;
};

&pio {
	anx7625_pins: anx7625-pins {
		pins-int {
			pinmux = <PINMUX_GPIO9__FUNC_GPIO9>;
			input-enable;
			bias-disable;
		};

		pins-reset {
			pinmux = <PINMUX_GPIO98__FUNC_GPIO98>;
			output-low;
		};

		pins-power-en {
			pinmux = <PINMUX_GPIO96__FUNC_GPIO96>;
			output-low;
		};
	};

	en_pp1000_edpbrdg: pp1000-edpbrdg-en-pins {
		pins-vreg-en {
			pinmux = <PINMUX_GPIO29__FUNC_GPIO29>;
			output-low;
		};
	};

	en_pp1800_edpbrdg: pp1800-edpbrdg-en-pins {
		pins-vreg-en {
			pinmux = <PINMUX_GPIO30__FUNC_GPIO30>;
			output-low;
		};
	};

	en_pp3300_edpbrdg: pp3300-edpbrdg-en-pins {
		pins-vreg-en {
			pinmux = <PINMUX_GPIO31__FUNC_GPIO31>;
			output-low;
		};
	};

	touch_pin_report: pin-report-pins {
		pins-touch-en {
			pinmux = <PINMUX_GPIO37__FUNC_GPIO37>;
			output-low;
		};
	};
};

&sound {
	compatible = "mediatek,mt8186-mt6366-rt5650-sound";
	model = "mt8186_rt5650";
	mediatek,adsp = <&adsp>;

	audio-routing =
		"Headphone", "HPOL",
		"Headphone", "HPOR",
		"IN1P", "Headset Mic",
		"IN1N", "Headset Mic",
		"Speakers", "SPOL",
		"Speakers", "SPOR",
		"HDMI1", "TX";

	hs-playback-dai-link {
		codec {
			sound-dai = <&rt5650>;
		};
	};

	hs-capture-dai-link {
		codec {
			sound-dai = <&rt5650>;
		};
	};

	spk-share-dai-link {
	};

	spk-hdmi-playback-dai-link {
		codec {
			sound-dai = <&it6505dptx>;
		};
	};
};

&touchscreen_pins {
	/delete-node/ pins-report-sw;
};

&wifi_enable_pin {
	pins-wifi-enable {
		pinmux = <PINMUX_GPIO51__FUNC_GPIO51>;
	};
};

&wifi_pwrseq {
	reset-gpios = <&pio 51 GPIO_ACTIVE_LOW>;
};
