This source file includes following definitions.
- CheckPositive
- CheckNegative
- ODM_ReadAndConfig_MP_8723B_RadioA
- ODM_ReadAndConfig_MP_8723B_TxPowerTrack_SDIO
- ODM_ReadAndConfig_MP_8723B_TXPWR_LMT
1
2
3
4
5
6
7
8 #include <linux/kernel.h>
9 #include "odm_precomp.h"
10
11 static bool CheckPositive(
12 PDM_ODM_T pDM_Odm, const u32 Condition1, const u32 Condition2
13 )
14 {
15 u8 _BoardType =
16 ((pDM_Odm->BoardType & BIT4) >> 4) << 0 |
17 ((pDM_Odm->BoardType & BIT3) >> 3) << 1 |
18 ((pDM_Odm->BoardType & BIT7) >> 7) << 2 |
19 ((pDM_Odm->BoardType & BIT6) >> 6) << 3 |
20 ((pDM_Odm->BoardType & BIT2) >> 2) << 4;
21
22 u32 cond1 = Condition1, cond2 = Condition2;
23 u32 driver1 =
24 pDM_Odm->CutVersion << 24 |
25 pDM_Odm->SupportPlatform << 16 |
26 pDM_Odm->PackageType << 12 |
27 pDM_Odm->SupportInterface << 8 |
28 _BoardType;
29
30 u32 driver2 =
31 pDM_Odm->TypeGLNA << 0 |
32 pDM_Odm->TypeGPA << 8 |
33 pDM_Odm->TypeALNA << 16 |
34 pDM_Odm->TypeAPA << 24;
35
36 ODM_RT_TRACE(
37 pDM_Odm,
38 ODM_COMP_INIT,
39 ODM_DBG_TRACE,
40 (
41 "===> [8812A] CheckPositive (cond1, cond2) = (0x%X 0x%X)\n",
42 cond1,
43 cond2
44 )
45 );
46 ODM_RT_TRACE(
47 pDM_Odm,
48 ODM_COMP_INIT,
49 ODM_DBG_TRACE,
50 (
51 "===> [8812A] CheckPositive (driver1, driver2) = (0x%X 0x%X)\n",
52 driver1,
53 driver2
54 )
55 );
56
57 ODM_RT_TRACE(
58 pDM_Odm,
59 ODM_COMP_INIT,
60 ODM_DBG_TRACE,
61 (
62 " (Platform, Interface) = (0x%X, 0x%X)\n",
63 pDM_Odm->SupportPlatform,
64 pDM_Odm->SupportInterface
65 )
66 );
67 ODM_RT_TRACE(
68 pDM_Odm,
69 ODM_COMP_INIT,
70 ODM_DBG_TRACE,
71 (
72 " (Board, Package) = (0x%X, 0x%X)\n",
73 pDM_Odm->BoardType,
74 pDM_Odm->PackageType
75 )
76 );
77
78
79
80
81 if (
82 ((cond1 & 0x0000F000) != 0) &&
83 ((cond1 & 0x0000F000) != (driver1 & 0x0000F000))
84 )
85 return false;
86
87 if (
88 ((cond1 & 0x0F000000) != 0) &&
89 ((cond1 & 0x0F000000) != (driver1 & 0x0F000000))
90 )
91 return false;
92
93
94
95 cond1 &= 0x000F0FFF;
96 driver1 &= 0x000F0FFF;
97
98 if ((cond1 & driver1) == cond1) {
99 u32 bitMask = 0;
100
101 if ((cond1 & 0x0F) == 0)
102 return true;
103
104 if ((cond1 & BIT0) != 0)
105 bitMask |= 0x000000FF;
106 if ((cond1 & BIT1) != 0)
107 bitMask |= 0x0000FF00;
108 if ((cond1 & BIT2) != 0)
109 bitMask |= 0x00FF0000;
110 if ((cond1 & BIT3) != 0)
111 bitMask |= 0xFF000000;
112
113
114 if ((cond2 & bitMask) == (driver2 & bitMask))
115 return true;
116
117 return false;
118 }
119
120 return false;
121 }
122
123 static bool CheckNegative(
124 PDM_ODM_T pDM_Odm, const u32 Condition1, const u32 Condition2
125 )
126 {
127 return true;
128 }
129
130
131
132
133
134 static u32 Array_MP_8723B_RadioA[] = {
135 0x000, 0x00010000,
136 0x0B0, 0x000DFFE0,
137 0x0FE, 0x00000000,
138 0x0FE, 0x00000000,
139 0x0FE, 0x00000000,
140 0x0B1, 0x00000018,
141 0x0FE, 0x00000000,
142 0x0FE, 0x00000000,
143 0x0FE, 0x00000000,
144 0x0B2, 0x00084C00,
145 0x0B5, 0x0000D2CC,
146 0x0B6, 0x000925AA,
147 0x0B7, 0x00000010,
148 0x0B8, 0x0000907F,
149 0x05C, 0x00000002,
150 0x07C, 0x00000002,
151 0x07E, 0x00000005,
152 0x08B, 0x0006FC00,
153 0x0B0, 0x000FF9F0,
154 0x01C, 0x000739D2,
155 0x01E, 0x00000000,
156 0x0DF, 0x00000780,
157 0x050, 0x00067435,
158 0x80002000, 0x00000000, 0x40000000, 0x00000000,
159 0x051, 0x0006B10E,
160 0x90003000, 0x00000000, 0x40000000, 0x00000000,
161 0x051, 0x0006B10E,
162 0x90004000, 0x00000000, 0x40000000, 0x00000000,
163 0x051, 0x0006B10E,
164 0xA0000000, 0x00000000,
165 0x051, 0x0006B04E,
166 0xB0000000, 0x00000000,
167 0x052, 0x000007D2,
168 0x053, 0x00000000,
169 0x054, 0x00050400,
170 0x055, 0x0004026E,
171 0x0DD, 0x0000004C,
172 0x070, 0x00067435,
173 0x80002000, 0x00000000, 0x40000000, 0x00000000,
174 0x071, 0x0006B10E,
175 0x90003000, 0x00000000, 0x40000000, 0x00000000,
176 0x071, 0x0006B10E,
177 0x90004000, 0x00000000, 0x40000000, 0x00000000,
178 0x071, 0x0006B10E,
179 0xA0000000, 0x00000000,
180 0x071, 0x0006B04E,
181 0xB0000000, 0x00000000,
182 0x072, 0x000007D2,
183 0x073, 0x00000000,
184 0x074, 0x00050400,
185 0x075, 0x0004026E,
186 0x0EF, 0x00000100,
187 0x034, 0x0000ADD7,
188 0x035, 0x00005C00,
189 0x034, 0x00009DD4,
190 0x035, 0x00005000,
191 0x034, 0x00008DD1,
192 0x035, 0x00004400,
193 0x034, 0x00007DCE,
194 0x035, 0x00003800,
195 0x034, 0x00006CD1,
196 0x035, 0x00004400,
197 0x034, 0x00005CCE,
198 0x035, 0x00003800,
199 0x034, 0x000048CE,
200 0x035, 0x00004400,
201 0x034, 0x000034CE,
202 0x035, 0x00003800,
203 0x034, 0x00002451,
204 0x035, 0x00004400,
205 0x034, 0x0000144E,
206 0x035, 0x00003800,
207 0x034, 0x00000051,
208 0x035, 0x00004400,
209 0x0EF, 0x00000000,
210 0x0EF, 0x00000100,
211 0x0ED, 0x00000010,
212 0x044, 0x0000ADD7,
213 0x044, 0x00009DD4,
214 0x044, 0x00008DD1,
215 0x044, 0x00007DCE,
216 0x044, 0x00006CC1,
217 0x044, 0x00005CCE,
218 0x044, 0x000044D1,
219 0x044, 0x000034CE,
220 0x044, 0x00002451,
221 0x044, 0x0000144E,
222 0x044, 0x00000051,
223 0x0EF, 0x00000000,
224 0x0ED, 0x00000000,
225 0x07F, 0x00020080,
226 0x0EF, 0x00002000,
227 0x03B, 0x000380EF,
228 0x03B, 0x000302FE,
229 0x03B, 0x00028CE6,
230 0x03B, 0x000200BC,
231 0x03B, 0x000188A5,
232 0x03B, 0x00010FBC,
233 0x03B, 0x00008F71,
234 0x03B, 0x00000900,
235 0x0EF, 0x00000000,
236 0x0ED, 0x00000001,
237 0x040, 0x000380EF,
238 0x040, 0x000302FE,
239 0x040, 0x00028CE6,
240 0x040, 0x000200BC,
241 0x040, 0x000188A5,
242 0x040, 0x00010FBC,
243 0x040, 0x00008F71,
244 0x040, 0x00000900,
245 0x0ED, 0x00000000,
246 0x082, 0x00080000,
247 0x083, 0x00008000,
248 0x084, 0x00048D80,
249 0x085, 0x00068000,
250 0x0A2, 0x00080000,
251 0x0A3, 0x00008000,
252 0x0A4, 0x00048D80,
253 0x0A5, 0x00068000,
254 0x0ED, 0x00000002,
255 0x0EF, 0x00000002,
256 0x056, 0x00000032,
257 0x076, 0x00000032,
258 0x001, 0x00000780,
259
260 };
261
262 void ODM_ReadAndConfig_MP_8723B_RadioA(PDM_ODM_T pDM_Odm)
263 {
264 u32 i = 0;
265 u32 ArrayLen = ARRAY_SIZE(Array_MP_8723B_RadioA);
266 u32 *Array = Array_MP_8723B_RadioA;
267
268 ODM_RT_TRACE(
269 pDM_Odm,
270 ODM_COMP_INIT,
271 ODM_DBG_LOUD,
272 ("===> ODM_ReadAndConfig_MP_8723B_RadioA\n")
273 );
274
275 for (i = 0; i < ArrayLen; i += 2) {
276 u32 v1 = Array[i];
277 u32 v2 = Array[i+1];
278
279
280 if (v1 < 0x40000000) {
281 odm_ConfigRF_RadioA_8723B(pDM_Odm, v1, v2);
282 continue;
283 } else {
284
285 bool bMatched = true;
286 u8 cCond = (u8)((v1 & (BIT29|BIT28)) >> 28);
287
288 if (cCond == COND_ELSE) {
289 bMatched = true;
290 READ_NEXT_PAIR(v1, v2, i);
291 } else if (!CheckPositive(pDM_Odm, v1, v2)) {
292 bMatched = false;
293 READ_NEXT_PAIR(v1, v2, i);
294 READ_NEXT_PAIR(v1, v2, i);
295 } else {
296 READ_NEXT_PAIR(v1, v2, i);
297 if (!CheckNegative(pDM_Odm, v1, v2))
298 bMatched = false;
299 else
300 bMatched = true;
301 READ_NEXT_PAIR(v1, v2, i);
302 }
303
304 if (!bMatched) {
305
306
307
308 while (v1 < 0x40000000 && i < ArrayLen-2)
309 READ_NEXT_PAIR(v1, v2, i);
310
311 i -= 2;
312 } else {
313
314 while (v1 < 0x40000000 && i < ArrayLen-2) {
315 odm_ConfigRF_RadioA_8723B(pDM_Odm, v1, v2);
316 READ_NEXT_PAIR(v1, v2, i);
317 }
318
319
320 cCond = (u8)((v1 & (BIT29|BIT28)) >> 28);
321 while (cCond != COND_ENDIF && i < ArrayLen-2) {
322 READ_NEXT_PAIR(v1, v2, i);
323 cCond = (u8)((v1 & (BIT29|BIT28)) >> 28);
324 }
325 }
326 }
327 }
328 }
329
330
331
332
333
334 static u8 gDeltaSwingTableIdx_MP_5GB_N_TxPowerTrack_SDIO_8723B[][DELTA_SWINGIDX_SIZE] = {
335 {
336 0, 1, 1, 2, 2, 3, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9,
337 9, 10, 11, 12, 12, 13, 13, 14, 14, 14, 14, 14, 14, 14
338 },
339 {
340 0, 1, 2, 3, 3, 4, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10,
341 10, 11, 11, 12, 12, 13, 13, 14, 14, 14, 14, 14, 14, 14
342 },
343 {
344 0, 1, 2, 3, 3, 4, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10,
345 10, 11, 11, 12, 12, 13, 13, 14, 14, 14, 14, 14, 14, 14
346 },
347 };
348 static u8 gDeltaSwingTableIdx_MP_5GB_P_TxPowerTrack_SDIO_8723B[][DELTA_SWINGIDX_SIZE] = {
349 {
350 0, 1, 2, 3, 3, 4, 5, 6, 6, 7, 8, 9, 9, 10, 11, 12,
351 12, 13, 14, 15, 15, 16, 16, 17, 17, 18, 19, 20, 20, 20
352 },
353 {
354 0, 1, 2, 3, 3, 4, 5, 6, 6, 7, 8, 9, 9, 10, 11, 12,
355 12, 13, 14, 15, 15, 16, 17, 18, 18, 19, 19, 20, 20, 20
356 },
357 {
358 0, 1, 2, 3, 3, 4, 5, 6, 6, 7, 8, 9, 9, 10, 11, 12,
359 12, 13, 14, 15, 15, 16, 17, 18, 18, 19, 20, 21, 21, 21
360 },
361 };
362 static u8 gDeltaSwingTableIdx_MP_5GA_N_TxPowerTrack_SDIO_8723B[][DELTA_SWINGIDX_SIZE] = {
363 {
364 0, 1, 2, 3, 3, 4, 4, 5, 5, 6, 7, 8, 8, 9, 9, 10,
365 10, 11, 11, 12, 12, 13, 13, 14, 14, 14, 14, 14, 14, 14
366 },
367 {
368 0, 1, 2, 3, 3, 4, 5, 6, 6, 6, 7, 7, 8, 8, 9, 10,
369 11, 11, 12, 13, 13, 14, 15, 16, 16, 16, 16, 16, 16, 16
370 },
371 {
372 0, 1, 2, 3, 3, 4, 5, 6, 6, 7, 8, 9, 9, 10, 10, 11,
373 11, 12, 13, 14, 14, 15, 15, 16, 16, 16, 16, 16, 16, 16
374 },
375 };
376 static u8 gDeltaSwingTableIdx_MP_5GA_P_TxPowerTrack_SDIO_8723B[][DELTA_SWINGIDX_SIZE] = {
377 {
378 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
379 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
380 },
381 {
382 0, 1, 2, 3, 3, 4, 5, 6, 6, 7, 8, 9, 9, 10, 11, 12,
383 12, 13, 14, 15, 15, 16, 17, 18, 18, 19, 20, 21, 21, 21
384 },
385 {
386 0, 1, 2, 3, 3, 4, 5, 6, 6, 7, 8, 9, 9, 10, 11, 12,
387 12, 13, 14, 15, 15, 16, 17, 18, 18, 19, 20, 21, 21, 21
388 },
389 };
390 static u8 gDeltaSwingTableIdx_MP_2GB_N_TxPowerTrack_SDIO_8723B[] = {
391 0, 0, 1, 2, 2, 2, 3, 3, 3, 4, 5, 5, 6, 6, 6, 6,
392 7, 7, 7, 8, 8, 9, 9, 10, 10, 11, 12, 13, 14, 15
393 };
394 static u8 gDeltaSwingTableIdx_MP_2GB_P_TxPowerTrack_SDIO_8723B[] = {
395 0, 0, 1, 2, 2, 3, 3, 4, 5, 5, 6, 6, 7, 7, 8, 8,
396 9, 9, 10, 10, 10, 11, 11, 12, 12, 13, 13, 14, 15, 15
397 };
398 static u8 gDeltaSwingTableIdx_MP_2GA_N_TxPowerTrack_SDIO_8723B[] = {
399 0, 0, 1, 2, 2, 2, 3, 3, 3, 4, 5, 5, 6, 6, 6, 6,
400 7, 7, 7, 8, 8, 9, 9, 10, 10, 11, 12, 13, 14, 15
401 };
402 static u8 gDeltaSwingTableIdx_MP_2GA_P_TxPowerTrack_SDIO_8723B[] = {
403 0, 0, 1, 2, 2, 3, 3, 4, 5, 5, 6, 6, 7, 7, 8, 8,
404 9, 9, 10, 10, 10, 11, 11, 12, 12, 13, 13, 14, 15, 15
405 };
406 static u8 gDeltaSwingTableIdx_MP_2GCCKB_N_TxPowerTrack_SDIO_8723B[] = {
407 0, 0, 1, 2, 2, 3, 3, 4, 4, 5, 6, 6, 7, 7, 7, 8,
408 8, 8, 9, 9, 9, 10, 10, 11, 11, 12, 12, 13, 14, 15
409 };
410 static u8 gDeltaSwingTableIdx_MP_2GCCKB_P_TxPowerTrack_SDIO_8723B[] = {
411 0, 0, 1, 2, 2, 2, 3, 3, 3, 4, 5, 5, 6, 6, 7, 7,
412 8, 8, 9, 9, 9, 10, 10, 11, 11, 12, 12, 13, 14, 15
413 };
414 static u8 gDeltaSwingTableIdx_MP_2GCCKA_N_TxPowerTrack_SDIO_8723B[] = {
415 0, 0, 1, 2, 2, 3, 3, 4, 4, 5, 6, 6, 7, 7, 7, 8,
416 8, 8, 9, 9, 9, 10, 10, 11, 11, 12, 12, 13, 14, 15
417 };
418 static u8 gDeltaSwingTableIdx_MP_2GCCKA_P_TxPowerTrack_SDIO_8723B[] = {
419 0, 0, 1, 2, 2, 2, 3, 3, 3, 4, 5, 5, 6, 6, 7, 7,
420 8, 8, 9, 9, 9, 10, 10, 11, 11, 12, 12, 13, 14, 15
421 };
422
423 void ODM_ReadAndConfig_MP_8723B_TxPowerTrack_SDIO(PDM_ODM_T pDM_Odm)
424 {
425 PODM_RF_CAL_T pRFCalibrateInfo = &(pDM_Odm->RFCalibrateInfo);
426
427 ODM_RT_TRACE(
428 pDM_Odm,
429 ODM_COMP_INIT,
430 ODM_DBG_LOUD,
431 ("===> ODM_ReadAndConfig_MP_MP_8723B\n")
432 );
433
434
435 memcpy(
436 pRFCalibrateInfo->DeltaSwingTableIdx_2GA_P,
437 gDeltaSwingTableIdx_MP_2GA_P_TxPowerTrack_SDIO_8723B,
438 DELTA_SWINGIDX_SIZE
439 );
440 memcpy(
441 pRFCalibrateInfo->DeltaSwingTableIdx_2GA_N,
442 gDeltaSwingTableIdx_MP_2GA_N_TxPowerTrack_SDIO_8723B,
443 DELTA_SWINGIDX_SIZE
444 );
445 memcpy(
446 pRFCalibrateInfo->DeltaSwingTableIdx_2GB_P,
447 gDeltaSwingTableIdx_MP_2GB_P_TxPowerTrack_SDIO_8723B,
448 DELTA_SWINGIDX_SIZE
449 );
450 memcpy(
451 pRFCalibrateInfo->DeltaSwingTableIdx_2GB_N,
452 gDeltaSwingTableIdx_MP_2GB_N_TxPowerTrack_SDIO_8723B,
453 DELTA_SWINGIDX_SIZE
454 );
455
456 memcpy(
457 pRFCalibrateInfo->DeltaSwingTableIdx_2GCCKA_P,
458 gDeltaSwingTableIdx_MP_2GCCKA_P_TxPowerTrack_SDIO_8723B,
459 DELTA_SWINGIDX_SIZE
460 );
461 memcpy(
462 pRFCalibrateInfo->DeltaSwingTableIdx_2GCCKA_N,
463 gDeltaSwingTableIdx_MP_2GCCKA_N_TxPowerTrack_SDIO_8723B,
464 DELTA_SWINGIDX_SIZE
465 );
466 memcpy(
467 pRFCalibrateInfo->DeltaSwingTableIdx_2GCCKB_P,
468 gDeltaSwingTableIdx_MP_2GCCKB_P_TxPowerTrack_SDIO_8723B,
469 DELTA_SWINGIDX_SIZE
470 );
471 memcpy(
472 pRFCalibrateInfo->DeltaSwingTableIdx_2GCCKB_N,
473 gDeltaSwingTableIdx_MP_2GCCKB_N_TxPowerTrack_SDIO_8723B,
474 DELTA_SWINGIDX_SIZE
475 );
476
477 memcpy(
478 pRFCalibrateInfo->DeltaSwingTableIdx_5GA_P,
479 gDeltaSwingTableIdx_MP_5GA_P_TxPowerTrack_SDIO_8723B,
480 DELTA_SWINGIDX_SIZE*3
481 );
482 memcpy(
483 pRFCalibrateInfo->DeltaSwingTableIdx_5GA_N,
484 gDeltaSwingTableIdx_MP_5GA_N_TxPowerTrack_SDIO_8723B,
485 DELTA_SWINGIDX_SIZE*3
486 );
487 memcpy(
488 pRFCalibrateInfo->DeltaSwingTableIdx_5GB_P,
489 gDeltaSwingTableIdx_MP_5GB_P_TxPowerTrack_SDIO_8723B,
490 DELTA_SWINGIDX_SIZE*3
491 );
492 memcpy(
493 pRFCalibrateInfo->DeltaSwingTableIdx_5GB_N,
494 gDeltaSwingTableIdx_MP_5GB_N_TxPowerTrack_SDIO_8723B,
495 DELTA_SWINGIDX_SIZE*3
496 );
497 }
498
499
500
501
502
503 static u8 *Array_MP_8723B_TXPWR_LMT[] = {
504 "FCC", "2.4G", "20M", "CCK", "1T", "01", "32",
505 "ETSI", "2.4G", "20M", "CCK", "1T", "01", "32",
506 "MKK", "2.4G", "20M", "CCK", "1T", "01", "32",
507 "FCC", "2.4G", "20M", "CCK", "1T", "02", "32",
508 "ETSI", "2.4G", "20M", "CCK", "1T", "02", "32",
509 "MKK", "2.4G", "20M", "CCK", "1T", "02", "32",
510 "FCC", "2.4G", "20M", "CCK", "1T", "03", "32",
511 "ETSI", "2.4G", "20M", "CCK", "1T", "03", "32",
512 "MKK", "2.4G", "20M", "CCK", "1T", "03", "32",
513 "FCC", "2.4G", "20M", "CCK", "1T", "04", "32",
514 "ETSI", "2.4G", "20M", "CCK", "1T", "04", "32",
515 "MKK", "2.4G", "20M", "CCK", "1T", "04", "32",
516 "FCC", "2.4G", "20M", "CCK", "1T", "05", "32",
517 "ETSI", "2.4G", "20M", "CCK", "1T", "05", "32",
518 "MKK", "2.4G", "20M", "CCK", "1T", "05", "32",
519 "FCC", "2.4G", "20M", "CCK", "1T", "06", "32",
520 "ETSI", "2.4G", "20M", "CCK", "1T", "06", "32",
521 "MKK", "2.4G", "20M", "CCK", "1T", "06", "32",
522 "FCC", "2.4G", "20M", "CCK", "1T", "07", "32",
523 "ETSI", "2.4G", "20M", "CCK", "1T", "07", "32",
524 "MKK", "2.4G", "20M", "CCK", "1T", "07", "32",
525 "FCC", "2.4G", "20M", "CCK", "1T", "08", "32",
526 "ETSI", "2.4G", "20M", "CCK", "1T", "08", "32",
527 "MKK", "2.4G", "20M", "CCK", "1T", "08", "32",
528 "FCC", "2.4G", "20M", "CCK", "1T", "09", "32",
529 "ETSI", "2.4G", "20M", "CCK", "1T", "09", "32",
530 "MKK", "2.4G", "20M", "CCK", "1T", "09", "32",
531 "FCC", "2.4G", "20M", "CCK", "1T", "10", "32",
532 "ETSI", "2.4G", "20M", "CCK", "1T", "10", "32",
533 "MKK", "2.4G", "20M", "CCK", "1T", "10", "32",
534 "FCC", "2.4G", "20M", "CCK", "1T", "11", "32",
535 "ETSI", "2.4G", "20M", "CCK", "1T", "11", "32",
536 "MKK", "2.4G", "20M", "CCK", "1T", "11", "32",
537 "FCC", "2.4G", "20M", "CCK", "1T", "12", "63",
538 "ETSI", "2.4G", "20M", "CCK", "1T", "12", "32",
539 "MKK", "2.4G", "20M", "CCK", "1T", "12", "32",
540 "FCC", "2.4G", "20M", "CCK", "1T", "13", "63",
541 "ETSI", "2.4G", "20M", "CCK", "1T", "13", "32",
542 "MKK", "2.4G", "20M", "CCK", "1T", "13", "32",
543 "FCC", "2.4G", "20M", "CCK", "1T", "14", "63",
544 "ETSI", "2.4G", "20M", "CCK", "1T", "14", "63",
545 "MKK", "2.4G", "20M", "CCK", "1T", "14", "32",
546 "FCC", "2.4G", "20M", "OFDM", "1T", "01", "28",
547 "ETSI", "2.4G", "20M", "OFDM", "1T", "01", "32",
548 "MKK", "2.4G", "20M", "OFDM", "1T", "01", "32",
549 "FCC", "2.4G", "20M", "OFDM", "1T", "02", "28",
550 "ETSI", "2.4G", "20M", "OFDM", "1T", "02", "32",
551 "MKK", "2.4G", "20M", "OFDM", "1T", "02", "32",
552 "FCC", "2.4G", "20M", "OFDM", "1T", "03", "32",
553 "ETSI", "2.4G", "20M", "OFDM", "1T", "03", "32",
554 "MKK", "2.4G", "20M", "OFDM", "1T", "03", "32",
555 "FCC", "2.4G", "20M", "OFDM", "1T", "04", "32",
556 "ETSI", "2.4G", "20M", "OFDM", "1T", "04", "32",
557 "MKK", "2.4G", "20M", "OFDM", "1T", "04", "32",
558 "FCC", "2.4G", "20M", "OFDM", "1T", "05", "32",
559 "ETSI", "2.4G", "20M", "OFDM", "1T", "05", "32",
560 "MKK", "2.4G", "20M", "OFDM", "1T", "05", "32",
561 "FCC", "2.4G", "20M", "OFDM", "1T", "06", "32",
562 "ETSI", "2.4G", "20M", "OFDM", "1T", "06", "32",
563 "MKK", "2.4G", "20M", "OFDM", "1T", "06", "32",
564 "FCC", "2.4G", "20M", "OFDM", "1T", "07", "32",
565 "ETSI", "2.4G", "20M", "OFDM", "1T", "07", "32",
566 "MKK", "2.4G", "20M", "OFDM", "1T", "07", "32",
567 "FCC", "2.4G", "20M", "OFDM", "1T", "08", "32",
568 "ETSI", "2.4G", "20M", "OFDM", "1T", "08", "32",
569 "MKK", "2.4G", "20M", "OFDM", "1T", "08", "32",
570 "FCC", "2.4G", "20M", "OFDM", "1T", "09", "32",
571 "ETSI", "2.4G", "20M", "OFDM", "1T", "09", "32",
572 "MKK", "2.4G", "20M", "OFDM", "1T", "09", "32",
573 "FCC", "2.4G", "20M", "OFDM", "1T", "10", "28",
574 "ETSI", "2.4G", "20M", "OFDM", "1T", "10", "32",
575 "MKK", "2.4G", "20M", "OFDM", "1T", "10", "32",
576 "FCC", "2.4G", "20M", "OFDM", "1T", "11", "28",
577 "ETSI", "2.4G", "20M", "OFDM", "1T", "11", "32",
578 "MKK", "2.4G", "20M", "OFDM", "1T", "11", "32",
579 "FCC", "2.4G", "20M", "OFDM", "1T", "12", "63",
580 "ETSI", "2.4G", "20M", "OFDM", "1T", "12", "32",
581 "MKK", "2.4G", "20M", "OFDM", "1T", "12", "32",
582 "FCC", "2.4G", "20M", "OFDM", "1T", "13", "63",
583 "ETSI", "2.4G", "20M", "OFDM", "1T", "13", "32",
584 "MKK", "2.4G", "20M", "OFDM", "1T", "13", "32",
585 "FCC", "2.4G", "20M", "OFDM", "1T", "14", "63",
586 "ETSI", "2.4G", "20M", "OFDM", "1T", "14", "63",
587 "MKK", "2.4G", "20M", "OFDM", "1T", "14", "63",
588 "FCC", "2.4G", "20M", "HT", "1T", "01", "26",
589 "ETSI", "2.4G", "20M", "HT", "1T", "01", "32",
590 "MKK", "2.4G", "20M", "HT", "1T", "01", "32",
591 "FCC", "2.4G", "20M", "HT", "1T", "02", "26",
592 "ETSI", "2.4G", "20M", "HT", "1T", "02", "32",
593 "MKK", "2.4G", "20M", "HT", "1T", "02", "32",
594 "FCC", "2.4G", "20M", "HT", "1T", "03", "32",
595 "ETSI", "2.4G", "20M", "HT", "1T", "03", "32",
596 "MKK", "2.4G", "20M", "HT", "1T", "03", "32",
597 "FCC", "2.4G", "20M", "HT", "1T", "04", "32",
598 "ETSI", "2.4G", "20M", "HT", "1T", "04", "32",
599 "MKK", "2.4G", "20M", "HT", "1T", "04", "32",
600 "FCC", "2.4G", "20M", "HT", "1T", "05", "32",
601 "ETSI", "2.4G", "20M", "HT", "1T", "05", "32",
602 "MKK", "2.4G", "20M", "HT", "1T", "05", "32",
603 "FCC", "2.4G", "20M", "HT", "1T", "06", "32",
604 "ETSI", "2.4G", "20M", "HT", "1T", "06", "32",
605 "MKK", "2.4G", "20M", "HT", "1T", "06", "32",
606 "FCC", "2.4G", "20M", "HT", "1T", "07", "32",
607 "ETSI", "2.4G", "20M", "HT", "1T", "07", "32",
608 "MKK", "2.4G", "20M", "HT", "1T", "07", "32",
609 "FCC", "2.4G", "20M", "HT", "1T", "08", "32",
610 "ETSI", "2.4G", "20M", "HT", "1T", "08", "32",
611 "MKK", "2.4G", "20M", "HT", "1T", "08", "32",
612 "FCC", "2.4G", "20M", "HT", "1T", "09", "32",
613 "ETSI", "2.4G", "20M", "HT", "1T", "09", "32",
614 "MKK", "2.4G", "20M", "HT", "1T", "09", "32",
615 "FCC", "2.4G", "20M", "HT", "1T", "10", "26",
616 "ETSI", "2.4G", "20M", "HT", "1T", "10", "32",
617 "MKK", "2.4G", "20M", "HT", "1T", "10", "32",
618 "FCC", "2.4G", "20M", "HT", "1T", "11", "26",
619 "ETSI", "2.4G", "20M", "HT", "1T", "11", "32",
620 "MKK", "2.4G", "20M", "HT", "1T", "11", "32",
621 "FCC", "2.4G", "20M", "HT", "1T", "12", "63",
622 "ETSI", "2.4G", "20M", "HT", "1T", "12", "32",
623 "MKK", "2.4G", "20M", "HT", "1T", "12", "32",
624 "FCC", "2.4G", "20M", "HT", "1T", "13", "63",
625 "ETSI", "2.4G", "20M", "HT", "1T", "13", "32",
626 "MKK", "2.4G", "20M", "HT", "1T", "13", "32",
627 "FCC", "2.4G", "20M", "HT", "1T", "14", "63",
628 "ETSI", "2.4G", "20M", "HT", "1T", "14", "63",
629 "MKK", "2.4G", "20M", "HT", "1T", "14", "63",
630 "FCC", "2.4G", "20M", "HT", "2T", "01", "30",
631 "ETSI", "2.4G", "20M", "HT", "2T", "01", "32",
632 "MKK", "2.4G", "20M", "HT", "2T", "01", "32",
633 "FCC", "2.4G", "20M", "HT", "2T", "02", "32",
634 "ETSI", "2.4G", "20M", "HT", "2T", "02", "32",
635 "MKK", "2.4G", "20M", "HT", "2T", "02", "32",
636 "FCC", "2.4G", "20M", "HT", "2T", "03", "32",
637 "ETSI", "2.4G", "20M", "HT", "2T", "03", "32",
638 "MKK", "2.4G", "20M", "HT", "2T", "03", "32",
639 "FCC", "2.4G", "20M", "HT", "2T", "04", "32",
640 "ETSI", "2.4G", "20M", "HT", "2T", "04", "32",
641 "MKK", "2.4G", "20M", "HT", "2T", "04", "32",
642 "FCC", "2.4G", "20M", "HT", "2T", "05", "32",
643 "ETSI", "2.4G", "20M", "HT", "2T", "05", "32",
644 "MKK", "2.4G", "20M", "HT", "2T", "05", "32",
645 "FCC", "2.4G", "20M", "HT", "2T", "06", "32",
646 "ETSI", "2.4G", "20M", "HT", "2T", "06", "32",
647 "MKK", "2.4G", "20M", "HT", "2T", "06", "32",
648 "FCC", "2.4G", "20M", "HT", "2T", "07", "32",
649 "ETSI", "2.4G", "20M", "HT", "2T", "07", "32",
650 "MKK", "2.4G", "20M", "HT", "2T", "07", "32",
651 "FCC", "2.4G", "20M", "HT", "2T", "08", "32",
652 "ETSI", "2.4G", "20M", "HT", "2T", "08", "32",
653 "MKK", "2.4G", "20M", "HT", "2T", "08", "32",
654 "FCC", "2.4G", "20M", "HT", "2T", "09", "32",
655 "ETSI", "2.4G", "20M", "HT", "2T", "09", "32",
656 "MKK", "2.4G", "20M", "HT", "2T", "09", "32",
657 "FCC", "2.4G", "20M", "HT", "2T", "10", "32",
658 "ETSI", "2.4G", "20M", "HT", "2T", "10", "32",
659 "MKK", "2.4G", "20M", "HT", "2T", "10", "32",
660 "FCC", "2.4G", "20M", "HT", "2T", "11", "30",
661 "ETSI", "2.4G", "20M", "HT", "2T", "11", "32",
662 "MKK", "2.4G", "20M", "HT", "2T", "11", "32",
663 "FCC", "2.4G", "20M", "HT", "2T", "12", "63",
664 "ETSI", "2.4G", "20M", "HT", "2T", "12", "32",
665 "MKK", "2.4G", "20M", "HT", "2T", "12", "32",
666 "FCC", "2.4G", "20M", "HT", "2T", "13", "63",
667 "ETSI", "2.4G", "20M", "HT", "2T", "13", "32",
668 "MKK", "2.4G", "20M", "HT", "2T", "13", "32",
669 "FCC", "2.4G", "20M", "HT", "2T", "14", "63",
670 "ETSI", "2.4G", "20M", "HT", "2T", "14", "63",
671 "MKK", "2.4G", "20M", "HT", "2T", "14", "63",
672 "FCC", "2.4G", "40M", "HT", "1T", "01", "63",
673 "ETSI", "2.4G", "40M", "HT", "1T", "01", "63",
674 "MKK", "2.4G", "40M", "HT", "1T", "01", "63",
675 "FCC", "2.4G", "40M", "HT", "1T", "02", "63",
676 "ETSI", "2.4G", "40M", "HT", "1T", "02", "63",
677 "MKK", "2.4G", "40M", "HT", "1T", "02", "63",
678 "FCC", "2.4G", "40M", "HT", "1T", "03", "26",
679 "ETSI", "2.4G", "40M", "HT", "1T", "03", "32",
680 "MKK", "2.4G", "40M", "HT", "1T", "03", "32",
681 "FCC", "2.4G", "40M", "HT", "1T", "04", "26",
682 "ETSI", "2.4G", "40M", "HT", "1T", "04", "32",
683 "MKK", "2.4G", "40M", "HT", "1T", "04", "32",
684 "FCC", "2.4G", "40M", "HT", "1T", "05", "32",
685 "ETSI", "2.4G", "40M", "HT", "1T", "05", "32",
686 "MKK", "2.4G", "40M", "HT", "1T", "05", "32",
687 "FCC", "2.4G", "40M", "HT", "1T", "06", "32",
688 "ETSI", "2.4G", "40M", "HT", "1T", "06", "32",
689 "MKK", "2.4G", "40M", "HT", "1T", "06", "32",
690 "FCC", "2.4G", "40M", "HT", "1T", "07", "32",
691 "ETSI", "2.4G", "40M", "HT", "1T", "07", "32",
692 "MKK", "2.4G", "40M", "HT", "1T", "07", "32",
693 "FCC", "2.4G", "40M", "HT", "1T", "08", "26",
694 "ETSI", "2.4G", "40M", "HT", "1T", "08", "32",
695 "MKK", "2.4G", "40M", "HT", "1T", "08", "32",
696 "FCC", "2.4G", "40M", "HT", "1T", "09", "26",
697 "ETSI", "2.4G", "40M", "HT", "1T", "09", "32",
698 "MKK", "2.4G", "40M", "HT", "1T", "09", "32",
699 "FCC", "2.4G", "40M", "HT", "1T", "10", "26",
700 "ETSI", "2.4G", "40M", "HT", "1T", "10", "32",
701 "MKK", "2.4G", "40M", "HT", "1T", "10", "32",
702 "FCC", "2.4G", "40M", "HT", "1T", "11", "26",
703 "ETSI", "2.4G", "40M", "HT", "1T", "11", "32",
704 "MKK", "2.4G", "40M", "HT", "1T", "11", "32",
705 "FCC", "2.4G", "40M", "HT", "1T", "12", "63",
706 "ETSI", "2.4G", "40M", "HT", "1T", "12", "32",
707 "MKK", "2.4G", "40M", "HT", "1T", "12", "32",
708 "FCC", "2.4G", "40M", "HT", "1T", "13", "63",
709 "ETSI", "2.4G", "40M", "HT", "1T", "13", "32",
710 "MKK", "2.4G", "40M", "HT", "1T", "13", "32",
711 "FCC", "2.4G", "40M", "HT", "1T", "14", "63",
712 "ETSI", "2.4G", "40M", "HT", "1T", "14", "63",
713 "MKK", "2.4G", "40M", "HT", "1T", "14", "63",
714 "FCC", "2.4G", "40M", "HT", "2T", "01", "63",
715 "ETSI", "2.4G", "40M", "HT", "2T", "01", "63",
716 "MKK", "2.4G", "40M", "HT", "2T", "01", "63",
717 "FCC", "2.4G", "40M", "HT", "2T", "02", "63",
718 "ETSI", "2.4G", "40M", "HT", "2T", "02", "63",
719 "MKK", "2.4G", "40M", "HT", "2T", "02", "63",
720 "FCC", "2.4G", "40M", "HT", "2T", "03", "30",
721 "ETSI", "2.4G", "40M", "HT", "2T", "03", "30",
722 "MKK", "2.4G", "40M", "HT", "2T", "03", "30",
723 "FCC", "2.4G", "40M", "HT", "2T", "04", "32",
724 "ETSI", "2.4G", "40M", "HT", "2T", "04", "30",
725 "MKK", "2.4G", "40M", "HT", "2T", "04", "30",
726 "FCC", "2.4G", "40M", "HT", "2T", "05", "32",
727 "ETSI", "2.4G", "40M", "HT", "2T", "05", "30",
728 "MKK", "2.4G", "40M", "HT", "2T", "05", "30",
729 "FCC", "2.4G", "40M", "HT", "2T", "06", "32",
730 "ETSI", "2.4G", "40M", "HT", "2T", "06", "30",
731 "MKK", "2.4G", "40M", "HT", "2T", "06", "30",
732 "FCC", "2.4G", "40M", "HT", "2T", "07", "32",
733 "ETSI", "2.4G", "40M", "HT", "2T", "07", "30",
734 "MKK", "2.4G", "40M", "HT", "2T", "07", "30",
735 "FCC", "2.4G", "40M", "HT", "2T", "08", "32",
736 "ETSI", "2.4G", "40M", "HT", "2T", "08", "30",
737 "MKK", "2.4G", "40M", "HT", "2T", "08", "30",
738 "FCC", "2.4G", "40M", "HT", "2T", "09", "32",
739 "ETSI", "2.4G", "40M", "HT", "2T", "09", "30",
740 "MKK", "2.4G", "40M", "HT", "2T", "09", "30",
741 "FCC", "2.4G", "40M", "HT", "2T", "10", "32",
742 "ETSI", "2.4G", "40M", "HT", "2T", "10", "30",
743 "MKK", "2.4G", "40M", "HT", "2T", "10", "30",
744 "FCC", "2.4G", "40M", "HT", "2T", "11", "30",
745 "ETSI", "2.4G", "40M", "HT", "2T", "11", "30",
746 "MKK", "2.4G", "40M", "HT", "2T", "11", "30",
747 "FCC", "2.4G", "40M", "HT", "2T", "12", "63",
748 "ETSI", "2.4G", "40M", "HT", "2T", "12", "32",
749 "MKK", "2.4G", "40M", "HT", "2T", "12", "32",
750 "FCC", "2.4G", "40M", "HT", "2T", "13", "63",
751 "ETSI", "2.4G", "40M", "HT", "2T", "13", "32",
752 "MKK", "2.4G", "40M", "HT", "2T", "13", "32",
753 "FCC", "2.4G", "40M", "HT", "2T", "14", "63",
754 "ETSI", "2.4G", "40M", "HT", "2T", "14", "63",
755 "MKK", "2.4G", "40M", "HT", "2T", "14", "63"
756 };
757
758 void ODM_ReadAndConfig_MP_8723B_TXPWR_LMT(PDM_ODM_T pDM_Odm)
759 {
760 u32 i = 0;
761 u8 **Array = Array_MP_8723B_TXPWR_LMT;
762
763 ODM_RT_TRACE(
764 pDM_Odm,
765 ODM_COMP_INIT,
766 ODM_DBG_LOUD,
767 ("===> ODM_ReadAndConfig_MP_8723B_TXPWR_LMT\n")
768 );
769
770 for (i = 0; i < ARRAY_SIZE(Array_MP_8723B_TXPWR_LMT); i += 7) {
771 u8 *regulation = Array[i];
772 u8 *band = Array[i+1];
773 u8 *bandwidth = Array[i+2];
774 u8 *rate = Array[i+3];
775 u8 *rfPath = Array[i+4];
776 u8 *chnl = Array[i+5];
777 u8 *val = Array[i+6];
778
779 odm_ConfigBB_TXPWR_LMT_8723B(
780 pDM_Odm,
781 regulation,
782 band,
783 bandwidth,
784 rate,
785 rfPath,
786 chnl,
787 val
788 );
789 }
790 }