Merge tag 'v6.4-p3' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6
[platform/kernel/linux-rpi.git] / drivers / net / wireless / intel / iwlwifi / cfg / 22000.c
1 // SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause
2 /*
3  * Copyright (C) 2015-2017 Intel Deutschland GmbH
4  * Copyright (C) 2018-2022 Intel Corporation
5  */
6 #include <linux/module.h>
7 #include <linux/stringify.h>
8 #include "iwl-config.h"
9 #include "iwl-prph.h"
10 #include "fw/api/txq.h"
11
12 /* Highest firmware API version supported */
13 #define IWL_22000_UCODE_API_MAX 78
14
15 /* Lowest firmware API version supported */
16 #define IWL_22000_UCODE_API_MIN 39
17
18 /* NVM versions */
19 #define IWL_22000_NVM_VERSION           0x0a1d
20
21 /* Memory offsets and lengths */
22 #define IWL_22000_DCCM_OFFSET           0x800000 /* LMAC1 */
23 #define IWL_22000_DCCM_LEN              0x10000 /* LMAC1 */
24 #define IWL_22000_DCCM2_OFFSET          0x880000
25 #define IWL_22000_DCCM2_LEN             0x8000
26 #define IWL_22000_SMEM_OFFSET           0x400000
27 #define IWL_22000_SMEM_LEN              0xD0000
28
29 #define IWL_QU_B_HR_B_FW_PRE            "iwlwifi-Qu-b0-hr-b0-"
30 #define IWL_QNJ_B_HR_B_FW_PRE           "iwlwifi-QuQnj-b0-hr-b0-"
31 #define IWL_QU_C_HR_B_FW_PRE            "iwlwifi-Qu-c0-hr-b0-"
32 #define IWL_QU_B_JF_B_FW_PRE            "iwlwifi-Qu-b0-jf-b0-"
33 #define IWL_QU_C_JF_B_FW_PRE            "iwlwifi-Qu-c0-jf-b0-"
34 #define IWL_QUZ_A_HR_B_FW_PRE           "iwlwifi-QuZ-a0-hr-b0-"
35 #define IWL_QUZ_A_JF_B_FW_PRE           "iwlwifi-QuZ-a0-jf-b0-"
36 #define IWL_QNJ_B_JF_B_FW_PRE           "iwlwifi-QuQnj-b0-jf-b0-"
37 #define IWL_CC_A_FW_PRE                 "iwlwifi-cc-a0-"
38 #define IWL_SO_A_JF_B_FW_PRE            "iwlwifi-so-a0-jf-b0-"
39 #define IWL_SO_A_HR_B_FW_PRE            "iwlwifi-so-a0-hr-b0-"
40 #define IWL_SO_A_GF_A_FW_PRE            "iwlwifi-so-a0-gf-a0-"
41 #define IWL_TY_A_GF_A_FW_PRE            "iwlwifi-ty-a0-gf-a0-"
42 #define IWL_SO_A_GF4_A_FW_PRE           "iwlwifi-so-a0-gf4-a0-"
43 #define IWL_SO_A_MR_A_FW_PRE            "iwlwifi-so-a0-mr-a0-"
44 #define IWL_SNJ_A_GF4_A_FW_PRE          "iwlwifi-SoSnj-a0-gf4-a0-"
45 #define IWL_SNJ_A_GF_A_FW_PRE           "iwlwifi-SoSnj-a0-gf-a0-"
46 #define IWL_SNJ_A_HR_B_FW_PRE           "iwlwifi-SoSnj-a0-hr-b0-"
47 #define IWL_SNJ_A_JF_B_FW_PRE           "iwlwifi-SoSnj-a0-jf-b0-"
48 #define IWL_MA_A_HR_B_FW_PRE            "iwlwifi-ma-a0-hr-b0-"
49 #define IWL_MA_A_GF_A_FW_PRE            "iwlwifi-ma-a0-gf-a0-"
50 #define IWL_MA_A_GF4_A_FW_PRE           "iwlwifi-ma-a0-gf4-a0-"
51 #define IWL_MA_A_MR_A_FW_PRE            "iwlwifi-ma-a0-mr-a0-"
52 #define IWL_MA_A_FM_A_FW_PRE            "iwlwifi-ma-a0-fm-a0-"
53 #define IWL_MA_B_HR_B_FW_PRE            "iwlwifi-ma-b0-hr-b0-"
54 #define IWL_MA_B_GF_A_FW_PRE            "iwlwifi-ma-b0-gf-a0-"
55 #define IWL_MA_B_GF4_A_FW_PRE           "iwlwifi-ma-b0-gf4-a0-"
56 #define IWL_MA_B_MR_A_FW_PRE            "iwlwifi-ma-b0-mr-a0-"
57 #define IWL_MA_B_FM_A_FW_PRE            "iwlwifi-ma-b0-fm-a0-"
58 #define IWL_SNJ_A_MR_A_FW_PRE           "iwlwifi-SoSnj-a0-mr-a0-"
59 #define IWL_BZ_A_HR_A_FW_PRE            "iwlwifi-bz-a0-hr-b0-"
60 #define IWL_BZ_A_HR_B_FW_PRE            "iwlwifi-bz-a0-hr-b0-"
61 #define IWL_BZ_A_GF_A_FW_PRE            "iwlwifi-bz-a0-gf-a0-"
62 #define IWL_BZ_A_GF4_A_FW_PRE           "iwlwifi-bz-a0-gf4-a0-"
63 #define IWL_BZ_A_MR_A_FW_PRE            "iwlwifi-bz-a0-mr-a0-"
64 #define IWL_BZ_A_FM_A_FW_PRE            "iwlwifi-bz-a0-fm-a0-"
65 #define IWL_BZ_A_FM4_A_FW_PRE           "iwlwifi-bz-a0-fm4-a0-"
66 #define IWL_BZ_A_FM_B_FW_PRE            "iwlwifi-bz-a0-fm-b0-"
67 #define IWL_BZ_A_FM4_B_FW_PRE           "iwlwifi-bz-a0-fm4-b0-"
68 #define IWL_GL_A_FM_A_FW_PRE            "iwlwifi-gl-a0-fm-a0-"
69 #define IWL_GL_B_FM_B_FW_PRE            "iwlwifi-gl-b0-fm-b0-"
70 #define IWL_BZ_Z_GF_A_FW_PRE            "iwlwifi-bz-z0-gf-a0-"
71 #define IWL_BNJ_A_FM_A_FW_PRE           "iwlwifi-BzBnj-a0-fm-a0-"
72 #define IWL_BNJ_A_FM4_A_FW_PRE          "iwlwifi-BzBnj-a0-fm4-a0-"
73 #define IWL_BNJ_B_FM4_B_FW_PRE          "iwlwifi-BzBnj-b0-fm4-b0-"
74 #define IWL_BNJ_A_GF_A_FW_PRE           "iwlwifi-BzBnj-a0-gf-a0-"
75 #define IWL_BNJ_B_GF_A_FW_PRE           "iwlwifi-BzBnj-b0-gf-a0-"
76 #define IWL_BNJ_A_GF4_A_FW_PRE          "iwlwifi-BzBnj-a0-gf4-a0-"
77 #define IWL_BNJ_B_GF4_A_FW_PRE          "iwlwifi-BzBnj-b0-gf4-a0-"
78 #define IWL_BNJ_A_HR_A_FW_PRE           "iwlwifi-BzBnj-a0-hr-b0-"
79 #define IWL_BNJ_A_HR_B_FW_PRE           "iwlwifi-BzBnj-a0-hr-b0-"
80 #define IWL_BNJ_B_HR_A_FW_PRE           "iwlwifi-BzBnj-b0-hr-b0-"
81 #define IWL_BNJ_B_HR_B_FW_PRE           "iwlwifi-BzBnj-b0-hr-b0-"
82 #define IWL_BNJ_B_FM_B_FW_PRE           "iwlwifi-BzBnj-b0-fm-b0-"
83
84
85 #define IWL_QU_B_HR_B_MODULE_FIRMWARE(api) \
86         IWL_QU_B_HR_B_FW_PRE __stringify(api) ".ucode"
87 #define IWL_QNJ_B_HR_B_MODULE_FIRMWARE(api)     \
88         IWL_QNJ_B_HR_B_FW_PRE __stringify(api) ".ucode"
89 #define IWL_QUZ_A_HR_B_MODULE_FIRMWARE(api) \
90         IWL_QUZ_A_HR_B_FW_PRE __stringify(api) ".ucode"
91 #define IWL_QUZ_A_JF_B_MODULE_FIRMWARE(api) \
92         IWL_QUZ_A_JF_B_FW_PRE __stringify(api) ".ucode"
93 #define IWL_QU_C_HR_B_MODULE_FIRMWARE(api) \
94         IWL_QU_C_HR_B_FW_PRE __stringify(api) ".ucode"
95 #define IWL_QU_B_JF_B_MODULE_FIRMWARE(api) \
96         IWL_QU_B_JF_B_FW_PRE __stringify(api) ".ucode"
97 #define IWL_QNJ_B_JF_B_MODULE_FIRMWARE(api)             \
98         IWL_QNJ_B_JF_B_FW_PRE __stringify(api) ".ucode"
99 #define IWL_CC_A_MODULE_FIRMWARE(api)                   \
100         IWL_CC_A_FW_PRE __stringify(api) ".ucode"
101 #define IWL_SO_A_JF_B_MODULE_FIRMWARE(api) \
102         IWL_SO_A_JF_B_FW_PRE __stringify(api) ".ucode"
103 #define IWL_SO_A_HR_B_MODULE_FIRMWARE(api) \
104         IWL_SO_A_HR_B_FW_PRE __stringify(api) ".ucode"
105 #define IWL_SO_A_GF_A_MODULE_FIRMWARE(api) \
106         IWL_SO_A_GF_A_FW_PRE __stringify(api) ".ucode"
107 #define IWL_TY_A_GF_A_MODULE_FIRMWARE(api) \
108         IWL_TY_A_GF_A_FW_PRE __stringify(api) ".ucode"
109 #define IWL_SNJ_A_GF4_A_MODULE_FIRMWARE(api) \
110         IWL_SNJ_A_GF4_A_FW_PRE __stringify(api) ".ucode"
111 #define IWL_SNJ_A_GF_A_MODULE_FIRMWARE(api) \
112         IWL_SNJ_A_GF_A_FW_PRE __stringify(api) ".ucode"
113 #define IWL_SNJ_A_HR_B_MODULE_FIRMWARE(api) \
114         IWL_SNJ_A_HR_B_FW_PRE __stringify(api) ".ucode"
115 #define IWL_SNJ_A_JF_B_MODULE_FIRMWARE(api) \
116         IWL_SNJ_A_JF_B_FW_PRE __stringify(api) ".ucode"
117 #define IWL_MA_A_HR_B_FW_MODULE_FIRMWARE(api)           \
118         IWL_MA_A_HR_B_FW_PRE __stringify(api) ".ucode"
119 #define IWL_MA_A_GF_A_FW_MODULE_FIRMWARE(api)           \
120         IWL_MA_A_GF_A_FW_PRE __stringify(api) ".ucode"
121 #define IWL_MA_A_GF4_A_FW_MODULE_FIRMWARE(api)          \
122         IWL_MA_A_GF4_A_FW_PRE __stringify(api) ".ucode"
123 #define IWL_MA_A_MR_A_FW_MODULE_FIRMWARE(api) \
124         IWL_MA_A_MR_A_FW_PRE __stringify(api) ".ucode"
125 #define IWL_MA_A_FM_A_FW_MODULE_FIRMWARE(api)           \
126         IWL_MA_A_FM_A_FW_PRE __stringify(api) ".ucode"
127 #define IWL_MA_B_HR_B_FW_MODULE_FIRMWARE(api)           \
128         IWL_MA_B_HR_B_FW_PRE __stringify(api) ".ucode"
129 #define IWL_MA_B_GF_A_FW_MODULE_FIRMWARE(api)           \
130         IWL_MA_B_GF_A_FW_PRE __stringify(api) ".ucode"
131 #define IWL_MA_B_GF4_A_FW_MODULE_FIRMWARE(api)          \
132         IWL_MA_B_GF4_A_FW_PRE __stringify(api) ".ucode"
133 #define IWL_MA_B_MR_A_FW_MODULE_FIRMWARE(api) \
134         IWL_MA_B_MR_A_FW_PRE __stringify(api) ".ucode"
135 #define IWL_MA_B_FM_A_FW_MODULE_FIRMWARE(api)           \
136         IWL_MA_B_FM_A_FW_PRE __stringify(api) ".ucode"
137 #define IWL_SNJ_A_MR_A_MODULE_FIRMWARE(api) \
138         IWL_SNJ_A_MR_A_FW_PRE __stringify(api) ".ucode"
139 #define IWL_BZ_A_HR_A_MODULE_FIRMWARE(api) \
140         IWL_BZ_A_HR_A_FW_PRE __stringify(api) ".ucode"
141 #define IWL_BZ_A_HR_B_MODULE_FIRMWARE(api) \
142         IWL_BZ_A_HR_B_FW_PRE __stringify(api) ".ucode"
143 #define IWL_BZ_A_GF_A_MODULE_FIRMWARE(api) \
144         IWL_BZ_A_GF_A_FW_PRE __stringify(api) ".ucode"
145 #define IWL_BZ_A_GF4_A_MODULE_FIRMWARE(api) \
146         IWL_BZ_A_GF4_A_FW_PRE __stringify(api) ".ucode"
147 #define IWL_BZ_A_MR_A_MODULE_FIRMWARE(api) \
148         IWL_BZ_A_MR_A_FW_PRE __stringify(api) ".ucode"
149 #define IWL_BZ_A_FM_A_MODULE_FIRMWARE(api) \
150         IWL_BZ_A_FM_A_FW_PRE __stringify(api) ".ucode"
151 #define IWL_BZ_A_FM4_A_MODULE_FIRMWARE(api) \
152         IWL_BZ_A_FM4_A_FW_PRE __stringify(api) ".ucode"
153 #define IWL_BZ_A_FM_B_MODULE_FIRMWARE(api) \
154         IWL_BZ_A_FM_B_FW_PRE __stringify(api) ".ucode"
155 #define IWL_BZ_A_FM4_B_MODULE_FIRMWARE(api) \
156         IWL_BZ_A_FM4_B_FW_PRE __stringify(api) ".ucode"
157 #define IWL_GL_A_FM_A_MODULE_FIRMWARE(api) \
158         IWL_GL_A_FM_A_FW_PRE __stringify(api) ".ucode"
159 #define IWL_GL_B_FM_B_MODULE_FIRMWARE(api) \
160         IWL_GL_B_FM_B_FW_PRE __stringify(api) ".ucode"
161 #define IWL_BNJ_A_FM_A_MODULE_FIRMWARE(api) \
162         IWL_BNJ_A_FM_A_FW_PRE __stringify(api) ".ucode"
163 #define IWL_BNJ_A_FM4_A_MODULE_FIRMWARE(api) \
164         IWL_BNJ_A_FM4_A_FW_PRE __stringify(api) ".ucode"
165 #define IWL_BNJ_B_FM4_B_MODULE_FIRMWARE(api) \
166         IWL_BNJ_B_FM4_B_FW_PRE __stringify(api) ".ucode"
167 #define IWL_BNJ_A_GF_A_MODULE_FIRMWARE(api) \
168         IWL_BNJ_A_GF_A_FW_PRE __stringify(api) ".ucode"
169 #define IWL_BNJ_B_GF_A_MODULE_FIRMWARE(api) \
170         IWL_BNJ_B_GF_A_FW_PRE __stringify(api) ".ucode"
171 #define IWL_BNJ_A_GF4_A_MODULE_FIRMWARE(api) \
172         IWL_BNJ_A_GF4_A_FW_PRE __stringify(api) ".ucode"
173 #define IWL_BNJ_B_GF4_A_MODULE_FIRMWARE(api) \
174         IWL_BNJ_B_GF4_A_FW_PRE __stringify(api) ".ucode"
175 #define IWL_BNJ_A_HR_A_MODULE_FIRMWARE(api) \
176         IWL_BNJ_A_HR_A_FW_PRE __stringify(api) ".ucode"
177 #define IWL_BNJ_A_HR_B_MODULE_FIRMWARE(api) \
178         IWL_BNJ_A_HR_B_FW_PRE __stringify(api) ".ucode"
179 #define IWL_BNJ_B_HR_A_MODULE_FIRMWARE(api) \
180         IWL_BNJ_B_HR_A_FW_PRE __stringify(api) ".ucode"
181 #define IWL_BNJ_B_HR_B_MODULE_FIRMWARE(api) \
182         IWL_BNJ_B_HR_B_FW_PRE __stringify(api) ".ucode"
183 #define IWL_BNJ_B_FM_B_MODULE_FIRMWARE(api) \
184         IWL_BNJ_B_FM_B_FW_PRE __stringify(api) ".ucode"
185
186 static const struct iwl_base_params iwl_22000_base_params = {
187         .eeprom_size = OTP_LOW_IMAGE_SIZE_32K,
188         .num_of_queues = 512,
189         .max_tfd_queue_size = 256,
190         .shadow_ram_support = true,
191         .led_compensation = 57,
192         .wd_timeout = IWL_LONG_WD_TIMEOUT,
193         .max_event_log_size = 512,
194         .shadow_reg_enable = true,
195         .pcie_l1_allowed = true,
196 };
197
198 static const struct iwl_base_params iwl_ax210_base_params = {
199         .eeprom_size = OTP_LOW_IMAGE_SIZE_32K,
200         .num_of_queues = 512,
201         .max_tfd_queue_size = 65536,
202         .shadow_ram_support = true,
203         .led_compensation = 57,
204         .wd_timeout = IWL_LONG_WD_TIMEOUT,
205         .max_event_log_size = 512,
206         .shadow_reg_enable = true,
207         .pcie_l1_allowed = true,
208 };
209
210 static const struct iwl_ht_params iwl_22000_ht_params = {
211         .stbc = true,
212         .ldpc = true,
213         .ht40_bands = BIT(NL80211_BAND_2GHZ) | BIT(NL80211_BAND_5GHZ) |
214                       BIT(NL80211_BAND_6GHZ),
215 };
216
217 static const struct iwl_ht_params iwl_gl_a_ht_params = {
218         .stbc = false, /* we explicitly disable STBC for GL step A */
219         .ldpc = true,
220         .ht40_bands = BIT(NL80211_BAND_2GHZ) | BIT(NL80211_BAND_5GHZ) |
221                       BIT(NL80211_BAND_6GHZ),
222 };
223
224 #define IWL_DEVICE_22000_COMMON                                         \
225         .ucode_api_max = IWL_22000_UCODE_API_MAX,                       \
226         .ucode_api_min = IWL_22000_UCODE_API_MIN,                       \
227         .led_mode = IWL_LED_RF_STATE,                                   \
228         .nvm_hw_section_num = 10,                                       \
229         .non_shared_ant = ANT_B,                                        \
230         .dccm_offset = IWL_22000_DCCM_OFFSET,                           \
231         .dccm_len = IWL_22000_DCCM_LEN,                                 \
232         .dccm2_offset = IWL_22000_DCCM2_OFFSET,                         \
233         .dccm2_len = IWL_22000_DCCM2_LEN,                               \
234         .smem_offset = IWL_22000_SMEM_OFFSET,                           \
235         .smem_len = IWL_22000_SMEM_LEN,                                 \
236         .features = IWL_TX_CSUM_NETIF_FLAGS | NETIF_F_RXCSUM,           \
237         .apmg_not_supported = true,                                     \
238         .trans.mq_rx_supported = true,                                  \
239         .vht_mu_mimo_supported = true,                                  \
240         .mac_addr_from_csr = 0x380,                                     \
241         .ht_params = &iwl_22000_ht_params,                              \
242         .nvm_ver = IWL_22000_NVM_VERSION,                               \
243         .trans.use_tfh = true,                                          \
244         .trans.rf_id = true,                                            \
245         .trans.gen2 = true,                                             \
246         .nvm_type = IWL_NVM_EXT,                                        \
247         .dbgc_supported = true,                                         \
248         .min_umac_error_event_table = 0x400000,                         \
249         .d3_debug_data_base_addr = 0x401000,                            \
250         .d3_debug_data_length = 60 * 1024,                              \
251         .mon_smem_regs = {                                              \
252                 .write_ptr = {                                          \
253                         .addr = LDBG_M2S_BUF_WPTR,                      \
254                         .mask = LDBG_M2S_BUF_WPTR_VAL_MSK,              \
255         },                                                              \
256                 .cycle_cnt = {                                          \
257                         .addr = LDBG_M2S_BUF_WRAP_CNT,                  \
258                         .mask = LDBG_M2S_BUF_WRAP_CNT_VAL_MSK,          \
259                 },                                                      \
260         }
261
262 #define IWL_DEVICE_22500                                                \
263         IWL_DEVICE_22000_COMMON,                                        \
264         .trans.device_family = IWL_DEVICE_FAMILY_22000,                 \
265         .trans.base_params = &iwl_22000_base_params,                    \
266         .gp2_reg_addr = 0xa02c68,                                       \
267         .mon_dram_regs = {                                              \
268                 .write_ptr = {                                          \
269                         .addr = MON_BUFF_WRPTR_VER2,                    \
270                         .mask = 0xffffffff,                             \
271                 },                                                      \
272                 .cycle_cnt = {                                          \
273                         .addr = MON_BUFF_CYCLE_CNT_VER2,                \
274                         .mask = 0xffffffff,                             \
275                 },                                                      \
276         }
277
278 #define IWL_DEVICE_AX210                                                \
279         IWL_DEVICE_22000_COMMON,                                        \
280         .trans.umac_prph_offset = 0x300000,                             \
281         .trans.device_family = IWL_DEVICE_FAMILY_AX210,                 \
282         .trans.base_params = &iwl_ax210_base_params,                    \
283         .min_txq_size = 128,                                            \
284         .gp2_reg_addr = 0xd02c68,                                       \
285         .min_ba_txq_size = IWL_DEFAULT_QUEUE_SIZE_HE,           \
286         .mon_dram_regs = {                                              \
287                 .write_ptr = {                                          \
288                         .addr = DBGC_CUR_DBGBUF_STATUS,                 \
289                         .mask = DBGC_CUR_DBGBUF_STATUS_OFFSET_MSK,      \
290                 },                                                      \
291                 .cycle_cnt = {                                          \
292                         .addr = DBGC_DBGBUF_WRAP_AROUND,                \
293                         .mask = 0xffffffff,                             \
294                 },                                                      \
295                 .cur_frag = {                                           \
296                         .addr = DBGC_CUR_DBGBUF_STATUS,                 \
297                         .mask = DBGC_CUR_DBGBUF_STATUS_IDX_MSK,         \
298                 },                                                      \
299         }
300
301 #define IWL_DEVICE_BZ_COMMON                                            \
302         .ucode_api_max = IWL_22000_UCODE_API_MAX,                       \
303         .ucode_api_min = IWL_22000_UCODE_API_MIN,                       \
304         .led_mode = IWL_LED_RF_STATE,                                   \
305         .nvm_hw_section_num = 10,                                       \
306         .non_shared_ant = ANT_B,                                        \
307         .dccm_offset = IWL_22000_DCCM_OFFSET,                           \
308         .dccm_len = IWL_22000_DCCM_LEN,                                 \
309         .dccm2_offset = IWL_22000_DCCM2_OFFSET,                         \
310         .dccm2_len = IWL_22000_DCCM2_LEN,                               \
311         .smem_offset = IWL_22000_SMEM_OFFSET,                           \
312         .smem_len = IWL_22000_SMEM_LEN,                                 \
313         .apmg_not_supported = true,                                     \
314         .trans.mq_rx_supported = true,                                  \
315         .vht_mu_mimo_supported = true,                                  \
316         .mac_addr_from_csr = 0x30,                                      \
317         .nvm_ver = IWL_22000_NVM_VERSION,                               \
318         .trans.use_tfh = true,                                          \
319         .trans.rf_id = true,                                            \
320         .trans.gen2 = true,                                             \
321         .nvm_type = IWL_NVM_EXT,                                        \
322         .dbgc_supported = true,                                         \
323         .min_umac_error_event_table = 0xD0000,                          \
324         .d3_debug_data_base_addr = 0x401000,                            \
325         .d3_debug_data_length = 60 * 1024,                              \
326         .mon_smem_regs = {                                              \
327                 .write_ptr = {                                          \
328                         .addr = LDBG_M2S_BUF_WPTR,                      \
329                         .mask = LDBG_M2S_BUF_WPTR_VAL_MSK,              \
330         },                                                              \
331                 .cycle_cnt = {                                          \
332                         .addr = LDBG_M2S_BUF_WRAP_CNT,                  \
333                         .mask = LDBG_M2S_BUF_WRAP_CNT_VAL_MSK,          \
334                 },                                                      \
335         },                                                              \
336         .trans.umac_prph_offset = 0x300000,                             \
337         .trans.device_family = IWL_DEVICE_FAMILY_BZ,                    \
338         .trans.base_params = &iwl_ax210_base_params,                    \
339         .min_txq_size = 128,                                            \
340         .gp2_reg_addr = 0xd02c68,                                       \
341         .min_ba_txq_size = IWL_DEFAULT_QUEUE_SIZE_EHT,                  \
342         .mon_dram_regs = {                                              \
343                 .write_ptr = {                                          \
344                         .addr = DBGC_CUR_DBGBUF_STATUS,                 \
345                         .mask = DBGC_CUR_DBGBUF_STATUS_OFFSET_MSK,      \
346                 },                                                      \
347                 .cycle_cnt = {                                          \
348                         .addr = DBGC_DBGBUF_WRAP_AROUND,                \
349                         .mask = 0xffffffff,                             \
350                 },                                                      \
351                 .cur_frag = {                                           \
352                         .addr = DBGC_CUR_DBGBUF_STATUS,                 \
353                         .mask = DBGC_CUR_DBGBUF_STATUS_IDX_MSK,         \
354                 },                                                      \
355         },                                                              \
356         .mon_dbgi_regs = {                                              \
357                 .write_ptr = {                                          \
358                         .addr = DBGI_SRAM_FIFO_POINTERS,                \
359                         .mask = DBGI_SRAM_FIFO_POINTERS_WR_PTR_MSK,     \
360                 },                                                      \
361         }
362
363 #define IWL_DEVICE_BZ                                                   \
364         IWL_DEVICE_BZ_COMMON,                                           \
365         .ht_params = &iwl_22000_ht_params
366
367 #define IWL_DEVICE_GL_A                                                 \
368         IWL_DEVICE_BZ_COMMON,                                           \
369         .ht_params = &iwl_gl_a_ht_params
370
371 const struct iwl_cfg_trans_params iwl_qnj_trans_cfg = {
372         .mq_rx_supported = true,
373         .use_tfh = true,
374         .rf_id = true,
375         .gen2 = true,
376         .device_family = IWL_DEVICE_FAMILY_22000,
377         .base_params = &iwl_22000_base_params,
378 };
379
380 const struct iwl_cfg_trans_params iwl_qu_trans_cfg = {
381         .mq_rx_supported = true,
382         .use_tfh = true,
383         .rf_id = true,
384         .gen2 = true,
385         .device_family = IWL_DEVICE_FAMILY_22000,
386         .base_params = &iwl_22000_base_params,
387         .integrated = true,
388         .xtal_latency = 500,
389         .ltr_delay = IWL_CFG_TRANS_LTR_DELAY_200US,
390 };
391
392 const struct iwl_cfg_trans_params iwl_qu_medium_latency_trans_cfg = {
393         .mq_rx_supported = true,
394         .use_tfh = true,
395         .rf_id = true,
396         .gen2 = true,
397         .device_family = IWL_DEVICE_FAMILY_22000,
398         .base_params = &iwl_22000_base_params,
399         .integrated = true,
400         .xtal_latency = 1820,
401         .ltr_delay = IWL_CFG_TRANS_LTR_DELAY_1820US,
402 };
403
404 const struct iwl_cfg_trans_params iwl_qu_long_latency_trans_cfg = {
405         .mq_rx_supported = true,
406         .use_tfh = true,
407         .rf_id = true,
408         .gen2 = true,
409         .device_family = IWL_DEVICE_FAMILY_22000,
410         .base_params = &iwl_22000_base_params,
411         .integrated = true,
412         .xtal_latency = 12000,
413         .low_latency_xtal = true,
414         .ltr_delay = IWL_CFG_TRANS_LTR_DELAY_2500US,
415 };
416
417 const struct iwl_cfg_trans_params iwl_snj_trans_cfg = {
418         .mq_rx_supported = true,
419         .use_tfh = true,
420         .rf_id = true,
421         .gen2 = true,
422         .device_family = IWL_DEVICE_FAMILY_AX210,
423         .base_params = &iwl_ax210_base_params,
424         .umac_prph_offset = 0x300000,
425 };
426
427 const struct iwl_cfg_trans_params iwl_so_trans_cfg = {
428         .mq_rx_supported = true,
429         .use_tfh = true,
430         .rf_id = true,
431         .gen2 = true,
432         .device_family = IWL_DEVICE_FAMILY_AX210,
433         .base_params = &iwl_ax210_base_params,
434         .umac_prph_offset = 0x300000,
435         .integrated = true,
436         /* TODO: the following values need to be checked */
437         .xtal_latency = 500,
438         .ltr_delay = IWL_CFG_TRANS_LTR_DELAY_200US,
439 };
440
441 const struct iwl_cfg_trans_params iwl_so_long_latency_trans_cfg = {
442         .mq_rx_supported = true,
443         .use_tfh = true,
444         .rf_id = true,
445         .gen2 = true,
446         .device_family = IWL_DEVICE_FAMILY_AX210,
447         .base_params = &iwl_ax210_base_params,
448         .umac_prph_offset = 0x300000,
449         .integrated = true,
450         .low_latency_xtal = true,
451         .xtal_latency = 12000,
452         .ltr_delay = IWL_CFG_TRANS_LTR_DELAY_2500US,
453 };
454
455 const struct iwl_cfg_trans_params iwl_so_long_latency_imr_trans_cfg = {
456         .mq_rx_supported = true,
457         .use_tfh = true,
458         .rf_id = true,
459         .gen2 = true,
460         .device_family = IWL_DEVICE_FAMILY_AX210,
461         .base_params = &iwl_ax210_base_params,
462         .umac_prph_offset = 0x300000,
463         .integrated = true,
464         .low_latency_xtal = true,
465         .xtal_latency = 12000,
466         .ltr_delay = IWL_CFG_TRANS_LTR_DELAY_2500US,
467         .imr_enabled = true,
468 };
469
470 /*
471  * If the device doesn't support HE, no need to have that many buffers.
472  * 22000 devices can split multiple frames into a single RB, so fewer are
473  * needed; AX210 cannot (but use smaller RBs by default) - these sizes
474  * were picked according to 8 MSDUs inside 256 A-MSDUs in an A-MPDU, with
475  * additional overhead to account for processing time.
476  */
477 #define IWL_NUM_RBDS_NON_HE             512
478 #define IWL_NUM_RBDS_22000_HE           2048
479 #define IWL_NUM_RBDS_AX210_HE           4096
480
481 /*
482  * All JF radio modules are part of the 9000 series, but the MAC part
483  * looks more like 22000.  That's why this device is here, but called
484  * 9560 nevertheless.
485  */
486 const struct iwl_cfg iwl9560_qu_b0_jf_b0_cfg = {
487         .fw_name_pre = IWL_QU_B_JF_B_FW_PRE,
488         IWL_DEVICE_22500,
489         .num_rbds = IWL_NUM_RBDS_NON_HE,
490 };
491
492 const struct iwl_cfg iwl9560_qu_c0_jf_b0_cfg = {
493         .fw_name_pre = IWL_QU_C_JF_B_FW_PRE,
494         IWL_DEVICE_22500,
495         .num_rbds = IWL_NUM_RBDS_NON_HE,
496 };
497
498 const struct iwl_cfg iwl9560_quz_a0_jf_b0_cfg = {
499         .fw_name_pre = IWL_QUZ_A_JF_B_FW_PRE,
500         IWL_DEVICE_22500,
501         /*
502          * This device doesn't support receiving BlockAck with a large bitmap
503          * so we need to restrict the size of transmitted aggregation to the
504          * HT size; mac80211 would otherwise pick the HE max (256) by default.
505          */
506         .max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT,
507         .num_rbds = IWL_NUM_RBDS_NON_HE,
508 };
509
510 const struct iwl_cfg iwl9560_qnj_b0_jf_b0_cfg = {
511         .fw_name_pre = IWL_QNJ_B_JF_B_FW_PRE,
512         IWL_DEVICE_22500,
513         /*
514          * This device doesn't support receiving BlockAck with a large bitmap
515          * so we need to restrict the size of transmitted aggregation to the
516          * HT size; mac80211 would otherwise pick the HE max (256) by default.
517          */
518         .max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT,
519         .num_rbds = IWL_NUM_RBDS_NON_HE,
520 };
521
522 const struct iwl_cfg_trans_params iwl_ax200_trans_cfg = {
523         .device_family = IWL_DEVICE_FAMILY_22000,
524         .base_params = &iwl_22000_base_params,
525         .mq_rx_supported = true,
526         .use_tfh = true,
527         .rf_id = true,
528         .gen2 = true,
529         .bisr_workaround = 1,
530 };
531
532 const struct iwl_cfg_trans_params iwl_ma_trans_cfg = {
533         .device_family = IWL_DEVICE_FAMILY_AX210,
534         .base_params = &iwl_ax210_base_params,
535         .mq_rx_supported = true,
536         .use_tfh = true,
537         .rf_id = true,
538         .gen2 = true,
539         .integrated = true,
540         .umac_prph_offset = 0x300000
541 };
542
543 const struct iwl_cfg_trans_params iwl_bz_trans_cfg = {
544         .device_family = IWL_DEVICE_FAMILY_BZ,
545         .base_params = &iwl_ax210_base_params,
546         .mq_rx_supported = true,
547         .use_tfh = true,
548         .rf_id = true,
549         .gen2 = true,
550         .integrated = true,
551         .umac_prph_offset = 0x300000,
552         .xtal_latency = 12000,
553         .low_latency_xtal = true,
554         .ltr_delay = IWL_CFG_TRANS_LTR_DELAY_2500US,
555 };
556
557 const char iwl_ax101_name[] = "Intel(R) Wi-Fi 6 AX101";
558 const char iwl_ax200_name[] = "Intel(R) Wi-Fi 6 AX200 160MHz";
559 const char iwl_ax201_name[] = "Intel(R) Wi-Fi 6 AX201 160MHz";
560 const char iwl_ax203_name[] = "Intel(R) Wi-Fi 6 AX203";
561 const char iwl_ax204_name[] = "Intel(R) Wi-Fi 6 AX204 160MHz";
562 const char iwl_ax211_name[] = "Intel(R) Wi-Fi 6E AX211 160MHz";
563 const char iwl_ax221_name[] = "Intel(R) Wi-Fi 6E AX221 160MHz";
564 const char iwl_ax231_name[] = "Intel(R) Wi-Fi 6E AX231 160MHz";
565 const char iwl_ax411_name[] = "Intel(R) Wi-Fi 6E AX411 160MHz";
566 const char iwl_bz_name[] = "Intel(R) TBD Bz device";
567
568 const char iwl_ax200_killer_1650w_name[] =
569         "Killer(R) Wi-Fi 6 AX1650w 160MHz Wireless Network Adapter (200D2W)";
570 const char iwl_ax200_killer_1650x_name[] =
571         "Killer(R) Wi-Fi 6 AX1650x 160MHz Wireless Network Adapter (200NGW)";
572 const char iwl_ax201_killer_1650s_name[] =
573         "Killer(R) Wi-Fi 6 AX1650s 160MHz Wireless Network Adapter (201D2W)";
574 const char iwl_ax201_killer_1650i_name[] =
575         "Killer(R) Wi-Fi 6 AX1650i 160MHz Wireless Network Adapter (201NGW)";
576 const char iwl_ax210_killer_1675w_name[] =
577         "Killer(R) Wi-Fi 6E AX1675w 160MHz Wireless Network Adapter (210D2W)";
578 const char iwl_ax210_killer_1675x_name[] =
579         "Killer(R) Wi-Fi 6E AX1675x 160MHz Wireless Network Adapter (210NGW)";
580 const char iwl_ax211_killer_1675s_name[] =
581         "Killer(R) Wi-Fi 6E AX1675s 160MHz Wireless Network Adapter (211NGW)";
582 const char iwl_ax211_killer_1675i_name[] =
583         "Killer(R) Wi-Fi 6E AX1675i 160MHz Wireless Network Adapter (211NGW)";
584 const char iwl_ax411_killer_1690s_name[] =
585         "Killer(R) Wi-Fi 6E AX1690s 160MHz Wireless Network Adapter (411D2W)";
586 const char iwl_ax411_killer_1690i_name[] =
587         "Killer(R) Wi-Fi 6E AX1690i 160MHz Wireless Network Adapter (411NGW)";
588
589 const struct iwl_cfg iwl_qu_b0_hr1_b0 = {
590         .fw_name_pre = IWL_QU_B_HR_B_FW_PRE,
591         IWL_DEVICE_22500,
592         /*
593          * This device doesn't support receiving BlockAck with a large bitmap
594          * so we need to restrict the size of transmitted aggregation to the
595          * HT size; mac80211 would otherwise pick the HE max (256) by default.
596          */
597         .max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT,
598         .tx_with_siso_diversity = true,
599         .num_rbds = IWL_NUM_RBDS_22000_HE,
600 };
601
602 const struct iwl_cfg iwl_qu_b0_hr_b0 = {
603         .fw_name_pre = IWL_QU_B_HR_B_FW_PRE,
604         IWL_DEVICE_22500,
605         /*
606          * This device doesn't support receiving BlockAck with a large bitmap
607          * so we need to restrict the size of transmitted aggregation to the
608          * HT size; mac80211 would otherwise pick the HE max (256) by default.
609          */
610         .max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT,
611         .num_rbds = IWL_NUM_RBDS_22000_HE,
612 };
613
614 const struct iwl_cfg iwl_ax201_cfg_qu_hr = {
615         .name = "Intel(R) Wi-Fi 6 AX201 160MHz",
616         .fw_name_pre = IWL_QU_B_HR_B_FW_PRE,
617         IWL_DEVICE_22500,
618         /*
619          * This device doesn't support receiving BlockAck with a large bitmap
620          * so we need to restrict the size of transmitted aggregation to the
621          * HT size; mac80211 would otherwise pick the HE max (256) by default.
622          */
623         .max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT,
624         .num_rbds = IWL_NUM_RBDS_22000_HE,
625 };
626
627 const struct iwl_cfg iwl_qu_c0_hr1_b0 = {
628         .fw_name_pre = IWL_QU_C_HR_B_FW_PRE,
629         IWL_DEVICE_22500,
630         /*
631          * This device doesn't support receiving BlockAck with a large bitmap
632          * so we need to restrict the size of transmitted aggregation to the
633          * HT size; mac80211 would otherwise pick the HE max (256) by default.
634          */
635         .max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT,
636         .tx_with_siso_diversity = true,
637         .num_rbds = IWL_NUM_RBDS_22000_HE,
638 };
639
640 const struct iwl_cfg iwl_qu_c0_hr_b0 = {
641         .fw_name_pre = IWL_QU_C_HR_B_FW_PRE,
642         IWL_DEVICE_22500,
643         /*
644          * This device doesn't support receiving BlockAck with a large bitmap
645          * so we need to restrict the size of transmitted aggregation to the
646          * HT size; mac80211 would otherwise pick the HE max (256) by default.
647          */
648         .max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT,
649         .num_rbds = IWL_NUM_RBDS_22000_HE,
650 };
651
652 const struct iwl_cfg iwl_ax201_cfg_qu_c0_hr_b0 = {
653         .name = "Intel(R) Wi-Fi 6 AX201 160MHz",
654         .fw_name_pre = IWL_QU_C_HR_B_FW_PRE,
655         IWL_DEVICE_22500,
656         /*
657          * This device doesn't support receiving BlockAck with a large bitmap
658          * so we need to restrict the size of transmitted aggregation to the
659          * HT size; mac80211 would otherwise pick the HE max (256) by default.
660          */
661         .max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT,
662         .num_rbds = IWL_NUM_RBDS_22000_HE,
663 };
664
665 const struct iwl_cfg iwl_quz_a0_hr1_b0 = {
666         .fw_name_pre = IWL_QUZ_A_HR_B_FW_PRE,
667         IWL_DEVICE_22500,
668         /*
669          * This device doesn't support receiving BlockAck with a large bitmap
670          * so we need to restrict the size of transmitted aggregation to the
671          * HT size; mac80211 would otherwise pick the HE max (256) by default.
672          */
673         .max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT,
674         .tx_with_siso_diversity = true,
675         .num_rbds = IWL_NUM_RBDS_22000_HE,
676 };
677
678 const struct iwl_cfg iwl_ax201_cfg_quz_hr = {
679         .name = "Intel(R) Wi-Fi 6 AX201 160MHz",
680         .fw_name_pre = IWL_QUZ_A_HR_B_FW_PRE,
681         IWL_DEVICE_22500,
682         /*
683          * This device doesn't support receiving BlockAck with a large bitmap
684          * so we need to restrict the size of transmitted aggregation to the
685          * HT size; mac80211 would otherwise pick the HE max (256) by default.
686          */
687         .max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT,
688         .num_rbds = IWL_NUM_RBDS_22000_HE,
689 };
690
691 const struct iwl_cfg iwl_ax1650s_cfg_quz_hr = {
692         .name = "Killer(R) Wi-Fi 6 AX1650s 160MHz Wireless Network Adapter (201D2W)",
693         .fw_name_pre = IWL_QUZ_A_HR_B_FW_PRE,
694         IWL_DEVICE_22500,
695         /*
696          * This device doesn't support receiving BlockAck with a large bitmap
697          * so we need to restrict the size of transmitted aggregation to the
698          * HT size; mac80211 would otherwise pick the HE max (256) by default.
699          */
700         .max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT,
701         .num_rbds = IWL_NUM_RBDS_22000_HE,
702 };
703
704 const struct iwl_cfg iwl_ax1650i_cfg_quz_hr = {
705         .name = "Killer(R) Wi-Fi 6 AX1650i 160MHz Wireless Network Adapter (201NGW)",
706         .fw_name_pre = IWL_QUZ_A_HR_B_FW_PRE,
707         IWL_DEVICE_22500,
708         /*
709          * This device doesn't support receiving BlockAck with a large bitmap
710          * so we need to restrict the size of transmitted aggregation to the
711          * HT size; mac80211 would otherwise pick the HE max (256) by default.
712          */
713         .max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT,
714         .num_rbds = IWL_NUM_RBDS_22000_HE,
715 };
716
717 const struct iwl_cfg iwl_ax200_cfg_cc = {
718         .fw_name_pre = IWL_CC_A_FW_PRE,
719         IWL_DEVICE_22500,
720         /*
721          * This device doesn't support receiving BlockAck with a large bitmap
722          * so we need to restrict the size of transmitted aggregation to the
723          * HT size; mac80211 would otherwise pick the HE max (256) by default.
724          */
725         .max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT,
726         .num_rbds = IWL_NUM_RBDS_22000_HE,
727 };
728
729 const struct iwl_cfg killer1650s_2ax_cfg_qu_b0_hr_b0 = {
730         .name = "Killer(R) Wi-Fi 6 AX1650s 160MHz Wireless Network Adapter (201NGW)",
731         .fw_name_pre = IWL_QU_B_HR_B_FW_PRE,
732         IWL_DEVICE_22500,
733         /*
734          * This device doesn't support receiving BlockAck with a large bitmap
735          * so we need to restrict the size of transmitted aggregation to the
736          * HT size; mac80211 would otherwise pick the HE max (256) by default.
737          */
738         .max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT,
739         .num_rbds = IWL_NUM_RBDS_22000_HE,
740 };
741
742 const struct iwl_cfg killer1650i_2ax_cfg_qu_b0_hr_b0 = {
743         .name = "Killer(R) Wi-Fi 6 AX1650i 160MHz Wireless Network Adapter (201D2W)",
744         .fw_name_pre = IWL_QU_B_HR_B_FW_PRE,
745         IWL_DEVICE_22500,
746         /*
747          * This device doesn't support receiving BlockAck with a large bitmap
748          * so we need to restrict the size of transmitted aggregation to the
749          * HT size; mac80211 would otherwise pick the HE max (256) by default.
750          */
751         .max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT,
752         .num_rbds = IWL_NUM_RBDS_22000_HE,
753 };
754
755 const struct iwl_cfg killer1650s_2ax_cfg_qu_c0_hr_b0 = {
756         .name = "Killer(R) Wi-Fi 6 AX1650s 160MHz Wireless Network Adapter (201NGW)",
757         .fw_name_pre = IWL_QU_C_HR_B_FW_PRE,
758         IWL_DEVICE_22500,
759         /*
760          * This device doesn't support receiving BlockAck with a large bitmap
761          * so we need to restrict the size of transmitted aggregation to the
762          * HT size; mac80211 would otherwise pick the HE max (256) by default.
763          */
764         .max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT,
765         .num_rbds = IWL_NUM_RBDS_22000_HE,
766 };
767
768 const struct iwl_cfg killer1650i_2ax_cfg_qu_c0_hr_b0 = {
769         .name = "Killer(R) Wi-Fi 6 AX1650i 160MHz Wireless Network Adapter (201D2W)",
770         .fw_name_pre = IWL_QU_C_HR_B_FW_PRE,
771         IWL_DEVICE_22500,
772         /*
773          * This device doesn't support receiving BlockAck with a large bitmap
774          * so we need to restrict the size of transmitted aggregation to the
775          * HT size; mac80211 would otherwise pick the HE max (256) by default.
776          */
777         .max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT,
778         .num_rbds = IWL_NUM_RBDS_22000_HE,
779 };
780
781 const struct iwl_cfg iwl_qnj_b0_hr_b0_cfg = {
782         .fw_name_pre = IWL_QNJ_B_HR_B_FW_PRE,
783         IWL_DEVICE_22500,
784         /*
785          * This device doesn't support receiving BlockAck with a large bitmap
786          * so we need to restrict the size of transmitted aggregation to the
787          * HT size; mac80211 would otherwise pick the HE max (256) by default.
788          */
789         .max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT,
790         .num_rbds = IWL_NUM_RBDS_22000_HE,
791 };
792
793 const struct iwl_cfg iwlax210_2ax_cfg_so_jf_b0 = {
794         .name = "Intel(R) Wireless-AC 9560 160MHz",
795         .fw_name_pre = IWL_SO_A_JF_B_FW_PRE,
796         IWL_DEVICE_AX210,
797         .num_rbds = IWL_NUM_RBDS_NON_HE,
798 };
799
800 const struct iwl_cfg iwlax211_2ax_cfg_so_gf_a0 = {
801         .name = iwl_ax211_name,
802         .fw_name_pre = IWL_SO_A_GF_A_FW_PRE,
803         .uhb_supported = true,
804         IWL_DEVICE_AX210,
805         .num_rbds = IWL_NUM_RBDS_AX210_HE,
806 };
807
808 const struct iwl_cfg iwlax211_2ax_cfg_so_gf_a0_long = {
809         .name = iwl_ax211_name,
810         .fw_name_pre = IWL_SO_A_GF_A_FW_PRE,
811         .uhb_supported = true,
812         IWL_DEVICE_AX210,
813         .num_rbds = IWL_NUM_RBDS_AX210_HE,
814         .trans.xtal_latency = 12000,
815         .trans.low_latency_xtal = true,
816 };
817
818 const struct iwl_cfg iwlax210_2ax_cfg_ty_gf_a0 = {
819         .name = "Intel(R) Wi-Fi 6 AX210 160MHz",
820         .fw_name_pre = IWL_TY_A_GF_A_FW_PRE,
821         .uhb_supported = true,
822         IWL_DEVICE_AX210,
823         .num_rbds = IWL_NUM_RBDS_AX210_HE,
824 };
825
826 const struct iwl_cfg iwlax411_2ax_cfg_so_gf4_a0 = {
827         .name = iwl_ax411_name,
828         .fw_name_pre = IWL_SO_A_GF4_A_FW_PRE,
829         .uhb_supported = true,
830         IWL_DEVICE_AX210,
831         .num_rbds = IWL_NUM_RBDS_AX210_HE,
832 };
833
834 const struct iwl_cfg iwlax411_2ax_cfg_so_gf4_a0_long = {
835         .name = iwl_ax411_name,
836         .fw_name_pre = IWL_SO_A_GF4_A_FW_PRE,
837         .uhb_supported = true,
838         IWL_DEVICE_AX210,
839         .num_rbds = IWL_NUM_RBDS_AX210_HE,
840         .trans.xtal_latency = 12000,
841         .trans.low_latency_xtal = true,
842 };
843
844 const struct iwl_cfg iwlax411_2ax_cfg_sosnj_gf4_a0 = {
845         .name = iwl_ax411_name,
846         .fw_name_pre = IWL_SNJ_A_GF4_A_FW_PRE,
847         .uhb_supported = true,
848         IWL_DEVICE_AX210,
849         .num_rbds = IWL_NUM_RBDS_AX210_HE,
850 };
851
852 const struct iwl_cfg iwlax211_cfg_snj_gf_a0 = {
853         .name = iwl_ax211_name,
854         .fw_name_pre = IWL_SNJ_A_GF_A_FW_PRE,
855         .uhb_supported = true,
856         IWL_DEVICE_AX210,
857         .num_rbds = IWL_NUM_RBDS_AX210_HE,
858 };
859
860 const struct iwl_cfg iwl_cfg_snj_hr_b0 = {
861         .fw_name_pre = IWL_SNJ_A_HR_B_FW_PRE,
862         .uhb_supported = true,
863         IWL_DEVICE_AX210,
864         .num_rbds = IWL_NUM_RBDS_AX210_HE,
865 };
866
867 const struct iwl_cfg iwl_cfg_snj_a0_jf_b0 = {
868         .fw_name_pre = IWL_SNJ_A_JF_B_FW_PRE,
869         .uhb_supported = true,
870         IWL_DEVICE_AX210,
871         .num_rbds = IWL_NUM_RBDS_AX210_HE,
872 };
873
874 const struct iwl_cfg iwl_cfg_ma_a0_hr_b0 = {
875         .fw_name_pre = IWL_MA_A_HR_B_FW_PRE,
876         .uhb_supported = true,
877         IWL_DEVICE_AX210,
878         .num_rbds = IWL_NUM_RBDS_AX210_HE,
879 };
880
881 const struct iwl_cfg iwl_cfg_ma_a0_gf_a0 = {
882         .fw_name_pre = IWL_MA_A_GF_A_FW_PRE,
883         .uhb_supported = true,
884         IWL_DEVICE_AX210,
885         .num_rbds = IWL_NUM_RBDS_AX210_HE,
886 };
887
888 const struct iwl_cfg iwl_cfg_ma_a0_gf4_a0 = {
889         .fw_name_pre = IWL_MA_A_GF4_A_FW_PRE,
890         .uhb_supported = true,
891         IWL_DEVICE_AX210,
892         .num_rbds = IWL_NUM_RBDS_AX210_HE,
893 };
894
895 const struct iwl_cfg iwl_cfg_ma_a0_mr_a0 = {
896         .fw_name_pre = IWL_MA_A_MR_A_FW_PRE,
897         .uhb_supported = true,
898         IWL_DEVICE_AX210,
899         .num_rbds = IWL_NUM_RBDS_AX210_HE,
900 };
901
902 const struct iwl_cfg iwl_cfg_ma_a0_ms_a0 = {
903         .fw_name_pre = IWL_MA_A_MR_A_FW_PRE,
904         .uhb_supported = false,
905         IWL_DEVICE_AX210,
906         .num_rbds = IWL_NUM_RBDS_AX210_HE,
907 };
908
909 const struct iwl_cfg iwl_cfg_ma_b0_fm_a0 = {
910         .fw_name_pre = IWL_MA_B_FM_A_FW_PRE,
911         .uhb_supported = true,
912         IWL_DEVICE_AX210,
913         .num_rbds = IWL_NUM_RBDS_AX210_HE,
914 };
915
916 const struct iwl_cfg iwl_cfg_ma_b0_hr_b0 = {
917         .fw_name_pre = IWL_MA_B_HR_B_FW_PRE,
918         .uhb_supported = true,
919         IWL_DEVICE_AX210,
920         .num_rbds = IWL_NUM_RBDS_AX210_HE,
921 };
922
923 const struct iwl_cfg iwl_cfg_ma_b0_gf_a0 = {
924         .fw_name_pre = IWL_MA_B_GF_A_FW_PRE,
925         .uhb_supported = true,
926         IWL_DEVICE_AX210,
927         .num_rbds = IWL_NUM_RBDS_AX210_HE,
928 };
929
930 const struct iwl_cfg iwl_cfg_ma_b0_gf4_a0 = {
931         .fw_name_pre = IWL_MA_B_GF4_A_FW_PRE,
932         .uhb_supported = true,
933         IWL_DEVICE_AX210,
934         .num_rbds = IWL_NUM_RBDS_AX210_HE,
935 };
936
937 const struct iwl_cfg iwl_cfg_ma_b0_mr_a0 = {
938         .fw_name_pre = IWL_MA_B_MR_A_FW_PRE,
939         .uhb_supported = true,
940         IWL_DEVICE_AX210,
941         .num_rbds = IWL_NUM_RBDS_AX210_HE,
942 };
943
944 const struct iwl_cfg iwl_cfg_so_a0_ms_a0 = {
945         .fw_name_pre = IWL_SO_A_MR_A_FW_PRE,
946         .uhb_supported = false,
947         IWL_DEVICE_AX210,
948         .num_rbds = IWL_NUM_RBDS_AX210_HE,
949 };
950
951 const struct iwl_cfg iwl_cfg_ma_a0_fm_a0 = {
952         .fw_name_pre = IWL_MA_A_FM_A_FW_PRE,
953         .uhb_supported = true,
954         IWL_DEVICE_AX210,
955         .num_rbds = IWL_NUM_RBDS_AX210_HE,
956 };
957
958 const struct iwl_cfg iwl_cfg_snj_a0_mr_a0 = {
959         .fw_name_pre = IWL_SNJ_A_MR_A_FW_PRE,
960         .uhb_supported = true,
961         IWL_DEVICE_AX210,
962         .num_rbds = IWL_NUM_RBDS_AX210_HE,
963 };
964
965 const struct iwl_cfg iwl_cfg_snj_a0_ms_a0 = {
966         .fw_name_pre = IWL_SNJ_A_MR_A_FW_PRE,
967         .uhb_supported = false,
968         IWL_DEVICE_AX210,
969         .num_rbds = IWL_NUM_RBDS_AX210_HE,
970 };
971
972 const struct iwl_cfg iwl_cfg_so_a0_hr_a0 = {
973         .fw_name_pre = IWL_SO_A_HR_B_FW_PRE,
974         IWL_DEVICE_AX210,
975         .num_rbds = IWL_NUM_RBDS_AX210_HE,
976 };
977
978 const struct iwl_cfg iwl_cfg_quz_a0_hr_b0 = {
979         .fw_name_pre = IWL_QUZ_A_HR_B_FW_PRE,
980         IWL_DEVICE_22500,
981         /*
982          * This device doesn't support receiving BlockAck with a large bitmap
983          * so we need to restrict the size of transmitted aggregation to the
984          * HT size; mac80211 would otherwise pick the HE max (256) by default.
985          */
986         .max_tx_agg_size = IEEE80211_MAX_AMPDU_BUF_HT,
987         .num_rbds = IWL_NUM_RBDS_22000_HE,
988 };
989
990 const struct iwl_cfg iwl_cfg_bz_a0_hr_a0 = {
991         .fw_name_pre = IWL_BZ_A_HR_A_FW_PRE,
992         .uhb_supported = true,
993         IWL_DEVICE_BZ,
994         .features = IWL_TX_CSUM_NETIF_FLAGS_BZ | NETIF_F_RXCSUM,
995         .num_rbds = IWL_NUM_RBDS_AX210_HE,
996 };
997
998 const struct iwl_cfg iwl_cfg_bz_a0_hr_b0 = {
999         .fw_name_pre = IWL_BZ_A_HR_B_FW_PRE,
1000         .uhb_supported = true,
1001         IWL_DEVICE_BZ,
1002         .features = IWL_TX_CSUM_NETIF_FLAGS_BZ | NETIF_F_RXCSUM,
1003         .num_rbds = IWL_NUM_RBDS_AX210_HE,
1004 };
1005
1006 const struct iwl_cfg iwl_cfg_bz_a0_gf_a0 = {
1007         .fw_name_pre = IWL_BZ_A_GF_A_FW_PRE,
1008         .uhb_supported = true,
1009         IWL_DEVICE_BZ,
1010         .features = IWL_TX_CSUM_NETIF_FLAGS_BZ | NETIF_F_RXCSUM,
1011         .num_rbds = IWL_NUM_RBDS_AX210_HE,
1012 };
1013
1014 const struct iwl_cfg iwl_cfg_bz_a0_gf4_a0 = {
1015         .fw_name_pre = IWL_BZ_A_GF4_A_FW_PRE,
1016         .uhb_supported = true,
1017         IWL_DEVICE_BZ,
1018         .features = IWL_TX_CSUM_NETIF_FLAGS_BZ | NETIF_F_RXCSUM,
1019         .num_rbds = IWL_NUM_RBDS_AX210_HE,
1020 };
1021
1022 const struct iwl_cfg iwl_cfg_bz_a0_mr_a0 = {
1023         .fw_name_pre = IWL_BZ_A_MR_A_FW_PRE,
1024         .uhb_supported = true,
1025         IWL_DEVICE_BZ,
1026         .features = IWL_TX_CSUM_NETIF_FLAGS_BZ | NETIF_F_RXCSUM,
1027         .num_rbds = IWL_NUM_RBDS_AX210_HE,
1028 };
1029
1030 const struct iwl_cfg iwl_cfg_bz_a0_fm_a0 = {
1031         .fw_name_pre = IWL_BZ_A_FM_A_FW_PRE,
1032         .uhb_supported = true,
1033         IWL_DEVICE_BZ,
1034         .features = IWL_TX_CSUM_NETIF_FLAGS_BZ | NETIF_F_RXCSUM,
1035         .num_rbds = IWL_NUM_RBDS_AX210_HE,
1036 };
1037
1038 const struct iwl_cfg iwl_cfg_bz_a0_fm4_a0 = {
1039         .fw_name_pre = IWL_BZ_A_FM4_A_FW_PRE,
1040         .uhb_supported = true,
1041         IWL_DEVICE_BZ,
1042         .features = IWL_TX_CSUM_NETIF_FLAGS_BZ | NETIF_F_RXCSUM,
1043         .num_rbds = IWL_NUM_RBDS_AX210_HE,
1044 };
1045
1046 const struct iwl_cfg iwl_cfg_bz_a0_fm_b0 = {
1047         .fw_name_pre = IWL_BZ_A_FM_B_FW_PRE,
1048         .uhb_supported = true,
1049         IWL_DEVICE_BZ,
1050         .features = IWL_TX_CSUM_NETIF_FLAGS_BZ | NETIF_F_RXCSUM,
1051         .num_rbds = IWL_NUM_RBDS_AX210_HE,
1052 };
1053
1054 const struct iwl_cfg iwl_cfg_bz_a0_fm4_b0 = {
1055         .fw_name_pre = IWL_BZ_A_FM4_B_FW_PRE,
1056         .uhb_supported = true,
1057         IWL_DEVICE_BZ,
1058         .features = IWL_TX_CSUM_NETIF_FLAGS_BZ | NETIF_F_RXCSUM,
1059         .num_rbds = IWL_NUM_RBDS_AX210_HE,
1060 };
1061
1062 const struct iwl_cfg iwl_cfg_gl_a0_fm_a0 = {
1063         .fw_name_pre = IWL_GL_A_FM_A_FW_PRE,
1064         .uhb_supported = true,
1065         IWL_DEVICE_GL_A,
1066         .features = IWL_TX_CSUM_NETIF_FLAGS | NETIF_F_RXCSUM,
1067         .num_rbds = IWL_NUM_RBDS_AX210_HE,
1068 };
1069
1070 const struct iwl_cfg iwl_cfg_gl_b0_fm_b0 = {
1071         .fw_name_pre = IWL_GL_B_FM_B_FW_PRE,
1072         .uhb_supported = true,
1073         IWL_DEVICE_BZ,
1074         .features = IWL_TX_CSUM_NETIF_FLAGS_BZ | NETIF_F_RXCSUM,
1075         .num_rbds = IWL_NUM_RBDS_AX210_HE,
1076 };
1077
1078 const struct iwl_cfg iwl_cfg_bz_z0_gf_a0 = {
1079         .fw_name_pre = IWL_BZ_Z_GF_A_FW_PRE,
1080         .uhb_supported = true,
1081         IWL_DEVICE_BZ,
1082         .features = IWL_TX_CSUM_NETIF_FLAGS_BZ | NETIF_F_RXCSUM,
1083         .num_rbds = IWL_NUM_RBDS_AX210_HE,
1084 };
1085
1086 const struct iwl_cfg iwl_cfg_bnj_a0_fm_a0 = {
1087         .fw_name_pre = IWL_BNJ_A_FM_A_FW_PRE,
1088         .uhb_supported = true,
1089         IWL_DEVICE_BZ,
1090         .features = IWL_TX_CSUM_NETIF_FLAGS | NETIF_F_RXCSUM,
1091         .num_rbds = IWL_NUM_RBDS_AX210_HE,
1092 };
1093
1094 const struct iwl_cfg iwl_cfg_bnj_a0_fm4_a0 = {
1095         .fw_name_pre = IWL_BNJ_A_FM4_A_FW_PRE,
1096         .uhb_supported = true,
1097         IWL_DEVICE_BZ,
1098         .features = IWL_TX_CSUM_NETIF_FLAGS | NETIF_F_RXCSUM,
1099         .num_rbds = IWL_NUM_RBDS_AX210_HE,
1100 };
1101
1102 const struct iwl_cfg iwl_cfg_bnj_b0_fm4_b0 = {
1103         .fw_name_pre = IWL_BNJ_B_FM4_B_FW_PRE,
1104         .uhb_supported = true,
1105         IWL_DEVICE_BZ,
1106         .features = IWL_TX_CSUM_NETIF_FLAGS | NETIF_F_RXCSUM,
1107         .num_rbds = IWL_NUM_RBDS_AX210_HE,
1108 };
1109
1110 const struct iwl_cfg iwl_cfg_bnj_a0_gf_a0 = {
1111         .fw_name_pre = IWL_BNJ_A_GF_A_FW_PRE,
1112         .uhb_supported = true,
1113         IWL_DEVICE_BZ,
1114         .features = IWL_TX_CSUM_NETIF_FLAGS | NETIF_F_RXCSUM,
1115         .num_rbds = IWL_NUM_RBDS_AX210_HE,
1116 };
1117
1118 const struct iwl_cfg iwl_cfg_bnj_b0_gf_a0 = {
1119         .fw_name_pre = IWL_BNJ_B_GF_A_FW_PRE,
1120         .uhb_supported = true,
1121         IWL_DEVICE_BZ,
1122         .features = IWL_TX_CSUM_NETIF_FLAGS | NETIF_F_RXCSUM,
1123         .num_rbds = IWL_NUM_RBDS_AX210_HE,
1124 };
1125
1126 const struct iwl_cfg iwl_cfg_bnj_a0_gf4_a0 = {
1127         .fw_name_pre = IWL_BNJ_A_GF4_A_FW_PRE,
1128         .uhb_supported = true,
1129         IWL_DEVICE_BZ,
1130         .features = IWL_TX_CSUM_NETIF_FLAGS | NETIF_F_RXCSUM,
1131         .num_rbds = IWL_NUM_RBDS_AX210_HE,
1132 };
1133
1134 const struct iwl_cfg iwl_cfg_bnj_b0_gf4_a0 = {
1135         .fw_name_pre = IWL_BNJ_B_GF4_A_FW_PRE,
1136         .uhb_supported = true,
1137         IWL_DEVICE_BZ,
1138         .features = IWL_TX_CSUM_NETIF_FLAGS | NETIF_F_RXCSUM,
1139         .num_rbds = IWL_NUM_RBDS_AX210_HE,
1140 };
1141
1142 const struct iwl_cfg iwl_cfg_bnj_a0_hr_a0 = {
1143         .fw_name_pre = IWL_BNJ_A_HR_A_FW_PRE,
1144         .uhb_supported = true,
1145         IWL_DEVICE_BZ,
1146         .features = IWL_TX_CSUM_NETIF_FLAGS | NETIF_F_RXCSUM,
1147         .num_rbds = IWL_NUM_RBDS_AX210_HE,
1148 };
1149
1150 const struct iwl_cfg iwl_cfg_bnj_a0_hr_b0 = {
1151         .fw_name_pre = IWL_BNJ_A_HR_B_FW_PRE,
1152         .uhb_supported = true,
1153         IWL_DEVICE_BZ,
1154         .features = IWL_TX_CSUM_NETIF_FLAGS | NETIF_F_RXCSUM,
1155         .num_rbds = IWL_NUM_RBDS_AX210_HE,
1156 };
1157
1158 const struct iwl_cfg iwl_cfg_bnj_b0_hr_a0 = {
1159         .fw_name_pre = IWL_BNJ_B_HR_A_FW_PRE,
1160         .uhb_supported = true,
1161         IWL_DEVICE_BZ,
1162         .features = IWL_TX_CSUM_NETIF_FLAGS | NETIF_F_RXCSUM,
1163         .num_rbds = IWL_NUM_RBDS_AX210_HE,
1164 };
1165
1166 const struct iwl_cfg iwl_cfg_bnj_b0_hr_b0 = {
1167         .fw_name_pre = IWL_BNJ_B_HR_B_FW_PRE,
1168         .uhb_supported = true,
1169         IWL_DEVICE_BZ,
1170         .features = IWL_TX_CSUM_NETIF_FLAGS | NETIF_F_RXCSUM,
1171         .num_rbds = IWL_NUM_RBDS_AX210_HE,
1172 };
1173
1174 const struct iwl_cfg iwl_cfg_bnj_b0_fm_b0 = {
1175         .fw_name_pre = IWL_BNJ_B_FM_B_FW_PRE,
1176         .uhb_supported = true,
1177         IWL_DEVICE_BZ,
1178         .features = IWL_TX_CSUM_NETIF_FLAGS_BZ | NETIF_F_RXCSUM,
1179         .num_rbds = IWL_NUM_RBDS_AX210_HE,
1180 };
1181 MODULE_FIRMWARE(IWL_QU_B_HR_B_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX));
1182 MODULE_FIRMWARE(IWL_QNJ_B_HR_B_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX));
1183 MODULE_FIRMWARE(IWL_QU_C_HR_B_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX));
1184 MODULE_FIRMWARE(IWL_QU_B_JF_B_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX));
1185 MODULE_FIRMWARE(IWL_QUZ_A_HR_B_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX));
1186 MODULE_FIRMWARE(IWL_QUZ_A_JF_B_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX));
1187 MODULE_FIRMWARE(IWL_QNJ_B_JF_B_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX));
1188 MODULE_FIRMWARE(IWL_CC_A_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX));
1189 MODULE_FIRMWARE(IWL_SO_A_JF_B_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX));
1190 MODULE_FIRMWARE(IWL_SO_A_HR_B_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX));
1191 MODULE_FIRMWARE(IWL_SO_A_GF_A_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX));
1192 MODULE_FIRMWARE(IWL_TY_A_GF_A_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX));
1193 MODULE_FIRMWARE(IWL_SNJ_A_GF4_A_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX));
1194 MODULE_FIRMWARE(IWL_SNJ_A_GF_A_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX));
1195 MODULE_FIRMWARE(IWL_SNJ_A_HR_B_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX));
1196 MODULE_FIRMWARE(IWL_SNJ_A_JF_B_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX));
1197 MODULE_FIRMWARE(IWL_MA_A_HR_B_FW_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX));
1198 MODULE_FIRMWARE(IWL_MA_A_GF_A_FW_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX));
1199 MODULE_FIRMWARE(IWL_MA_A_GF4_A_FW_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX));
1200 MODULE_FIRMWARE(IWL_MA_A_MR_A_FW_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX));
1201 MODULE_FIRMWARE(IWL_MA_A_FM_A_FW_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX));
1202 MODULE_FIRMWARE(IWL_MA_B_HR_B_FW_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX));
1203 MODULE_FIRMWARE(IWL_MA_B_GF_A_FW_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX));
1204 MODULE_FIRMWARE(IWL_MA_B_GF4_A_FW_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX));
1205 MODULE_FIRMWARE(IWL_MA_B_MR_A_FW_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX));
1206 MODULE_FIRMWARE(IWL_MA_B_FM_A_FW_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX));
1207 MODULE_FIRMWARE(IWL_SNJ_A_MR_A_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX));
1208 MODULE_FIRMWARE(IWL_BZ_A_HR_A_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX));
1209 MODULE_FIRMWARE(IWL_BZ_A_HR_B_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX));
1210 MODULE_FIRMWARE(IWL_BZ_A_GF_A_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX));
1211 MODULE_FIRMWARE(IWL_BZ_A_GF4_A_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX));
1212 MODULE_FIRMWARE(IWL_BZ_A_MR_A_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX));
1213 MODULE_FIRMWARE(IWL_BZ_A_FM_A_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX));
1214 MODULE_FIRMWARE(IWL_BZ_A_FM_B_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX));
1215 MODULE_FIRMWARE(IWL_GL_A_FM_A_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX));
1216 MODULE_FIRMWARE(IWL_BNJ_A_FM_A_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX));
1217 MODULE_FIRMWARE(IWL_BNJ_A_FM4_A_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX));
1218 MODULE_FIRMWARE(IWL_BNJ_B_FM4_B_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX));
1219 MODULE_FIRMWARE(IWL_BNJ_A_GF_A_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX));
1220 MODULE_FIRMWARE(IWL_BNJ_B_GF_A_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX));
1221 MODULE_FIRMWARE(IWL_BNJ_A_GF4_A_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX));
1222 MODULE_FIRMWARE(IWL_BNJ_B_GF4_A_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX));
1223 MODULE_FIRMWARE(IWL_BNJ_A_HR_B_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX));
1224 MODULE_FIRMWARE(IWL_BNJ_B_HR_A_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX));
1225 MODULE_FIRMWARE(IWL_BNJ_B_HR_B_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX));
1226 MODULE_FIRMWARE(IWL_BZ_A_FM4_A_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX));
1227 MODULE_FIRMWARE(IWL_BZ_A_FM4_B_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX));
1228 MODULE_FIRMWARE(IWL_GL_B_FM_B_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX));
1229 MODULE_FIRMWARE(IWL_BNJ_B_FM_B_MODULE_FIRMWARE(IWL_22000_UCODE_API_MAX));