Commit 427661e4 authored by Miri Korenblit's avatar Miri Korenblit Committed by Johannes Berg

wifi: iwlwifi: read SAR tables from UEFI

All the regulatory tables will be read from UEFI, and
only if it doesn't exist - they will be read from ACPI.
Read SAR tables (WRDS, EWRD and WGDS) from UEFI.
Signed-off-by: default avatarMiri Korenblit <miriam.rachel.korenblit@intel.com>
Reviewed-by: default avatarGregory Greenman <gregory.greenman@intel.com>
Link: https://msgid.link/20240131091413.533b687e1efb.Icb316291e593c8d53f41fdea2d083367dc97e3c4@changeidSigned-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
parent c0a3dfc1
...@@ -622,7 +622,6 @@ int iwl_acpi_get_wrds_table(struct iwl_fw_runtime *fwrt) ...@@ -622,7 +622,6 @@ int iwl_acpi_get_wrds_table(struct iwl_fw_runtime *fwrt)
kfree(data); kfree(data);
return ret; return ret;
} }
IWL_EXPORT_SYMBOL(iwl_acpi_get_wrds_table);
int iwl_acpi_get_ewrd_table(struct iwl_fw_runtime *fwrt) int iwl_acpi_get_ewrd_table(struct iwl_fw_runtime *fwrt)
{ {
...@@ -731,7 +730,6 @@ int iwl_acpi_get_ewrd_table(struct iwl_fw_runtime *fwrt) ...@@ -731,7 +730,6 @@ int iwl_acpi_get_ewrd_table(struct iwl_fw_runtime *fwrt)
kfree(data); kfree(data);
return ret; return ret;
} }
IWL_EXPORT_SYMBOL(iwl_acpi_get_ewrd_table);
int iwl_acpi_get_wgds_table(struct iwl_fw_runtime *fwrt) int iwl_acpi_get_wgds_table(struct iwl_fw_runtime *fwrt)
{ {
...@@ -748,7 +746,7 @@ int iwl_acpi_get_wgds_table(struct iwl_fw_runtime *fwrt) ...@@ -748,7 +746,7 @@ int iwl_acpi_get_wgds_table(struct iwl_fw_runtime *fwrt)
.revisions = BIT(3), .revisions = BIT(3),
.bands = ACPI_GEO_NUM_BANDS_REV2, .bands = ACPI_GEO_NUM_BANDS_REV2,
.profiles = ACPI_NUM_GEO_PROFILES_REV3, .profiles = ACPI_NUM_GEO_PROFILES_REV3,
.min_profiles = 3, .min_profiles = BIOS_GEO_MIN_PROFILE_NUM,
}, },
{ {
.revisions = BIT(2), .revisions = BIT(2),
...@@ -886,7 +884,6 @@ int iwl_acpi_get_wgds_table(struct iwl_fw_runtime *fwrt) ...@@ -886,7 +884,6 @@ int iwl_acpi_get_wgds_table(struct iwl_fw_runtime *fwrt)
kfree(data); kfree(data);
return ret; return ret;
} }
IWL_EXPORT_SYMBOL(iwl_acpi_get_wgds_table);
__le32 iwl_acpi_get_lari_config_bitmap(struct iwl_fw_runtime *fwrt) __le32 iwl_acpi_get_lari_config_bitmap(struct iwl_fw_runtime *fwrt)
{ {
......
...@@ -105,6 +105,9 @@ ...@@ -105,6 +105,9 @@
#define IWL_SAR_ENABLE_MSK BIT(0) #define IWL_SAR_ENABLE_MSK BIT(0)
#define IWL_REDUCE_POWER_FLAGS_POS 1 #define IWL_REDUCE_POWER_FLAGS_POS 1
/* The Inidcator whether UEFI WIFI GUID tables are locked is read from ACPI */
#define UEFI_WIFI_GUID_UNLOCKED 0
/* /*
* The profile for revision 2 is a superset of revision 1, which is in * The profile for revision 2 is a superset of revision 1, which is in
* turn a superset of revision 0. So we can store all revisions * turn a superset of revision 0. So we can store all revisions
......
...@@ -6,6 +6,23 @@ ...@@ -6,6 +6,23 @@
#include "iwl-debug.h" #include "iwl-debug.h"
#include "regulatory.h" #include "regulatory.h"
#include "fw/runtime.h" #include "fw/runtime.h"
#include "fw/uefi.h"
#define IWL_BIOS_TABLE_LOADER(__name) \
int iwl_bios_get_ ## __name ## _table(struct iwl_fw_runtime *fwrt) \
{ \
int ret = -ENOENT; \
if (fwrt->uefi_tables_lock_status > UEFI_WIFI_GUID_UNLOCKED) \
ret = iwl_uefi_get_ ## __name ## _table(fwrt); \
if (ret < 0) \
ret = iwl_acpi_get_ ## __name ## _table(fwrt); \
return ret; \
} \
IWL_EXPORT_SYMBOL(iwl_bios_get_ ## __name ## _table)
IWL_BIOS_TABLE_LOADER(wrds);
IWL_BIOS_TABLE_LOADER(ewrd);
IWL_BIOS_TABLE_LOADER(wgds);
bool iwl_sar_geo_support(struct iwl_fw_runtime *fwrt) bool iwl_sar_geo_support(struct iwl_fw_runtime *fwrt)
{ {
......
...@@ -87,4 +87,10 @@ int iwl_sar_fill_profile(struct iwl_fw_runtime *fwrt, ...@@ -87,4 +87,10 @@ int iwl_sar_fill_profile(struct iwl_fw_runtime *fwrt,
__le16 *per_chain, u32 n_tables, u32 n_subbands, __le16 *per_chain, u32 n_tables, u32 n_subbands,
int prof_a, int prof_b); int prof_a, int prof_b);
int iwl_bios_get_wrds_table(struct iwl_fw_runtime *fwrt);
int iwl_bios_get_ewrd_table(struct iwl_fw_runtime *fwrt);
int iwl_bios_get_wgds_table(struct iwl_fw_runtime *fwrt);
#endif /* __fw_regulatory_h__ */ #endif /* __fw_regulatory_h__ */
...@@ -164,21 +164,21 @@ struct iwl_fw_runtime { ...@@ -164,21 +164,21 @@ struct iwl_fw_runtime {
#ifdef CONFIG_IWLWIFI_DEBUGFS #ifdef CONFIG_IWLWIFI_DEBUGFS
bool tpc_enabled; bool tpc_enabled;
#endif /* CONFIG_IWLWIFI_DEBUGFS */ #endif /* CONFIG_IWLWIFI_DEBUGFS */
#ifdef CONFIG_ACPI
struct iwl_sar_profile sar_profiles[BIOS_SAR_MAX_PROFILE_NUM]; struct iwl_sar_profile sar_profiles[BIOS_SAR_MAX_PROFILE_NUM];
u8 sar_chain_a_profile; u8 sar_chain_a_profile;
u8 sar_chain_b_profile; u8 sar_chain_b_profile;
u8 reduced_power_flags;
struct iwl_geo_profile geo_profiles[BIOS_GEO_MAX_PROFILE_NUM]; struct iwl_geo_profile geo_profiles[BIOS_GEO_MAX_PROFILE_NUM];
u32 geo_rev; u32 geo_rev;
u32 geo_num_profiles; u32 geo_num_profiles;
bool geo_enabled; bool geo_enabled;
#ifdef CONFIG_ACPI
struct iwl_ppag_chain ppag_chains[IWL_NUM_CHAIN_LIMITS]; struct iwl_ppag_chain ppag_chains[IWL_NUM_CHAIN_LIMITS];
u32 ppag_flags; u32 ppag_flags;
u32 ppag_ver; u32 ppag_ver;
bool ppag_table_valid; bool ppag_table_valid;
struct iwl_sar_offset_mapping_cmd sgom_table; struct iwl_sar_offset_mapping_cmd sgom_table;
bool sgom_enabled; bool sgom_enabled;
u8 reduced_power_flags;
struct iwl_uats_table_cmd uats_table; struct iwl_uats_table_cmd uats_table;
u8 uefi_tables_lock_status; u8 uefi_tables_lock_status;
#endif #endif
......
...@@ -413,3 +413,111 @@ int iwl_uefi_get_uats_table(struct iwl_trans *trans, ...@@ -413,3 +413,111 @@ int iwl_uefi_get_uats_table(struct iwl_trans *trans,
} }
IWL_EXPORT_SYMBOL(iwl_uefi_get_uats_table); IWL_EXPORT_SYMBOL(iwl_uefi_get_uats_table);
#endif /* CONFIG_ACPI */ #endif /* CONFIG_ACPI */
static void iwl_uefi_set_sar_profile(struct iwl_fw_runtime *fwrt,
struct uefi_sar_profile *uefi_sar_prof,
u8 prof_index, bool enabled)
{
memcpy(&fwrt->sar_profiles[prof_index].chains, uefi_sar_prof,
sizeof(struct uefi_sar_profile));
fwrt->sar_profiles[prof_index].enabled = enabled & IWL_SAR_ENABLE_MSK;
}
int iwl_uefi_get_wrds_table(struct iwl_fw_runtime *fwrt)
{
struct uefi_cnv_var_wrds *data;
int ret = 0;
data = iwl_uefi_get_verified_variable(fwrt->trans, IWL_UEFI_WRDS_NAME,
"WRDS", sizeof(*data), NULL);
if (IS_ERR(data))
return -EINVAL;
if (data->revision != IWL_UEFI_WRDS_REVISION) {
ret = -EINVAL;
IWL_DEBUG_RADIO(fwrt, "Unsupported UEFI WRDS revision:%d\n",
data->revision);
goto out;
}
/* The profile from WRDS is officially profile 1, but goes
* into sar_profiles[0] (because we don't have a profile 0).
*/
iwl_uefi_set_sar_profile(fwrt, &data->sar_profile, 0, data->mode);
out:
kfree(data);
return ret;
}
int iwl_uefi_get_ewrd_table(struct iwl_fw_runtime *fwrt)
{
struct uefi_cnv_var_ewrd *data;
int i, ret = 0;
data = iwl_uefi_get_verified_variable(fwrt->trans, IWL_UEFI_EWRD_NAME,
"EWRD", sizeof(*data), NULL);
if (IS_ERR(data))
return -EINVAL;
if (data->revision != IWL_UEFI_EWRD_REVISION) {
ret = -EINVAL;
IWL_DEBUG_RADIO(fwrt, "Unsupported UEFI EWRD revision:%d\n",
data->revision);
goto out;
}
if (data->num_profiles >= BIOS_SAR_MAX_PROFILE_NUM) {
ret = -EINVAL;
goto out;
}
for (i = 0; i < data->num_profiles; i++)
/* The EWRD profiles officially go from 2 to 4, but we
* save them in sar_profiles[1-3] (because we don't
* have profile 0). So in the array we start from 1.
*/
iwl_uefi_set_sar_profile(fwrt, &data->sar_profiles[i], i + 1,
data->mode);
out:
kfree(data);
return ret;
}
int iwl_uefi_get_wgds_table(struct iwl_fw_runtime *fwrt)
{
struct uefi_cnv_var_wgds *data;
int i, ret = 0;
data = iwl_uefi_get_verified_variable(fwrt->trans, IWL_UEFI_WGDS_NAME,
"WGDS", sizeof(*data), NULL);
if (IS_ERR(data))
return -EINVAL;
if (data->revision != IWL_UEFI_WGDS_REVISION) {
ret = -EINVAL;
IWL_DEBUG_RADIO(fwrt, "Unsupported UEFI WGDS revision:%d\n",
data->revision);
goto out;
}
if (data->num_profiles < BIOS_GEO_MIN_PROFILE_NUM ||
data->num_profiles > BIOS_GEO_MAX_PROFILE_NUM) {
ret = -EINVAL;
IWL_DEBUG_RADIO(fwrt, "Invalid number of profiles in WGDS: %d\n",
data->num_profiles);
goto out;
}
fwrt->geo_rev = data->revision;
for (i = 0; i < data->num_profiles; i++)
memcpy(&fwrt->geo_profiles[i], &data->geo_profiles[i],
sizeof(struct iwl_geo_profile));
fwrt->geo_num_profiles = data->num_profiles;
fwrt->geo_enabled = true;
out:
kfree(data);
return ret;
}
...@@ -5,15 +5,24 @@ ...@@ -5,15 +5,24 @@
#ifndef __iwl_fw_uefi__ #ifndef __iwl_fw_uefi__
#define __iwl_fw_uefi__ #define __iwl_fw_uefi__
#include "fw/regulatory.h"
#define IWL_UEFI_OEM_PNVM_NAME L"UefiCnvWlanOemSignedPnvm" #define IWL_UEFI_OEM_PNVM_NAME L"UefiCnvWlanOemSignedPnvm"
#define IWL_UEFI_REDUCED_POWER_NAME L"UefiCnvWlanReducedPower" #define IWL_UEFI_REDUCED_POWER_NAME L"UefiCnvWlanReducedPower"
#define IWL_UEFI_SGOM_NAME L"UefiCnvWlanSarGeoOffsetMapping" #define IWL_UEFI_SGOM_NAME L"UefiCnvWlanSarGeoOffsetMapping"
#define IWL_UEFI_STEP_NAME L"UefiCnvCommonSTEP" #define IWL_UEFI_STEP_NAME L"UefiCnvCommonSTEP"
#define IWL_UEFI_UATS_NAME L"CnvUefiWlanUATS" #define IWL_UEFI_UATS_NAME L"CnvUefiWlanUATS"
#define IWL_UEFI_WRDS_NAME L"UefiCnvWlanWRDS"
#define IWL_UEFI_EWRD_NAME L"UefiCnvWlanEWRD"
#define IWL_UEFI_WGDS_NAME L"UefiCnvWlanWGDS"
#define IWL_SGOM_MAP_SIZE 339 #define IWL_SGOM_MAP_SIZE 339
#define IWL_UATS_MAP_SIZE 339 #define IWL_UATS_MAP_SIZE 339
#define IWL_UEFI_WRDS_REVISION 2
#define IWL_UEFI_EWRD_REVISION 2
#define IWL_UEFI_WGDS_REVISION 3
struct pnvm_sku_package { struct pnvm_sku_package {
u8 rev; u8 rev;
u32 total_size; u32 total_size;
...@@ -41,6 +50,55 @@ struct uefi_cnv_common_step_data { ...@@ -41,6 +50,55 @@ struct uefi_cnv_common_step_data {
u8 radio2; u8 radio2;
} __packed; } __packed;
/*
* struct uefi_sar_profile - a SAR profile as defined in UEFI
*
* @chains: a per-chain table of SAR values
*/
struct uefi_sar_profile {
struct iwl_sar_profile_chain chains[BIOS_SAR_MAX_CHAINS_PER_PROFILE];
} __packed;
/*
* struct uefi_cnv_var_wrds - WRDS table as defined in UEFI
*
* @revision: the revision of the table
* @mode: is WRDS enbaled/disabled
* @sar_profile: sar profile #1
*/
struct uefi_cnv_var_wrds {
u8 revision;
u32 mode;
struct uefi_sar_profile sar_profile;
} __packed;
/*
* struct uefi_cnv_var_ewrd - EWRD table as defined in UEFI
* @revision: the revision of the table
* @mode: is WRDS enbaled/disabled
* @num_profiles: how many additional profiles we have in this table (0-3)
* @sar_profiles: the additional SAR profiles (#2-#4)
*/
struct uefi_cnv_var_ewrd {
u8 revision;
u32 mode;
u32 num_profiles;
struct uefi_sar_profile sar_profiles[BIOS_SAR_MAX_PROFILE_NUM - 1];
} __packed;
/*
* struct uefi_cnv_var_wgds - WGDS table as defined in UEFI
* @revision: the revision of the table
* @num_profiles: the number of geo profiles we have in the table.
* The first 3 are mandatory, and can have up to 8.
* @geo_profiles: a per-profile table of the offsets to add to SAR values.
*/
struct uefi_cnv_var_wgds {
u8 revision;
u8 num_profiles;
struct iwl_geo_profile geo_profiles[BIOS_GEO_MAX_PROFILE_NUM];
} __packed;
/* /*
* This is known to be broken on v4.19 and to work on v5.4. Until we * This is known to be broken on v4.19 and to work on v5.4. Until we
* figure out why this is the case and how to make it work, simply * figure out why this is the case and how to make it work, simply
...@@ -55,6 +113,9 @@ int iwl_uefi_reduce_power_parse(struct iwl_trans *trans, ...@@ -55,6 +113,9 @@ int iwl_uefi_reduce_power_parse(struct iwl_trans *trans,
void iwl_uefi_get_step_table(struct iwl_trans *trans); void iwl_uefi_get_step_table(struct iwl_trans *trans);
int iwl_uefi_handle_tlv_mem_desc(struct iwl_trans *trans, const u8 *data, int iwl_uefi_handle_tlv_mem_desc(struct iwl_trans *trans, const u8 *data,
u32 tlv_len, struct iwl_pnvm_image *pnvm_data); u32 tlv_len, struct iwl_pnvm_image *pnvm_data);
int iwl_uefi_get_wrds_table(struct iwl_fw_runtime *fwrt);
int iwl_uefi_get_ewrd_table(struct iwl_fw_runtime *fwrt);
int iwl_uefi_get_wgds_table(struct iwl_fw_runtime *fwrt);
#else /* CONFIG_EFI */ #else /* CONFIG_EFI */
static inline void *iwl_uefi_get_pnvm(struct iwl_trans *trans, size_t *len) static inline void *iwl_uefi_get_pnvm(struct iwl_trans *trans, size_t *len)
{ {
...@@ -85,6 +146,21 @@ iwl_uefi_handle_tlv_mem_desc(struct iwl_trans *trans, const u8 *data, ...@@ -85,6 +146,21 @@ iwl_uefi_handle_tlv_mem_desc(struct iwl_trans *trans, const u8 *data,
{ {
return 0; return 0;
} }
static inline int iwl_uefi_get_wrds_table(struct iwl_fw_runtime *fwrt)
{
return -ENOENT;
}
static inline int iwl_uefi_get_ewrd_table(struct iwl_fw_runtime *fwrt)
{
return -ENOENT;
}
static inline int iwl_uefi_get_wgds_table(struct iwl_fw_runtime *fwrt)
{
return -ENOENT;
}
#endif /* CONFIG_EFI */ #endif /* CONFIG_EFI */
#if defined(CONFIG_EFI) && defined(CONFIG_ACPI) #if defined(CONFIG_EFI) && defined(CONFIG_ACPI)
...@@ -103,6 +179,5 @@ int iwl_uefi_get_uats_table(struct iwl_trans *trans, ...@@ -103,6 +179,5 @@ int iwl_uefi_get_uats_table(struct iwl_trans *trans,
{ {
return 0; return 0;
} }
#endif #endif
#endif /* __iwl_fw_uefi__ */ #endif /* __iwl_fw_uefi__ */
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
#include "fw/acpi.h" #include "fw/acpi.h"
#include "fw/pnvm.h" #include "fw/pnvm.h"
#include "fw/uefi.h" #include "fw/uefi.h"
#include "fw/regulatory.h"
#include "mvm.h" #include "mvm.h"
#include "fw/dbg.h" #include "fw/dbg.h"
...@@ -895,7 +896,6 @@ static int iwl_mvm_config_ltr(struct iwl_mvm *mvm) ...@@ -895,7 +896,6 @@ static int iwl_mvm_config_ltr(struct iwl_mvm *mvm)
sizeof(cmd), &cmd); sizeof(cmd), &cmd);
} }
#ifdef CONFIG_ACPI
int iwl_mvm_sar_select_profile(struct iwl_mvm *mvm, int prof_a, int prof_b) int iwl_mvm_sar_select_profile(struct iwl_mvm *mvm, int prof_a, int prof_b)
{ {
u32 cmd_id = REDUCE_TX_POWER_CMD; u32 cmd_id = REDUCE_TX_POWER_CMD;
...@@ -1078,6 +1078,8 @@ static int iwl_mvm_sar_geo_init(struct iwl_mvm *mvm) ...@@ -1078,6 +1078,8 @@ static int iwl_mvm_sar_geo_init(struct iwl_mvm *mvm)
return iwl_mvm_send_cmd_pdu(mvm, cmd_id, 0, len, &cmd); return iwl_mvm_send_cmd_pdu(mvm, cmd_id, 0, len, &cmd);
} }
#ifdef CONFIG_ACPI
int iwl_mvm_ppag_send_cmd(struct iwl_mvm *mvm) int iwl_mvm_ppag_send_cmd(struct iwl_mvm *mvm)
{ {
union iwl_ppag_table_cmd cmd; union iwl_ppag_table_cmd cmd;
...@@ -1385,7 +1387,39 @@ static void iwl_mvm_lari_cfg(struct iwl_mvm *mvm) ...@@ -1385,7 +1387,39 @@ static void iwl_mvm_lari_cfg(struct iwl_mvm *mvm)
mvm->fwrt.uats_enabled = TRUE; mvm->fwrt.uats_enabled = TRUE;
} }
void iwl_mvm_get_acpi_tables(struct iwl_mvm *mvm) #else /* CONFIG_ACPI */
int iwl_mvm_ppag_send_cmd(struct iwl_mvm *mvm)
{
return -ENOENT;
}
static int iwl_mvm_ppag_init(struct iwl_mvm *mvm)
{
return 0;
}
static void iwl_mvm_tas_init(struct iwl_mvm *mvm)
{
}
static void iwl_mvm_lari_cfg(struct iwl_mvm *mvm)
{
}
bool iwl_mvm_is_vendor_in_approved_list(void)
{
return false;
}
static u8 iwl_mvm_eval_dsm_rfi(struct iwl_mvm *mvm)
{
return DSM_VALUE_RFI_DISABLE;
}
#endif /* CONFIG_ACPI */
void iwl_mvm_get_bios_tables(struct iwl_mvm *mvm)
{ {
int ret; int ret;
...@@ -1400,7 +1434,7 @@ void iwl_mvm_get_acpi_tables(struct iwl_mvm *mvm) ...@@ -1400,7 +1434,7 @@ void iwl_mvm_get_acpi_tables(struct iwl_mvm *mvm)
} }
/* read SAR tables */ /* read SAR tables */
ret = iwl_acpi_get_wrds_table(&mvm->fwrt); ret = iwl_bios_get_wrds_table(&mvm->fwrt);
if (ret < 0) { if (ret < 0) {
IWL_DEBUG_RADIO(mvm, IWL_DEBUG_RADIO(mvm,
"WRDS SAR BIOS table invalid or unavailable. (%d)\n", "WRDS SAR BIOS table invalid or unavailable. (%d)\n",
...@@ -1409,7 +1443,7 @@ void iwl_mvm_get_acpi_tables(struct iwl_mvm *mvm) ...@@ -1409,7 +1443,7 @@ void iwl_mvm_get_acpi_tables(struct iwl_mvm *mvm)
* If not available, don't fail and don't bother with EWRD and * If not available, don't fail and don't bother with EWRD and
* WGDS */ * WGDS */
if (!iwl_acpi_get_wgds_table(&mvm->fwrt)) { if (!iwl_bios_get_wgds_table(&mvm->fwrt)) {
/* /*
* If basic SAR is not available, we check for WGDS, * If basic SAR is not available, we check for WGDS,
* which should *not* be available either. If it is * which should *not* be available either. If it is
...@@ -1420,7 +1454,7 @@ void iwl_mvm_get_acpi_tables(struct iwl_mvm *mvm) ...@@ -1420,7 +1454,7 @@ void iwl_mvm_get_acpi_tables(struct iwl_mvm *mvm)
} }
} else { } else {
ret = iwl_acpi_get_ewrd_table(&mvm->fwrt); ret = iwl_bios_get_ewrd_table(&mvm->fwrt);
/* if EWRD is not available, we can still use /* if EWRD is not available, we can still use
* WRDS, so don't fail */ * WRDS, so don't fail */
if (ret < 0) if (ret < 0)
...@@ -1430,7 +1464,7 @@ void iwl_mvm_get_acpi_tables(struct iwl_mvm *mvm) ...@@ -1430,7 +1464,7 @@ void iwl_mvm_get_acpi_tables(struct iwl_mvm *mvm)
/* read geo SAR table */ /* read geo SAR table */
if (iwl_sar_geo_support(&mvm->fwrt)) { if (iwl_sar_geo_support(&mvm->fwrt)) {
ret = iwl_acpi_get_wgds_table(&mvm->fwrt); ret = iwl_bios_get_wgds_table(&mvm->fwrt);
if (ret < 0) if (ret < 0)
IWL_DEBUG_RADIO(mvm, IWL_DEBUG_RADIO(mvm,
"Geo SAR BIOS table invalid or unavailable. (%d)\n", "Geo SAR BIOS table invalid or unavailable. (%d)\n",
...@@ -1441,57 +1475,6 @@ void iwl_mvm_get_acpi_tables(struct iwl_mvm *mvm) ...@@ -1441,57 +1475,6 @@ void iwl_mvm_get_acpi_tables(struct iwl_mvm *mvm)
iwl_acpi_get_phy_filters(&mvm->fwrt, &mvm->phy_filters); iwl_acpi_get_phy_filters(&mvm->fwrt, &mvm->phy_filters);
} }
#else /* CONFIG_ACPI */
inline int iwl_mvm_sar_select_profile(struct iwl_mvm *mvm,
int prof_a, int prof_b)
{
return 1;
}
inline int iwl_mvm_get_sar_geo_profile(struct iwl_mvm *mvm)
{
return -ENOENT;
}
static int iwl_mvm_sar_geo_init(struct iwl_mvm *mvm)
{
return 0;
}
int iwl_mvm_ppag_send_cmd(struct iwl_mvm *mvm)
{
return -ENOENT;
}
static int iwl_mvm_ppag_init(struct iwl_mvm *mvm)
{
return 0;
}
static void iwl_mvm_tas_init(struct iwl_mvm *mvm)
{
}
static void iwl_mvm_lari_cfg(struct iwl_mvm *mvm)
{
}
bool iwl_mvm_is_vendor_in_approved_list(void)
{
return false;
}
static u8 iwl_mvm_eval_dsm_rfi(struct iwl_mvm *mvm)
{
return DSM_VALUE_RFI_DISABLE;
}
void iwl_mvm_get_acpi_tables(struct iwl_mvm *mvm)
{
}
#endif /* CONFIG_ACPI */
static void iwl_mvm_disconnect_iterator(void *data, u8 *mac, static void iwl_mvm_disconnect_iterator(void *data, u8 *mac,
struct ieee80211_vif *vif) struct ieee80211_vif *vif)
......
...@@ -2381,7 +2381,7 @@ u64 iwl_mvm_ptp_get_adj_time(struct iwl_mvm *mvm, u64 base_time); ...@@ -2381,7 +2381,7 @@ u64 iwl_mvm_ptp_get_adj_time(struct iwl_mvm *mvm, u64 base_time);
int iwl_mvm_sar_select_profile(struct iwl_mvm *mvm, int prof_a, int prof_b); int iwl_mvm_sar_select_profile(struct iwl_mvm *mvm, int prof_a, int prof_b);
int iwl_mvm_get_sar_geo_profile(struct iwl_mvm *mvm); int iwl_mvm_get_sar_geo_profile(struct iwl_mvm *mvm);
int iwl_mvm_ppag_send_cmd(struct iwl_mvm *mvm); int iwl_mvm_ppag_send_cmd(struct iwl_mvm *mvm);
void iwl_mvm_get_acpi_tables(struct iwl_mvm *mvm); void iwl_mvm_get_bios_tables(struct iwl_mvm *mvm);
#ifdef CONFIG_IWLWIFI_DEBUGFS #ifdef CONFIG_IWLWIFI_DEBUGFS
void iwl_mvm_link_sta_add_debugfs(struct ieee80211_hw *hw, void iwl_mvm_link_sta_add_debugfs(struct ieee80211_hw *hw,
struct ieee80211_vif *vif, struct ieee80211_vif *vif,
......
...@@ -1201,7 +1201,7 @@ iwl_op_mode_mvm_start(struct iwl_trans *trans, const struct iwl_cfg *cfg, ...@@ -1201,7 +1201,7 @@ iwl_op_mode_mvm_start(struct iwl_trans *trans, const struct iwl_cfg *cfg,
iwl_fw_runtime_init(&mvm->fwrt, trans, fw, &iwl_mvm_fwrt_ops, mvm, iwl_fw_runtime_init(&mvm->fwrt, trans, fw, &iwl_mvm_fwrt_ops, mvm,
&iwl_mvm_sanitize_ops, mvm, dbgfs_dir); &iwl_mvm_sanitize_ops, mvm, dbgfs_dir);
iwl_mvm_get_acpi_tables(mvm); iwl_mvm_get_bios_tables(mvm);
iwl_uefi_get_sgom_table(trans, &mvm->fwrt); iwl_uefi_get_sgom_table(trans, &mvm->fwrt);
iwl_uefi_get_step_table(trans); iwl_uefi_get_step_table(trans);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment