// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
/*
 * Google Kingoftown board device tree source
 *
 * Copyright 2021 Google LLC.
 */

/dts-v1/;

#include "sc7180-trogdor.dtsi"
#include "sc7180-trogdor-parade-ps8640.dtsi"
#include <arm/cros-ec-keyboard.dtsi>
#include "sc7180-trogdor-lte-sku.dtsi"

/ {
	model = "Google Kingoftown";
	compatible = "google,kingoftown", "qcom,sc7180";
};

&alc5682 {
	compatible = "realtek,rt5682s";
	/delete-property/ VBAT-supply;
	realtek,dmic1-clk-pin = <2>;
	realtek,dmic-clk-rate-hz = <2048000>;
};

&ap_tp_i2c {
	status = "okay";
};

ap_ts_pen_1v8: &i2c4 {
	status = "okay";
	clock-frequency = <400000>;

	ap_ts: touchscreen@10 {
		compatible = "elan,ekth3500";
		reg = <0x10>;
		pinctrl-names = "default";
		pinctrl-0 = <&ts_int_l>, <&ts_reset_l>;

		interrupt-parent = <&tlmm>;
		interrupts = <9 IRQ_TYPE_LEVEL_LOW>;

		vcc33-supply = <&pp3300_ts>;

		reset-gpios = <&tlmm 8 GPIO_ACTIVE_LOW>;
	};
};

&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_REFRESH)
		MATRIX_KEY(0x02, 0x02, KEY_ZOOM)
		MATRIX_KEY(0x01, 0x02, KEY_SCALE)
		MATRIX_KEY(0x03, 0x04, KEY_SYSRQ)
		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
	>;
};

&panel {
	compatible = "edp-panel";
};

&pp3300_dx_edp {
	gpio = <&tlmm 67 GPIO_ACTIVE_HIGH>;
};

&sound {
	compatible = "google,sc7180-trogdor";
	model = "sc7180-rt5682s-max98357a-1mic";
};

&wifi {
	qcom,ath10k-calibration-variant = "GO_KINGOFTOWN";
};

/* PINCTRL - modifications to sc7180-trogdor.dtsi */

&en_pp3300_dx_edp {
	pins = "gpio67";
};

/* PINCTRL - board-specific pinctrl */

&tlmm {
	gpio-line-names = "TP_INT_L",		/* 0 */
			  "AP_RAM_ID0",
			  "AP_SKU_ID2",
			  "AP_RAM_ID1",
			  "",
			  "AP_RAM_ID2",
			  "AP_TP_I2C_SDA",
			  "AP_TP_I2C_SCL",
			  "TS_RESET_L",
			  "TS_INT_L",
			  "",			/* 10 */
			  "EDP_BRIJ_IRQ",
			  "AP_EDP_BKLTEN",
			  "",
			  "",
			  "EDP_BRIJ_I2C_SDA",
			  "EDP_BRIJ_I2C_SCL",
			  "HUB_RST_L",
			  "",
			  "",
			  "",			/* 20 */
			  "",
			  "",
			  "AMP_EN",
			  "",
			  "",
			  "",
			  "",
			  "HP_IRQ",
			  "",
			  "",			/* 30 */
			  "AP_BRD_ID2",
			  "BRIJ_SUSPEND",
			  "AP_BRD_ID0",
			  "AP_H1_SPI_MISO",
			  "AP_H1_SPI_MOSI",
			  "AP_H1_SPI_CLK",
			  "AP_H1_SPI_CS_L",
			  "BT_UART_CTS",
			  "BT_UART_RTS",
			  "BT_UART_TXD",	/* 40 */
			  "BT_UART_RXD",
			  "H1_AP_INT_ODL",
			  "",
			  "UART_AP_TX_DBG_RX",
			  "UART_DBG_TX_AP_RX",
			  "HP_I2C_SDA",
			  "HP_I2C_SCL",
			  "FORCED_USB_BOOT",
			  "AMP_BCLK",
			  "AMP_LRCLK",		/* 50 */
			  "AMP_DIN",
			  "",
			  "HP_BCLK",
			  "HP_LRCLK",
			  "HP_DOUT",
			  "HP_DIN",
			  "HP_MCLK",
			  "AP_SKU_ID0",
			  "AP_EC_SPI_MISO",
			  "AP_EC_SPI_MOSI",	/* 60 */
			  "AP_EC_SPI_CLK",
			  "AP_EC_SPI_CS_L",
			  "AP_SPI_CLK",
			  "AP_SPI_MOSI",
			  "AP_SPI_MISO",
			  /*
			   * AP_FLASH_WP_L is crossystem ABI. Schematics
			   * call it BIOS_FLASH_WP_L.
			   */
			  "AP_FLASH_WP_L",
			  "EN_PP3300_DX_EDP",
			  "AP_SPI_CS0_L",
			  "",
			  "",			/* 70 */
			  "",
			  "",
			  "",
			  "EN_FP_RAILS",
			  "UIM2_DATA",
			  "UIM2_CLK",
			  "UIM2_RST",
			  "UIM2_PRESENT_L",
			  "UIM1_DATA",
			  "UIM1_CLK",		/* 80 */
			  "UIM1_RST",
			  "",
			  "CODEC_PWR_EN",
			  "HUB_EN",
			  "",
			  "",
			  "",
			  "",
			  "",
			  "AP_SKU_ID1",		/* 90 */
			  "AP_RST_REQ",
			  "",
			  "AP_BRD_ID1",
			  "AP_EC_INT_L",
			  "",
			  "",
			  "",
			  "",
			  "",
			  "",			/* 100 */
			  "",
			  "",
			  "",
			  "EDP_BRIJ_EN",
			  "",
			  "",
			  "",
			  "",
			  "",
			  "",			/* 110 */
			  "",
			  "",
			  "",
			  "",
			  "AP_TS_PEN_I2C_SDA",
			  "AP_TS_PEN_I2C_SCL",
			  "DP_HOT_PLUG_DET",
			  "EC_IN_RW_ODL";
};
