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

/dts-v1/;

#include "sc7280-herobrine.dtsi"
#include "sc7280-herobrine-audio-rt5682.dtsi"
#include "sc7280-herobrine-lte-sku.dtsi"

/ {
	model = "Google Herobrine (rev1+)";
	compatible = "google,herobrine", "qcom,sc7280";
};

/*
 * ADDITIONS TO FIXED REGULATORS DEFINED IN PARENT DEVICE TREE FILES
 *
 * Sort order matches the order in the parent files (parents before children).
 */

&pp3300_codec {
	status = "okay";
};

&pp3300_fp_mcu {
	status = "okay";
};

&pp2850_vcm_wf_cam {
	status = "okay";
};

&pp2850_wf_cam {
	status = "okay";
};

&pp1800_wf_cam {
	status = "okay";
};

&pp1200_wf_cam {
	status = "okay";
};

/* ADDITIONS TO NODES DEFINED IN PARENT DEVICE TREE FILES */

/*
 * Although the trackpad is really part of the herobrine baseboard, we'll
 * put the actual definition in the board device tree since different boards
 * might hook up different trackpads (or no i2c trackpad at all in the case
 * of tablets / detachables).
 */
ap_tp_i2c: &i2c0 {
	status = "okay";
	clock-frequency = <400000>;

	trackpad: trackpad@15 {
		compatible = "elan,ekth3000";
		reg = <0x15>;
		pinctrl-names = "default";
		pinctrl-0 = <&tp_int_odl>;

		interrupt-parent = <&tlmm>;
		interrupts = <7 IRQ_TYPE_EDGE_FALLING>;

		vcc-supply = <&pp3300_z1>;

		wakeup-source;
	};
};

/*
 * The touchscreen connector might come off the Qcard, at least in the case of
 * eDP. Like the trackpad, we'll put it in the board device tree file since
 * different boards have different touchscreens.
 */
ts_i2c: &i2c13 {
	status = "okay";
	clock-frequency = <400000>;

	ap_ts: touchscreen@5c {
		compatible = "hid-over-i2c";
		reg = <0x5c>;
		pinctrl-names = "default";
		pinctrl-0 = <&ts_int_conn>, <&ts_rst_conn>;

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

		post-power-on-delay-ms = <500>;
		hid-descr-addr = <0x0000>;

		vdd-supply = <&ts_avdd>;
	};
};

&mdss_edp {
	status = "okay";
};

&mdss_edp_phy {
	status = "okay";
};

/* For nvme */
&pcie1 {
	status = "okay";
};

/* For nvme */
&pcie1_phy {
	status = "okay";
};

/* For eMMC */
&sdhc_1 {
	status = "okay";
};

/* For SD Card */
&sdhc_2 {
	status = "okay";
};

/* PINCTRL - ADDITIONS TO NODES IN PARENT DEVICE TREE FILES */

/*
 * This pin goes to the display panel but then doesn't actually do anything
 * on the panel itself (it doesn't connect to the touchscreen controller).
 * We'll set a pullup here just to park the line.
 */
&ts_rst_conn {
	bias-pull-up;
};

/* PINCTRL - BOARD-SPECIFIC */

/*
 * Methodology for gpio-line-names:
 * - If a pin goes to herobrine board and is named it gets that name.
 * - If a pin goes to herobrine board and is not named, it gets no name.
 * - If a pin is totally internal to Qcard then it gets Qcard name.
 * - If a pin is not hooked up on Qcard, it gets no name.
 */

&pm8350c_gpios {
	gpio-line-names = "FLASH_STROBE_1",		/* 1 */
			  "AP_SUSPEND",
			  "PM8008_1_RST_N",
			  "",
			  "",
			  "",
			  "PMIC_EDP_BL_EN",
			  "PMIC_EDP_BL_PWM",
			  "";
};

&tlmm {
	gpio-line-names = "AP_TP_I2C_SDA",		/* 0 */
			  "AP_TP_I2C_SCL",
			  "SSD_RST_L",
			  "PE_WAKE_ODL",
			  "AP_SAR_SDA",
			  "AP_SAR_SCL",
			  "PRB_SC_GPIO_6",
			  "TP_INT_ODL",
			  "HP_I2C_SDA",
			  "HP_I2C_SCL",

			  "GNSS_L1_EN",			/* 10 */
			  "GNSS_L5_EN",
			  "SPI_AP_MOSI",
			  "SPI_AP_MISO",
			  "SPI_AP_CLK",
			  "SPI_AP_CS0_L",
			  /*
			   * AP_FLASH_WP is crossystem ABI. Schematics
			   * call it BIOS_FLASH_WP_OD.
			   */
			  "AP_FLASH_WP",
			  "",
			  "AP_EC_INT_L",
			  "",

			  "UF_CAM_RST_L",		/* 20 */
			  "WF_CAM_RST_L",
			  "UART_AP_TX_DBG_RX",
			  "UART_DBG_TX_AP_RX",
			  "",
			  "PM8008_IRQ_1",
			  "HOST2WLAN_SOL",
			  "WLAN2HOST_SOL",
			  "MOS_BT_UART_CTS",
			  "MOS_BT_UART_RFR",

			  "MOS_BT_UART_TX",		/* 30 */
			  "MOS_BT_UART_RX",
			  "PRB_SC_GPIO_32",
			  "HUB_RST_L",
			  "",
			  "",
			  "AP_SPI_FP_MISO",
			  "AP_SPI_FP_MOSI",
			  "AP_SPI_FP_CLK",
			  "AP_SPI_FP_CS_L",

			  "AP_EC_SPI_MISO",		/* 40 */
			  "AP_EC_SPI_MOSI",
			  "AP_EC_SPI_CLK",
			  "AP_EC_SPI_CS_L",
			  "LCM_RST_L",
			  "EARLY_EUD_N",
			  "",
			  "DP_HOT_PLUG_DET",
			  "IO_BRD_MLB_ID0",
			  "IO_BRD_MLB_ID1",

			  "IO_BRD_MLB_ID2",		/* 50 */
			  "SSD_EN",
			  "TS_I2C_SDA_CONN",
			  "TS_I2C_CLK_CONN",
			  "TS_RST_CONN",
			  "TS_INT_CONN",
			  "AP_I2C_TPM_SDA",
			  "AP_I2C_TPM_SCL",
			  "PRB_SC_GPIO_58",
			  "PRB_SC_GPIO_59",

			  "EDP_HOT_PLUG_DET_N",		/* 60 */
			  "FP_TO_AP_IRQ_L",
			  "",
			  "AMP_EN",
			  "CAM0_MCLK_GPIO_64",
			  "CAM1_MCLK_GPIO_65",
			  "WF_CAM_MCLK",
			  "PRB_SC_GPIO_67",
			  "FPMCU_BOOT0",
			  "UF_CAM_SDA",

			  "UF_CAM_SCL",			/* 70 */
			  "",
			  "",
			  "WF_CAM_SDA",
			  "WF_CAM_SCL",
			  "",
			  "",
			  "EN_FP_RAILS",
			  "FP_RST_L",
			  "PCIE1_CLKREQ_ODL",

			  "EN_PP3300_DX_EDP",		/* 80 */
			  "SC_GPIO_81",
			  "FORCED_USB_BOOT",
			  "WCD_RESET_N",
			  "MOS_WLAN_EN",
			  "MOS_BT_EN",
			  "MOS_SW_CTRL",
			  "MOS_PCIE0_RST",
			  "MOS_PCIE0_CLKREQ_N",
			  "MOS_PCIE0_WAKE_N",

			  "MOS_LAA_AS_EN",		/* 90 */
			  "SD_CD_ODL",
			  "",
			  "",
			  "MOS_BT_WLAN_SLIMBUS_CLK",
			  "MOS_BT_WLAN_SLIMBUS_DAT0",
			  "HP_MCLK",
			  "HP_BCLK",
			  "HP_DOUT",
			  "HP_DIN",

			  "HP_LRCLK",			/* 100 */
			  "HP_IRQ",
			  "",
			  "",
			  "GSC_AP_INT_ODL",
			  "EN_PP3300_CODEC",
			  "AMP_BCLK",
			  "AMP_DIN",
			  "AMP_LRCLK",
			  "UIM1_DATA_GPIO_109",

			  "UIM1_CLK_GPIO_110",		/* 110 */
			  "UIM1_RESET_GPIO_111",
			  "PRB_SC_GPIO_112",
			  "UIM0_DATA",
			  "UIM0_CLK",
			  "UIM0_RST",
			  "UIM0_PRESENT_ODL",
			  "SDM_RFFE0_CLK",
			  "SDM_RFFE0_DATA",
			  "WF_CAM_EN",

			  "FASTBOOT_SEL_0",		/* 120 */
			  "SC_GPIO_121",
			  "FASTBOOT_SEL_1",
			  "SC_GPIO_123",
			  "FASTBOOT_SEL_2",
			  "SM_RFFE4_CLK_GRFC_8",
			  "SM_RFFE4_DATA_GRFC_9",
			  "WLAN_COEX_UART1_RX",
			  "WLAN_COEX_UART1_TX",
			  "PRB_SC_GPIO_129",

			  "LCM_ID0",			/* 130 */
			  "LCM_ID1",
			  "",
			  "SDR_QLINK_REQ",
			  "SDR_QLINK_EN",
			  "QLINK0_WMSS_RESET_N",
			  "SMR526_QLINK1_REQ",
			  "SMR526_QLINK1_EN",
			  "SMR526_QLINK1_WMSS_RESET_N",
			  "PRB_SC_GPIO_139",

			  "SAR1_IRQ_ODL",		/* 140 */
			  "SAR0_IRQ_ODL",
			  "PRB_SC_GPIO_142",
			  "",
			  "WCD_SWR_TX_CLK",
			  "WCD_SWR_TX_DATA0",
			  "WCD_SWR_TX_DATA1",
			  "WCD_SWR_RX_CLK",
			  "WCD_SWR_RX_DATA0",
			  "WCD_SWR_RX_DATA1",

			  "DMIC01_CLK",			/* 150 */
			  "DMIC01_DATA",
			  "DMIC23_CLK",
			  "DMIC23_DATA",
			  "",
			  "",
			  "EC_IN_RW_ODL",
			  "HUB_EN",
			  "WCD_SWR_TX_DATA2",
			  "",

			  "",				/* 160 */
			  "",
			  "",
			  "",
			  "",
			  "",
			  "",
			  "",
			  "",
			  "",

			  "",				/* 170 */
			  "MOS_BLE_UART_TX",
			  "MOS_BLE_UART_RX",
			  "",
			  "";
};
