summaryrefslogtreecommitdiff
path: root/src/mainboard
diff options
context:
space:
mode:
authorReagan Bohan <xbjfk.github@gmail.com>2024-05-18 06:59:15 +0000
committerFelix Held <felix-coreboot@felixheld.de>2024-06-03 16:57:09 +0000
commitba39cd59db5cd3e7526e92eb475ce5e9bb47d894 (patch)
tree68520595da5197ddca6d5f270ebce1dcf5899d4b /src/mainboard
parent657cef204abea1d17ed6ff93dcb6c297de51e474 (diff)
mb/razer/blade_stealth_kbl: Add H3Q variant
The Razer Blade Stealth Kaby Lake has 2 variants. One is the H2U variant, as originally committed, with the SKU number RZ09-01962, also known as the 2016 model, and the H3Q model with SKU numbers RZ09-01963 and RZ09-01964, known as the Mid 2017 model. This commit adds support for the H3Q model. With respect to coreboot, there are few known differences: 1. Only the H2U has TPM. 2. The USB ports are different. 3. The screen size (and therefore VBIOS Table) is different. 4. The hda_verb is very slightly different. 5. The gpio is different. Change-Id: I493a651e52c2eb938daa67a05e9caaa784020fa4 Signed-off-by: Reagan Bohan <xbjfk.github@gmail.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/82506 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Nico Huber <nico.h@gmx.de>
Diffstat (limited to 'src/mainboard')
-rw-r--r--src/mainboard/razer/blade_stealth_kbl/Kconfig40
-rw-r--r--src/mainboard/razer/blade_stealth_kbl/Kconfig.name7
-rw-r--r--src/mainboard/razer/blade_stealth_kbl/Makefile.mk4
-rw-r--r--src/mainboard/razer/blade_stealth_kbl/board_info.txt2
-rw-r--r--src/mainboard/razer/blade_stealth_kbl/devicetree.cb21
-rw-r--r--src/mainboard/razer/blade_stealth_kbl/ramstage.c2
-rw-r--r--src/mainboard/razer/blade_stealth_kbl/spd/spd.h1
-rw-r--r--src/mainboard/razer/blade_stealth_kbl/variants/h2u/board_info.txt9
-rw-r--r--src/mainboard/razer/blade_stealth_kbl/variants/h2u/hda_verb.c (renamed from src/mainboard/razer/blade_stealth_kbl/hda_verb.c)2
-rw-r--r--src/mainboard/razer/blade_stealth_kbl/variants/h2u/include/variant/gpio.h (renamed from src/mainboard/razer/blade_stealth_kbl/gpio.h)0
-rw-r--r--src/mainboard/razer/blade_stealth_kbl/variants/h2u/overridetree.cb31
-rw-r--r--src/mainboard/razer/blade_stealth_kbl/variants/h3q/board_info.txt9
-rw-r--r--src/mainboard/razer/blade_stealth_kbl/variants/h3q/hda_verb.c34
-rw-r--r--src/mainboard/razer/blade_stealth_kbl/variants/h3q/include/variant/gpio.h200
-rw-r--r--src/mainboard/razer/blade_stealth_kbl/variants/h3q/overridetree.cb23
15 files changed, 344 insertions, 41 deletions
diff --git a/src/mainboard/razer/blade_stealth_kbl/Kconfig b/src/mainboard/razer/blade_stealth_kbl/Kconfig
index 7c97676f85..906301c162 100644
--- a/src/mainboard/razer/blade_stealth_kbl/Kconfig
+++ b/src/mainboard/razer/blade_stealth_kbl/Kconfig
@@ -1,16 +1,12 @@
## SPDX-License-Identifier: GPL-2.0-only
-if BOARD_RAZER_BLADE_STEALTH_KBL
-
-config BOARD_SPECIFIC_OPTIONS
- def_bool y
+config BOARD_RAZER_BLADE_STEALTH_KBL
+ bool
select SYSTEM_TYPE_LAPTOP
select BOARD_ROMSIZE_KB_8192
select SUPERIO_ITE_IT8528E
select SOC_INTEL_KABYLAKE
select SOC_INTEL_COMMON_BLOCK_HDA_VERB
- select MEMORY_MAPPED_TPM
- select MAINBOARD_HAS_TPM2
select MAINBOARD_HAS_LIBGFXINIT
select HAVE_SPD_IN_CBFS
select DRIVERS_I2C_HID
@@ -18,6 +14,31 @@ config BOARD_SPECIFIC_OPTIONS
select HAVE_ACPI_TABLES
select DRIVERS_GENERIC_CBFS_SERIAL
+config BOARD_RAZER_BLADE_H2U
+ select BOARD_RAZER_BLADE_STEALTH_KBL
+ select MEMORY_MAPPED_TPM
+ select MAINBOARD_HAS_TPM2
+
+config BOARD_RAZER_BLADE_H3Q
+ select BOARD_RAZER_BLADE_STEALTH_KBL
+
+if BOARD_RAZER_BLADE_STEALTH_KBL
+
+config VARIANT_DIR
+ default "h2u" if BOARD_RAZER_BLADE_H2U
+ default "h3q" if BOARD_RAZER_BLADE_H3Q
+
+config OVERRIDE_DEVICETREE
+ default "variants/\$(CONFIG_VARIANT_DIR)/overridetree.cb"
+
+config MAINBOARD_FAMILY
+ string
+ default "BLADE_STEALTH"
+
+config MAINBOARD_PART_NUMBER
+ default "H2U: RZ09-01962" if BOARD_RAZER_BLADE_H2U
+ default "H3Q: RZ09-01963/RZ09-01964" if BOARD_RAZER_BLADE_H3Q
+
# For now no way to choose the correct the available RAM
config BOARD_RAZER_BLADE_STEALTH_KBL_16GB
bool "16GB RAM (4x MT52L1G32D4PG)"
@@ -27,13 +48,6 @@ config VGA_BIOS_ID
string
default "8086,5916"
-config MAINBOARD_FAMILY
- string
- default "BLADE_STEALTH"
-
-config MAINBOARD_PART_NUMBER
- default "H2U"
-
config MAINBOARD_VERSION
string
default "1.0"
diff --git a/src/mainboard/razer/blade_stealth_kbl/Kconfig.name b/src/mainboard/razer/blade_stealth_kbl/Kconfig.name
index 5ebc0ca9cc..ee73459ae5 100644
--- a/src/mainboard/razer/blade_stealth_kbl/Kconfig.name
+++ b/src/mainboard/razer/blade_stealth_kbl/Kconfig.name
@@ -1,4 +1,7 @@
## SPDX-License-Identifier: GPL-2.0-only
-config BOARD_RAZER_BLADE_STEALTH_KBL
- bool "Razer Blade Stealth KabyLake (2016)"
+config BOARD_RAZER_BLADE_H2U
+ bool "Razer Blade Stealth KabyLake (2016, RZ09-01962, 12.5\")"
+
+config BOARD_RAZER_BLADE_H3Q
+ bool "Razer Blade Stealth KabyLake (Mid 2017, RZ09-01963/RZ09-10964, 13.3\")"
diff --git a/src/mainboard/razer/blade_stealth_kbl/Makefile.mk b/src/mainboard/razer/blade_stealth_kbl/Makefile.mk
index 0d4380a6f6..fca5b05555 100644
--- a/src/mainboard/razer/blade_stealth_kbl/Makefile.mk
+++ b/src/mainboard/razer/blade_stealth_kbl/Makefile.mk
@@ -3,6 +3,8 @@
subdirs-y += spd
ramstage-y += ramstage.c
-ramstage-y += hda_verb.c
+ramstage-y += variants/$(VARIANT_DIR)/hda_verb.c
ramstage-$(CONFIG_MAINBOARD_USE_LIBGFXINIT) += gma-mainboard.ads
+
+CPPFLAGS_common += -I$(src)/mainboard/$(MAINBOARDDIR)/variants/$(VARIANT_DIR)/include
diff --git a/src/mainboard/razer/blade_stealth_kbl/board_info.txt b/src/mainboard/razer/blade_stealth_kbl/board_info.txt
index 414d880a12..6a5e685b71 100644
--- a/src/mainboard/razer/blade_stealth_kbl/board_info.txt
+++ b/src/mainboard/razer/blade_stealth_kbl/board_info.txt
@@ -1,5 +1,5 @@
Vendor name: RAZER
-Board name: Blade Stealth KabyLake (H2U)
+Board name: Blade Stealth KabyLake
Category: laptop
ROM package: SOIC8
ROM protocol: SPI
diff --git a/src/mainboard/razer/blade_stealth_kbl/devicetree.cb b/src/mainboard/razer/blade_stealth_kbl/devicetree.cb
index 132316481d..380bfde2b7 100644
--- a/src/mainboard/razer/blade_stealth_kbl/devicetree.cb
+++ b/src/mainboard/razer/blade_stealth_kbl/devicetree.cb
@@ -126,24 +126,6 @@ chip soc/intel/skylake
register "PcieRpHotPlug[4]" = "1"
- register "usb2_ports" = "{
- [0] = USB2_PORT_MID(OC1), /* Type-A Port (right) */
- [1] = USB2_PORT_MID(OC1), /* Type-A Port (left) */
- [2] = USB2_PORT_MID(OC1), /* TODO Unknown. Maybe USBC? */
- [3] = USB2_PORT_MID(OC1), /* TODO Unknown. Maybe USBC? */
- [4] = USB2_PORT_MID(OC1), /* TODO Unknown. Maybe USBC? */
- [5] = USB2_PORT_MID(OC1), /* TODO Unknown. Maybe USBC? */
- [6] = USB2_PORT_FLEX(OC2), /* Camera */
- [7] = USB2_PORT_FLEX(OC2), /* Keyboard */
- [8] = USB2_PORT_FLEX(OC2), /* Touchscreen */
- }"
-
- register "usb3_ports" = "{
- [0] = USB3_PORT_DEFAULT(OC1), /* Type-A Port (left) */
- [1] = USB3_PORT_DEFAULT(OC1), /* Type-A Port (right) */
- [5] = USB3_PORT_DEFAULT(OC1), /* TODO Unknown. Maybe USBC? */
- }"
-
# PL1 override 25W
# PL2 override 44W
register "power_limits_config" = "{
@@ -191,9 +173,6 @@ chip soc/intel/skylake
device ref pcie_rp5 on end
device ref pcie_rp9 on end
device ref lpc_espi on
- chip drivers/pc80/tpm
- device pnp 0c31.0 on end
- end
chip superio/ite/it8528e
device pnp 6e.1 off end
device pnp 6e.2 off end
diff --git a/src/mainboard/razer/blade_stealth_kbl/ramstage.c b/src/mainboard/razer/blade_stealth_kbl/ramstage.c
index 7c05c6b77d..5de606d807 100644
--- a/src/mainboard/razer/blade_stealth_kbl/ramstage.c
+++ b/src/mainboard/razer/blade_stealth_kbl/ramstage.c
@@ -1,7 +1,7 @@
/* SPDX-License-Identifier: GPL-2.0-only */
#include <soc/ramstage.h>
-#include "gpio.h"
+#include <variant/gpio.h>
void mainboard_silicon_init_params(FSP_SIL_UPD *params)
{
diff --git a/src/mainboard/razer/blade_stealth_kbl/spd/spd.h b/src/mainboard/razer/blade_stealth_kbl/spd/spd.h
index 74b7c32489..2c0a16770e 100644
--- a/src/mainboard/razer/blade_stealth_kbl/spd/spd.h
+++ b/src/mainboard/razer/blade_stealth_kbl/spd/spd.h
@@ -4,7 +4,6 @@
#define MAINBOARD_SPD_H
#include <gpio.h>
-#include "../gpio.h"
void mainboard_fill_dq_map_data(void *dq_map_ptr);
void mainboard_fill_dqs_map_data(void *dqs_map_ptr);
diff --git a/src/mainboard/razer/blade_stealth_kbl/variants/h2u/board_info.txt b/src/mainboard/razer/blade_stealth_kbl/variants/h2u/board_info.txt
new file mode 100644
index 0000000000..ffdbd51330
--- /dev/null
+++ b/src/mainboard/razer/blade_stealth_kbl/variants/h2u/board_info.txt
@@ -0,0 +1,9 @@
+Vendor name: RAZER
+Board name: Blade Stealth KabyLake (H2U: RZ09-01962)
+Board URL: https://mysupport.razer.com/app/answers/detail/a_id/3698/
+Category: laptop
+ROM package: SOIC8
+ROM protocol: SPI
+ROM socketed: n
+Flashrom support: y
+Release year: 2016
diff --git a/src/mainboard/razer/blade_stealth_kbl/hda_verb.c b/src/mainboard/razer/blade_stealth_kbl/variants/h2u/hda_verb.c
index 63641dbdc0..6dd25c4c85 100644
--- a/src/mainboard/razer/blade_stealth_kbl/hda_verb.c
+++ b/src/mainboard/razer/blade_stealth_kbl/variants/h2u/hda_verb.c
@@ -20,7 +20,7 @@ const u32 cim_verb_data[] = {
AZALIA_PIN_CFG(0, 0x1f, 0x411111f0),
AZALIA_PIN_CFG(0, 0x21, 0x03211020),
- /* Intel, KabylakeHDMI */
+ /* Intel, Kaby Lake HDMI */
0x8086280b, /* Vendor ID */
0x80860101, /* Subsystem ID */
4, /* Number of entries */
diff --git a/src/mainboard/razer/blade_stealth_kbl/gpio.h b/src/mainboard/razer/blade_stealth_kbl/variants/h2u/include/variant/gpio.h
index 4f98432687..4f98432687 100644
--- a/src/mainboard/razer/blade_stealth_kbl/gpio.h
+++ b/src/mainboard/razer/blade_stealth_kbl/variants/h2u/include/variant/gpio.h
diff --git a/src/mainboard/razer/blade_stealth_kbl/variants/h2u/overridetree.cb b/src/mainboard/razer/blade_stealth_kbl/variants/h2u/overridetree.cb
new file mode 100644
index 0000000000..d82147e7ee
--- /dev/null
+++ b/src/mainboard/razer/blade_stealth_kbl/variants/h2u/overridetree.cb
@@ -0,0 +1,31 @@
+## SPDX-License-Identifier: GPL-2.0-only
+
+chip soc/intel/skylake
+ device domain 0 on
+ device ref south_xhci on
+ register "usb2_ports" = "{
+ [0] = USB2_PORT_MID(OC1), /* Type-A Port (right) */
+ [1] = USB2_PORT_MID(OC1), /* Type-A Port (left) */
+ [2] = USB2_PORT_MID(OC1), /* TODO Unknown. Maybe USBC? */
+ [3] = USB2_PORT_MID(OC1), /* TODO Unknown. Maybe USBC? */
+ [4] = USB2_PORT_MID(OC1), /* TODO Unknown. Maybe USBC? */
+ [5] = USB2_PORT_MID(OC1), /* TODO Unknown. Maybe USBC? */
+ [6] = USB2_PORT_FLEX(OC2), /* Camera */
+ [7] = USB2_PORT_FLEX(OC2), /* Keyboard */
+ [8] = USB2_PORT_FLEX(OC2), /* Touchscreen */
+ }"
+
+ register "usb3_ports" = "{
+ [0] = USB3_PORT_DEFAULT(OC1), /* Type-A Port (left) */
+ [1] = USB3_PORT_DEFAULT(OC1), /* Type-A Port (right) */
+ [5] = USB3_PORT_DEFAULT(OC1), /* TODO Unknown. Maybe USBC? */
+ }"
+ end
+
+ device ref lpc_espi on
+ chip drivers/pc80/tpm
+ device pnp 0c31.0 on end
+ end
+ end
+ end
+end
diff --git a/src/mainboard/razer/blade_stealth_kbl/variants/h3q/board_info.txt b/src/mainboard/razer/blade_stealth_kbl/variants/h3q/board_info.txt
new file mode 100644
index 0000000000..5c801b5b44
--- /dev/null
+++ b/src/mainboard/razer/blade_stealth_kbl/variants/h3q/board_info.txt
@@ -0,0 +1,9 @@
+Vendor name: RAZER
+Board name: Blade Stealth KabyLake (H3Q: RZ09-01963 / RZ09-01964)
+Board URL: https://mysupport.razer.com/app/answers/detail/a_id/3694/
+Category: laptop
+ROM package: SOIC8
+ROM protocol: SPI
+ROM socketed: n
+Flashrom support: y
+Release year: 2017
diff --git a/src/mainboard/razer/blade_stealth_kbl/variants/h3q/hda_verb.c b/src/mainboard/razer/blade_stealth_kbl/variants/h3q/hda_verb.c
new file mode 100644
index 0000000000..db9af953ae
--- /dev/null
+++ b/src/mainboard/razer/blade_stealth_kbl/variants/h3q/hda_verb.c
@@ -0,0 +1,34 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+
+#include <device/azalia_device.h>
+
+const u32 cim_verb_data[] = {
+ /* Realtek, ALC298 */
+ 0x10ec0298, /* Vendor ID */
+ 0x1a586753, /* Subsystem ID */
+ 12, /* Number of entries */
+ AZALIA_SUBVENDOR(0, 0x1a586753),
+ AZALIA_PIN_CFG(0, 0x12, 0x90a60130),
+ AZALIA_PIN_CFG(0, 0x13, 0x40000000),
+ AZALIA_PIN_CFG(0, 0x14, 0x90170110),
+ AZALIA_PIN_CFG(0, 0x17, 0x411111f0),
+ AZALIA_PIN_CFG(0, 0x18, 0x04a11040),
+ AZALIA_PIN_CFG(0, 0x19, 0x411111f0),
+ AZALIA_PIN_CFG(0, 0x1a, 0x411111f0),
+ AZALIA_PIN_CFG(0, 0x1d, 0x4075812d),
+ AZALIA_PIN_CFG(0, 0x1e, 0x411111f0),
+ AZALIA_PIN_CFG(0, 0x1f, 0x411111f0),
+ AZALIA_PIN_CFG(0, 0x21, 0x04211020),
+
+ /* Intel, Kaby Lake HDMI */
+ 0x8086280b, /* Vendor ID */
+ 0x80860101, /* Subsystem ID */
+ 4, /* Number of entries */
+ AZALIA_SUBVENDOR(2, 0x80860101),
+ AZALIA_PIN_CFG(2, 0x05, 0x18560010),
+ AZALIA_PIN_CFG(2, 0x06, 0x18560010),
+ AZALIA_PIN_CFG(2, 0x07, 0x18560010),
+};
+
+const u32 pc_beep_verbs[] = {};
+AZALIA_ARRAY_SIZES;
diff --git a/src/mainboard/razer/blade_stealth_kbl/variants/h3q/include/variant/gpio.h b/src/mainboard/razer/blade_stealth_kbl/variants/h3q/include/variant/gpio.h
new file mode 100644
index 0000000000..1f2397737d
--- /dev/null
+++ b/src/mainboard/razer/blade_stealth_kbl/variants/h3q/include/variant/gpio.h
@@ -0,0 +1,200 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+
+#ifndef CFG_GPIO_H
+#define CFG_GPIO_H
+
+#include <gpio.h>
+
+/* Pad configuration was generated automatically using intelp2m utility */
+static const struct pad_config gpio_table[] = {
+
+ /* ------- GPIO Community 0 ------- */
+
+ /* ------- GPIO Group GPP_A ------- */
+ PAD_CFG_NF(GPP_A0, NONE, DEEP, NF1),
+ PAD_CFG_NF(GPP_A1, NATIVE, DEEP, NF1),
+ PAD_CFG_NF(GPP_A2, NATIVE, DEEP, NF1),
+ PAD_CFG_NF(GPP_A3, NATIVE, DEEP, NF1),
+ PAD_CFG_NF(GPP_A4, NATIVE, DEEP, NF1),
+ PAD_CFG_NF(GPP_A5, NONE, DEEP, NF1),
+ PAD_CFG_NF(GPP_A6, NONE, DEEP, NF1),
+ PAD_CFG_GPI_TRIG_OWN(GPP_A7, NONE, PLTRST, OFF, ACPI),
+ PAD_CFG_NF(GPP_A8, NONE, DEEP, NF1),
+ PAD_CFG_NF(GPP_A9, DN_20K, DEEP, NF1),
+ PAD_CFG_NF(GPP_A10, DN_20K, DEEP, NF1),
+ PAD_CFG_GPO(GPP_A11, 0, DEEP),
+ PAD_NC(GPP_A12, NONE),
+ PAD_CFG_NF(GPP_A13, NONE, DEEP, NF1),
+ PAD_CFG_GPO(GPP_A14, 0, DEEP),
+ PAD_CFG_GPO(GPP_A15, 0, DEEP),
+ PAD_CFG_GPO(GPP_A16, 0, DEEP),
+ PAD_CFG_GPO(GPP_A17, 0, DEEP),
+ PAD_CFG_GPO(GPP_A18, 0, DEEP),
+ PAD_CFG_GPO(GPP_A19, 0, DEEP),
+ PAD_CFG_GPO(GPP_A20, 0, DEEP),
+ PAD_CFG_GPO(GPP_A21, 0, DEEP),
+ PAD_CFG_GPO(GPP_A22, 0, DEEP),
+ PAD_CFG_GPO(GPP_A23, 0, DEEP),
+
+ /* ------- GPIO Group GPP_B ------- */
+ PAD_CFG_GPO(GPP_B0, 0, DEEP),
+ PAD_CFG_GPO(GPP_B1, 0, DEEP),
+ PAD_CFG_GPO(GPP_B2, 0, DEEP),
+ PAD_CFG_GPO(GPP_B3, 0, DEEP),
+ PAD_CFG_GPO(GPP_B4, 0, DEEP),
+ PAD_CFG_NF(GPP_B5, NONE, DEEP, NF1),
+ PAD_CFG_NF(GPP_B6, NONE, DEEP, NF1),
+ PAD_CFG_NF(GPP_B7, NONE, DEEP, NF1),
+ PAD_CFG_GPO(GPP_B8, 0, DEEP),
+ PAD_CFG_NF(GPP_B9, NONE, DEEP, NF1),
+ PAD_CFG_GPO(GPP_B10, 0, DEEP),
+ PAD_CFG_NF(GPP_B11, NONE, DEEP, NF1),
+ PAD_CFG_NF(GPP_B12, NONE, DEEP, NF1),
+ PAD_CFG_NF(GPP_B13, NONE, DEEP, NF1),
+ PAD_CFG_TERM_GPO(GPP_B14, 1, DN_20K, DEEP),
+ PAD_CFG_GPO(GPP_B15, 0, DEEP),
+ PAD_CFG_GPO(GPP_B16, 0, DEEP),
+ PAD_CFG_GPO(GPP_B17, 0, DEEP),
+ PAD_CFG_GPI_SCI(GPP_B18, UP_20K, PLTRST, LEVEL, INVERT),
+ PAD_NC(GPP_B19, NONE),
+ PAD_CFG_NF(GPP_B20, DN_20K, DEEP, NF1),
+ PAD_CFG_NF(GPP_B21, DN_20K, DEEP, NF1),
+ PAD_CFG_NF(GPP_B22, DN_20K, DEEP, NF1),
+ PAD_CFG_TERM_GPO(GPP_B23, 1, DN_20K, DEEP),
+
+ /* ------- GPIO Community 1 ------- */
+
+ /* ------- GPIO Group GPP_C ------- */
+ PAD_CFG_NF(GPP_C0, NONE, DEEP, NF1),
+ PAD_CFG_NF(GPP_C1, DN_20K, DEEP, NF1),
+ PAD_CFG_TERM_GPO(GPP_C2, 1, DN_20K, DEEP),
+ PAD_CFG_NF(GPP_C3, NONE, DEEP, NF1),
+ PAD_CFG_NF(GPP_C4, NONE, DEEP, NF1),
+ PAD_CFG_GPI_APIC_LOW(GPP_C5, DN_20K, DEEP),
+ /* GPP_C6 - RESERVED */
+ /* GPP_C7 - RESERVED */
+ PAD_CFG_NF(GPP_C8, NONE, DEEP, NF1),
+ PAD_CFG_NF(GPP_C9, NONE, DEEP, NF1),
+ PAD_CFG_GPO(GPP_C10, 0, DEEP),
+ PAD_CFG_GPO(GPP_C11, 0, DEEP),
+ PAD_CFG_GPO(GPP_C12, 0, DEEP),
+ PAD_CFG_GPO(GPP_C13, 0, DEEP),
+ PAD_CFG_GPO(GPP_C14, 0, DEEP),
+ PAD_CFG_GPO(GPP_C15, 0, DEEP),
+ PAD_CFG_NF(GPP_C16, NONE, DEEP, NF1),
+ PAD_CFG_NF(GPP_C17, NONE, DEEP, NF1),
+ PAD_CFG_NF(GPP_C18, NONE, DEEP, NF1),
+ PAD_CFG_NF(GPP_C19, NONE, DEEP, NF1),
+ PAD_CFG_NF(GPP_C20, NONE, DEEP, NF1),
+ PAD_CFG_NF(GPP_C21, NONE, DEEP, NF1),
+ PAD_CFG_GPO(GPP_C22, 0, DEEP),
+ PAD_CFG_GPO(GPP_C23, 0, DEEP),
+
+ /* ------- GPIO Group GPP_D ------- */
+ PAD_CFG_GPO(GPP_D0, 0, DEEP),
+ PAD_CFG_GPO(GPP_D1, 0, DEEP),
+ PAD_CFG_GPO(GPP_D2, 0, DEEP),
+ PAD_CFG_GPO(GPP_D3, 0, DEEP),
+ PAD_CFG_GPO(GPP_D4, 0, DEEP),
+ PAD_CFG_GPO(GPP_D5, 0, DEEP),
+ PAD_CFG_GPO(GPP_D6, 0, DEEP),
+ PAD_CFG_GPO(GPP_D7, 0, DEEP),
+ PAD_CFG_GPO(GPP_D8, 0, DEEP),
+ PAD_CFG_GPO(GPP_D9, 0, DEEP),
+ PAD_CFG_GPO(GPP_D10, 0, DEEP),
+ PAD_CFG_GPO(GPP_D11, 0, DEEP),
+ PAD_CFG_GPO(GPP_D12, 0, DEEP),
+ PAD_CFG_GPO(GPP_D13, 0, DEEP),
+ PAD_CFG_GPO(GPP_D14, 0, DEEP),
+ PAD_CFG_GPO(GPP_D15, 0, DEEP),
+ PAD_CFG_GPO(GPP_D16, 0, DEEP),
+ PAD_CFG_GPO(GPP_D17, 0, DEEP),
+ PAD_CFG_GPO(GPP_D18, 0, DEEP),
+ PAD_CFG_GPO(GPP_D19, 0, DEEP),
+ PAD_CFG_GPO(GPP_D20, 0, DEEP),
+ PAD_CFG_GPO(GPP_D21, 0, DEEP),
+ PAD_CFG_GPO(GPP_D22, 0, DEEP),
+ PAD_CFG_GPO(GPP_D23, 0, DEEP),
+
+ /* ------- GPIO Group GPP_E ------- */
+ PAD_CFG_GPO(GPP_E0, 0, DEEP),
+ PAD_CFG_GPO(GPP_E1, 0, DEEP),
+ PAD_CFG_NF(GPP_E2, NONE, DEEP, NF1),
+ PAD_CFG_GPO(GPP_E3, 0, DEEP),
+ PAD_CFG_GPO(GPP_E4, 0, DEEP),
+ PAD_CFG_GPI_SCI(GPP_E5, NONE, PLTRST, EDGE_SINGLE, INVERT),
+ PAD_CFG_GPO(GPP_E6, 0, DEEP),
+ PAD_CFG_GPI_DUAL_ROUTE(GPP_E7, NONE, PLTRST, LEVEL, NONE, IOAPIC, SCI),
+ PAD_CFG_NF(GPP_E8, NONE, DEEP, NF1),
+ PAD_CFG_GPO(GPP_E9, 0, DEEP),
+ PAD_CFG_TERM_GPO(GPP_E10, 1, DN_20K, DEEP),
+ PAD_CFG_TERM_GPO(GPP_E11, 1, DN_20K, DEEP),
+ PAD_NC(GPP_E12, NONE),
+ PAD_CFG_NF(GPP_E13, NONE, DEEP, NF1),
+ PAD_CFG_NF(GPP_E14, NONE, DEEP, NF1),
+ PAD_CFG_GPI_SMI(GPP_E15, NONE, DEEP, EDGE_SINGLE, INVERT),
+ PAD_CFG_GPI_SCI(GPP_E16, NONE, PLTRST, LEVEL, INVERT),
+ PAD_CFG_NF(GPP_E17, NONE, DEEP, NF1),
+ PAD_CFG_NF(GPP_E18, NONE, DEEP, NF1),
+ PAD_CFG_NF(GPP_E19, DN_20K, DEEP, NF1),
+ PAD_CFG_NF(GPP_E20, NONE, DEEP, NF1),
+ PAD_CFG_NF(GPP_E21, DN_20K, DEEP, NF1),
+ PAD_CFG_GPO(GPP_E22, 0, DEEP),
+ PAD_CFG_TERM_GPO(GPP_E23, 0, DN_20K, PLTRST),
+
+ /* ------- GPIO Community 2 ------- */
+
+ /* -------- GPIO Group GPD -------- */
+ PAD_CFG_NF(GPD0, NONE, PWROK, NF1),
+ PAD_CFG_NF(GPD1, NONE, PWROK, NF1),
+ PAD_CFG_NF(GPD2, NONE, PWROK, NF1),
+ PAD_CFG_NF(GPD3, UP_20K, PWROK, NF1),
+ PAD_CFG_NF(GPD4, NONE, PWROK, NF1),
+ PAD_CFG_NF(GPD5, NONE, PWROK, NF1),
+ PAD_CFG_NF(GPD6, NONE, PWROK, NF1),
+ PAD_CFG_GPO(GPD7, 0, DEEP),
+ PAD_NC(GPD8, NONE),
+ PAD_CFG_NF(GPD9, NONE, PWROK, NF1),
+ PAD_CFG_NF(GPD10, NONE, PWROK, NF1),
+ PAD_CFG_NF(GPD11, NONE, PWROK, NF1),
+
+ /* ------- GPIO Community 3 ------- */
+
+ /* ------- GPIO Group GPP_F ------- */
+ PAD_CFG_GPO(GPP_F0, 0, DEEP),
+ PAD_CFG_GPO(GPP_F1, 0, DEEP),
+ PAD_CFG_GPO(GPP_F2, 0, DEEP),
+ PAD_CFG_GPO(GPP_F3, 0, DEEP),
+ PAD_CFG_GPO(GPP_F4, 0, DEEP),
+ PAD_CFG_GPO(GPP_F5, 0, DEEP),
+ PAD_CFG_GPO(GPP_F6, 0, DEEP),
+ PAD_CFG_GPO(GPP_F7, 0, DEEP),
+ PAD_CFG_NF(GPP_F8, NONE, DEEP, NF1),
+ PAD_CFG_NF(GPP_F9, NONE, DEEP, NF1),
+ PAD_CFG_GPO(GPP_F10, 0, DEEP),
+ PAD_CFG_GPO(GPP_F11, 0, DEEP),
+ PAD_CFG_GPO(GPP_F12, 0, DEEP),
+ PAD_CFG_GPI_TRIG_OWN(GPP_F13, NONE, DEEP, OFF, ACPI),
+ PAD_CFG_GPI_TRIG_OWN(GPP_F14, NONE, DEEP, OFF, ACPI),
+ PAD_CFG_GPI_TRIG_OWN(GPP_F15, NONE, DEEP, OFF, ACPI),
+ PAD_CFG_NF(GPP_F16, NONE, DEEP, NF1),
+ PAD_CFG_GPO(GPP_F17, 0, DEEP),
+ PAD_CFG_GPO(GPP_F18, 0, DEEP),
+ PAD_CFG_GPO(GPP_F19, 0, DEEP),
+ PAD_CFG_GPO(GPP_F20, 0, DEEP),
+ PAD_CFG_GPO(GPP_F21, 0, DEEP),
+ PAD_CFG_GPO(GPP_F22, 0, DEEP),
+ PAD_CFG_GPO(GPP_F23, 0, DEEP),
+
+ /* ------- GPIO Group GPP_G ------- */
+ PAD_CFG_GPO(GPP_G0, 0, DEEP),
+ PAD_CFG_GPO(GPP_G1, 0, DEEP),
+ PAD_CFG_GPO(GPP_G2, 0, DEEP),
+ PAD_CFG_GPO(GPP_G3, 0, DEEP),
+ PAD_CFG_GPO(GPP_G4, 0, DEEP),
+ PAD_CFG_GPO(GPP_G5, 0, DEEP),
+ PAD_CFG_GPO(GPP_G6, 0, DEEP),
+ PAD_CFG_GPO(GPP_G7, 0, DEEP),
+};
+
+#endif /* CFG_GPIO_H */
diff --git a/src/mainboard/razer/blade_stealth_kbl/variants/h3q/overridetree.cb b/src/mainboard/razer/blade_stealth_kbl/variants/h3q/overridetree.cb
new file mode 100644
index 0000000000..f7c0ac2593
--- /dev/null
+++ b/src/mainboard/razer/blade_stealth_kbl/variants/h3q/overridetree.cb
@@ -0,0 +1,23 @@
+## SPDX-License-Identifier: GPL-2.0-only
+
+chip soc/intel/skylake
+ device domain 0 on
+ device ref south_xhci on
+ # NOTE: TYPE-C port is controlled by Intel Thunderbolt
+
+ register "usb2_ports" = "{
+ [0] = USB2_PORT_MID(OC0), /* Type-A Port (right) */
+ [1] = USB2_PORT_MID(OC0), /* Type-A Port (left) */
+ [5] = USB2_PORT_SHORT(OC2), /* M.2 Slot (Bluetooth) */
+ [6] = USB2_PORT_FLEX(OC3), /* Camera */
+ [7] = USB2_PORT_FLEX(OC3), /* Keyboard */
+ [8] = USB2_PORT_FLEX(OC_SKIP), /* Touchscreen */
+ }"
+
+ register "usb3_ports" = "{
+ [0] = USB3_PORT_DEFAULT(OC0), /* Type-A Port (left) */
+ [1] = USB3_PORT_DEFAULT(OC0), /* Type-A Port (right) */
+ }"
+ end
+ end
+end