]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
wifi: iwlwifi: move iwl_get_lari_config_bitmap to the op_mode
authorEmmanuel Grumbach <emmanuel.grumbach@intel.com>
Sun, 11 Jan 2026 17:39:18 +0000 (19:39 +0200)
committerMiri Korenblit <miriam.rachel.korenblit@intel.com>
Wed, 21 Jan 2026 12:23:02 +0000 (14:23 +0200)
This is used solely there.
The implementation can differe between different op_modes that support
different firmware versions

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
Link: https://patch.msgid.link/20260111193638.099e733b1ece.Icac5b8eb5d8260e35df89622443d68a6beacedbb@changeid
drivers/net/wireless/intel/iwlwifi/fw/regulatory.c
drivers/net/wireless/intel/iwlwifi/fw/regulatory.h
drivers/net/wireless/intel/iwlwifi/mld/regulatory.c
drivers/net/wireless/intel/iwlwifi/mvm/fw.c

index 7e7af2b81181a3b975d7934ad42edb93869a752d..00f1c20a5a375f05aae0a40506f407174de7d758 100644 (file)
@@ -488,55 +488,6 @@ bool iwl_add_mcc_to_tas_block_list(u16 *list, u8 *size, u16 mcc)
 }
 IWL_EXPORT_SYMBOL(iwl_add_mcc_to_tas_block_list);
 
-__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->info.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_bios_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_bios_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_bios_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);
-
 int iwl_bios_get_dsm(struct iwl_fw_runtime *fwrt, enum iwl_dsm_funcs func,
                     u32 *value)
 {
index 859cb303f81392f4ab2a91f2bee0f4f894468163..26c1d3fad4df2f3bb37f403b43af0fdb61e6a9ca 100644 (file)
@@ -218,8 +218,6 @@ 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);
 int iwl_bios_get_wbem(struct iwl_fw_runtime *fwrt, u32 *value);
 
-__le32 iwl_get_lari_config_bitmap(struct iwl_fw_runtime *fwrt);
-
 int iwl_bios_get_dsm(struct iwl_fw_runtime *fwrt, enum iwl_dsm_funcs func,
                     u32 *value);
 
index 40571125b3ab2d2b22c4e7b9b230897895554c6d..92e6c05355011e63491e7e5178ce7c073f6714c2 100644 (file)
@@ -206,11 +206,27 @@ int iwl_mld_init_ppag(struct iwl_mld *mld)
        return iwl_mld_ppag_send_cmd(mld);
 }
 
+static __le32 iwl_mld_get_lari_config_bitmap(struct iwl_fw_runtime *fwrt)
+{
+       int ret;
+       u32 val;
+
+       ret = iwl_bios_get_dsm(fwrt, DSM_FUNC_DISABLE_SRD, &val);
+       if (!ret) {
+               if (val == DSM_VALUE_SRD_PASSIVE)
+                       return cpu_to_le32(LARI_CONFIG_CHANGE_ETSI_TO_PASSIVE_MSK);
+               else if (val == DSM_VALUE_SRD_DISABLE)
+                       return cpu_to_le32(LARI_CONFIG_CHANGE_ETSI_TO_DISABLED_MSK);
+       }
+
+       return 0;
+}
+
 void iwl_mld_configure_lari(struct iwl_mld *mld)
 {
        struct iwl_fw_runtime *fwrt = &mld->fwrt;
        struct iwl_lari_config_change_cmd cmd = {
-               .config_bitmap = iwl_get_lari_config_bitmap(fwrt),
+               .config_bitmap = iwl_mld_get_lari_config_bitmap(fwrt),
        };
        bool has_raw_dsm_capa = fw_has_capa(&fwrt->fw->ucode_capa,
                                            IWL_UCODE_TLV_CAPA_FW_ACCEPTS_RAW_DSM_TABLE);
index d04f5d408ec39114ad2d5537568b59de7ad34ac7..018f3396e9555a315099cde301794832cd552160 100644 (file)
@@ -1165,6 +1165,54 @@ static void iwl_mvm_tas_init(struct iwl_mvm *mvm)
                IWL_DEBUG_RADIO(mvm, "failed to send TAS_CONFIG (%d)\n", ret);
 }
 
+static __le32 iwl_mvm_get_lari_config_bitmap(struct iwl_fw_runtime *fwrt)
+{
+       int ret;
+       u32 val;
+       __le32 config_bitmap = 0;
+
+       switch (CSR_HW_RFID_TYPE(fwrt->trans->info.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_bios_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_bios_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_bios_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;
+}
+
 static size_t iwl_mvm_get_lari_config_cmd_size(u8 cmd_ver)
 {
        size_t cmd_size;
@@ -1201,7 +1249,7 @@ static int iwl_mvm_fill_lari_config(struct iwl_fw_runtime *fwrt,
        memset(cmd, 0, sizeof(*cmd));
        *cmd_size = iwl_mvm_get_lari_config_cmd_size(cmd_ver);
 
-       cmd->config_bitmap = iwl_get_lari_config_bitmap(fwrt);
+       cmd->config_bitmap = iwl_mvm_get_lari_config_bitmap(fwrt);
 
        ret = iwl_bios_get_dsm(fwrt, DSM_FUNC_11AX_ENABLEMENT, &value);
        if (!ret) {