Commit d2bfda8a authored by Miri Korenblit's avatar Miri Korenblit Committed by Luca Coelho

iwlwifi: mvm: support BIOS enable/disable for 11ax in Ukraine

Read the new BIOS DSM and Pass to FW if to disable\enable
11ax for Ukraine according to the BIOS key. this is
needed to enable OEMs to control enable/disable 11ax in Ukraine
Signed-off-by: default avatarMiri Korenblit <miriam.rachel.korenblit@intel.com>
Signed-off-by: default avatarLuca Coelho <luciano.coelho@intel.com>
Link: https://lore.kernel.org/r/iwlwifi.20210331121101.055654e7707e.If7eaf9839cd5d59729a235df07e31668b408e740@changeidSigned-off-by: default avatarLuca Coelho <luciano.coelho@intel.com>
parent 9cd243f2
...@@ -695,3 +695,32 @@ int iwl_sar_geo_init(struct iwl_fw_runtime *fwrt, ...@@ -695,3 +695,32 @@ int iwl_sar_geo_init(struct iwl_fw_runtime *fwrt,
return 0; return 0;
} }
IWL_EXPORT_SYMBOL(iwl_sar_geo_init); IWL_EXPORT_SYMBOL(iwl_sar_geo_init);
u32 iwl_acpi_eval_dsm_11ax_enablement(struct device *dev)
{
union acpi_object *obj;
u32 ret;
obj = iwl_acpi_get_dsm_object(dev, 0,
DSM_FUNC_11AX_ENABLEMENT, NULL,
&iwl_guid);
if (IS_ERR(obj))
return 0;
if (obj->type != ACPI_TYPE_INTEGER) {
IWL_DEBUG_DEV_RADIO(dev,
"ACPI: DSM method did not return a valid object, type=%d\n",
obj->type);
ret = 0;
goto out;
}
ret = obj->integer.value;
IWL_DEBUG_DEV_RADIO(dev,
"ACPI: DSM method evaluated: func=DSM_FUNC_11AX_ENABLEMENT, ret=%d\n",
ret);
out:
ACPI_FREE(obj);
return ret;
}
IWL_EXPORT_SYMBOL(iwl_acpi_eval_dsm_11ax_enablement);
...@@ -77,6 +77,7 @@ enum iwl_dsm_funcs_rev_0 { ...@@ -77,6 +77,7 @@ enum iwl_dsm_funcs_rev_0 {
DSM_FUNC_QUERY = 0, DSM_FUNC_QUERY = 0,
DSM_FUNC_DISABLE_SRD = 1, DSM_FUNC_DISABLE_SRD = 1,
DSM_FUNC_ENABLE_INDONESIA_5G2 = 2, DSM_FUNC_ENABLE_INDONESIA_5G2 = 2,
DSM_FUNC_11AX_ENABLEMENT = 6,
}; };
enum iwl_dsm_values_srd { enum iwl_dsm_values_srd {
...@@ -160,6 +161,8 @@ int iwl_sar_geo_init(struct iwl_fw_runtime *fwrt, ...@@ -160,6 +161,8 @@ int iwl_sar_geo_init(struct iwl_fw_runtime *fwrt,
int iwl_acpi_get_tas(struct iwl_fw_runtime *fwrt, __le32 *block_list_array, int iwl_acpi_get_tas(struct iwl_fw_runtime *fwrt, __le32 *block_list_array,
int *block_list_size); int *block_list_size);
u32 iwl_acpi_eval_dsm_11ax_enablement(struct device *dev);
#else /* CONFIG_ACPI */ #else /* CONFIG_ACPI */
static inline void *iwl_acpi_get_object(struct device *dev, acpi_string method) static inline void *iwl_acpi_get_object(struct device *dev, acpi_string method)
...@@ -235,5 +238,11 @@ static inline int iwl_acpi_get_tas(struct iwl_fw_runtime *fwrt, ...@@ -235,5 +238,11 @@ static inline int iwl_acpi_get_tas(struct iwl_fw_runtime *fwrt,
{ {
return -ENOENT; return -ENOENT;
} }
static inline u32 iwl_acpi_eval_dsm_11ax_enablement(struct device *dev)
{
return 0;
}
#endif /* CONFIG_ACPI */ #endif /* CONFIG_ACPI */
#endif /* __iwl_fw_acpi__ */ #endif /* __iwl_fw_acpi__ */
...@@ -414,6 +414,9 @@ enum iwl_lari_config_masks { ...@@ -414,6 +414,9 @@ enum iwl_lari_config_masks {
LARI_CONFIG_ENABLE_5G2_IN_INDONESIA_MSK = BIT(3), LARI_CONFIG_ENABLE_5G2_IN_INDONESIA_MSK = BIT(3),
}; };
#define IWL_11AX_UKRAINE_MASK 3
#define IWL_11AX_UKRAINE_SHIFT 8
/** /**
* struct iwl_lari_config_change_cmd_v1 - change LARI configuration * struct iwl_lari_config_change_cmd_v1 - change LARI configuration
* @config_bitmap: bit map of the config commands. each bit will trigger a * @config_bitmap: bit map of the config commands. each bit will trigger a
......
...@@ -1213,6 +1213,10 @@ static void iwl_mvm_lari_cfg(struct iwl_mvm *mvm) ...@@ -1213,6 +1213,10 @@ static void iwl_mvm_lari_cfg(struct iwl_mvm *mvm)
cmd.config_bitmap |= cmd.config_bitmap |=
cpu_to_le32(LARI_CONFIG_CHANGE_ETSI_TO_DISABLED_MSK); cpu_to_le32(LARI_CONFIG_CHANGE_ETSI_TO_DISABLED_MSK);
ret = iwl_acpi_eval_dsm_11ax_enablement((&mvm->fwrt)->dev);
cmd.config_bitmap |=
cpu_to_le32((ret &= IWL_11AX_UKRAINE_MASK) << IWL_11AX_UKRAINE_SHIFT);
/* apply more config masks here */ /* apply more config masks here */
if (cmd.config_bitmap) { if (cmd.config_bitmap) {
......
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