wifi: iwlwifi: prepare for reading DSM from UEFI
authorMiri Korenblit <miriam.rachel.korenblit@intel.com>
Thu, 1 Feb 2024 14:17:36 +0000 (16:17 +0200)
committerJohannes Berg <johannes.berg@intel.com>
Fri, 2 Feb 2024 13:37:27 +0000 (14:37 +0100)
Move all the common items (functions, enumerations and mcaros)
to regulatory.h/c files, and rename it to a common name.

Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
Reviewed-by: Gregory Greenman <gregory.greenman@intel.com>
Link: https://msgid.link/20240201155157.eae9bcbc0023.If1175f3143d6369076669ddd5d6ad4df0ee00659@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
drivers/net/wireless/intel/iwlwifi/fw/acpi.c
drivers/net/wireless/intel/iwlwifi/fw/acpi.h
drivers/net/wireless/intel/iwlwifi/fw/regulatory.c
drivers/net/wireless/intel/iwlwifi/fw/regulatory.h
drivers/net/wireless/intel/iwlwifi/mvm/fw.c

index 22b21bbc294fef52e6331eb39925107e72347e58..357047223686115c4496712a2a288840fee93bdd 100644 (file)
@@ -157,7 +157,7 @@ out:
  * In case the expected size is smaller than 32-bit, padding will be added.
  */
 int iwl_acpi_get_dsm(struct iwl_fw_runtime *fwrt,
-                    enum iwl_dsm_funcs_rev_0 func, u32 *value)
+                    enum iwl_dsm_funcs func, u32 *value)
 {
        size_t expected_size;
        u64 tmp;
@@ -808,64 +808,6 @@ out_free:
        return ret;
 }
 
-__le32 iwl_acpi_get_lari_config_bitmap(struct iwl_fw_runtime *fwrt)
-{
-       int ret;
-       u32 val;
-       __le32 config_bitmap = 0;
-
-       /*
-        * Evaluate func 'DSM_FUNC_ENABLE_INDONESIA_5G2'.
-        * Setting config_bitmap Indonesia bit is valid only for HR/JF.
-        */
-       switch (CSR_HW_RFID_TYPE(fwrt->trans->hw_rf_id)) {
-       case IWL_CFG_RF_TYPE_HR1:
-       case IWL_CFG_RF_TYPE_HR2:
-       case IWL_CFG_RF_TYPE_JF1:
-       case IWL_CFG_RF_TYPE_JF2:
-               ret = iwl_acpi_get_dsm(fwrt, DSM_FUNC_ENABLE_INDONESIA_5G2,
-                                      &val);
-
-               if (!ret && val == DSM_VALUE_INDONESIA_ENABLE)
-                       config_bitmap |=
-                           cpu_to_le32(LARI_CONFIG_ENABLE_5G2_IN_INDONESIA_MSK);
-               break;
-       default:
-               break;
-       }
-
-       /*
-        ** Evaluate func 'DSM_FUNC_DISABLE_SRD'
-        */
-       ret = iwl_acpi_get_dsm(fwrt, DSM_FUNC_DISABLE_SRD, &val);
-       if (!ret) {
-               if (val == DSM_VALUE_SRD_PASSIVE)
-                       config_bitmap |=
-                               cpu_to_le32(LARI_CONFIG_CHANGE_ETSI_TO_PASSIVE_MSK);
-               else if (val == DSM_VALUE_SRD_DISABLE)
-                       config_bitmap |=
-                               cpu_to_le32(LARI_CONFIG_CHANGE_ETSI_TO_DISABLED_MSK);
-       }
-
-       if (fw_has_capa(&fwrt->fw->ucode_capa,
-                       IWL_UCODE_TLV_CAPA_CHINA_22_REG_SUPPORT)) {
-               /*
-                ** Evaluate func 'DSM_FUNC_REGULATORY_CONFIG'
-                */
-               ret = iwl_acpi_get_dsm(fwrt, DSM_FUNC_REGULATORY_CONFIG, &val);
-               /*
-                * China 2022 enable if the BIOS object does not exist or
-                * if it is enabled in BIOS.
-                */
-               if (ret < 0 || val & DSM_MASK_CHINA_22_REG)
-                       config_bitmap |=
-                               cpu_to_le32(LARI_CONFIG_ENABLE_CHINA_22_REG_SUPPORT_MSK);
-       }
-
-       return config_bitmap;
-}
-IWL_EXPORT_SYMBOL(iwl_acpi_get_lari_config_bitmap);
-
 int iwl_acpi_get_ppag_table(struct iwl_fw_runtime *fwrt)
 {
        union acpi_object *wifi_pkg, *data, *flags;
index d84952f904443b3487ead5ca6f2639f2dbc76781..9cb10177688483b045f3a941ee6c81c35df86ef8 100644 (file)
 
 #define ACPI_DSM_REV 0
 
-enum iwl_dsm_funcs_rev_0 {
-       DSM_FUNC_QUERY = 0,
-       DSM_FUNC_DISABLE_SRD = 1,
-       DSM_FUNC_ENABLE_INDONESIA_5G2 = 2,
-       DSM_FUNC_ENABLE_6E = 3,
-       DSM_FUNC_REGULATORY_CONFIG = 4,
-       DSM_FUNC_11AX_ENABLEMENT = 6,
-       DSM_FUNC_ENABLE_UNII4_CHAN = 7,
-       DSM_FUNC_ACTIVATE_CHANNEL = 8,
-       DSM_FUNC_FORCE_DISABLE_CHANNELS = 9,
-       DSM_FUNC_ENERGY_DETECTION_THRESHOLD = 10,
-       DSM_FUNC_RFI_CONFIG = 11,
-       DSM_FUNC_NUM_FUNCS = 12,
-};
-
-enum iwl_dsm_values_srd {
-       DSM_VALUE_SRD_ACTIVE,
-       DSM_VALUE_SRD_PASSIVE,
-       DSM_VALUE_SRD_DISABLE,
-       DSM_VALUE_SRD_MAX
-};
-
-enum iwl_dsm_values_indonesia {
-       DSM_VALUE_INDONESIA_DISABLE,
-       DSM_VALUE_INDONESIA_ENABLE,
-       DSM_VALUE_INDONESIA_RESERVED,
-       DSM_VALUE_INDONESIA_MAX
-};
-
-enum iwl_dsm_values_rfi {
-       DSM_VALUE_RFI_DLVR_DISABLE      = BIT(0),
-       DSM_VALUE_RFI_DDR_DISABLE       = BIT(1),
-};
-
-#define DSM_VALUE_RFI_DISABLE  (DSM_VALUE_RFI_DLVR_DISABLE |\
-                                DSM_VALUE_RFI_DDR_DISABLE)
-
-enum iwl_dsm_masks_reg {
-       DSM_MASK_CHINA_22_REG = BIT(2)
-};
-
 #ifdef CONFIG_ACPI
 
 struct iwl_fw_runtime;
@@ -173,8 +132,6 @@ int iwl_acpi_get_wgds_table(struct iwl_fw_runtime *fwrt);
 int iwl_acpi_get_tas_table(struct iwl_fw_runtime *fwrt,
                           struct iwl_tas_data *data);
 
-__le32 iwl_acpi_get_lari_config_bitmap(struct iwl_fw_runtime *fwrt);
-
 int iwl_acpi_get_ppag_table(struct iwl_fw_runtime *fwrt);
 
 void iwl_acpi_get_phy_filters(struct iwl_fw_runtime *fwrt,
@@ -183,7 +140,7 @@ void iwl_acpi_get_phy_filters(struct iwl_fw_runtime *fwrt,
 void iwl_acpi_get_guid_lock_status(struct iwl_fw_runtime *fwrt);
 
 int iwl_acpi_get_dsm(struct iwl_fw_runtime *fwrt,
-                    enum iwl_dsm_funcs_rev_0 func, u32 *value);
+                    enum iwl_dsm_funcs func, u32 *value);
 
 #else /* CONFIG_ACPI */
 
@@ -246,8 +203,7 @@ static inline void iwl_acpi_get_guid_lock_status(struct iwl_fw_runtime *fwrt)
 }
 
 static inline int iwl_acpi_get_dsm(struct iwl_fw_runtime *fwrt,
-                                  enum iwl_dsm_funcs_rev_0 func,
-                                  u32 *value)
+                                  enum iwl_dsm_funcs func, u32 *value)
 {
        return -ENOENT;
 }
index bb07fbfd81eb95ea2d72446821f55a6da225a3c9..3260f21fd2e0b9d2bb0139a7c5769f8737552a85 100644 (file)
@@ -431,3 +431,52 @@ int iwl_parse_tas_selection(struct iwl_fw_runtime *fwrt,
 
        return enabled;
 }
+
+__le32 iwl_get_lari_config_bitmap(struct iwl_fw_runtime *fwrt)
+{
+       int ret;
+       u32 val;
+       __le32 config_bitmap = 0;
+
+       switch (CSR_HW_RFID_TYPE(fwrt->trans->hw_rf_id)) {
+       case IWL_CFG_RF_TYPE_HR1:
+       case IWL_CFG_RF_TYPE_HR2:
+       case IWL_CFG_RF_TYPE_JF1:
+       case IWL_CFG_RF_TYPE_JF2:
+               ret = iwl_acpi_get_dsm(fwrt, DSM_FUNC_ENABLE_INDONESIA_5G2,
+                                      &val);
+
+               if (!ret && val == DSM_VALUE_INDONESIA_ENABLE)
+                       config_bitmap |=
+                           cpu_to_le32(LARI_CONFIG_ENABLE_5G2_IN_INDONESIA_MSK);
+               break;
+       default:
+               break;
+       }
+
+       ret = iwl_acpi_get_dsm(fwrt, DSM_FUNC_DISABLE_SRD, &val);
+       if (!ret) {
+               if (val == DSM_VALUE_SRD_PASSIVE)
+                       config_bitmap |=
+                               cpu_to_le32(LARI_CONFIG_CHANGE_ETSI_TO_PASSIVE_MSK);
+               else if (val == DSM_VALUE_SRD_DISABLE)
+                       config_bitmap |=
+                               cpu_to_le32(LARI_CONFIG_CHANGE_ETSI_TO_DISABLED_MSK);
+       }
+
+       if (fw_has_capa(&fwrt->fw->ucode_capa,
+                       IWL_UCODE_TLV_CAPA_CHINA_22_REG_SUPPORT)) {
+               ret = iwl_acpi_get_dsm(fwrt, DSM_FUNC_REGULATORY_CONFIG,
+                                      &val);
+               /*
+                * China 2022 enable if the BIOS object does not exist or
+                * if it is enabled in BIOS.
+                */
+               if (ret < 0 || val & DSM_MASK_CHINA_22_REG)
+                       config_bitmap |=
+                               cpu_to_le32(LARI_CONFIG_ENABLE_CHINA_22_REG_SUPPORT_MSK);
+       }
+
+       return config_bitmap;
+}
+IWL_EXPORT_SYMBOL(iwl_get_lari_config_bitmap);
index ec408c06235defa081ecd091949c0be5996ce176..da49ed7325d664245b19e4d209439dc5a301d92e 100644 (file)
@@ -102,6 +102,48 @@ struct iwl_tas_data {
        u8 usa_tas_uhb_allowed;
 };
 
+/* For DSM revision 0 and 4 */
+enum iwl_dsm_funcs {
+       DSM_FUNC_QUERY = 0,
+       DSM_FUNC_DISABLE_SRD = 1,
+       DSM_FUNC_ENABLE_INDONESIA_5G2 = 2,
+       DSM_FUNC_ENABLE_6E = 3,
+       DSM_FUNC_REGULATORY_CONFIG = 4,
+       DSM_FUNC_11AX_ENABLEMENT = 6,
+       DSM_FUNC_ENABLE_UNII4_CHAN = 7,
+       DSM_FUNC_ACTIVATE_CHANNEL = 8,
+       DSM_FUNC_FORCE_DISABLE_CHANNELS = 9,
+       DSM_FUNC_ENERGY_DETECTION_THRESHOLD = 10,
+       DSM_FUNC_RFI_CONFIG = 11,
+       DSM_FUNC_NUM_FUNCS = 12,
+};
+
+enum iwl_dsm_values_srd {
+       DSM_VALUE_SRD_ACTIVE,
+       DSM_VALUE_SRD_PASSIVE,
+       DSM_VALUE_SRD_DISABLE,
+       DSM_VALUE_SRD_MAX
+};
+
+enum iwl_dsm_values_indonesia {
+       DSM_VALUE_INDONESIA_DISABLE,
+       DSM_VALUE_INDONESIA_ENABLE,
+       DSM_VALUE_INDONESIA_RESERVED,
+       DSM_VALUE_INDONESIA_MAX
+};
+
+enum iwl_dsm_values_rfi {
+       DSM_VALUE_RFI_DLVR_DISABLE      = BIT(0),
+       DSM_VALUE_RFI_DDR_DISABLE       = BIT(1),
+};
+
+#define DSM_VALUE_RFI_DISABLE  (DSM_VALUE_RFI_DLVR_DISABLE |\
+                                DSM_VALUE_RFI_DDR_DISABLE)
+
+enum iwl_dsm_masks_reg {
+       DSM_MASK_CHINA_22_REG = BIT(2)
+};
+
 struct iwl_fw_runtime;
 
 bool iwl_sar_geo_support(struct iwl_fw_runtime *fwrt);
@@ -142,4 +184,6 @@ int iwl_bios_get_pwr_limit(struct iwl_fw_runtime *fwrt,
 
 int iwl_bios_get_mcc(struct iwl_fw_runtime *fwrt, char *mcc);
 int iwl_bios_get_eckv(struct iwl_fw_runtime *fwrt, u32 *ext_clk);
+
+__le32 iwl_get_lari_config_bitmap(struct iwl_fw_runtime *fwrt);
 #endif /* __fw_regulatory_h__ */
index f8d7f23741bff5d549e4d2bd2711009c3eabcbc7..a05a5f403ae5eb767b96420a8c9f3301a509188a 100644 (file)
@@ -1242,7 +1242,7 @@ static void iwl_mvm_lari_cfg(struct iwl_mvm *mvm)
                                           WIDE_ID(REGULATORY_AND_NVM_GROUP,
                                                   LARI_CONFIG_CHANGE), 1);
 
-       cmd.config_bitmap = iwl_acpi_get_lari_config_bitmap(&mvm->fwrt);
+       cmd.config_bitmap = iwl_get_lari_config_bitmap(&mvm->fwrt);
 
        ret = iwl_acpi_get_dsm(&mvm->fwrt, DSM_FUNC_11AX_ENABLEMENT, &value);
        if (!ret)