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

/ {
	model = "Google Hayato rev1";
	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>;
	};
};
