// SPDX-License-Identifier: (GPL-2.0 OR MIT)
/*
 * Copyright 2020 Google LLC
 */
/dts-v1/;
#include "mt8192-asurada.dtsi"

/ {
	model = "Google Hayato rev1";
	chassis-type = "convertible";
	compatible = "google,hayato-rev1", "google,hayato", "mediatek,mt8192";
};

&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_FORWARD)
		MATRIX_KEY(0x02, 0x02, KEY_REFRESH)
		MATRIX_KEY(0x01, 0x02, KEY_FULL_SCREEN)
		MATRIX_KEY(0x03, 0x04, KEY_SCALE)
		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
	>;
};

&pio {
	bt_pins: bt-pins {
		pins-bt-kill {
			pinmux = <PINMUX_GPIO144__FUNC_GPIO144>;
			output-low;
		};

		pins-bt-wake {
			pinmux = <PINMUX_GPIO22__FUNC_GPIO22>;
			bias-pull-up;
		};

		pins-ap-wake-bt {
			pinmux = <PINMUX_GPIO168__FUNC_GPIO168>;
			output-low;
		};
	};

	uart1_pins: uart1-pins {
		pins-rx {
			pinmux = <PINMUX_GPIO94__FUNC_URXD1>;
			input-enable;
			bias-pull-up;
		};

		pins-tx {
			pinmux = <PINMUX_GPIO95__FUNC_UTXD1>;
		};

		pins-cts {
			pinmux = <PINMUX_GPIO166__FUNC_UCTS1>;
			input-enable;
		};

		pins-rts {
			pinmux = <PINMUX_GPIO167__FUNC_URTS1>;
		};
	};

	uart1_pins_sleep: uart1-sleep-pins {
		pins-rx {
			pinmux = <PINMUX_GPIO94__FUNC_GPIO94>;
			input-enable;
			bias-pull-up;
		};

		pins-tx {
			pinmux = <PINMUX_GPIO95__FUNC_UTXD1>;
		};

		pins-cts {
			pinmux = <PINMUX_GPIO166__FUNC_UCTS1>;
			input-enable;
		};

		pins-rts {
			pinmux = <PINMUX_GPIO167__FUNC_URTS1>;
		};
	};
};

&rt5682 {
	compatible = "realtek,rt5682i";
	realtek,btndet-delay = <16>;
	VBAT-supply = <&pp3300_ldo_z>;
};

&sound {
	compatible = "mediatek,mt8192_mt6359_rt1015p_rt5682";

	speaker-codecs {
		sound-dai = <&rt1015p>;
	};

	headset-codec {
		sound-dai = <&rt5682 0>;
	};
};

&touchscreen {
	compatible = "hid-over-i2c";
	post-power-on-delay-ms = <10>;
	hid-descr-addr = <0x0001>;
	vdd-supply = <&pp3300_u>;
};

&uart1 {
	status = "okay";
	pinctrl-names = "default", "sleep";
	pinctrl-0 = <&uart1_pins>;
	pinctrl-1 = <&uart1_pins_sleep>;
	/delete-property/ interrupts;
	interrupts-extended = <&gic GIC_SPI 110 IRQ_TYPE_LEVEL_HIGH 0>,
			      <&pio 94 IRQ_TYPE_EDGE_FALLING>;

	bluetooth {
		compatible = "realtek,rtl8822cs-bt";
		pinctrl-names = "default";
		pinctrl-0 = <&bt_pins>;

		enable-gpios = <&pio 144 GPIO_ACTIVE_HIGH>;
		device-wake-gpios = <&pio 168 GPIO_ACTIVE_HIGH>;
		host-wake-gpios = <&pio 22 GPIO_ACTIVE_LOW>;
	};
};
