summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLuca Coelho <luciano.coelho@intel.com>2021-08-05 14:21:47 +0300
committerLuca Coelho <luciano.coelho@intel.com>2021-08-26 23:36:07 +0300
commit8ecf0477b990791949752578e7706908682db6e5 (patch)
tree3382b500ac9fae41cf5852e1b32b62c4c040fd6c
parentdac7171c81323afa3a8c4fa1c08719ff9fd033cb (diff)
downloadlinux-8ecf0477b990791949752578e7706908682db6e5.tar.bz2
iwlwifi: pass number of chains and sub-bands to iwl_sar_set_profile()
The number of chains and sub-bands read from the ACPI tables varies depending on the revision. Pass these numbers to the iwl_sar_set_profile() function in order to make using different revisions easier. Signed-off-by: Luca Coelho <luciano.coelho@intel.com> Link: https://lore.kernel.org/r/iwlwifi.20210805141826.905b54c398f8.I9bac8c3bc3b1b6bbe813de53746daee33e53fc86@changeid Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
-rw-r--r--drivers/net/wireless/intel/iwlwifi/fw/acpi.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/drivers/net/wireless/intel/iwlwifi/fw/acpi.c b/drivers/net/wireless/intel/iwlwifi/fw/acpi.c
index f20f0150f407..9175f53806bf 100644
--- a/drivers/net/wireless/intel/iwlwifi/fw/acpi.c
+++ b/drivers/net/wireless/intel/iwlwifi/fw/acpi.c
@@ -412,7 +412,7 @@ IWL_EXPORT_SYMBOL(iwl_acpi_get_eckv);
static int iwl_sar_set_profile(union acpi_object *table,
struct iwl_sar_profile *profile,
- bool enabled)
+ bool enabled, u8 num_chains, u8 num_sub_bands)
{
int i, j, idx = 0;
@@ -422,8 +422,8 @@ static int iwl_sar_set_profile(union acpi_object *table,
* The table from ACPI is flat, but we store it in a
* structured array.
*/
- for (i = 0; i < ACPI_SAR_NUM_CHAINS; i++) {
- for (j = 0; j < ACPI_SAR_NUM_SUB_BANDS; j++) {
+ for (i = 0; i < num_chains; i++) {
+ for (j = 0; j < num_sub_bands; j++) {
if (table[idx].type != ACPI_TYPE_INTEGER ||
table[idx].integer.value > U8_MAX)
return -EINVAL;
@@ -539,7 +539,8 @@ int iwl_sar_get_wrds_table(struct iwl_fw_runtime *fwrt)
/* The profile from WRDS is officially profile 1, but goes
* into sar_profiles[0] (because we don't have a profile 0).
*/
- ret = iwl_sar_set_profile(table, &fwrt->sar_profiles[0], enabled);
+ ret = iwl_sar_set_profile(table, &fwrt->sar_profiles[0], enabled,
+ ACPI_SAR_NUM_CHAINS, ACPI_SAR_NUM_SUB_BANDS);
out_free:
kfree(data);
return ret;
@@ -598,7 +599,9 @@ int iwl_sar_get_ewrd_table(struct iwl_fw_runtime *fwrt)
*/
ret = iwl_sar_set_profile(&wifi_pkg->package.elements[pos],
&fwrt->sar_profiles[i + 1],
- enabled);
+ enabled,
+ ACPI_SAR_NUM_CHAINS,
+ ACPI_SAR_NUM_SUB_BANDS);
if (ret < 0)
break;