wifi: iwlwifi: fw: read STEP table from correct UEFI var
[ Upstream commit 80c2b651fe7fc82e1d1b3e4f9651095896a095f0 ]
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: 09b4c35d73 ("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>
Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
76fe201fd5
commit
72c0f0cbbb
@@ -13,9 +13,12 @@
|
||||
#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;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user