From 5c0340349ecb26948bf64d6e784de3d8c86e1ef6 Mon Sep 17 00:00:00 2001 From: Jeremy Compostella Date: Fri, 21 Mar 2025 15:51:32 -0700 Subject: [PATCH] mb/google/fatcat: Rationalize Wi-Fi and Bluetooth combinations We aim to support only two Wi-Fi and Bluetooth combinations: - CNVi Wi-Fi paired with CNVi Bluetooth - Discrete Wi-Fi paired with USB Bluetooth The CNVi core settings are configured at runtime based on the firmware configuration for Fatcat and Felino variants. Since Francka only supports CNVi configuration, settings are enforced in the override device tree. Change-Id: Ida95d1898d24898880de567db7c0ac8ac053eeaa Signed-off-by: Jeremy Compostella Reviewed-on: https://review.coreboot.org/c/coreboot/+/85662 Reviewed-by: Ben Kao Reviewed-by: Jayvik Desai Reviewed-by: Subrata Banik Tested-by: build bot (Jenkins) Reviewed-by: Kapil Porwal --- .../google/fatcat/variants/fatcat/overridetree.cb | 14 ++++++++++++-- .../google/fatcat/variants/felino/Makefile.mk | 1 + .../google/fatcat/variants/felino/overridetree.cb | 13 +++++++++++-- .../google/fatcat/variants/felino/variant.c | 13 +++++++++++++ .../google/fatcat/variants/francka/overridetree.cb | 14 ++++++-------- 5 files changed, 43 insertions(+), 12 deletions(-) create mode 100644 src/mainboard/google/fatcat/variants/felino/variant.c diff --git a/src/mainboard/google/fatcat/variants/fatcat/overridetree.cb b/src/mainboard/google/fatcat/variants/fatcat/overridetree.cb index bc0b9e26a3..741b5a46c8 100644 --- a/src/mainboard/google/fatcat/variants/fatcat/overridetree.cb +++ b/src/mainboard/google/fatcat/variants/fatcat/overridetree.cb @@ -77,7 +77,7 @@ chip soc/intel/pantherlake register "usb2_ports[3]" = "USB2_PORT_TYPE_C(OC_SKIP)" # USB2_C3 register "usb2_ports[4]" = "USB2_PORT_MID(OC0)" # Type-A Port A0 register "usb2_ports[5]" = "USB2_PORT_MID(OC0)" # Type-A Port A1 / WWAN with rework - register "usb2_ports[7]" = "USB2_PORT_MID(OC_SKIP)" # CNVi BT or discrete BT + register "usb2_ports[7]" = "USB2_PORT_MID(OC_SKIP)" # Discrete Bluetooth register "usb3_ports[0]" = "USB3_PORT_DEFAULT(OC0)" # USB3.2 x1 Type-A Con #1 register "usb3_ports[1]" = "USB3_PORT_DEFAULT(OC0)" # USB3.2 x1 Type-A Con #2 / M.2 WWAN with rework @@ -444,7 +444,10 @@ chip soc/intel/pantherlake register "desc" = ""USB2 Bluetooth"" register "type" = "UPC_TYPE_INTERNAL" register "reset_gpio" = "ACPI_GPIO_OUTPUT_ACTIVE_LOW(GPP_A16)" - device ref usb2_port8 on end + device ref usb2_port8 on + probe WIFI WIFI_PCIE_6 + probe WIFI WIFI_PCIE_7 + end end chip drivers/usb/acpi register "desc" = ""USB3 Type-A Port 1"" @@ -570,9 +573,16 @@ chip soc/intel/pantherlake register "wake" = "GPE0_PME_B0" register "add_acpi_dma_property" = "true" register "enable_cnvi_ddr_rfim" = "true" + use cnvi_bluetooth as bluetooth_companion device generic 0 on end end end # CNVi + + device ref cnvi_bluetooth on + probe WIFI WIFI_CNVI_6 + probe WIFI WIFI_CNVI_7 + end + # NOTE: i2c0 is function 0; hence it needs to be enabled when any of i2c1-5 is enabled. # TPM device is under i2c3. Therefore, i2c0 needs to be enabled anyways. device ref i2c0 on end diff --git a/src/mainboard/google/fatcat/variants/felino/Makefile.mk b/src/mainboard/google/fatcat/variants/felino/Makefile.mk index dcd5ec7202..80d4f6236b 100644 --- a/src/mainboard/google/fatcat/variants/felino/Makefile.mk +++ b/src/mainboard/google/fatcat/variants/felino/Makefile.mk @@ -6,3 +6,4 @@ romstage-y += memory.c ramstage-y += gpio.c romstage-$(CONFIG_FW_CONFIG) += fw_config.c ramstage-$(CONFIG_FW_CONFIG) += fw_config.c +ramstage-$(CONFIG_FW_CONFIG) += variant.c diff --git a/src/mainboard/google/fatcat/variants/felino/overridetree.cb b/src/mainboard/google/fatcat/variants/felino/overridetree.cb index aa8c16b949..b3b63e7b5c 100644 --- a/src/mainboard/google/fatcat/variants/felino/overridetree.cb +++ b/src/mainboard/google/fatcat/variants/felino/overridetree.cb @@ -67,7 +67,7 @@ chip soc/intel/pantherlake register "usb2_ports[1]" = "USB2_PORT_TYPE_C(OC_SKIP)" # USB2_C1 register "usb2_ports[4]" = "USB2_PORT_MID(OC_SKIP)" # Type-A Port A0 # USB HUB (USB2 Camera) register "usb2_ports[5]" = "USB2_PORT_LONG(OC3)" # Type-A Port A1 / - register "usb2_ports[7]" = "USB2_PORT_MID(OC_SKIP)" # CNVi BT or discrete BT + register "usb2_ports[7]" = "USB2_PORT_MID(OC_SKIP)" # Discrete Bluetooth register "usb3_ports[1]" = "USB3_PORT_DEFAULT(OC_SKIP)" # USB3.2 x1 Type-A Con #2 / @@ -187,7 +187,10 @@ device ref tbt_pcie_rp0 on end register "desc" = ""USB2 Bluetooth"" register "type" = "UPC_TYPE_INTERNAL" register "reset_gpio" = "ACPI_GPIO_OUTPUT_ACTIVE_LOW(GPP_A16)" - device ref usb2_port8 on end + device ref usb2_port8 on + probe WIFI WIFI_PCIE_6 + probe WIFI WIFI_PCIE_7 + end end chip drivers/usb/acpi register "desc" = ""USB3 Type-A Port 1"" @@ -266,10 +269,16 @@ device ref tbt_pcie_rp0 on end register "wake" = "GPE0_PME_B0" register "add_acpi_dma_property" = "true" register "enable_cnvi_ddr_rfim" = "true" + use cnvi_bluetooth as bluetooth_companion device generic 0 on end end end # CNVi + device ref cnvi_bluetooth on + probe WIFI WIFI_CNVI_6 + probe WIFI WIFI_CNVI_7 + end + device ref i2c0 on end device ref i2c1 on diff --git a/src/mainboard/google/fatcat/variants/felino/variant.c b/src/mainboard/google/fatcat/variants/felino/variant.c new file mode 100644 index 0000000000..76089ed577 --- /dev/null +++ b/src/mainboard/google/fatcat/variants/felino/variant.c @@ -0,0 +1,13 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ + +#include +#include + +void variant_update_soc_chip_config(struct soc_intel_pantherlake_config *config) +{ + if (fw_config_probe(FW_CONFIG(WIFI, WIFI_CNVI_6)) || /* CNVi Wi-Fi */ + fw_config_probe(FW_CONFIG(WIFI, WIFI_CNVI_7))) { + config->cnvi_wifi_core = true; + config->cnvi_bt_core = true; + } +} diff --git a/src/mainboard/google/fatcat/variants/francka/overridetree.cb b/src/mainboard/google/fatcat/variants/francka/overridetree.cb index f9ae720e0f..f9e172c8cf 100644 --- a/src/mainboard/google/fatcat/variants/francka/overridetree.cb +++ b/src/mainboard/google/fatcat/variants/francka/overridetree.cb @@ -33,7 +33,6 @@ chip soc/intel/pantherlake register "usb2_ports[4]" = "USB2_PORT_SHORT(OC0)" # Type-A Port A1 register "usb2_ports[5]" = "USB2_PORT_TYPE_C(OC_SKIP)" # USB2_C1 register "usb2_ports[6]" = "USB2_PORT_MID(OC_SKIP)" # USB HUB (USB2 Camera) - register "usb2_ports[7]" = "USB2_PORT_MID(OC_SKIP)" # CNVi BT or discrete BT register "usb3_ports[0]" = "USB3_PORT_DEFAULT(OC0)" # USB3.2 x1 Type-A Con #0 register "usb3_ports[1]" = "USB3_PORT_DEFAULT(OC0)" # USB3.2 x1 Type-A Con #1 @@ -53,8 +52,9 @@ chip soc/intel/pantherlake # TCSS USB3 register "tcss_aux_ori" = "1" - # Enable CNVi WiFi + # Enable CNVi Wi-Fi and Bluetooth register "cnvi_wifi_core" = "true" + register "cnvi_bt_core" = "true" register "serial_io_i2c_mode" = "{ [PchSerialIoIndexI2C0] = PchSerialIoPci, @@ -161,12 +161,6 @@ chip soc/intel/pantherlake register "group" = "ACPI_PLD_GROUP(5, 1)" device ref usb2_port7 on end end - chip drivers/usb/acpi - register "desc" = ""USB2 Bluetooth"" - register "type" = "UPC_TYPE_INTERNAL" - register "reset_gpio" = "ACPI_GPIO_OUTPUT_ACTIVE_LOW(GPP_A16)" - device ref usb2_port8 on end - end chip drivers/usb/acpi register "desc" = ""USB3 Type-A Port 0"" register "type" = "UPC_TYPE_USB3_A" @@ -188,9 +182,13 @@ chip soc/intel/pantherlake register "wake" = "GPE0_PME_B0" register "add_acpi_dma_property" = "true" register "enable_cnvi_ddr_rfim" = "true" + use cnvi_bluetooth as bluetooth_companion device generic 0 on end end end # CNVi + + device ref cnvi_bluetooth on end + # NOTE: i2c0 is function 0; hence it needs to be enabled when any of i2c1-5 is enabled. # TPM device is under i2c1. Therefore, i2c0 needs to be enabled anyways. device ref i2c0 on end