summaryrefslogtreecommitdiff
path: root/src/vendorcode
diff options
context:
space:
mode:
authorJeremy Compostella <jeremy.compostella@intel.com>2024-10-29 12:24:58 -0700
committerJérémy Compostella <jeremy.compostella@intel.com>2024-11-27 21:28:17 +0000
commit6e941f99dad04e6476059082ee6129f4788c1491 (patch)
tree06edccac246e818f74cf3b0a719f3c0414266082 /src/vendorcode
parente9b36b03ce63c40fd9d81cefc797928ca867bbb7 (diff)
drivers/wifi: Support Ultra High Band Country Selection
This feature provides ability to set the Bluetooth Ultra High Band (UHB) settings per country. The bluetooth UHB country selection is defined as follow (default is 0): | Bit | Value | | |-------+-------+---------------------------------------------------| | 0 | 0 | No override; use BT device settings | | | 1 | Force disable BT in all countries that are not | | | | defined in the following bits | | 1 | 0 | USA 6GHz BT disable | | | 1 | 6GHz BT allowed in the USA (enabled only if the | | | | device is certified to the USA) | | 2 | 0 | Rest of the World 6GHz BT disable | | | 1 | 6GHz BT allowed in the Rest of the World (enabled | | | | only if the device is certified to the rest | | | | of the world) | | 3 | 0 | EU countries 6GHz BT disable | | | 1 | 6GHz BT allowed in the EU countries (enabled only | | | | if the device is certified to the EU countries) | | 4 | 0 | South Korea 6GHz BT disable | | | 1 | 6GHz BT allowed in the South Korea (enabled only | | | | if the device is certified to the South Korea) | | 5 | 0 | Brazil 6GHz BT disable | | | 1 | 6GHz BT allowed in the Brazil (enabled only if | | | | the device is certified to the Brazil) | | 6 | 0 | Chile 6GHz BT disable | | | 1 | 6GHz BT allowed in the Chile (enabled only if the | | | | device is certified to the Chile) | | 7 | 0 | Japan 6GHz BT disable | | | 1 | 6GHz BT allowed in Japan (enabled only if the | | | | device is certified to Japan) | | 8 | 0 | Canada 6GHz BT disable | | | 1 | 6GHz BT allowed in Canada (enabled only if the | | | | device is certified to Canada) | | 9 | 0 | Morocco 6GHz BT disable | | | 1 | 6GHz BT allowed in the Morocco (enabled only if | | | | the device is certified to the Morocco) | | 10 | 0 | Mongolia 6GHz BT disable | | | 1 | 6GHz BT allowed in the Mongolia (enabled only if | | | | the device is certified to the Mongolia) | | 11 | 0 | Malaysia 6GHz BT disable | | | 1 | 6GHz BT allowed in the Malaysia (enabled only if | | | | the device is certified to the Malaysia) | | 31:12 | 0 | Reserved Should set to zeros | The implementation follows document 559910 Intel Connectivity Platforms BIOS Guideline revision 9.2 specification. BUG=b:346600091 TEST=BUCS method is added to the bluetooth companion device and return the data supplied by the SAR binary blob Change-Id: Iebe95815c944d045f4cf686abcd1874a8a45e231 Signed-off-by: Jeremy Compostella <jeremy.compostella@intel.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/84945 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Kapil Porwal <kapilporwal@google.com> Reviewed-by: Subrata Banik <subratabanik@google.com>
Diffstat (limited to 'src/vendorcode')
-rw-r--r--src/vendorcode/google/chromeos/sar.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/vendorcode/google/chromeos/sar.c b/src/vendorcode/google/chromeos/sar.c
index f6f11181d6..8e54942a4f 100644
--- a/src/vendorcode/google/chromeos/sar.c
+++ b/src/vendorcode/google/chromeos/sar.c
@@ -142,6 +142,14 @@ static size_t bbsm_table_size(const struct bbsm_profile *bbsm)
return sizeof(struct bbsm_profile);
}
+static size_t bucs_table_size(const struct bucs_profile *bucs)
+{
+ if (bucs == NULL)
+ return 0;
+
+ return sizeof(struct bucs_profile);
+}
+
static bool valid_legacy_length(size_t bin_len)
{
if (bin_len == LEGACY_SAR_WGDS_BIN_SIZE)
@@ -199,6 +207,7 @@ static int fill_wifi_sar_limits(union wifi_sar_limits *sar_limits, const uint8_t
expected_sar_bin_size += bbfb_table_size(sar_limits->bbfb);
expected_sar_bin_size += bdcm_table_size(sar_limits->bdcm);
expected_sar_bin_size += bbsm_table_size(sar_limits->bbsm);
+ expected_sar_bin_size += bucs_table_size(sar_limits->bucs);
if (sar_bin_size != expected_sar_bin_size) {
printk(BIOS_ERR, "Invalid SAR size, expected: %zu, obtained: %zu\n",