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 <jeremy.compostella@intel.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/85662
Reviewed-by: Ben Kao <ben.kao@intel.com>
Reviewed-by: Jayvik Desai <jayvik@google.com>
Reviewed-by: Subrata Banik <subratabanik@google.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Kapil Porwal <kapilporwal@google.com>
This commit is contained in:
Jeremy Compostella 2025-03-21 15:51:32 -07:00 committed by Jérémy Compostella
commit 5c0340349e
5 changed files with 43 additions and 12 deletions

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -0,0 +1,13 @@
/* SPDX-License-Identifier: GPL-2.0-only */
#include <baseboard/variants.h>
#include <fw_config.h>
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;
}
}

View file

@ -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