summaryrefslogtreecommitdiff
path: root/src/vendorcode/google/chromeos
diff options
context:
space:
mode:
authorJeremy Compostella <jeremy.compostella@intel.com>2024-06-24 10:16:41 -0700
committerJérémy Compostella <jeremy.compostella@intel.com>2024-07-03 17:01:17 +0000
commit71dda74fe8addc0beffffc5a039c896c3f910640 (patch)
tree8f47e92bdb6b2e89bd5dbf145910450c9e5c549d /src/vendorcode/google/chromeos
parent2721846dab2c5e7a207e985cb634588f380744bd (diff)
drivers/wifi: Support Bluetooth Regulator Domain Settings
The 'Bluetooth Increased Power Mode - SAR Limitation' feature provides ability to utilize increased device Transmit power capability for Bluetooth applications in coordination with Wi-Fi adhering to product SAR limit when Bluetooth and Wi-Fi run together. This commit introduces a `bluetooth_companion' field to the generic Wi-Fi drivers chip data. This field can be set in the board design device tree to supply the bluetooth device for which the BRDS function must be created. This feature is required for Meteor Lake rex karis variant. The implementation follows document 559910 Intel Connectivity Platforms BIOS Guideline revision 8.3 specification. BUG=b:348345301 BRANCH=firmware-rex-15709.B TEST=BRDS method is added to the CNVW device and return the data supplied by the SAR binary blob Change-Id: Iebe95815c944d045f4cf686abcd1874a8a45e209 Signed-off-by: Jeremy Compostella <jeremy.compostella@intel.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/83200 Reviewed-by: Eric Lai <ericllai@google.com> Reviewed-by: Subrata Banik <subratabanik@google.com> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Diffstat (limited to 'src/vendorcode/google/chromeos')
-rw-r--r--src/vendorcode/google/chromeos/sar.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/vendorcode/google/chromeos/sar.c b/src/vendorcode/google/chromeos/sar.c
index c42bf65437..8195886ebc 100644
--- a/src/vendorcode/google/chromeos/sar.c
+++ b/src/vendorcode/google/chromeos/sar.c
@@ -94,6 +94,14 @@ static int dsm_table_size(const struct dsm_profile *dsm)
return sizeof(struct dsm_profile);
}
+static int bsar_table_size(const struct bsar_profile *bsar)
+{
+ if (bsar == NULL)
+ return 0;
+
+ return sizeof(struct bsar_profile);
+}
+
static bool valid_legacy_length(size_t bin_len)
{
if (bin_len == LEGACY_SAR_WGDS_BIN_SIZE)
@@ -145,6 +153,7 @@ static int fill_wifi_sar_limits(union wifi_sar_limits *sar_limits, const uint8_t
expected_sar_bin_size += gain_table_size(sar_limits->ppag);
expected_sar_bin_size += sar_avg_table_size(sar_limits->wtas);
expected_sar_bin_size += dsm_table_size(sar_limits->dsm);
+ expected_sar_bin_size += bsar_table_size(sar_limits->bsar);
if (sar_bin_size != expected_sar_bin_size) {
printk(BIOS_ERR, "Invalid SAR size, expected: %zu, obtained: %zu\n",
@@ -210,6 +219,7 @@ static int fill_wifi_sar_limits_legacy(union wifi_sar_limits *sar_limits,
* [PPAG_REVISION,MODE,CHAINS_COUNT,SUBBANDS_COUNT<PPAG_DATA>]
* [WTAS_REVISION, WTAS_DATA]
* [DSM_RETURN_VALUES]
+ * [BSAR_REVISION,IPML,LB,BR,EDR2,EDR3,LE,LE2,LE_LR]
*
* The configuration data will always have the revision added in the file for each of the
* block, based on the revision number and validity, size of the specific block will be