xref: /OK3568_Linux_fs/external/rkwifibt/drivers/rtl8723ds/hal/phydm/rtl8723d/halhwimg8723d_rf.c (revision 4882a59341e53eb6f0b4789bf948001014eff981)
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