]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
wifi: iwlwifi: acpi: add support for PPAG rev5
authorEmmanuel Grumbach <emmanuel.grumbach@intel.com>
Thu, 19 Mar 2026 09:09:27 +0000 (11:09 +0200)
committerMiri Korenblit <miriam.rachel.korenblit@intel.com>
Wed, 25 Mar 2026 09:31:56 +0000 (11:31 +0200)
This adds support for UNII9 which requires to add a subband.
Just increase the number of subbands that we need to read.

Replace the usage of the IWL_NUM_SUB_BANDS_VX macros in acpi.h since
those macros are defined in the firmware API and ACPI declarations have
nothing to do the firmware API.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
Link: https://patch.msgid.link/20260319110722.a5e7f805d0f2.I0e3ee3258b77b339234692ceccf0d25d1e6dd67e@changeid
drivers/net/wireless/intel/iwlwifi/fw/acpi.c
drivers/net/wireless/intel/iwlwifi/fw/acpi.h

index de30799519cdfde9bc83f64ae358528215e659bb..4d0a9383233624061623dff343e0a435a7655c92 100644 (file)
@@ -916,6 +916,22 @@ int iwl_acpi_get_ppag_table(struct iwl_fw_runtime *fwrt)
        if (IS_ERR(data))
                return PTR_ERR(data);
 
+       /* try to read ppag table rev 5 */
+       wifi_pkg = iwl_acpi_get_wifi_pkg(fwrt->dev, data,
+                                        ACPI_PPAG_WIFI_DATA_SIZE_V3, &tbl_rev);
+       if (!IS_ERR(wifi_pkg)) {
+               if (tbl_rev == 5) {
+                       num_sub_bands = IWL_NUM_SUB_BANDS_V3;
+                       IWL_DEBUG_RADIO(fwrt,
+                                       "Reading PPAG table (tbl_rev=%d)\n",
+                                       tbl_rev);
+                       goto read_table;
+               } else {
+                       ret = -EINVAL;
+                       goto out_free;
+               }
+       }
+
        /* try to read ppag table rev 1 to 4 (all have the same data size) */
        wifi_pkg = iwl_acpi_get_wifi_pkg(fwrt->dev, data,
                                ACPI_PPAG_WIFI_DATA_SIZE_V2, &tbl_rev);
index c34dc17ff608b4783d8d2b4540aebfeef7c9d876..138fdb9a5273e7452cac900e78d7930aa18c7731 100644 (file)
@@ -8,11 +8,6 @@
 
 #include <linux/acpi.h>
 #include "fw/regulatory.h"
-#include "fw/api/commands.h"
-#include "fw/api/power.h"
-#include "fw/api/phy.h"
-#include "fw/api/nvm-reg.h"
-#include "fw/api/config.h"
 #include "fw/img.h"
 #include "iwl-trans.h"
 
 #define ACPI_WTAS_WIFI_DATA_SIZE       (3 + IWL_WTAS_BLACK_LIST_MAX)
 
 #define ACPI_PPAG_NUM_CHAINS           2
+#define ACPI_PPAG_NUM_BANDS_V1         5
+#define ACPI_PPAG_NUM_BANDS_V2         11
+#define ACPI_PPAG_NUM_BANDS_V3         12
 #define ACPI_PPAG_WIFI_DATA_SIZE_V1    ((ACPI_PPAG_NUM_CHAINS * \
-                                         IWL_NUM_SUB_BANDS_V1) + 2)
+                                         ACPI_PPAG_NUM_BANDS_V1) + 2)
 #define ACPI_PPAG_WIFI_DATA_SIZE_V2    ((ACPI_PPAG_NUM_CHAINS * \
-                                         IWL_NUM_SUB_BANDS_V2) + 2)
+                                         ACPI_PPAG_NUM_BANDS_V2) + 2)
+
+/* used for ACPI PPAG table rev 5 */
+#define ACPI_PPAG_WIFI_DATA_SIZE_V3    ((ACPI_PPAG_NUM_CHAINS * \
+                                         ACPI_PPAG_NUM_BANDS_V3) + 2)
 
 #define IWL_SAR_ENABLE_MSK             BIT(0)
 #define IWL_REDUCE_POWER_FLAGS_POS     1