1 /******************************************************************************
2 *
3 * Copyright(c) 2007 - 2017 Realtek Corporation.
4 *
5 * This program is free software; you can redistribute it and/or modify it
6 * under the terms of version 2 of the GNU General Public License as
7 * published by the Free Software Foundation.
8 *
9 * This program is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
12 * more details.
13 *
14 *****************************************************************************/
15
16 /*Image2HeaderVersion: 3.5.2*/
17 #include "mp_precomp.h"
18 #include "../phydm_precomp.h"
19
20 #if (RTL8723D_SUPPORT == 1)
21 static boolean
check_positive(struct dm_struct * dm,const u32 condition1,const u32 condition2,const u32 condition3,const u32 condition4)22 check_positive(
23 struct dm_struct *dm,
24 const u32 condition1,
25 const u32 condition2,
26 const u32 condition3,
27 const u32 condition4
28 )
29 {
30 u8 _board_type = ((dm->board_type & BIT(4)) >> 4) << 0 | /* _GLNA*/
31 ((dm->board_type & BIT(3)) >> 3) << 1 | /* _GPA*/
32 ((dm->board_type & BIT(7)) >> 7) << 2 | /* _ALNA*/
33 ((dm->board_type & BIT(6)) >> 6) << 3 | /* _APA */
34 ((dm->board_type & BIT(2)) >> 2) << 4 | /* _BT*/
35 ((dm->board_type & BIT(1)) >> 1) << 5 | /* _NGFF*/
36 ((dm->board_type & BIT(5)) >> 5) << 6; /* _TRSWT*/
37
38 u32 cond1 = condition1, cond2 = condition2, cond3 = condition3, cond4 = condition4;
39
40 u8 cut_version_for_para = (dm->cut_version == ODM_CUT_A) ? 15 : dm->cut_version;
41 u8 pkg_type_for_para = (dm->package_type == 0) ? 15 : dm->package_type;
42
43 u32 driver1 = cut_version_for_para << 24 |
44 (dm->support_interface & 0xF0) << 16 |
45 dm->support_platform << 16 |
46 pkg_type_for_para << 12 |
47 (dm->support_interface & 0x0F) << 8 |
48 _board_type;
49
50 u32 driver2 = (dm->type_glna & 0xFF) << 0 |
51 (dm->type_gpa & 0xFF) << 8 |
52 (dm->type_alna & 0xFF) << 16 |
53 (dm->type_apa & 0xFF) << 24;
54
55 u32 driver3 = 0;
56
57 u32 driver4 = (dm->type_glna & 0xFF00) >> 8 |
58 (dm->type_gpa & 0xFF00) |
59 (dm->type_alna & 0xFF00) << 8 |
60 (dm->type_apa & 0xFF00) << 16;
61
62 PHYDM_DBG(dm, ODM_COMP_INIT,
63 "===> %s (cond1, cond2, cond3, cond4) = (0x%X 0x%X 0x%X 0x%X)\n",
64 __func__, cond1, cond2, cond3, cond4);
65 PHYDM_DBG(dm, ODM_COMP_INIT,
66 "===> %s (driver1, driver2, driver3, driver4) = (0x%X 0x%X 0x%X 0x%X)\n",
67 __func__, driver1, driver2, driver3, driver4);
68
69 PHYDM_DBG(dm, ODM_COMP_INIT,
70 " (Platform, Interface) = (0x%X, 0x%X)\n",
71 dm->support_platform, dm->support_interface);
72 PHYDM_DBG(dm, ODM_COMP_INIT,
73 " (Board, Package) = (0x%X, 0x%X)\n", dm->board_type,
74 dm->package_type);
75
76
77 /*============== value Defined Check ===============*/
78 /*QFN type [15:12] and cut version [27:24] need to do value check*/
79
80 if (((cond1 & 0x0000F000) != 0) && ((cond1 & 0x0000F000) != (driver1 & 0x0000F000)))
81 return false;
82 if (((cond1 & 0x0F000000) != 0) && ((cond1 & 0x0F000000) != (driver1 & 0x0F000000)))
83 return false;
84
85 /*=============== Bit Defined Check ================*/
86 /* We don't care [31:28] */
87
88 cond1 &= 0x00FF0FFF;
89 driver1 &= 0x00FF0FFF;
90
91 if ((cond1 & driver1) == cond1) {
92 u32 bit_mask = 0;
93
94 if ((cond1 & 0x0F) == 0) /* board_type is DONTCARE*/
95 return true;
96
97 if ((cond1 & BIT(0)) != 0) /*GLNA*/
98 bit_mask |= 0x000000FF;
99 if ((cond1 & BIT(1)) != 0) /*GPA*/
100 bit_mask |= 0x0000FF00;
101 if ((cond1 & BIT(2)) != 0) /*ALNA*/
102 bit_mask |= 0x00FF0000;
103 if ((cond1 & BIT(3)) != 0) /*APA*/
104 bit_mask |= 0xFF000000;
105
106 if (((cond2 & bit_mask) == (driver2 & bit_mask)) && ((cond4 & bit_mask) == (driver4 & bit_mask))) /* board_type of each RF path is matched*/
107 return true;
108 else
109 return false;
110 } else
111 return false;
112 }
113
114 /******************************************************************************
115 * radioa.TXT
116 ******************************************************************************/
117
118 u32 array_mp_8723d_radioa[] = {
119 0x050, 0x0001C000,
120 0x049, 0x0004AA00,
121 0x000, 0x00010000,
122 0x0B1, 0x00054573,
123 0x0B4, 0x000508AB,
124 0x0B7, 0x00014787,
125 0x0B8, 0x000064CB,
126 0x01B, 0x00073A40,
127 0x051, 0x00038CAF,
128 0x052, 0x000FCCA3,
129 0x053, 0x00090F38,
130 0x054, 0x00011083,
131 0x057, 0x000D0000,
132 0x08D, 0x00000A1A,
133 0x082, 0x00082AAC,
134 0x08E, 0x00076940,
135 0x08F, 0x00088400,
136 0x061, 0x00038CAF,
137 0x062, 0x000FCCA3,
138 0x063, 0x00090F38,
139 0x064, 0x00011083,
140 0x067, 0x000D0000,
141 0x092, 0x00082AAC,
142 0x0EF, 0x00000400,
143 0x030, 0x000008CA,
144 0x030, 0x000018CA,
145 0x030, 0x000028CA,
146 0x030, 0x000038CA,
147 0x0EF, 0x00000000,
148 0x0EE, 0x00000400,
149 0x030, 0x000008CA,
150 0x030, 0x000018CA,
151 0x030, 0x000028CA,
152 0x030, 0x000038CA,
153 0x0EE, 0x00000000,
154 0x0EF, 0x00000100,
155 0x033, 0x00000000,
156 0x03F, 0x0000CCA3,
157 0x033, 0x00000001,
158 0x03F, 0x0000CCA3,
159 0x033, 0x00000002,
160 0x03F, 0x0000CCA3,
161 0x033, 0x00000003,
162 0x03F, 0x0000CCA3,
163 0x033, 0x00000004,
164 0x03F, 0x0000CCA3,
165 0x033, 0x00000005,
166 0x03F, 0x0000CCA3,
167 0x033, 0x00000006,
168 0x03F, 0x0000CCA3,
169 0x033, 0x00000007,
170 0x03F, 0x0000CCA3,
171 0x0EF, 0x00000000,
172 0x0EE, 0x00000100,
173 0x033, 0x00000000,
174 0x03F, 0x0000CCA3,
175 0x033, 0x00000001,
176 0x03F, 0x0000CCA3,
177 0x033, 0x00000002,
178 0x03F, 0x0000CCA3,
179 0x033, 0x00000003,
180 0x03F, 0x0000CCA3,
181 0x033, 0x00000004,
182 0x03F, 0x0000CCA3,
183 0x033, 0x00000005,
184 0x03F, 0x0000CCA3,
185 0x033, 0x00000006,
186 0x03F, 0x0000CCA3,
187 0x033, 0x00000007,
188 0x03F, 0x0000CCA3,
189 0x0EE, 0x00000000,
190 0x0EF, 0x00000800,
191 0x030, 0x0000002D,
192 0x030, 0x0000122C,
193 0x030, 0x0000222F,
194 0x030, 0x0000326C,
195 0x030, 0x0000466B,
196 0x030, 0x0000566E,
197 0x030, 0x000066EB,
198 0x030, 0x000077EC,
199 0x030, 0x000087EF,
200 0x030, 0x000097F2,
201 0x030, 0x0000A7F5,
202 0x0EF, 0x00000000,
203 0x0EE, 0x00000800,
204 0x030, 0x00000001,
205 0x030, 0x00001011,
206 0x030, 0x00002011,
207 0x030, 0x00003013,
208 0x030, 0x00004033,
209 0x030, 0x00005033,
210 0x030, 0x00006037,
211 0x030, 0x0000703F,
212 0x030, 0x0000803F,
213 0x030, 0x0000903F,
214 0x030, 0x0000A03F,
215 0x0EE, 0x00000000,
216 0x082, 0x00083B8C,
217 0x0ED, 0x00000008,
218 0x030, 0x000030F6,
219 0x030, 0x00002004,
220 0x030, 0x000010F6,
221 0x030, 0x000000F6,
222 0x0ED, 0x00000000,
223 0x092, 0x00083B8C,
224 0x0EC, 0x00000008,
225 0x030, 0x000030F6,
226 0x030, 0x00002004,
227 0x030, 0x000010F6,
228 0x030, 0x000000F6,
229 0x0EC, 0x00000000,
230 0x0EF, 0x00010000,
231 0x030, 0x0001C11C,
232 0x030, 0x000181F4,
233 0x030, 0x00014108,
234 0x030, 0x000101E4,
235 0x030, 0x0000C11C,
236 0x030, 0x000081F4,
237 0x030, 0x00004108,
238 0x030, 0x000001E4,
239 0x0EF, 0x00000000,
240 0x0EE, 0x00010000,
241 0x030, 0x0001C11C,
242 0x030, 0x000181F4,
243 0x030, 0x00014108,
244 0x030, 0x000101E4,
245 0x030, 0x0000C11C,
246 0x030, 0x000081F4,
247 0x030, 0x00004108,
248 0x030, 0x000001E4,
249 0x0EE, 0x00000000,
250 0x0EF, 0x00080000,
251 0x033, 0x00000007,
252 0x03E, 0x0000005F,
253 0x03F, 0x000B3FDB,
254 0x033, 0x00000004,
255 0x03E, 0x0000005D,
256 0x03F, 0x000BFFE0,
257 0x033, 0x00000005,
258 0x03E, 0x0000005D,
259 0x03F, 0x000FBFCE,
260 0x033, 0x00000006,
261 0x03E, 0x0000005F,
262 0x03F, 0x000A7FFB,
263 0x0EF, 0x00000000,
264 0x0EE, 0x00000002,
265 0x030, 0x00000001,
266 0x030, 0x00002001,
267 0x030, 0x00004001,
268 0x030, 0x00007001,
269 0x030, 0x00006001,
270 0x030, 0x00020001,
271 0x030, 0x00022001,
272 0x030, 0x00024001,
273 0x030, 0x00027001,
274 0x030, 0x00026001,
275 0x030, 0x00034001,
276 0x030, 0x00037001,
277 0x030, 0x00036001,
278 0x030, 0x00008000,
279 0x030, 0x0000A000,
280 0x030, 0x0000C000,
281 0x83000100, 0x00000000, 0x40000000, 0x00000000,
282 0x030, 0x0000E024,
283 0xA0000000, 0x00000000,
284 0x030, 0x0000E000,
285 0xB0000000, 0x00000000,
286 0x030, 0x0001C000,
287 0x030, 0x0001E000,
288 0x0EE, 0x00000000,
289 0x0EE, 0x00020000,
290 0x0EF, 0x00020000,
291 0x030, 0x00000F75,
292 0x030, 0x00002F55,
293 0x030, 0x00003F75,
294 0x0EE, 0x00000000,
295 0x0EF, 0x00000000,
296 0x018, 0x00008401,
297 0xFFE, 0x00000000,
298
299 };
300
301 void
odm_read_and_config_mp_8723d_radioa(struct dm_struct * dm)302 odm_read_and_config_mp_8723d_radioa(struct dm_struct *dm)
303 {
304 u32 i = 0;
305 u8 c_cond;
306 boolean is_matched = true, is_skipped = false;
307 u32 array_len = sizeof(array_mp_8723d_radioa) / sizeof(u32);
308 u32 *array = array_mp_8723d_radioa;
309
310 u32 v1 = 0, v2 = 0, pre_v1 = 0, pre_v2 = 0;
311
312 PHYDM_DBG(dm, ODM_COMP_INIT, "===> %s\n", __func__);
313
314 while ((i + 1) < array_len) {
315 v1 = array[i];
316 v2 = array[i + 1];
317
318 if (v1 & (BIT(31) | BIT(30))) {/*positive & negative condition*/
319 if (v1 & BIT(31)) {/* positive condition*/
320 c_cond = (u8)((v1 & (BIT(29) | BIT(28))) >> 28);
321 if (c_cond == COND_ENDIF) {/*end*/
322 is_matched = true;
323 is_skipped = false;
324 PHYDM_DBG(dm, ODM_COMP_INIT, "ENDIF\n");
325 } else if (c_cond == COND_ELSE) { /*else*/
326 is_matched = is_skipped ? false : true;
327 PHYDM_DBG(dm, ODM_COMP_INIT, "ELSE\n");
328 } else {/*if , else if*/
329 pre_v1 = v1;
330 pre_v2 = v2;
331 PHYDM_DBG(dm, ODM_COMP_INIT, "IF or ELSE IF\n");
332 }
333 } else if (v1 & BIT(30)) { /*negative condition*/
334 if (is_skipped == false) {
335 if (check_positive(dm, pre_v1, pre_v2, v1, v2)) {
336 is_matched = true;
337 is_skipped = true;
338 } else {
339 is_matched = false;
340 is_skipped = false;
341 }
342 } else
343 is_matched = false;
344 }
345 } else {
346 if (is_matched)
347 odm_config_rf_radio_a_8723d(dm, v1, v2);
348 }
349 i = i + 2;
350 }
351 }
352
353 u32
odm_get_version_mp_8723d_radioa(void)354 odm_get_version_mp_8723d_radioa(void)
355 {
356 return 42;
357 }
358
359 /******************************************************************************
360 * txpowertrack_pcie.TXT
361 ******************************************************************************/
362
363 #if DEV_BUS_TYPE == RT_PCI_INTERFACE
364 u8 g_delta_swing_table_idx_mp_5gb_n_txpowertrack_pcie_8723d[][DELTA_SWINGIDX_SIZE] = {
365 {0, 1, 2, 3, 3, 5, 5, 6, 6, 7, 8, 9, 10, 11, 11, 12, 12, 13, 13, 14, 14, 15, 16, 17, 17, 17, 17, 18, 18, 18},
366 {0, 1, 2, 3, 3, 5, 5, 6, 6, 7, 8, 9, 10, 11, 11, 12, 13, 14, 14, 15, 15, 16, 16, 17, 17, 18, 18, 18, 18, 18},
367 {0, 1, 2, 3, 3, 5, 5, 6, 6, 7, 8, 9, 10, 11, 11, 12, 13, 14, 14, 15, 15, 16, 16, 17, 17, 18, 18, 18, 18, 18},
368 };
369 u8 g_delta_swing_table_idx_mp_5gb_p_txpowertrack_pcie_8723d[][DELTA_SWINGIDX_SIZE] = {
370 {0, 1, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15},
371 {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15},
372 {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15},
373 };
374 u8 g_delta_swing_table_idx_mp_5ga_n_txpowertrack_pcie_8723d[][DELTA_SWINGIDX_SIZE] = {
375 {0, 1, 2, 3, 3, 5, 5, 6, 6, 7, 8, 9, 10, 11, 11, 12, 12, 13, 13, 14, 14, 15, 16, 17, 17, 17, 17, 18, 18, 18},
376 {0, 1, 2, 3, 3, 5, 5, 6, 6, 7, 8, 9, 10, 11, 11, 12, 13, 14, 14, 15, 15, 16, 16, 17, 17, 18, 18, 18, 18, 18},
377 {0, 1, 2, 3, 3, 5, 5, 6, 6, 7, 8, 9, 10, 11, 11, 12, 13, 14, 14, 15, 15, 16, 16, 17, 17, 18, 18, 18, 18, 18},
378 };
379 u8 g_delta_swing_table_idx_mp_5ga_p_txpowertrack_pcie_8723d[][DELTA_SWINGIDX_SIZE] = {
380 {0, 1, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15},
381 {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15},
382 {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15},
383 };
384 u8 g_delta_swing_table_idx_mp_2gb_n_txpowertrack_pcie_8723d[] = {0, 0, 1, 1, 1, 2, 2, 3, 4, 4, 4, 4, 5, 5, 5, 6, 6, 7, 7, 8, 8, 8, 9, 9, 9, 10, 10, 10, 10, 10};
385 u8 g_delta_swing_table_idx_mp_2gb_p_txpowertrack_pcie_8723d[] = {0, 0, 1, 1, 2, 2, 2, 3, 3, 4, 4, 5, 5, 6, 7, 7, 8, 8, 8, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10};
386 u8 g_delta_swing_table_idx_mp_2ga_n_txpowertrack_pcie_8723d[] = {0, 0, 1, 1, 1, 2, 2, 3, 4, 4, 4, 4, 5, 5, 5, 6, 6, 7, 7, 8, 8, 8, 9, 9, 9, 10, 10, 10, 10, 10};
387 u8 g_delta_swing_table_idx_mp_2ga_p_txpowertrack_pcie_8723d[] = {0, 0, 1, 1, 2, 2, 2, 3, 3, 4, 4, 5, 5, 6, 7, 7, 8, 8, 8, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10};
388 u8 g_delta_swing_table_idx_mp_2g_cck_b_n_txpowertrack_pcie_8723d[] = {0, 1, 1, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 6, 7, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 11, 11, 11};
389 u8 g_delta_swing_table_idx_mp_2g_cck_b_p_txpowertrack_pcie_8723d[] = {0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 9, 9, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11};
390 u8 g_delta_swing_table_idx_mp_2g_cck_a_n_txpowertrack_pcie_8723d[] = {0, 1, 1, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 6, 7, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 11, 11, 11};
391 u8 g_delta_swing_table_idx_mp_2g_cck_a_p_txpowertrack_pcie_8723d[] = {0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 9, 9, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11};
392 #endif
393
394 void
odm_read_and_config_mp_8723d_txpowertrack_pcie(struct dm_struct * dm)395 odm_read_and_config_mp_8723d_txpowertrack_pcie(struct dm_struct *dm)
396 {
397 #if DEV_BUS_TYPE == RT_PCI_INTERFACE
398 struct dm_rf_calibration_struct *cali_info = &(dm->rf_calibrate_info);
399
400 PHYDM_DBG(dm, ODM_COMP_INIT, "===> ODM_ReadAndConfig_MP_mp_8723d\n");
401
402
403 odm_move_memory(dm, cali_info->delta_swing_table_idx_2ga_p, g_delta_swing_table_idx_mp_2ga_p_txpowertrack_pcie_8723d, DELTA_SWINGIDX_SIZE);
404 odm_move_memory(dm, cali_info->delta_swing_table_idx_2ga_n, g_delta_swing_table_idx_mp_2ga_n_txpowertrack_pcie_8723d, DELTA_SWINGIDX_SIZE);
405 odm_move_memory(dm, cali_info->delta_swing_table_idx_2gb_p, g_delta_swing_table_idx_mp_2gb_p_txpowertrack_pcie_8723d, DELTA_SWINGIDX_SIZE);
406 odm_move_memory(dm, cali_info->delta_swing_table_idx_2gb_n, g_delta_swing_table_idx_mp_2gb_n_txpowertrack_pcie_8723d, DELTA_SWINGIDX_SIZE);
407
408 odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_a_p, g_delta_swing_table_idx_mp_2g_cck_a_p_txpowertrack_pcie_8723d, DELTA_SWINGIDX_SIZE);
409 odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_a_n, g_delta_swing_table_idx_mp_2g_cck_a_n_txpowertrack_pcie_8723d, DELTA_SWINGIDX_SIZE);
410 odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_b_p, g_delta_swing_table_idx_mp_2g_cck_b_p_txpowertrack_pcie_8723d, DELTA_SWINGIDX_SIZE);
411 odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_b_n, g_delta_swing_table_idx_mp_2g_cck_b_n_txpowertrack_pcie_8723d, DELTA_SWINGIDX_SIZE);
412
413 odm_move_memory(dm, cali_info->delta_swing_table_idx_5ga_p, g_delta_swing_table_idx_mp_5ga_p_txpowertrack_pcie_8723d, DELTA_SWINGIDX_SIZE * 3);
414 odm_move_memory(dm, cali_info->delta_swing_table_idx_5ga_n, g_delta_swing_table_idx_mp_5ga_n_txpowertrack_pcie_8723d, DELTA_SWINGIDX_SIZE * 3);
415 odm_move_memory(dm, cali_info->delta_swing_table_idx_5gb_p, g_delta_swing_table_idx_mp_5gb_p_txpowertrack_pcie_8723d, DELTA_SWINGIDX_SIZE * 3);
416 odm_move_memory(dm, cali_info->delta_swing_table_idx_5gb_n, g_delta_swing_table_idx_mp_5gb_n_txpowertrack_pcie_8723d, DELTA_SWINGIDX_SIZE * 3);
417 #endif
418 }
419
420 /******************************************************************************
421 * txpowertrack_sdio.TXT
422 ******************************************************************************/
423
424 #if DEV_BUS_TYPE == RT_SDIO_INTERFACE
425 u8 g_delta_swing_table_idx_mp_5gb_n_txpowertrack_sdio_8723d[][DELTA_SWINGIDX_SIZE] = {
426 {0, 1, 2, 3, 3, 5, 5, 6, 6, 7, 8, 9, 10, 11, 11, 12, 12, 13, 13, 14, 14, 15, 16, 17, 17, 17, 17, 18, 18, 18},
427 {0, 1, 2, 3, 3, 5, 5, 6, 6, 7, 8, 9, 10, 11, 11, 12, 13, 14, 14, 15, 15, 16, 16, 17, 17, 18, 18, 18, 18, 18},
428 {0, 1, 2, 3, 3, 5, 5, 6, 6, 7, 8, 9, 10, 11, 11, 12, 13, 14, 14, 15, 15, 16, 16, 17, 17, 18, 18, 18, 18, 18},
429 };
430 u8 g_delta_swing_table_idx_mp_5gb_p_txpowertrack_sdio_8723d[][DELTA_SWINGIDX_SIZE] = {
431 {0, 1, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15},
432 {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15},
433 {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15},
434 };
435 u8 g_delta_swing_table_idx_mp_5ga_n_txpowertrack_sdio_8723d[][DELTA_SWINGIDX_SIZE] = {
436 {0, 1, 2, 3, 3, 5, 5, 6, 6, 7, 8, 9, 10, 11, 11, 12, 12, 13, 13, 14, 14, 15, 16, 17, 17, 17, 17, 18, 18, 18},
437 {0, 1, 2, 3, 3, 5, 5, 6, 6, 7, 8, 9, 10, 11, 11, 12, 13, 14, 14, 15, 15, 16, 16, 17, 17, 18, 18, 18, 18, 18},
438 {0, 1, 2, 3, 3, 5, 5, 6, 6, 7, 8, 9, 10, 11, 11, 12, 13, 14, 14, 15, 15, 16, 16, 17, 17, 18, 18, 18, 18, 18},
439 };
440 u8 g_delta_swing_table_idx_mp_5ga_p_txpowertrack_sdio_8723d[][DELTA_SWINGIDX_SIZE] = {
441 {0, 1, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15},
442 {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15},
443 {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15},
444 };
445 u8 g_delta_swing_table_idx_mp_2gb_n_txpowertrack_sdio_8723d[] = {0, 0, 1, 1, 1, 2, 2, 3, 4, 4, 4, 4, 5, 5, 5, 6, 6, 7, 7, 8, 8, 8, 9, 9, 9, 10, 10, 10, 10, 10};
446 u8 g_delta_swing_table_idx_mp_2gb_p_txpowertrack_sdio_8723d[] = {0, 0, 1, 1, 2, 2, 2, 3, 3, 4, 4, 5, 5, 6, 7, 7, 8, 8, 8, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10};
447 u8 g_delta_swing_table_idx_mp_2ga_n_txpowertrack_sdio_8723d[] = {0, 0, 1, 1, 1, 2, 2, 3, 4, 4, 4, 4, 5, 5, 5, 6, 6, 7, 7, 8, 8, 8, 9, 9, 9, 10, 10, 10, 10, 10};
448 u8 g_delta_swing_table_idx_mp_2ga_p_txpowertrack_sdio_8723d[] = {0, 0, 1, 1, 2, 2, 2, 3, 3, 4, 4, 5, 5, 6, 7, 7, 8, 8, 8, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10};
449 u8 g_delta_swing_table_idx_mp_2g_cck_b_n_txpowertrack_sdio_8723d[] = {0, 1, 1, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 6, 7, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 11, 11, 11};
450 u8 g_delta_swing_table_idx_mp_2g_cck_b_p_txpowertrack_sdio_8723d[] = {0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 9, 9, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11};
451 u8 g_delta_swing_table_idx_mp_2g_cck_a_n_txpowertrack_sdio_8723d[] = {0, 1, 1, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 6, 7, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 11, 11, 11};
452 u8 g_delta_swing_table_idx_mp_2g_cck_a_p_txpowertrack_sdio_8723d[] = {0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 9, 9, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11};
453 #endif
454
455 void
odm_read_and_config_mp_8723d_txpowertrack_sdio(struct dm_struct * dm)456 odm_read_and_config_mp_8723d_txpowertrack_sdio(struct dm_struct *dm)
457 {
458 #if DEV_BUS_TYPE == RT_SDIO_INTERFACE
459 struct dm_rf_calibration_struct *cali_info = &(dm->rf_calibrate_info);
460
461 PHYDM_DBG(dm, ODM_COMP_INIT, "===> ODM_ReadAndConfig_MP_mp_8723d\n");
462
463
464 odm_move_memory(dm, cali_info->delta_swing_table_idx_2ga_p, g_delta_swing_table_idx_mp_2ga_p_txpowertrack_sdio_8723d, DELTA_SWINGIDX_SIZE);
465 odm_move_memory(dm, cali_info->delta_swing_table_idx_2ga_n, g_delta_swing_table_idx_mp_2ga_n_txpowertrack_sdio_8723d, DELTA_SWINGIDX_SIZE);
466 odm_move_memory(dm, cali_info->delta_swing_table_idx_2gb_p, g_delta_swing_table_idx_mp_2gb_p_txpowertrack_sdio_8723d, DELTA_SWINGIDX_SIZE);
467 odm_move_memory(dm, cali_info->delta_swing_table_idx_2gb_n, g_delta_swing_table_idx_mp_2gb_n_txpowertrack_sdio_8723d, DELTA_SWINGIDX_SIZE);
468
469 odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_a_p, g_delta_swing_table_idx_mp_2g_cck_a_p_txpowertrack_sdio_8723d, DELTA_SWINGIDX_SIZE);
470 odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_a_n, g_delta_swing_table_idx_mp_2g_cck_a_n_txpowertrack_sdio_8723d, DELTA_SWINGIDX_SIZE);
471 odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_b_p, g_delta_swing_table_idx_mp_2g_cck_b_p_txpowertrack_sdio_8723d, DELTA_SWINGIDX_SIZE);
472 odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_b_n, g_delta_swing_table_idx_mp_2g_cck_b_n_txpowertrack_sdio_8723d, DELTA_SWINGIDX_SIZE);
473
474 odm_move_memory(dm, cali_info->delta_swing_table_idx_5ga_p, g_delta_swing_table_idx_mp_5ga_p_txpowertrack_sdio_8723d, DELTA_SWINGIDX_SIZE * 3);
475 odm_move_memory(dm, cali_info->delta_swing_table_idx_5ga_n, g_delta_swing_table_idx_mp_5ga_n_txpowertrack_sdio_8723d, DELTA_SWINGIDX_SIZE * 3);
476 odm_move_memory(dm, cali_info->delta_swing_table_idx_5gb_p, g_delta_swing_table_idx_mp_5gb_p_txpowertrack_sdio_8723d, DELTA_SWINGIDX_SIZE * 3);
477 odm_move_memory(dm, cali_info->delta_swing_table_idx_5gb_n, g_delta_swing_table_idx_mp_5gb_n_txpowertrack_sdio_8723d, DELTA_SWINGIDX_SIZE * 3);
478 #endif
479 }
480
481 /******************************************************************************
482 * txpowertrack_usb.TXT
483 ******************************************************************************/
484
485 #if DEV_BUS_TYPE == RT_USB_INTERFACE
486 u8 g_delta_swing_table_idx_mp_5gb_n_txpowertrack_usb_8723d[][DELTA_SWINGIDX_SIZE] = {
487 {0, 1, 2, 3, 3, 5, 5, 6, 6, 7, 8, 9, 10, 11, 11, 12, 12, 13, 13, 14, 14, 15, 16, 17, 17, 17, 17, 18, 18, 18},
488 {0, 1, 2, 3, 3, 5, 5, 6, 6, 7, 8, 9, 10, 11, 11, 12, 13, 14, 14, 15, 15, 16, 16, 17, 17, 18, 18, 18, 18, 18},
489 {0, 1, 2, 3, 3, 5, 5, 6, 6, 7, 8, 9, 10, 11, 11, 12, 13, 14, 14, 15, 15, 16, 16, 17, 17, 18, 18, 18, 18, 18},
490 };
491 u8 g_delta_swing_table_idx_mp_5gb_p_txpowertrack_usb_8723d[][DELTA_SWINGIDX_SIZE] = {
492 {0, 1, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15},
493 {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15},
494 {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15},
495 };
496 u8 g_delta_swing_table_idx_mp_5ga_n_txpowertrack_usb_8723d[][DELTA_SWINGIDX_SIZE] = {
497 {0, 1, 2, 3, 3, 5, 5, 6, 6, 7, 8, 9, 10, 11, 11, 12, 12, 13, 13, 14, 14, 15, 16, 17, 17, 17, 17, 18, 18, 18},
498 {0, 1, 2, 3, 3, 5, 5, 6, 6, 7, 8, 9, 10, 11, 11, 12, 13, 14, 14, 15, 15, 16, 16, 17, 17, 18, 18, 18, 18, 18},
499 {0, 1, 2, 3, 3, 5, 5, 6, 6, 7, 8, 9, 10, 11, 11, 12, 13, 14, 14, 15, 15, 16, 16, 17, 17, 18, 18, 18, 18, 18},
500 };
501 u8 g_delta_swing_table_idx_mp_5ga_p_txpowertrack_usb_8723d[][DELTA_SWINGIDX_SIZE] = {
502 {0, 1, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15},
503 {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15},
504 {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15},
505 };
506 u8 g_delta_swing_table_idx_mp_2gb_n_txpowertrack_usb_8723d[] = {0, 0, 1, 1, 1, 2, 2, 3, 4, 4, 4, 4, 5, 5, 5, 6, 6, 7, 7, 8, 8, 8, 9, 9, 9, 10, 10, 10, 10, 10};
507 u8 g_delta_swing_table_idx_mp_2gb_p_txpowertrack_usb_8723d[] = {0, 0, 1, 1, 2, 2, 2, 3, 3, 4, 4, 5, 5, 6, 7, 7, 8, 8, 8, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10};
508 u8 g_delta_swing_table_idx_mp_2ga_n_txpowertrack_usb_8723d[] = {0, 0, 1, 1, 1, 2, 2, 3, 4, 4, 4, 4, 5, 5, 5, 6, 6, 7, 7, 8, 8, 8, 9, 9, 9, 10, 10, 10, 10, 10};
509 u8 g_delta_swing_table_idx_mp_2ga_p_txpowertrack_usb_8723d[] = {0, 0, 1, 1, 2, 2, 2, 3, 3, 4, 4, 5, 5, 6, 7, 7, 8, 8, 8, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10};
510 u8 g_delta_swing_table_idx_mp_2g_cck_b_n_txpowertrack_usb_8723d[] = {0, 1, 1, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 6, 7, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 11, 11, 11};
511 u8 g_delta_swing_table_idx_mp_2g_cck_b_p_txpowertrack_usb_8723d[] = {0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 9, 9, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11};
512 u8 g_delta_swing_table_idx_mp_2g_cck_a_n_txpowertrack_usb_8723d[] = {0, 1, 1, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 6, 7, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 11, 11, 11};
513 u8 g_delta_swing_table_idx_mp_2g_cck_a_p_txpowertrack_usb_8723d[] = {0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 9, 9, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11};
514 #endif
515
516 void
odm_read_and_config_mp_8723d_txpowertrack_usb(struct dm_struct * dm)517 odm_read_and_config_mp_8723d_txpowertrack_usb(struct dm_struct *dm)
518 {
519 #if DEV_BUS_TYPE == RT_USB_INTERFACE
520 struct dm_rf_calibration_struct *cali_info = &(dm->rf_calibrate_info);
521
522 PHYDM_DBG(dm, ODM_COMP_INIT, "===> ODM_ReadAndConfig_MP_mp_8723d\n");
523
524
525 odm_move_memory(dm, cali_info->delta_swing_table_idx_2ga_p, g_delta_swing_table_idx_mp_2ga_p_txpowertrack_usb_8723d, DELTA_SWINGIDX_SIZE);
526 odm_move_memory(dm, cali_info->delta_swing_table_idx_2ga_n, g_delta_swing_table_idx_mp_2ga_n_txpowertrack_usb_8723d, DELTA_SWINGIDX_SIZE);
527 odm_move_memory(dm, cali_info->delta_swing_table_idx_2gb_p, g_delta_swing_table_idx_mp_2gb_p_txpowertrack_usb_8723d, DELTA_SWINGIDX_SIZE);
528 odm_move_memory(dm, cali_info->delta_swing_table_idx_2gb_n, g_delta_swing_table_idx_mp_2gb_n_txpowertrack_usb_8723d, DELTA_SWINGIDX_SIZE);
529
530 odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_a_p, g_delta_swing_table_idx_mp_2g_cck_a_p_txpowertrack_usb_8723d, DELTA_SWINGIDX_SIZE);
531 odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_a_n, g_delta_swing_table_idx_mp_2g_cck_a_n_txpowertrack_usb_8723d, DELTA_SWINGIDX_SIZE);
532 odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_b_p, g_delta_swing_table_idx_mp_2g_cck_b_p_txpowertrack_usb_8723d, DELTA_SWINGIDX_SIZE);
533 odm_move_memory(dm, cali_info->delta_swing_table_idx_2g_cck_b_n, g_delta_swing_table_idx_mp_2g_cck_b_n_txpowertrack_usb_8723d, DELTA_SWINGIDX_SIZE);
534
535 odm_move_memory(dm, cali_info->delta_swing_table_idx_5ga_p, g_delta_swing_table_idx_mp_5ga_p_txpowertrack_usb_8723d, DELTA_SWINGIDX_SIZE * 3);
536 odm_move_memory(dm, cali_info->delta_swing_table_idx_5ga_n, g_delta_swing_table_idx_mp_5ga_n_txpowertrack_usb_8723d, DELTA_SWINGIDX_SIZE * 3);
537 odm_move_memory(dm, cali_info->delta_swing_table_idx_5gb_p, g_delta_swing_table_idx_mp_5gb_p_txpowertrack_usb_8723d, DELTA_SWINGIDX_SIZE * 3);
538 odm_move_memory(dm, cali_info->delta_swing_table_idx_5gb_n, g_delta_swing_table_idx_mp_5gb_n_txpowertrack_usb_8723d, DELTA_SWINGIDX_SIZE * 3);
539 #endif
540 }
541
542 /******************************************************************************
543 * txpwr_lmt.TXT
544 ******************************************************************************/
545
546 const char *array_mp_8723d_txpwr_lmt[] = {
547 "FCC", "2.4G", "20M", "CCK", "1T", "01", "30",
548 "ETSI", "2.4G", "20M", "CCK", "1T", "01", "30",
549 "MKK", "2.4G", "20M", "CCK", "1T", "01", "30",
550 "FCC", "2.4G", "20M", "CCK", "1T", "02", "30",
551 "ETSI", "2.4G", "20M", "CCK", "1T", "02", "30",
552 "MKK", "2.4G", "20M", "CCK", "1T", "02", "30",
553 "FCC", "2.4G", "20M", "CCK", "1T", "03", "30",
554 "ETSI", "2.4G", "20M", "CCK", "1T", "03", "30",
555 "MKK", "2.4G", "20M", "CCK", "1T", "03", "30",
556 "FCC", "2.4G", "20M", "CCK", "1T", "04", "30",
557 "ETSI", "2.4G", "20M", "CCK", "1T", "04", "30",
558 "MKK", "2.4G", "20M", "CCK", "1T", "04", "30",
559 "FCC", "2.4G", "20M", "CCK", "1T", "05", "30",
560 "ETSI", "2.4G", "20M", "CCK", "1T", "05", "30",
561 "MKK", "2.4G", "20M", "CCK", "1T", "05", "30",
562 "FCC", "2.4G", "20M", "CCK", "1T", "06", "30",
563 "ETSI", "2.4G", "20M", "CCK", "1T", "06", "30",
564 "MKK", "2.4G", "20M", "CCK", "1T", "06", "30",
565 "FCC", "2.4G", "20M", "CCK", "1T", "07", "30",
566 "ETSI", "2.4G", "20M", "CCK", "1T", "07", "30",
567 "MKK", "2.4G", "20M", "CCK", "1T", "07", "30",
568 "FCC", "2.4G", "20M", "CCK", "1T", "08", "30",
569 "ETSI", "2.4G", "20M", "CCK", "1T", "08", "30",
570 "MKK", "2.4G", "20M", "CCK", "1T", "08", "30",
571 "FCC", "2.4G", "20M", "CCK", "1T", "09", "30",
572 "ETSI", "2.4G", "20M", "CCK", "1T", "09", "30",
573 "MKK", "2.4G", "20M", "CCK", "1T", "09", "30",
574 "FCC", "2.4G", "20M", "CCK", "1T", "10", "30",
575 "ETSI", "2.4G", "20M", "CCK", "1T", "10", "30",
576 "MKK", "2.4G", "20M", "CCK", "1T", "10", "30",
577 "FCC", "2.4G", "20M", "CCK", "1T", "11", "30",
578 "ETSI", "2.4G", "20M", "CCK", "1T", "11", "30",
579 "MKK", "2.4G", "20M", "CCK", "1T", "11", "30",
580 "FCC", "2.4G", "20M", "CCK", "1T", "12", "30",
581 "ETSI", "2.4G", "20M", "CCK", "1T", "12", "30",
582 "MKK", "2.4G", "20M", "CCK", "1T", "12", "30",
583 "FCC", "2.4G", "20M", "CCK", "1T", "13", "17",
584 "ETSI", "2.4G", "20M", "CCK", "1T", "13", "30",
585 "MKK", "2.4G", "20M", "CCK", "1T", "13", "30",
586 "FCC", "2.4G", "20M", "CCK", "1T", "14", "63",
587 "ETSI", "2.4G", "20M", "CCK", "1T", "14", "63",
588 "MKK", "2.4G", "20M", "CCK", "1T", "14", "30",
589 "FCC", "2.4G", "20M", "OFDM", "1T", "01", "26",
590 "ETSI", "2.4G", "20M", "OFDM", "1T", "01", "31",
591 "MKK", "2.4G", "20M", "OFDM", "1T", "01", "31",
592 "FCC", "2.4G", "20M", "OFDM", "1T", "02", "28",
593 "ETSI", "2.4G", "20M", "OFDM", "1T", "02", "31",
594 "MKK", "2.4G", "20M", "OFDM", "1T", "02", "31",
595 "FCC", "2.4G", "20M", "OFDM", "1T", "03", "30",
596 "ETSI", "2.4G", "20M", "OFDM", "1T", "03", "31",
597 "MKK", "2.4G", "20M", "OFDM", "1T", "03", "31",
598 "FCC", "2.4G", "20M", "OFDM", "1T", "04", "30",
599 "ETSI", "2.4G", "20M", "OFDM", "1T", "04", "31",
600 "MKK", "2.4G", "20M", "OFDM", "1T", "04", "31",
601 "FCC", "2.4G", "20M", "OFDM", "1T", "05", "30",
602 "ETSI", "2.4G", "20M", "OFDM", "1T", "05", "31",
603 "MKK", "2.4G", "20M", "OFDM", "1T", "05", "31",
604 "FCC", "2.4G", "20M", "OFDM", "1T", "06", "30",
605 "ETSI", "2.4G", "20M", "OFDM", "1T", "06", "31",
606 "MKK", "2.4G", "20M", "OFDM", "1T", "06", "31",
607 "FCC", "2.4G", "20M", "OFDM", "1T", "07", "30",
608 "ETSI", "2.4G", "20M", "OFDM", "1T", "07", "31",
609 "MKK", "2.4G", "20M", "OFDM", "1T", "07", "31",
610 "FCC", "2.4G", "20M", "OFDM", "1T", "08", "30",
611 "ETSI", "2.4G", "20M", "OFDM", "1T", "08", "31",
612 "MKK", "2.4G", "20M", "OFDM", "1T", "08", "31",
613 "FCC", "2.4G", "20M", "OFDM", "1T", "09", "30",
614 "ETSI", "2.4G", "20M", "OFDM", "1T", "09", "31",
615 "MKK", "2.4G", "20M", "OFDM", "1T", "09", "31",
616 "FCC", "2.4G", "20M", "OFDM", "1T", "10", "28",
617 "ETSI", "2.4G", "20M", "OFDM", "1T", "10", "31",
618 "MKK", "2.4G", "20M", "OFDM", "1T", "10", "31",
619 "FCC", "2.4G", "20M", "OFDM", "1T", "11", "26",
620 "ETSI", "2.4G", "20M", "OFDM", "1T", "11", "31",
621 "MKK", "2.4G", "20M", "OFDM", "1T", "11", "31",
622 "FCC", "2.4G", "20M", "OFDM", "1T", "12", "24",
623 "ETSI", "2.4G", "20M", "OFDM", "1T", "12", "31",
624 "MKK", "2.4G", "20M", "OFDM", "1T", "12", "31",
625 "FCC", "2.4G", "20M", "OFDM", "1T", "13", "14",
626 "ETSI", "2.4G", "20M", "OFDM", "1T", "13", "31",
627 "MKK", "2.4G", "20M", "OFDM", "1T", "13", "31",
628 "FCC", "2.4G", "20M", "OFDM", "1T", "14", "63",
629 "ETSI", "2.4G", "20M", "OFDM", "1T", "14", "63",
630 "MKK", "2.4G", "20M", "OFDM", "1T", "14", "63",
631 "FCC", "2.4G", "20M", "HT", "1T", "01", "24",
632 "ETSI", "2.4G", "20M", "HT", "1T", "01", "31",
633 "MKK", "2.4G", "20M", "HT", "1T", "01", "31",
634 "FCC", "2.4G", "20M", "HT", "1T", "02", "26",
635 "ETSI", "2.4G", "20M", "HT", "1T", "02", "31",
636 "MKK", "2.4G", "20M", "HT", "1T", "02", "31",
637 "FCC", "2.4G", "20M", "HT", "1T", "03", "30",
638 "ETSI", "2.4G", "20M", "HT", "1T", "03", "31",
639 "MKK", "2.4G", "20M", "HT", "1T", "03", "31",
640 "FCC", "2.4G", "20M", "HT", "1T", "04", "30",
641 "ETSI", "2.4G", "20M", "HT", "1T", "04", "31",
642 "MKK", "2.4G", "20M", "HT", "1T", "04", "31",
643 "FCC", "2.4G", "20M", "HT", "1T", "05", "30",
644 "ETSI", "2.4G", "20M", "HT", "1T", "05", "31",
645 "MKK", "2.4G", "20M", "HT", "1T", "05", "31",
646 "FCC", "2.4G", "20M", "HT", "1T", "06", "30",
647 "ETSI", "2.4G", "20M", "HT", "1T", "06", "31",
648 "MKK", "2.4G", "20M", "HT", "1T", "06", "31",
649 "FCC", "2.4G", "20M", "HT", "1T", "07", "30",
650 "ETSI", "2.4G", "20M", "HT", "1T", "07", "31",
651 "MKK", "2.4G", "20M", "HT", "1T", "07", "31",
652 "FCC", "2.4G", "20M", "HT", "1T", "08", "30",
653 "ETSI", "2.4G", "20M", "HT", "1T", "08", "31",
654 "MKK", "2.4G", "20M", "HT", "1T", "08", "31",
655 "FCC", "2.4G", "20M", "HT", "1T", "09", "30",
656 "ETSI", "2.4G", "20M", "HT", "1T", "09", "31",
657 "MKK", "2.4G", "20M", "HT", "1T", "09", "31",
658 "FCC", "2.4G", "20M", "HT", "1T", "10", "26",
659 "ETSI", "2.4G", "20M", "HT", "1T", "10", "31",
660 "MKK", "2.4G", "20M", "HT", "1T", "10", "31",
661 "FCC", "2.4G", "20M", "HT", "1T", "11", "24",
662 "ETSI", "2.4G", "20M", "HT", "1T", "11", "31",
663 "MKK", "2.4G", "20M", "HT", "1T", "11", "31",
664 "FCC", "2.4G", "20M", "HT", "1T", "12", "23",
665 "ETSI", "2.4G", "20M", "HT", "1T", "12", "31",
666 "MKK", "2.4G", "20M", "HT", "1T", "12", "31",
667 "FCC", "2.4G", "20M", "HT", "1T", "13", "13",
668 "ETSI", "2.4G", "20M", "HT", "1T", "13", "31",
669 "MKK", "2.4G", "20M", "HT", "1T", "13", "31",
670 "FCC", "2.4G", "20M", "HT", "1T", "14", "63",
671 "ETSI", "2.4G", "20M", "HT", "1T", "14", "63",
672 "MKK", "2.4G", "20M", "HT", "1T", "14", "63",
673 "FCC", "2.4G", "20M", "HT", "2T", "01", "28",
674 "ETSI", "2.4G", "20M", "HT", "2T", "01", "30",
675 "MKK", "2.4G", "20M", "HT", "2T", "01", "30",
676 "FCC", "2.4G", "20M", "HT", "2T", "02", "28",
677 "ETSI", "2.4G", "20M", "HT", "2T", "02", "30",
678 "MKK", "2.4G", "20M", "HT", "2T", "02", "30",
679 "FCC", "2.4G", "20M", "HT", "2T", "03", "30",
680 "ETSI", "2.4G", "20M", "HT", "2T", "03", "30",
681 "MKK", "2.4G", "20M", "HT", "2T", "03", "30",
682 "FCC", "2.4G", "20M", "HT", "2T", "04", "30",
683 "ETSI", "2.4G", "20M", "HT", "2T", "04", "30",
684 "MKK", "2.4G", "20M", "HT", "2T", "04", "30",
685 "FCC", "2.4G", "20M", "HT", "2T", "05", "30",
686 "ETSI", "2.4G", "20M", "HT", "2T", "05", "30",
687 "MKK", "2.4G", "20M", "HT", "2T", "05", "30",
688 "FCC", "2.4G", "20M", "HT", "2T", "06", "30",
689 "ETSI", "2.4G", "20M", "HT", "2T", "06", "30",
690 "MKK", "2.4G", "20M", "HT", "2T", "06", "30",
691 "FCC", "2.4G", "20M", "HT", "2T", "07", "30",
692 "ETSI", "2.4G", "20M", "HT", "2T", "07", "30",
693 "MKK", "2.4G", "20M", "HT", "2T", "07", "30",
694 "FCC", "2.4G", "20M", "HT", "2T", "08", "30",
695 "ETSI", "2.4G", "20M", "HT", "2T", "08", "30",
696 "MKK", "2.4G", "20M", "HT", "2T", "08", "30",
697 "FCC", "2.4G", "20M", "HT", "2T", "09", "28",
698 "ETSI", "2.4G", "20M", "HT", "2T", "09", "30",
699 "MKK", "2.4G", "20M", "HT", "2T", "09", "30",
700 "FCC", "2.4G", "20M", "HT", "2T", "10", "28",
701 "ETSI", "2.4G", "20M", "HT", "2T", "10", "30",
702 "MKK", "2.4G", "20M", "HT", "2T", "10", "30",
703 "FCC", "2.4G", "20M", "HT", "2T", "11", "28",
704 "ETSI", "2.4G", "20M", "HT", "2T", "11", "30",
705 "MKK", "2.4G", "20M", "HT", "2T", "11", "30",
706 "FCC", "2.4G", "20M", "HT", "2T", "12", "63",
707 "ETSI", "2.4G", "20M", "HT", "2T", "12", "30",
708 "MKK", "2.4G", "20M", "HT", "2T", "12", "30",
709 "FCC", "2.4G", "20M", "HT", "2T", "13", "63",
710 "ETSI", "2.4G", "20M", "HT", "2T", "13", "30",
711 "MKK", "2.4G", "20M", "HT", "2T", "13", "30",
712 "FCC", "2.4G", "20M", "HT", "2T", "14", "63",
713 "ETSI", "2.4G", "20M", "HT", "2T", "14", "63",
714 "MKK", "2.4G", "20M", "HT", "2T", "14", "63",
715 "FCC", "2.4G", "40M", "HT", "1T", "01", "63",
716 "ETSI", "2.4G", "40M", "HT", "1T", "01", "63",
717 "MKK", "2.4G", "40M", "HT", "1T", "01", "63",
718 "FCC", "2.4G", "40M", "HT", "1T", "02", "63",
719 "ETSI", "2.4G", "40M", "HT", "1T", "02", "63",
720 "MKK", "2.4G", "40M", "HT", "1T", "02", "63",
721 "FCC", "2.4G", "40M", "HT", "1T", "03", "24",
722 "ETSI", "2.4G", "40M", "HT", "1T", "03", "30",
723 "MKK", "2.4G", "40M", "HT", "1T", "03", "30",
724 "FCC", "2.4G", "40M", "HT", "1T", "04", "24",
725 "ETSI", "2.4G", "40M", "HT", "1T", "04", "30",
726 "MKK", "2.4G", "40M", "HT", "1T", "04", "30",
727 "FCC", "2.4G", "40M", "HT", "1T", "05", "24",
728 "ETSI", "2.4G", "40M", "HT", "1T", "05", "30",
729 "MKK", "2.4G", "40M", "HT", "1T", "05", "30",
730 "FCC", "2.4G", "40M", "HT", "1T", "06", "24",
731 "ETSI", "2.4G", "40M", "HT", "1T", "06", "30",
732 "MKK", "2.4G", "40M", "HT", "1T", "06", "30",
733 "FCC", "2.4G", "40M", "HT", "1T", "07", "24",
734 "ETSI", "2.4G", "40M", "HT", "1T", "07", "30",
735 "MKK", "2.4G", "40M", "HT", "1T", "07", "30",
736 "FCC", "2.4G", "40M", "HT", "1T", "08", "24",
737 "ETSI", "2.4G", "40M", "HT", "1T", "08", "30",
738 "MKK", "2.4G", "40M", "HT", "1T", "08", "30",
739 "FCC", "2.4G", "40M", "HT", "1T", "09", "24",
740 "ETSI", "2.4G", "40M", "HT", "1T", "09", "30",
741 "MKK", "2.4G", "40M", "HT", "1T", "09", "30",
742 "FCC", "2.4G", "40M", "HT", "1T", "10", "22",
743 "ETSI", "2.4G", "40M", "HT", "1T", "10", "30",
744 "MKK", "2.4G", "40M", "HT", "1T", "10", "30",
745 "FCC", "2.4G", "40M", "HT", "1T", "11", "20",
746 "ETSI", "2.4G", "40M", "HT", "1T", "11", "30",
747 "MKK", "2.4G", "40M", "HT", "1T", "11", "30",
748 "FCC", "2.4G", "40M", "HT", "1T", "12", "63",
749 "ETSI", "2.4G", "40M", "HT", "1T", "12", "30",
750 "MKK", "2.4G", "40M", "HT", "1T", "12", "30",
751 "FCC", "2.4G", "40M", "HT", "1T", "13", "63",
752 "ETSI", "2.4G", "40M", "HT", "1T", "13", "30",
753 "MKK", "2.4G", "40M", "HT", "1T", "13", "30",
754 "FCC", "2.4G", "40M", "HT", "1T", "14", "63",
755 "ETSI", "2.4G", "40M", "HT", "1T", "14", "63",
756 "MKK", "2.4G", "40M", "HT", "1T", "14", "63",
757 "FCC", "2.4G", "40M", "HT", "2T", "01", "63",
758 "ETSI", "2.4G", "40M", "HT", "2T", "01", "63",
759 "MKK", "2.4G", "40M", "HT", "2T", "01", "63",
760 "FCC", "2.4G", "40M", "HT", "2T", "02", "63",
761 "ETSI", "2.4G", "40M", "HT", "2T", "02", "63",
762 "MKK", "2.4G", "40M", "HT", "2T", "02", "63",
763 "FCC", "2.4G", "40M", "HT", "2T", "03", "26",
764 "ETSI", "2.4G", "40M", "HT", "2T", "03", "26",
765 "MKK", "2.4G", "40M", "HT", "2T", "03", "26",
766 "FCC", "2.4G", "40M", "HT", "2T", "04", "26",
767 "ETSI", "2.4G", "40M", "HT", "2T", "04", "26",
768 "MKK", "2.4G", "40M", "HT", "2T", "04", "26",
769 "FCC", "2.4G", "40M", "HT", "2T", "05", "26",
770 "ETSI", "2.4G", "40M", "HT", "2T", "05", "26",
771 "MKK", "2.4G", "40M", "HT", "2T", "05", "26",
772 "FCC", "2.4G", "40M", "HT", "2T", "06", "26",
773 "ETSI", "2.4G", "40M", "HT", "2T", "06", "26",
774 "MKK", "2.4G", "40M", "HT", "2T", "06", "26",
775 "FCC", "2.4G", "40M", "HT", "2T", "07", "26",
776 "ETSI", "2.4G", "40M", "HT", "2T", "07", "26",
777 "MKK", "2.4G", "40M", "HT", "2T", "07", "26",
778 "FCC", "2.4G", "40M", "HT", "2T", "08", "26",
779 "ETSI", "2.4G", "40M", "HT", "2T", "08", "26",
780 "MKK", "2.4G", "40M", "HT", "2T", "08", "26",
781 "FCC", "2.4G", "40M", "HT", "2T", "09", "26",
782 "ETSI", "2.4G", "40M", "HT", "2T", "09", "26",
783 "MKK", "2.4G", "40M", "HT", "2T", "09", "26",
784 "FCC", "2.4G", "40M", "HT", "2T", "10", "26",
785 "ETSI", "2.4G", "40M", "HT", "2T", "10", "26",
786 "MKK", "2.4G", "40M", "HT", "2T", "10", "26",
787 "FCC", "2.4G", "40M", "HT", "2T", "11", "26",
788 "ETSI", "2.4G", "40M", "HT", "2T", "11", "26",
789 "MKK", "2.4G", "40M", "HT", "2T", "11", "26",
790 "FCC", "2.4G", "40M", "HT", "2T", "12", "63",
791 "ETSI", "2.4G", "40M", "HT", "2T", "12", "26",
792 "MKK", "2.4G", "40M", "HT", "2T", "12", "26",
793 "FCC", "2.4G", "40M", "HT", "2T", "13", "63",
794 "ETSI", "2.4G", "40M", "HT", "2T", "13", "26",
795 "MKK", "2.4G", "40M", "HT", "2T", "13", "26",
796 "FCC", "2.4G", "40M", "HT", "2T", "14", "63",
797 "ETSI", "2.4G", "40M", "HT", "2T", "14", "63",
798 "MKK", "2.4G", "40M", "HT", "2T", "14", "63",
799 "FCC", "5G", "20M", "OFDM", "1T", "36", "30",
800 "ETSI", "5G", "20M", "OFDM", "1T", "36", "32",
801 "MKK", "5G", "20M", "OFDM", "1T", "36", "32",
802 "FCC", "5G", "20M", "OFDM", "1T", "40", "30",
803 "ETSI", "5G", "20M", "OFDM", "1T", "40", "32",
804 "MKK", "5G", "20M", "OFDM", "1T", "40", "32",
805 "FCC", "5G", "20M", "OFDM", "1T", "44", "30",
806 "ETSI", "5G", "20M", "OFDM", "1T", "44", "32",
807 "MKK", "5G", "20M", "OFDM", "1T", "44", "32",
808 "FCC", "5G", "20M", "OFDM", "1T", "48", "30",
809 "ETSI", "5G", "20M", "OFDM", "1T", "48", "32",
810 "MKK", "5G", "20M", "OFDM", "1T", "48", "32",
811 "FCC", "5G", "20M", "OFDM", "1T", "52", "34",
812 "ETSI", "5G", "20M", "OFDM", "1T", "52", "32",
813 "MKK", "5G", "20M", "OFDM", "1T", "52", "32",
814 "FCC", "5G", "20M", "OFDM", "1T", "56", "34",
815 "ETSI", "5G", "20M", "OFDM", "1T", "56", "32",
816 "MKK", "5G", "20M", "OFDM", "1T", "56", "32",
817 "FCC", "5G", "20M", "OFDM", "1T", "60", "32",
818 "ETSI", "5G", "20M", "OFDM", "1T", "60", "32",
819 "MKK", "5G", "20M", "OFDM", "1T", "60", "32",
820 "FCC", "5G", "20M", "OFDM", "1T", "64", "28",
821 "ETSI", "5G", "20M", "OFDM", "1T", "64", "32",
822 "MKK", "5G", "20M", "OFDM", "1T", "64", "32",
823 "FCC", "5G", "20M", "OFDM", "1T", "100", "30",
824 "ETSI", "5G", "20M", "OFDM", "1T", "100", "32",
825 "MKK", "5G", "20M", "OFDM", "1T", "100", "32",
826 "FCC", "5G", "20M", "OFDM", "1T", "114", "30",
827 "ETSI", "5G", "20M", "OFDM", "1T", "114", "32",
828 "MKK", "5G", "20M", "OFDM", "1T", "114", "32",
829 "FCC", "5G", "20M", "OFDM", "1T", "108", "32",
830 "ETSI", "5G", "20M", "OFDM", "1T", "108", "32",
831 "MKK", "5G", "20M", "OFDM", "1T", "108", "32",
832 "FCC", "5G", "20M", "OFDM", "1T", "112", "34",
833 "ETSI", "5G", "20M", "OFDM", "1T", "112", "32",
834 "MKK", "5G", "20M", "OFDM", "1T", "112", "32",
835 "FCC", "5G", "20M", "OFDM", "1T", "116", "34",
836 "ETSI", "5G", "20M", "OFDM", "1T", "116", "32",
837 "MKK", "5G", "20M", "OFDM", "1T", "116", "32",
838 "FCC", "5G", "20M", "OFDM", "1T", "120", "34",
839 "ETSI", "5G", "20M", "OFDM", "1T", "120", "32",
840 "MKK", "5G", "20M", "OFDM", "1T", "120", "32",
841 "FCC", "5G", "20M", "OFDM", "1T", "124", "34",
842 "ETSI", "5G", "20M", "OFDM", "1T", "124", "32",
843 "MKK", "5G", "20M", "OFDM", "1T", "124", "32",
844 "FCC", "5G", "20M", "OFDM", "1T", "128", "32",
845 "ETSI", "5G", "20M", "OFDM", "1T", "128", "32",
846 "MKK", "5G", "20M", "OFDM", "1T", "128", "32",
847 "FCC", "5G", "20M", "OFDM", "1T", "132", "30",
848 "ETSI", "5G", "20M", "OFDM", "1T", "132", "32",
849 "MKK", "5G", "20M", "OFDM", "1T", "132", "32",
850 "FCC", "5G", "20M", "OFDM", "1T", "136", "30",
851 "ETSI", "5G", "20M", "OFDM", "1T", "136", "32",
852 "MKK", "5G", "20M", "OFDM", "1T", "136", "32",
853 "FCC", "5G", "20M", "OFDM", "1T", "140", "28",
854 "ETSI", "5G", "20M", "OFDM", "1T", "140", "32",
855 "MKK", "5G", "20M", "OFDM", "1T", "140", "32",
856 "FCC", "5G", "20M", "OFDM", "1T", "149", "34",
857 "ETSI", "5G", "20M", "OFDM", "1T", "149", "32",
858 "MKK", "5G", "20M", "OFDM", "1T", "149", "63",
859 "FCC", "5G", "20M", "OFDM", "1T", "153", "34",
860 "ETSI", "5G", "20M", "OFDM", "1T", "153", "32",
861 "MKK", "5G", "20M", "OFDM", "1T", "153", "63",
862 "FCC", "5G", "20M", "OFDM", "1T", "157", "34",
863 "ETSI", "5G", "20M", "OFDM", "1T", "157", "32",
864 "MKK", "5G", "20M", "OFDM", "1T", "157", "63",
865 "FCC", "5G", "20M", "OFDM", "1T", "161", "34",
866 "ETSI", "5G", "20M", "OFDM", "1T", "161", "32",
867 "MKK", "5G", "20M", "OFDM", "1T", "161", "63",
868 "FCC", "5G", "20M", "OFDM", "1T", "165", "34",
869 "ETSI", "5G", "20M", "OFDM", "1T", "165", "32",
870 "MKK", "5G", "20M", "OFDM", "1T", "165", "63",
871 "FCC", "5G", "20M", "HT", "1T", "36", "30",
872 "ETSI", "5G", "20M", "HT", "1T", "36", "32",
873 "MKK", "5G", "20M", "HT", "1T", "36", "32",
874 "FCC", "5G", "20M", "HT", "1T", "40", "30",
875 "ETSI", "5G", "20M", "HT", "1T", "40", "32",
876 "MKK", "5G", "20M", "HT", "1T", "40", "32",
877 "FCC", "5G", "20M", "HT", "1T", "44", "30",
878 "ETSI", "5G", "20M", "HT", "1T", "44", "32",
879 "MKK", "5G", "20M", "HT", "1T", "44", "32",
880 "FCC", "5G", "20M", "HT", "1T", "48", "30",
881 "ETSI", "5G", "20M", "HT", "1T", "48", "32",
882 "MKK", "5G", "20M", "HT", "1T", "48", "32",
883 "FCC", "5G", "20M", "HT", "1T", "52", "34",
884 "ETSI", "5G", "20M", "HT", "1T", "52", "32",
885 "MKK", "5G", "20M", "HT", "1T", "52", "32",
886 "FCC", "5G", "20M", "HT", "1T", "56", "34",
887 "ETSI", "5G", "20M", "HT", "1T", "56", "32",
888 "MKK", "5G", "20M", "HT", "1T", "56", "32",
889 "FCC", "5G", "20M", "HT", "1T", "60", "32",
890 "ETSI", "5G", "20M", "HT", "1T", "60", "32",
891 "MKK", "5G", "20M", "HT", "1T", "60", "32",
892 "FCC", "5G", "20M", "HT", "1T", "64", "28",
893 "ETSI", "5G", "20M", "HT", "1T", "64", "32",
894 "MKK", "5G", "20M", "HT", "1T", "64", "32",
895 "FCC", "5G", "20M", "HT", "1T", "100", "30",
896 "ETSI", "5G", "20M", "HT", "1T", "100", "32",
897 "MKK", "5G", "20M", "HT", "1T", "100", "32",
898 "FCC", "5G", "20M", "HT", "1T", "114", "30",
899 "ETSI", "5G", "20M", "HT", "1T", "114", "32",
900 "MKK", "5G", "20M", "HT", "1T", "114", "32",
901 "FCC", "5G", "20M", "HT", "1T", "108", "32",
902 "ETSI", "5G", "20M", "HT", "1T", "108", "32",
903 "MKK", "5G", "20M", "HT", "1T", "108", "32",
904 "FCC", "5G", "20M", "HT", "1T", "112", "34",
905 "ETSI", "5G", "20M", "HT", "1T", "112", "32",
906 "MKK", "5G", "20M", "HT", "1T", "112", "32",
907 "FCC", "5G", "20M", "HT", "1T", "116", "34",
908 "ETSI", "5G", "20M", "HT", "1T", "116", "32",
909 "MKK", "5G", "20M", "HT", "1T", "116", "32",
910 "FCC", "5G", "20M", "HT", "1T", "120", "34",
911 "ETSI", "5G", "20M", "HT", "1T", "120", "32",
912 "MKK", "5G", "20M", "HT", "1T", "120", "32",
913 "FCC", "5G", "20M", "HT", "1T", "124", "34",
914 "ETSI", "5G", "20M", "HT", "1T", "124", "32",
915 "MKK", "5G", "20M", "HT", "1T", "124", "32",
916 "FCC", "5G", "20M", "HT", "1T", "128", "32",
917 "ETSI", "5G", "20M", "HT", "1T", "128", "32",
918 "MKK", "5G", "20M", "HT", "1T", "128", "32",
919 "FCC", "5G", "20M", "HT", "1T", "132", "30",
920 "ETSI", "5G", "20M", "HT", "1T", "132", "32",
921 "MKK", "5G", "20M", "HT", "1T", "132", "32",
922 "FCC", "5G", "20M", "HT", "1T", "136", "30",
923 "ETSI", "5G", "20M", "HT", "1T", "136", "32",
924 "MKK", "5G", "20M", "HT", "1T", "136", "32",
925 "FCC", "5G", "20M", "HT", "1T", "140", "28",
926 "ETSI", "5G", "20M", "HT", "1T", "140", "32",
927 "MKK", "5G", "20M", "HT", "1T", "140", "32",
928 "FCC", "5G", "20M", "HT", "1T", "149", "34",
929 "ETSI", "5G", "20M", "HT", "1T", "149", "32",
930 "MKK", "5G", "20M", "HT", "1T", "149", "63",
931 "FCC", "5G", "20M", "HT", "1T", "153", "34",
932 "ETSI", "5G", "20M", "HT", "1T", "153", "32",
933 "MKK", "5G", "20M", "HT", "1T", "153", "63",
934 "FCC", "5G", "20M", "HT", "1T", "157", "34",
935 "ETSI", "5G", "20M", "HT", "1T", "157", "32",
936 "MKK", "5G", "20M", "HT", "1T", "157", "63",
937 "FCC", "5G", "20M", "HT", "1T", "161", "34",
938 "ETSI", "5G", "20M", "HT", "1T", "161", "32",
939 "MKK", "5G", "20M", "HT", "1T", "161", "63",
940 "FCC", "5G", "20M", "HT", "1T", "165", "34",
941 "ETSI", "5G", "20M", "HT", "1T", "165", "32",
942 "MKK", "5G", "20M", "HT", "1T", "165", "63",
943 "FCC", "5G", "20M", "HT", "2T", "36", "28",
944 "ETSI", "5G", "20M", "HT", "2T", "36", "30",
945 "MKK", "5G", "20M", "HT", "2T", "36", "30",
946 "FCC", "5G", "20M", "HT", "2T", "40", "28",
947 "ETSI", "5G", "20M", "HT", "2T", "40", "30",
948 "MKK", "5G", "20M", "HT", "2T", "40", "30",
949 "FCC", "5G", "20M", "HT", "2T", "44", "28",
950 "ETSI", "5G", "20M", "HT", "2T", "44", "30",
951 "MKK", "5G", "20M", "HT", "2T", "44", "30",
952 "FCC", "5G", "20M", "HT", "2T", "48", "28",
953 "ETSI", "5G", "20M", "HT", "2T", "48", "30",
954 "MKK", "5G", "20M", "HT", "2T", "48", "30",
955 "FCC", "5G", "20M", "HT", "2T", "52", "34",
956 "ETSI", "5G", "20M", "HT", "2T", "52", "30",
957 "MKK", "5G", "20M", "HT", "2T", "52", "30",
958 "FCC", "5G", "20M", "HT", "2T", "56", "32",
959 "ETSI", "5G", "20M", "HT", "2T", "56", "30",
960 "MKK", "5G", "20M", "HT", "2T", "56", "30",
961 "FCC", "5G", "20M", "HT", "2T", "60", "30",
962 "ETSI", "5G", "20M", "HT", "2T", "60", "30",
963 "MKK", "5G", "20M", "HT", "2T", "60", "30",
964 "FCC", "5G", "20M", "HT", "2T", "64", "26",
965 "ETSI", "5G", "20M", "HT", "2T", "64", "30",
966 "MKK", "5G", "20M", "HT", "2T", "64", "30",
967 "FCC", "5G", "20M", "HT", "2T", "100", "28",
968 "ETSI", "5G", "20M", "HT", "2T", "100", "30",
969 "MKK", "5G", "20M", "HT", "2T", "100", "30",
970 "FCC", "5G", "20M", "HT", "2T", "114", "28",
971 "ETSI", "5G", "20M", "HT", "2T", "114", "30",
972 "MKK", "5G", "20M", "HT", "2T", "114", "30",
973 "FCC", "5G", "20M", "HT", "2T", "108", "30",
974 "ETSI", "5G", "20M", "HT", "2T", "108", "30",
975 "MKK", "5G", "20M", "HT", "2T", "108", "30",
976 "FCC", "5G", "20M", "HT", "2T", "112", "32",
977 "ETSI", "5G", "20M", "HT", "2T", "112", "30",
978 "MKK", "5G", "20M", "HT", "2T", "112", "30",
979 "FCC", "5G", "20M", "HT", "2T", "116", "32",
980 "ETSI", "5G", "20M", "HT", "2T", "116", "30",
981 "MKK", "5G", "20M", "HT", "2T", "116", "30",
982 "FCC", "5G", "20M", "HT", "2T", "120", "34",
983 "ETSI", "5G", "20M", "HT", "2T", "120", "30",
984 "MKK", "5G", "20M", "HT", "2T", "120", "30",
985 "FCC", "5G", "20M", "HT", "2T", "124", "32",
986 "ETSI", "5G", "20M", "HT", "2T", "124", "30",
987 "MKK", "5G", "20M", "HT", "2T", "124", "30",
988 "FCC", "5G", "20M", "HT", "2T", "128", "30",
989 "ETSI", "5G", "20M", "HT", "2T", "128", "30",
990 "MKK", "5G", "20M", "HT", "2T", "128", "30",
991 "FCC", "5G", "20M", "HT", "2T", "132", "28",
992 "ETSI", "5G", "20M", "HT", "2T", "132", "30",
993 "MKK", "5G", "20M", "HT", "2T", "132", "30",
994 "FCC", "5G", "20M", "HT", "2T", "136", "28",
995 "ETSI", "5G", "20M", "HT", "2T", "136", "30",
996 "MKK", "5G", "20M", "HT", "2T", "136", "30",
997 "FCC", "5G", "20M", "HT", "2T", "140", "26",
998 "ETSI", "5G", "20M", "HT", "2T", "140", "30",
999 "MKK", "5G", "20M", "HT", "2T", "140", "30",
1000 "FCC", "5G", "20M", "HT", "2T", "149", "34",
1001 "ETSI", "5G", "20M", "HT", "2T", "149", "30",
1002 "MKK", "5G", "20M", "HT", "2T", "149", "63",
1003 "FCC", "5G", "20M", "HT", "2T", "153", "34",
1004 "ETSI", "5G", "20M", "HT", "2T", "153", "30",
1005 "MKK", "5G", "20M", "HT", "2T", "153", "63",
1006 "FCC", "5G", "20M", "HT", "2T", "157", "34",
1007 "ETSI", "5G", "20M", "HT", "2T", "157", "30",
1008 "MKK", "5G", "20M", "HT", "2T", "157", "63",
1009 "FCC", "5G", "20M", "HT", "2T", "161", "34",
1010 "ETSI", "5G", "20M", "HT", "2T", "161", "30",
1011 "MKK", "5G", "20M", "HT", "2T", "161", "63",
1012 "FCC", "5G", "20M", "HT", "2T", "165", "34",
1013 "ETSI", "5G", "20M", "HT", "2T", "165", "30",
1014 "MKK", "5G", "20M", "HT", "2T", "165", "63",
1015 "FCC", "5G", "40M", "HT", "1T", "38", "30",
1016 "ETSI", "5G", "40M", "HT", "1T", "38", "32",
1017 "MKK", "5G", "40M", "HT", "1T", "38", "32",
1018 "FCC", "5G", "40M", "HT", "1T", "46", "30",
1019 "ETSI", "5G", "40M", "HT", "1T", "46", "32",
1020 "MKK", "5G", "40M", "HT", "1T", "46", "32",
1021 "FCC", "5G", "40M", "HT", "1T", "54", "32",
1022 "ETSI", "5G", "40M", "HT", "1T", "54", "32",
1023 "MKK", "5G", "40M", "HT", "1T", "54", "32",
1024 "FCC", "5G", "40M", "HT", "1T", "62", "32",
1025 "ETSI", "5G", "40M", "HT", "1T", "62", "32",
1026 "MKK", "5G", "40M", "HT", "1T", "62", "32",
1027 "FCC", "5G", "40M", "HT", "1T", "102", "28",
1028 "ETSI", "5G", "40M", "HT", "1T", "102", "32",
1029 "MKK", "5G", "40M", "HT", "1T", "102", "32",
1030 "FCC", "5G", "40M", "HT", "1T", "110", "32",
1031 "ETSI", "5G", "40M", "HT", "1T", "110", "32",
1032 "MKK", "5G", "40M", "HT", "1T", "110", "32",
1033 "FCC", "5G", "40M", "HT", "1T", "118", "34",
1034 "ETSI", "5G", "40M", "HT", "1T", "118", "32",
1035 "MKK", "5G", "40M", "HT", "1T", "118", "32",
1036 "FCC", "5G", "40M", "HT", "1T", "126", "34",
1037 "ETSI", "5G", "40M", "HT", "1T", "126", "32",
1038 "MKK", "5G", "40M", "HT", "1T", "126", "32",
1039 "FCC", "5G", "40M", "HT", "1T", "134", "32",
1040 "ETSI", "5G", "40M", "HT", "1T", "134", "32",
1041 "MKK", "5G", "40M", "HT", "1T", "134", "32",
1042 "FCC", "5G", "40M", "HT", "1T", "151", "34",
1043 "ETSI", "5G", "40M", "HT", "1T", "151", "32",
1044 "MKK", "5G", "40M", "HT", "1T", "151", "63",
1045 "FCC", "5G", "40M", "HT", "1T", "159", "34",
1046 "ETSI", "5G", "40M", "HT", "1T", "159", "32",
1047 "MKK", "5G", "40M", "HT", "1T", "159", "63",
1048 "FCC", "5G", "40M", "HT", "2T", "38", "28",
1049 "ETSI", "5G", "40M", "HT", "2T", "38", "30",
1050 "MKK", "5G", "40M", "HT", "2T", "38", "30",
1051 "FCC", "5G", "40M", "HT", "2T", "46", "28",
1052 "ETSI", "5G", "40M", "HT", "2T", "46", "30",
1053 "MKK", "5G", "40M", "HT", "2T", "46", "30",
1054 "FCC", "5G", "40M", "HT", "2T", "54", "30",
1055 "ETSI", "5G", "40M", "HT", "2T", "54", "30",
1056 "MKK", "5G", "40M", "HT", "2T", "54", "30",
1057 "FCC", "5G", "40M", "HT", "2T", "62", "30",
1058 "ETSI", "5G", "40M", "HT", "2T", "62", "30",
1059 "MKK", "5G", "40M", "HT", "2T", "62", "30",
1060 "FCC", "5G", "40M", "HT", "2T", "102", "26",
1061 "ETSI", "5G", "40M", "HT", "2T", "102", "30",
1062 "MKK", "5G", "40M", "HT", "2T", "102", "30",
1063 "FCC", "5G", "40M", "HT", "2T", "110", "30",
1064 "ETSI", "5G", "40M", "HT", "2T", "110", "30",
1065 "MKK", "5G", "40M", "HT", "2T", "110", "30",
1066 "FCC", "5G", "40M", "HT", "2T", "118", "34",
1067 "ETSI", "5G", "40M", "HT", "2T", "118", "30",
1068 "MKK", "5G", "40M", "HT", "2T", "118", "30",
1069 "FCC", "5G", "40M", "HT", "2T", "126", "32",
1070 "ETSI", "5G", "40M", "HT", "2T", "126", "30",
1071 "MKK", "5G", "40M", "HT", "2T", "126", "30",
1072 "FCC", "5G", "40M", "HT", "2T", "134", "30",
1073 "ETSI", "5G", "40M", "HT", "2T", "134", "30",
1074 "MKK", "5G", "40M", "HT", "2T", "134", "30",
1075 "FCC", "5G", "40M", "HT", "2T", "151", "34",
1076 "ETSI", "5G", "40M", "HT", "2T", "151", "30",
1077 "MKK", "5G", "40M", "HT", "2T", "151", "63",
1078 "FCC", "5G", "40M", "HT", "2T", "159", "34",
1079 "ETSI", "5G", "40M", "HT", "2T", "159", "30",
1080 "MKK", "5G", "40M", "HT", "2T", "159", "63",
1081 "FCC", "5G", "80M", "VHT", "1T", "42", "30",
1082 "ETSI", "5G", "80M", "VHT", "1T", "42", "32",
1083 "MKK", "5G", "80M", "VHT", "1T", "42", "32",
1084 "FCC", "5G", "80M", "VHT", "1T", "58", "28",
1085 "ETSI", "5G", "80M", "VHT", "1T", "58", "32",
1086 "MKK", "5G", "80M", "VHT", "1T", "58", "32",
1087 "FCC", "5G", "80M", "VHT", "1T", "106", "30",
1088 "ETSI", "5G", "80M", "VHT", "1T", "106", "32",
1089 "MKK", "5G", "80M", "VHT", "1T", "106", "32",
1090 "FCC", "5G", "80M", "VHT", "1T", "122", "34",
1091 "ETSI", "5G", "80M", "VHT", "1T", "122", "32",
1092 "MKK", "5G", "80M", "VHT", "1T", "122", "32",
1093 "FCC", "5G", "80M", "VHT", "1T", "155", "34",
1094 "ETSI", "5G", "80M", "VHT", "1T", "155", "32",
1095 "MKK", "5G", "80M", "VHT", "1T", "155", "63",
1096 "FCC", "5G", "80M", "VHT", "2T", "42", "28",
1097 "ETSI", "5G", "80M", "VHT", "2T", "42", "30",
1098 "MKK", "5G", "80M", "VHT", "2T", "42", "30",
1099 "FCC", "5G", "80M", "VHT", "2T", "58", "26",
1100 "ETSI", "5G", "80M", "VHT", "2T", "58", "30",
1101 "MKK", "5G", "80M", "VHT", "2T", "58", "30",
1102 "FCC", "5G", "80M", "VHT", "2T", "106", "28",
1103 "ETSI", "5G", "80M", "VHT", "2T", "106", "30",
1104 "MKK", "5G", "80M", "VHT", "2T", "106", "30",
1105 "FCC", "5G", "80M", "VHT", "2T", "122", "32",
1106 "ETSI", "5G", "80M", "VHT", "2T", "122", "30",
1107 "MKK", "5G", "80M", "VHT", "2T", "122", "30",
1108 "FCC", "5G", "80M", "VHT", "2T", "155", "34",
1109 "ETSI", "5G", "80M", "VHT", "2T", "155", "30",
1110 "MKK", "5G", "80M", "VHT", "2T", "155", "63"
1111 };
1112
1113 void
odm_read_and_config_mp_8723d_txpwr_lmt(struct dm_struct * dm)1114 odm_read_and_config_mp_8723d_txpwr_lmt(struct dm_struct *dm)
1115 {
1116 u32 i = 0;
1117 #if (DM_ODM_SUPPORT_TYPE == ODM_IOT)
1118 u32 array_len = sizeof(array_mp_8723d_txpwr_lmt) / sizeof(u8);
1119 u8 *array = (u8 *)array_mp_8723d_txpwr_lmt;
1120 #else
1121 u32 array_len = sizeof(array_mp_8723d_txpwr_lmt) / sizeof(u8 *);
1122 u8 **array = (u8 **)array_mp_8723d_txpwr_lmt;
1123 #endif
1124
1125 #if (DM_ODM_SUPPORT_TYPE == ODM_WIN)
1126 void *adapter = dm->adapter;
1127 HAL_DATA_TYPE *hal_data = GET_HAL_DATA(((PADAPTER)adapter));
1128
1129 PlatformZeroMemory(hal_data->BufOfLinesPwrLmt, MAX_LINES_HWCONFIG_TXT * MAX_BYTES_LINE_HWCONFIG_TXT);
1130 hal_data->nLinesReadPwrLmt = array_len / 7;
1131 #endif
1132
1133 PHYDM_DBG(dm, ODM_COMP_INIT, "===> %s\n", __func__);
1134
1135 for (i = 0; i < array_len; i += 7) {
1136 #if (DM_ODM_SUPPORT_TYPE == ODM_IOT)
1137 u8 regulation = array[i];
1138 u8 band = array[i + 1];
1139 u8 bandwidth = array[i + 2];
1140 u8 rate = array[i + 3];
1141 u8 rf_path = array[i + 4];
1142 u8 chnl = array[i + 5];
1143 u8 val = array[i + 6];
1144 #else
1145 u8 *regulation = array[i];
1146 u8 *band = array[i + 1];
1147 u8 *bandwidth = array[i + 2];
1148 u8 *rate = array[i + 3];
1149 u8 *rf_path = array[i + 4];
1150 u8 *chnl = array[i + 5];
1151 u8 *val = array[i + 6];
1152 #endif
1153
1154 odm_config_bb_txpwr_lmt_8723d(dm, regulation, band, bandwidth, rate, rf_path, chnl, val);
1155 #if (DM_ODM_SUPPORT_TYPE == ODM_WIN)
1156 rsprintf((char *)hal_data->BufOfLinesPwrLmt[i / 7], 100, "\"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\",",
1157 regulation, band, bandwidth, rate, rf_path, chnl, val);
1158 #endif
1159 }
1160 }
1161
1162 /******************************************************************************
1163 * txxtaltrack.TXT
1164 ******************************************************************************/
1165
1166 s8 g_delta_swing_table_xtal_mp_n_txxtaltrack_8723d[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
1167 s8 g_delta_swing_table_xtal_mp_p_txxtaltrack_8723d[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -10, -12, -14, -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, -16};
1168
1169 void
odm_read_and_config_mp_8723d_txxtaltrack(struct dm_struct * dm)1170 odm_read_and_config_mp_8723d_txxtaltrack(struct dm_struct *dm)
1171 {
1172 struct dm_rf_calibration_struct *cali_info = &(dm->rf_calibrate_info);
1173
1174 PHYDM_DBG(dm, ODM_COMP_INIT, "===> ODM_ReadAndConfig_MP_mp_8723d\n");
1175
1176
1177 odm_move_memory(dm, cali_info->delta_swing_table_xtal_p, g_delta_swing_table_xtal_mp_p_txxtaltrack_8723d, DELTA_SWINGIDX_SIZE);
1178 odm_move_memory(dm, cali_info->delta_swing_table_xtal_n, g_delta_swing_table_xtal_mp_n_txxtaltrack_8723d, DELTA_SWINGIDX_SIZE);
1179 }
1180
1181 #endif /* end of HWIMG_SUPPORT*/
1182
1183