]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
wifi: iwlwifi: fw: read STEP table from correct UEFI var
authorJohannes Berg <johannes.berg@intel.com>
Fri, 27 Dec 2024 08:01:01 +0000 (10:01 +0200)
committerJohannes Berg <johannes.berg@intel.com>
Mon, 13 Jan 2025 14:26:38 +0000 (15:26 +0100)
This variable exists for the "common" (WiFi/BT) GUID, not the
WiFi-only GUID. Fix that by passing the GUID to the function.
A short-cut for the wifi-only version remains so not all code
must be updated.

However, rename the GUID defines to be clearer.

Fixes: 09b4c35d73a5 ("wifi: iwlwifi: mvm: Support STEP equalizer settings from BIOS.")
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Reviewed-by: Daniel Gabay <daniel.gabay@intel.com>
Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
Link: https://patch.msgid.link/20241227095718.89a5ad921b6d.Idae95a70ff69d2ba1b610e8eced826961ce7de98@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
drivers/net/wireless/intel/iwlwifi/fw/uefi.c

index dcbb3c387c10514e5c51606239bec08e35fcff5a..02df96c3aa51076d933902c5ae8e19ffab73909a 100644 (file)
 #include <linux/efi.h>
 #include "fw/runtime.h"
 
-#define IWL_EFI_VAR_GUID EFI_GUID(0x92daaf2f, 0xc02b, 0x455b,  \
-                                 0xb2, 0xec, 0xf5, 0xa3,       \
-                                 0x59, 0x4f, 0x4a, 0xea)
+#define IWL_EFI_WIFI_GUID      EFI_GUID(0x92daaf2f, 0xc02b, 0x455b,    \
+                                        0xb2, 0xec, 0xf5, 0xa3,        \
+                                        0x59, 0x4f, 0x4a, 0xea)
+#define IWL_EFI_WIFI_BT_GUID   EFI_GUID(0xe65d8884, 0xd4af, 0x4b20,    \
+                                        0x8d, 0x03, 0x77, 0x2e,        \
+                                        0xcc, 0x3d, 0xa5, 0x31)
 
 struct iwl_uefi_pnvm_mem_desc {
        __le32 addr;
@@ -61,7 +64,7 @@ void *iwl_uefi_get_pnvm(struct iwl_trans *trans, size_t *len)
 
        *len = 0;
 
-       data = iwl_uefi_get_variable(IWL_UEFI_OEM_PNVM_NAME, &IWL_EFI_VAR_GUID,
+       data = iwl_uefi_get_variable(IWL_UEFI_OEM_PNVM_NAME, &IWL_EFI_WIFI_GUID,
                                     &package_size);
        if (IS_ERR(data)) {
                IWL_DEBUG_FW(trans,
@@ -76,18 +79,18 @@ void *iwl_uefi_get_pnvm(struct iwl_trans *trans, size_t *len)
        return data;
 }
 
-static
-void *iwl_uefi_get_verified_variable(struct iwl_trans *trans,
-                                    efi_char16_t *uefi_var_name,
-                                    char *var_name,
-                                    unsigned int expected_size,
-                                    unsigned long *size)
+static void *
+iwl_uefi_get_verified_variable_guid(struct iwl_trans *trans,
+                                   efi_guid_t *guid,
+                                   efi_char16_t *uefi_var_name,
+                                   char *var_name,
+                                   unsigned int expected_size,
+                                   unsigned long *size)
 {
        void *var;
        unsigned long var_size;
 
-       var = iwl_uefi_get_variable(uefi_var_name, &IWL_EFI_VAR_GUID,
-                                   &var_size);
+       var = iwl_uefi_get_variable(uefi_var_name, guid, &var_size);
 
        if (IS_ERR(var)) {
                IWL_DEBUG_RADIO(trans,
@@ -112,6 +115,18 @@ void *iwl_uefi_get_verified_variable(struct iwl_trans *trans,
        return var;
 }
 
+static void *
+iwl_uefi_get_verified_variable(struct iwl_trans *trans,
+                              efi_char16_t *uefi_var_name,
+                              char *var_name,
+                              unsigned int expected_size,
+                              unsigned long *size)
+{
+       return iwl_uefi_get_verified_variable_guid(trans, &IWL_EFI_WIFI_GUID,
+                                                  uefi_var_name, var_name,
+                                                  expected_size, size);
+}
+
 int iwl_uefi_handle_tlv_mem_desc(struct iwl_trans *trans, const u8 *data,
                                 u32 tlv_len, struct iwl_pnvm_image *pnvm_data)
 {
@@ -311,8 +326,9 @@ void iwl_uefi_get_step_table(struct iwl_trans *trans)
        if (trans->trans_cfg->device_family < IWL_DEVICE_FAMILY_AX210)
                return;
 
-       data = iwl_uefi_get_verified_variable(trans, IWL_UEFI_STEP_NAME,
-                                             "STEP", sizeof(*data), NULL);
+       data = iwl_uefi_get_verified_variable_guid(trans, &IWL_EFI_WIFI_BT_GUID,
+                                                  IWL_UEFI_STEP_NAME,
+                                                  "STEP", sizeof(*data), NULL);
        if (IS_ERR(data))
                return;