summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/soc/intel/cannonlake/chip.h6
-rw-r--r--src/soc/intel/cannonlake/chipset.cb3
-rw-r--r--src/soc/intel/cannonlake/chipset_pch_h.cb3
-rw-r--r--src/soc/intel/cannonlake/fsp_params.c13
4 files changed, 25 insertions, 0 deletions
diff --git a/src/soc/intel/cannonlake/chip.h b/src/soc/intel/cannonlake/chip.h
index 9459b88808..d4d9d0d11d 100644
--- a/src/soc/intel/cannonlake/chip.h
+++ b/src/soc/intel/cannonlake/chip.h
@@ -409,6 +409,12 @@ struct soc_intel_cannonlake_config {
uint32_t VrPowerDeliveryDesign;
#endif
+ /* CNVi BT Core Enable/Disable */
+ bool CnviBtCore;
+
+ /* CNVi BT Audio Offload: Enable/Disable BT Audio Offload. */
+ bool CnviBtAudioOffload;
+
/*
* Override GPIO PM configuration:
* 0: Use FSP default GPIO PM program,
diff --git a/src/soc/intel/cannonlake/chipset.cb b/src/soc/intel/cannonlake/chipset.cb
index 8c8771e139..b33aadfd32 100644
--- a/src/soc/intel/cannonlake/chipset.cb
+++ b/src/soc/intel/cannonlake/chipset.cb
@@ -1,6 +1,9 @@
chip soc/intel/cannonlake
device cpu_cluster 0 on end
+
+ register "CnviBtCore" = "true"
+
device domain 0 on
device pci 00.0 alias system_agent on end # Host Bridge
device pci 01.0 alias peg0 off end # PCIe x16
diff --git a/src/soc/intel/cannonlake/chipset_pch_h.cb b/src/soc/intel/cannonlake/chipset_pch_h.cb
index 22e5d7a1c2..3904697b11 100644
--- a/src/soc/intel/cannonlake/chipset_pch_h.cb
+++ b/src/soc/intel/cannonlake/chipset_pch_h.cb
@@ -1,6 +1,9 @@
chip soc/intel/cannonlake
device cpu_cluster 0 on end
+
+ register "CnviBtCore" = "true"
+
device domain 0 on
device pci 00.0 alias system_agent on end # Host Bridge
device pci 01.0 alias peg0 off end # PCIe x16
diff --git a/src/soc/intel/cannonlake/fsp_params.c b/src/soc/intel/cannonlake/fsp_params.c
index db28d41cfe..bce1eeb369 100644
--- a/src/soc/intel/cannonlake/fsp_params.c
+++ b/src/soc/intel/cannonlake/fsp_params.c
@@ -529,7 +529,20 @@ void platform_fsp_silicon_init_params_cb(FSPS_UPD *supd)
/* Enable CNVi Wifi if enabled in device tree */
#if CONFIG(SOC_INTEL_COMETLAKE)
+ /* CNVi */
s_cfg->CnviMode = is_devfn_enabled(PCH_DEVFN_CNViWIFI);
+ s_cfg->CnviBtCore = config->CnviBtCore;
+ s_cfg->CnviBtAudioOffload = config->CnviBtAudioOffload;
+
+ if (!s_cfg->CnviBtCore && s_cfg->CnviBtAudioOffload) {
+ printk(BIOS_ERR, "BT offload is enabled without CNVi BT being enabled\n");
+ s_cfg->CnviBtAudioOffload = 0;
+ }
+ if (!s_cfg->CnviMode && s_cfg->CnviBtCore) {
+ printk(BIOS_ERR, "CNVi BT is enabled without CNVi being enabled\n");
+ s_cfg->CnviBtCore = 0;
+ s_cfg->CnviBtAudioOffload = 0;
+ }
#else
s_cfg->PchCnviMode = is_devfn_enabled(PCH_DEVFN_CNViWIFI);
#endif