From 18ae0c48e110117270b043c25127bf6f178e205c Mon Sep 17 00:00:00 2001 From: Ren Kuo Date: Tue, 9 Sep 2025 19:06:19 +0800 Subject: [PATCH] mb/google/fatcat/var/moonstone: Support new schematic changes Add FW_config support to distinguish schematic changes. Refer to schamtics MB_V20250826 and DB_V20250821 BUG=b:442964982 TEST=emerge-fatcat coreboot Change-Id: I0dd354cb1512521474a929bf4d1cfc786eb0a33c Signed-off-by: Ren Kuo Reviewed-on: https://review.coreboot.org/c/coreboot/+/89128 Reviewed-by: Subrata Banik Tested-by: build bot (Jenkins) --- .../fatcat/variants/moonstone/Makefile.mk | 2 + .../fatcat/variants/moonstone/fw_config.c | 137 ++++++++++++++++++ .../google/fatcat/variants/moonstone/gpio.c | 32 ---- .../fatcat/variants/moonstone/overridetree.cb | 86 ++++++++++- .../fatcat/variants/moonstone/variant.c | 59 ++++++++ 5 files changed, 276 insertions(+), 40 deletions(-) create mode 100644 src/mainboard/google/fatcat/variants/moonstone/fw_config.c diff --git a/src/mainboard/google/fatcat/variants/moonstone/Makefile.mk b/src/mainboard/google/fatcat/variants/moonstone/Makefile.mk index cbe8155bd4..eb361dfe89 100644 --- a/src/mainboard/google/fatcat/variants/moonstone/Makefile.mk +++ b/src/mainboard/google/fatcat/variants/moonstone/Makefile.mk @@ -3,5 +3,7 @@ bootblock-y += gpio.c romstage-y += gpio.c romstage-y += memory.c +romstage-$(CONFIG_FW_CONFIG) += fw_config.c ramstage-y += gpio.c ramstage-$(CONFIG_FW_CONFIG) += variant.c +ramstage-$(CONFIG_FW_CONFIG) += fw_config.c diff --git a/src/mainboard/google/fatcat/variants/moonstone/fw_config.c b/src/mainboard/google/fatcat/variants/moonstone/fw_config.c new file mode 100644 index 0000000000..02fc5c82e2 --- /dev/null +++ b/src/mainboard/google/fatcat/variants/moonstone/fw_config.c @@ -0,0 +1,137 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ + +#include +#include +#include +#include +#include + +/* t: base table; o: override table */ +#define GPIO_PADBASED_OVERRIDE(t, o) gpio_padbased_override(t, o, ARRAY_SIZE(o)) +/* t: table */ +#define GPIO_CONFIGURE_PADS(t) gpio_configure_pads(t, ARRAY_SIZE(t)) + +static const struct pad_config fp_spi_disable_pads[] = { + PAD_NC(GPP_C15, NONE), + PAD_NC(GPP_E11, NONE), + PAD_NC(GPP_E17, NONE), + PAD_NC(GPP_E20, NONE), + PAD_NC(GPP_E22, NONE), + PAD_NC(GPP_F14, NONE), + PAD_NC(GPP_F15, NONE), +}; + +static const struct pad_config fp_spi_enable_pads[] = { + /* GPP_C15: FPS_RST_N */ + PAD_CFG_GPO_LOCK(GPP_C15, 1, LOCK_CONFIG), + /* GPP_E11: GPSI0_CLK */ + PAD_CFG_NF(GPP_E11, NONE, DEEP, NF5), + /* GPP_E17: GSPI0_CS0 */ + PAD_CFG_NF(GPP_E17, NONE, DEEP, NF5), + /* GPP_E20: FPMCU_FW_UPDATE */ + PAD_CFG_GPO_LOCK(GPP_E20, 0, LOCK_CONFIG), + /* GPP_E22: FPS_SOC_INT_L */ + PAD_CFG_GPI_IRQ_WAKE(GPP_E22, NONE, PWROK, LEVEL, INVERT), + /* GPP_F14: GPSI0A_MOSI */ + PAD_CFG_NF(GPP_F14, NONE, DEEP, NF8), + /* GPP_F15: GSPI0A_MISO */ + PAD_CFG_NF(GPP_F15, NONE, DEEP, NF8), +}; + +static const struct pad_config use_usb3c_enable_pads[] = { + /* GPP_C20: NC */ + PAD_NC(GPP_C20, NONE), + /* GPP_C21: NC */ + PAD_NC(GPP_C21, NONE), + /* GPP_C22: TBT_LSX3_TXD */ + PAD_CFG_NF(GPP_C22, NONE, DEEP, NF1), + /* GPP_C23: TBT_LSX3_RXD */ + PAD_CFG_NF(GPP_C23, NONE, DEEP, NF1), + /* GPP_B14: NC */ + PAD_NC(GPP_B14, NONE), + /* GPP_B11: NC */ + PAD_NC(GPP_B11, NONE), + /* GPP_E09: NC */ + PAD_NC(GPP_E09, NONE), +}; + +static const struct pad_config use_usb2a2c_hdmi_enable_pads[] = { + /* GPP_C20: TBT_LSX2_TXD */ + PAD_CFG_NF(GPP_C20, NONE, DEEP, NF1), + /* GPP_C21: TBT_LSX2_RXD */ + PAD_CFG_NF(GPP_C21, NONE, DEEP, NF1), + /* GPP_C22: DDP3_CTRLCLK */ + PAD_CFG_NF(GPP_C22, NONE, DEEP, NF2), + /* GPP_C23: DDP3_CTRLDATA */ + PAD_CFG_NF(GPP_C23, NONE, DEEP, NF2), + /* GPP_B14: DISP_HPD4 */ + PAD_CFG_NF(GPP_B14, NONE, DEEP, NF2), + /* GPP_B11: USB_OC1 */ + PAD_CFG_NF(GPP_B11, NONE, DEEP, NF1), + /* GPP_E09: USB_OC0 */ + PAD_CFG_NF(GPP_E09, NONE, DEEP, NF1), +}; + +static const struct pad_config pre_mem_fp_spi_enable_pads[] = { + /* GPP_C15: FPS_RST_N */ + PAD_CFG_GPO(GPP_C15, 0, DEEP), +}; + +void fw_config_configure_pre_mem_gpio(void) +{ + if (!fw_config_is_provisioned()) { + printk(BIOS_WARNING, "FW_CONFIG is not provisioned, Exiting\n"); + return; + } + + if (fw_config_probe(FW_CONFIG(FPMCU, FP_SPI))) + GPIO_CONFIGURE_PADS(pre_mem_fp_spi_enable_pads); + +} + +void fw_config_gpio_padbased_override(struct pad_config *padbased_table) +{ + if (!fw_config_is_provisioned()) { + printk(BIOS_WARNING, "FW_CONFIG is not provisioned, Exiting\n"); + return; + } + /* + *+-------+--------+-------------+ + *| | FP_SPI | FP_USB | + *+-------+--------+-------------+ + *| FPMCU | GSPI0 | usb2_port6 | + *+-------+--------+-------------+ + */ + if (fw_config_probe(FW_CONFIG(FPMCU, FP_SPI))) { + GPIO_PADBASED_OVERRIDE(padbased_table, fp_spi_enable_pads); + } else { + GPIO_PADBASED_OVERRIDE(padbased_table, fp_spi_disable_pads); + } + /* Probe fw_config : "IO_PORT" to reconfigure port settings accordingly. + * proto0 : IO_PORT => "USB2A2C_HDMI:0" + * porot1.5: IO_PORT => "USB3C:1" + * +-----------------+------------------+------------------+ + *| IO_PORT | USB2A2C_HDMI | USB3C | + *+-----------------+------------------+------------------+ + *| tcss_usb3_port0 | USB4_C0 (MB-TBT) | USB4_C0 (MB-TBT) | + *+-----------------+------------------+------------------+ + *| tcss_usb3_port1 | N/A | USB3.2 C2 (DB) | + *+-----------------+------------------+------------------+ + *| tcss_usb3_port2 | USB4_C1 (MB-TBT) | N/A | + *+-----------------+------------------+------------------+ + *| tcss_usb3_port3 | Fixed HDMI | USB4_C1 (MB-TBT) | + *+-----------------+------------------+------------------+ + *| usb3_port1 | USB3_A0 | N/A | + *+-----------------+------------------+------------------+ + *| usb3_port2 | USB3_A1 | N/A | + *+-----------------+------------------+------------------+ + *| usb2_port5 | USB2_A0 | USB2_C2 (DB) | + *+-----------------+------------------+------------------+ + *| usb2_port6 | USB2_A1 | USB_FP | + *+-----------------+------------------+------------------+ + */ + if (fw_config_probe(FW_CONFIG(IO_PORT, USB3C))) + GPIO_PADBASED_OVERRIDE(padbased_table, use_usb3c_enable_pads); + else + GPIO_PADBASED_OVERRIDE(padbased_table, use_usb2a2c_hdmi_enable_pads); +} diff --git a/src/mainboard/google/fatcat/variants/moonstone/gpio.c b/src/mainboard/google/fatcat/variants/moonstone/gpio.c index 9a28421783..7f6aa0cdb7 100644 --- a/src/mainboard/google/fatcat/variants/moonstone/gpio.c +++ b/src/mainboard/google/fatcat/variants/moonstone/gpio.c @@ -69,14 +69,10 @@ static const struct pad_config gpio_table[] = { PAD_NC(GPP_B09, NONE), /* GPP_B10: NC */ PAD_NC(GPP_B10, NONE), - /* GPP_B11: USB_OC1 */ - PAD_CFG_NF(GPP_B11, NONE, DEEP, NF1), /* GPP_B12: PM_SLP_S0_N */ PAD_CFG_NF(GPP_B12, NONE, DEEP, NF1), /* GPP_B13: PLT_RST_N */ PAD_CFG_NF(GPP_B13, NONE, DEEP, NF1), - /* GPP_B14: DISP_HPD4 */ - PAD_CFG_NF(GPP_B14, NONE, DEEP, NF2), /* GPP_B15: NC */ PAD_NC(GPP_B15, NONE), /* GPP_B16: GEN5_SSD_PWREN */ @@ -132,8 +128,6 @@ static const struct pad_config gpio_table[] = { PAD_CFG_NF(GPP_C13, NONE, DEEP, NF1), /* GPP_C14: NC */ PAD_NC(GPP_C14, NONE), - /* GPP_C15: FPS_RST_N */ - PAD_CFG_GPO_LOCK(GPP_C15, 1, LOCK_CONFIG), /* GPP_C16: TBT_LSX0_TXD */ PAD_CFG_NF(GPP_C16, NONE, DEEP, NF1), /* GPP_C17: TBT_LSX0_RXD */ @@ -142,14 +136,6 @@ static const struct pad_config gpio_table[] = { PAD_NC(GPP_C18, NONE), /* GPP_C19: NC */ PAD_NC(GPP_C19, NONE), - /* GPP_C20: TBT_LSX2_TXD */ - PAD_CFG_NF(GPP_C20, NONE, DEEP, NF1), - /* GPP_C21: TBT_LSX2_RXD */ - PAD_CFG_NF(GPP_C21, NONE, DEEP, NF1), - /* GPP_C22: DDP3_CTRLCLK */ - PAD_CFG_NF(GPP_C22, NONE, DEEP, NF2), - /* GPP_C23: DDP3_CTRLDATA */ - PAD_CFG_NF(GPP_C23, NONE, DEEP, NF2), /* GPP_D00: NC */ PAD_NC(GPP_D00, NONE), @@ -216,12 +202,8 @@ static const struct pad_config gpio_table[] = { PAD_CFG_GPI_APIC_LOCK(GPP_E07, NONE, LEVEL, INVERT, LOCK_CONFIG), /* GPP_E08: NC */ PAD_NC(GPP_E08, NONE), - /* GPP_E09: USB_OC0 */ - PAD_CFG_NF(GPP_E09, NONE, DEEP, NF1), /* GPP_E10: NC */ PAD_NC(GPP_E10, NONE), - /* GPP_E11: GPSI0_CLK */ - PAD_CFG_NF(GPP_E11, NONE, DEEP, NF5), /* GPP_E12: TCHPAD_I2C4_SCL */ PAD_CFG_NF(GPP_E12, NONE, DEEP, NF8), /* GPP_E13: TCHPAD_I2C4_SDA */ @@ -232,18 +214,12 @@ static const struct pad_config gpio_table[] = { PAD_NC(GPP_E15, NONE), /* GPP_E16: NC */ PAD_NC(GPP_E16, NONE), - /* GPP_E17: GSPI0_CS0 */ - PAD_CFG_NF(GPP_E17, NONE, DEEP, NF5), /* GPP_E18: TCHPAD_INT# */ PAD_CFG_GPI_APIC(GPP_E18, NONE, PLTRST, LEVEL, INVERT), /* GPP_E19: FPMCU_PWREN */ PAD_CFG_GPO(GPP_E19, 1, DEEP), - /* GPP_E20: FPMCU_FW_UPDATE */ - PAD_CFG_GPO_LOCK(GPP_E20, 0, LOCK_CONFIG), /* GPP_E21: I2C_PMC_PD_INT_N */ PAD_CFG_NF(GPP_E21, NONE, DEEP, NF1), - /* GPP_E22: FPS_SOC_INT_L */ - PAD_CFG_GPI_IRQ_WAKE(GPP_E22, NONE, PWROK, LEVEL, INVERT), /* GPP_F00: M.2_CNV_BRI_DT_BT_UART2_RTS_N */ /* NOTE: IOSSTAGE: 'Ignore' for S0ix */ @@ -279,10 +255,6 @@ static const struct pad_config gpio_table[] = { PAD_CFG_NF(GPP_F12, NONE, DEEP, NF8), /* GPP_F13: TCHSCR_I2C5_SDA */ PAD_CFG_NF(GPP_F13, NONE, DEEP, NF8), - /* GPP_F14: GPSI0A_MOSI */ - PAD_CFG_NF(GPP_F14, NONE, DEEP, NF8), - /* GPP_F15: GSPI0A_MISO */ - PAD_CFG_NF(GPP_F15, NONE, DEEP, NF8), /* GPP_F16: TCHSCR_RST_L */ PAD_CFG_GPO(GPP_F16, 1, DEEP), /* GPP_F17: NC */ @@ -420,10 +392,6 @@ static const struct pad_config romstage_gpio_table[] = { PAD_CFG_NF(GPP_C01, NONE, DEEP, NF1), /* GPP_E03: GEN5_SSD_RESET_N */ PAD_CFG_GPO(GPP_E03, 1, PLTRST), - /* GPP_E19: FPMCU_PWREN */ - PAD_CFG_GPO(GPP_E19, 0, DEEP), - /* GPP_C15: FPS_RST_N */ - PAD_CFG_GPO(GPP_C15, 0, DEEP), }; const struct pad_config *variant_gpio_table(size_t *num) diff --git a/src/mainboard/google/fatcat/variants/moonstone/overridetree.cb b/src/mainboard/google/fatcat/variants/moonstone/overridetree.cb index 624fa76f3b..18a506700f 100644 --- a/src/mainboard/google/fatcat/variants/moonstone/overridetree.cb +++ b/src/mainboard/google/fatcat/variants/moonstone/overridetree.cb @@ -6,6 +6,15 @@ fw_config option AUDIO_UNKNOWN 0 option AUDIO_ALC721_SNDW 1 end + field FPMCU 6 7 + option FP_ABSENT 0 + option FP_SPI 1 + option FP_USB 2 + end + field IO_PORT 12 12 + option USB2A2C_HDMI 0 + option USB3C 1 + end end chip soc/intel/pantherlake @@ -38,6 +47,7 @@ chip soc/intel/pantherlake register "tcss_ports[2]" = "TCSS_PORT_DEFAULT(OC_SKIP)" # USB3_C1 register "tcss_cap_policy[0]" = "TCSS_TYPE_C_PORT_FULL_FUN" + register "tcss_cap_policy[1]" = "TCSS_TYPE_C_PORT_FULL_FUN" register "tcss_cap_policy[2]" = "TCSS_TYPE_C_PORT_FULL_FUN" register "tcss_cap_policy[3]" = "TCSS_TYPE_C_PORT_FULL_FUN" @@ -114,7 +124,12 @@ chip soc/intel/pantherlake device ref iaa off end device ref tbt_pcie_rp0 on end - device ref tbt_pcie_rp2 on end + device ref tbt_pcie_rp1 on + probe IO_PORT USB3C + end + device ref tbt_pcie_rp2 on + probe IO_PORT USB2A2C_HDMI + end device ref tbt_pcie_rp3 on end device ref tcss_xhci on chip drivers/usb/acpi @@ -125,11 +140,29 @@ chip soc/intel/pantherlake register "group" = "ACPI_PLD_GROUP(1, 2)" device ref tcss_usb3_port0 on end end + chip drivers/usb/acpi + register "desc" = ""USB3 Type-C Port C2"" + register "type" = "UPC_TYPE_C_USB2_SS_SWITCH" + register "group" = "ACPI_PLD_GROUP(3, 2)" + device ref tcss_usb3_port1 on + probe IO_PORT USB3C + end + end chip drivers/usb/acpi register "desc" = ""USB3 Type-C Port C1"" register "type" = "UPC_TYPE_C_USB2_SS_SWITCH" register "group" = "ACPI_PLD_GROUP(2, 2)" - device ref tcss_usb3_port2 on end + device ref tcss_usb3_port2 on + probe IO_PORT USB2A2C_HDMI + end + end + chip drivers/usb/acpi + register "desc" = ""USB3 Type-C Port C1"" + register "type" = "UPC_TYPE_C_USB2_SS_SWITCH" + register "group" = "ACPI_PLD_GROUP(2, 2)" + device ref tcss_usb3_port3 on + probe IO_PORT USB3C + end end end end @@ -146,7 +179,16 @@ chip soc/intel/pantherlake chip drivers/intel/usb4/retimer register "dfp[0].power_gpio" = "ACPI_GPIO_OUTPUT_ACTIVE_HIGH(GPP_B21)" use tcss_usb3_port2 as dfp[0].typec_port - device generic 0 on end + device generic 0 on + probe IO_PORT USB2A2C_HDMI + end + end + chip drivers/intel/usb4/retimer + register "dfp[0].power_gpio" = "ACPI_GPIO_OUTPUT_ACTIVE_HIGH(GPP_B21)" + use tcss_usb3_port3 as dfp[0].typec_port + device generic 0 on + probe IO_PORT USB3C + end end end @@ -172,6 +214,14 @@ chip soc/intel/pantherlake register "group" = "ACPI_PLD_GROUP(2, 1)" device ref usb2_port2 on end end + chip drivers/usb/acpi + register "desc" = ""USB2 Type-C Port C2"" + register "type" = "UPC_TYPE_C_USB2_SS_SWITCH" + register "group" = "ACPI_PLD_GROUP(3, 1)" + device ref usb2_port5 on + probe IO_PORT USB3C + end + end chip drivers/usb/acpi register "desc" = ""USB2 Camera"" register "type" = "UPC_TYPE_INTERNAL" @@ -183,25 +233,42 @@ chip soc/intel/pantherlake register "desc" = ""USB2 Type-A Port 0"" register "type" = "UPC_TYPE_A" register "group" = "ACPI_PLD_GROUP(3, 1)" - device ref usb2_port5 on end + device ref usb2_port5 on + probe IO_PORT USB2A2C_HDMI + end end chip drivers/usb/acpi register "desc" = ""USB2 Type-A Port 1"" register "type" = "UPC_TYPE_A" register "group" = "ACPI_PLD_GROUP(4, 1)" - device ref usb2_port6 on end + device ref usb2_port6 on + probe IO_PORT USB2A2C_HDMI + end + end + chip drivers/usb/acpi + register "desc" = ""USB2 FPMCU"" + register "type" = "UPC_TYPE_INTERNAL" + register "has_power_resource" = "true" + register "enable_gpio" = "ACPI_GPIO_OUTPUT_ACTIVE_HIGH(GPP_E19)" + device ref usb2_port6 on + probe FPMCU FP_USB + end end chip drivers/usb/acpi register "desc" = ""USB3 Type-A Port 0"" register "type" = "UPC_TYPE_USB3_A" register "group" = "ACPI_PLD_GROUP(3, 2)" - device ref usb3_port1 on end + device ref usb3_port1 on + probe IO_PORT USB2A2C_HDMI + end end chip drivers/usb/acpi register "desc" = ""USB3 Type-A Port 1"" register "type" = "UPC_TYPE_USB3_A" register "group" = "ACPI_PLD_GROUP(4, 2)" - device ref usb3_port2 on end + device ref usb3_port2 on + probe IO_PORT USB2A2C_HDMI + end end end end @@ -285,6 +352,7 @@ chip soc/intel/pantherlake end end # I2C5 device ref gspi0 on + probe FPMCU FP_SPI chip drivers/spi/acpi register "name" = ""CRFP"" register "hid" = "ACPI_DT_NAMESPACE_HID" @@ -297,7 +365,9 @@ chip soc/intel/pantherlake register "reset_gpio" = "ACPI_GPIO_OUTPUT_ACTIVE_LOW(GPP_C15)" register "enable_gpio" = "ACPI_GPIO_OUTPUT_ACTIVE_HIGH(GPP_E19)" register "enable_delay_ms" = "3" - device spi 0 on end + device spi 0 on + probe FPMCU FP_SPI + end end end diff --git a/src/mainboard/google/fatcat/variants/moonstone/variant.c b/src/mainboard/google/fatcat/variants/moonstone/variant.c index 4221a5bf8e..bf159c7e76 100644 --- a/src/mainboard/google/fatcat/variants/moonstone/variant.c +++ b/src/mainboard/google/fatcat/variants/moonstone/variant.c @@ -1,5 +1,8 @@ /* SPDX-License-Identifier: GPL-2.0-only */ +#include +#include +#include #include #include @@ -7,3 +10,59 @@ const char *get_wifi_sar_cbfs_filename(void) { return get_wifi_sar_fw_config_filename(FW_CONFIG_FIELD(WIFI)); } + +void variant_update_soc_chip_config(struct soc_intel_pantherlake_config *config) +{ + /* + *+-------+--------+-------------+ + *| | FP_SPI | FP_USB | + *+-------+--------+-------------+ + *| FPMCU | GSPI0 | usb2_port6 | + *+-------+--------+-------------+ + */ + if (fw_config_probe(FW_CONFIG(FPMCU, FP_USB))) { + printk(BIOS_INFO, "Disable GSPI\n"); + config->serial_io_gspi_mode[PchSerialIoIndexGSPI0] = PchSerialIoDisabled; + printk(BIOS_INFO, "usb2_port6 to FP\n"); + config->usb2_ports[5] = (struct usb2_port_config) USB2_PORT_MID(OC_SKIP); + } + /* Probe fw_config : "IO_PORT" to reconfigure port settings accordingly. + * proto0 : IO_PORT => "USB2A2C_HDMI:0" + * porot1.5: IO_PORT => "USB3C:1" + * +-----------------+------------------+------------------+ + *| IO_PORT | USB2A2C_HDMI | USB3C | + *+-----------------+------------------+------------------+ + *| tcss_usb3_port0 | USB4_C0 (MB-TBT) | USB4_C0 (MB-TBT) | + *+-----------------+------------------+------------------+ + *| tcss_usb3_port1 | N/A | USB3.2 C2 (DB) | + *+-----------------+------------------+------------------+ + *| tcss_usb3_port2 | USB4_C1 (MB-TBT) | N/A | + *+-----------------+------------------+------------------+ + *| tcss_usb3_port3 | Fixed HDMI | USB4_C1 (MB-TBT) | + *+-----------------+------------------+------------------+ + *| usb3_port1 | USB3_A0 | N/A | + *+-----------------+------------------+------------------+ + *| usb3_port2 | USB3_A1 | N/A | + *+-----------------+------------------+------------------+ + *| usb2_port5 | USB2_A0 | USB2_C2 (DB) | + *+-----------------+------------------+------------------+ + *| usb2_port6 | USB2_A1 | USB_FP | + *+-----------------+------------------+------------------+ + */ + + if (fw_config_probe(FW_CONFIG(IO_PORT, USB3C))) { + printk(BIOS_INFO, "Disable Type-A Port A0/A1\n"); + config->usb3_ports[0] = (struct usb3_port_config) USB3_PORT_EMPTY; + config->usb3_ports[1] = (struct usb3_port_config) USB3_PORT_EMPTY; + + printk(BIOS_INFO, "usb2_port5 to USB2_C2(DB).\n"); + config->usb2_ports[4] = (struct usb2_port_config) USB2_PORT_TYPE_C(OC_SKIP); + + printk(BIOS_INFO, "Enable tcss_usb3_port1 to USB3_C2(DB)\n"); + config->tcss_ports[1] = (struct tcss_port_config) TCSS_PORT_DEFAULT(OC_SKIP); + printk(BIOS_INFO, "Disable tcss_usb3_port2\n"); + config->tcss_ports[2] = (struct tcss_port_config) TCSS_PORT_EMPTY; + printk(BIOS_INFO, "Enable tcss_usb3_port3 to USB3_C1(MB)\n"); + config->tcss_ports[3] = (struct tcss_port_config) TCSS_PORT_DEFAULT(OC_SKIP); + } +}