1 // SPDX-License-Identifier: GPL-2.0
2 /******************************************************************************
4 * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
6 ******************************************************************************/
8 #include <linux/kernel.h>
9 #include "odm_precomp.h"
11 static bool CheckPositive(
12 PDM_ODM_T pDM_Odm, const u32 Condition1, const u32 Condition2
16 ((pDM_Odm->BoardType & BIT4) >> 4) << 0 | /* _GLNA */
17 ((pDM_Odm->BoardType & BIT3) >> 3) << 1 | /* _GPA */
18 ((pDM_Odm->BoardType & BIT7) >> 7) << 2 | /* _ALNA */
19 ((pDM_Odm->BoardType & BIT6) >> 6) << 3 | /* _APA */
20 ((pDM_Odm->BoardType & BIT2) >> 2) << 4; /* _BT */
22 u32 cond1 = Condition1, cond2 = Condition2;
24 pDM_Odm->CutVersion << 24 |
25 pDM_Odm->SupportPlatform << 16 |
26 pDM_Odm->PackageType << 12 |
27 pDM_Odm->SupportInterface << 8 |
31 pDM_Odm->TypeGLNA << 0 |
32 pDM_Odm->TypeGPA << 8 |
33 pDM_Odm->TypeALNA << 16 |
34 pDM_Odm->TypeAPA << 24;
41 "===> [8812A] CheckPositive (cond1, cond2) = (0x%X 0x%X)\n",
51 "===> [8812A] CheckPositive (driver1, driver2) = (0x%X 0x%X)\n",
62 " (Platform, Interface) = (0x%X, 0x%X)\n",
63 pDM_Odm->SupportPlatform,
64 pDM_Odm->SupportInterface
72 " (Board, Package) = (0x%X, 0x%X)\n",
78 /* Value Defined Check =============== */
79 /* QFN Type [15:12] and Cut Version [27:24] need to do value check */
82 ((cond1 & 0x0000F000) != 0) &&
83 ((cond1 & 0x0000F000) != (driver1 & 0x0000F000))
88 ((cond1 & 0x0F000000) != 0) &&
89 ((cond1 & 0x0F000000) != (driver1 & 0x0F000000))
93 /* Bit Defined Check ================ */
94 /* We don't care [31:28] and [23:20] */
96 driver1 &= 0x000F0FFF;
98 if ((cond1 & driver1) == cond1) {
101 if ((cond1 & 0x0F) == 0) /* BoardType is DONTCARE */
104 if ((cond1 & BIT0) != 0) /* GLNA */
105 bitMask |= 0x000000FF;
106 if ((cond1 & BIT1) != 0) /* GPA */
107 bitMask |= 0x0000FF00;
108 if ((cond1 & BIT2) != 0) /* ALNA */
109 bitMask |= 0x00FF0000;
110 if ((cond1 & BIT3) != 0) /* APA */
111 bitMask |= 0xFF000000;
113 /* BoardType of each RF path is matched */
114 if ((cond2 & bitMask) == (driver2 & bitMask))
123 static bool CheckNegative(
124 PDM_ODM_T pDM_Odm, const u32 Condition1, const u32 Condition2
130 /******************************************************************************
132 ******************************************************************************/
134 static u32 Array_MP_8723B_RadioA[] = {
158 0x80002000, 0x00000000, 0x40000000, 0x00000000,
160 0x90003000, 0x00000000, 0x40000000, 0x00000000,
162 0x90004000, 0x00000000, 0x40000000, 0x00000000,
164 0xA0000000, 0x00000000,
166 0xB0000000, 0x00000000,
173 0x80002000, 0x00000000, 0x40000000, 0x00000000,
175 0x90003000, 0x00000000, 0x40000000, 0x00000000,
177 0x90004000, 0x00000000, 0x40000000, 0x00000000,
179 0xA0000000, 0x00000000,
181 0xB0000000, 0x00000000,
262 void ODM_ReadAndConfig_MP_8723B_RadioA(PDM_ODM_T pDM_Odm)
265 u32 ArrayLen = ARRAY_SIZE(Array_MP_8723B_RadioA);
266 u32 *Array = Array_MP_8723B_RadioA;
272 ("===> ODM_ReadAndConfig_MP_8723B_RadioA\n")
275 for (i = 0; i < ArrayLen; i += 2) {
279 /* This (offset, data) pair doesn't care the condition. */
280 if (v1 < 0x40000000) {
281 odm_ConfigRF_RadioA_8723B(pDM_Odm, v1, v2);
284 /* This line is the beginning of branch. */
285 bool bMatched = true;
286 u8 cCond = (u8)((v1 & (BIT29|BIT28)) >> 28);
288 if (cCond == COND_ELSE) { /* ELSE, ENDIF */
290 READ_NEXT_PAIR(v1, v2, i);
291 } else if (!CheckPositive(pDM_Odm, v1, v2)) {
293 READ_NEXT_PAIR(v1, v2, i);
294 READ_NEXT_PAIR(v1, v2, i);
296 READ_NEXT_PAIR(v1, v2, i);
297 if (!CheckNegative(pDM_Odm, v1, v2))
301 READ_NEXT_PAIR(v1, v2, i);
304 if (bMatched == false) {
305 /* Condition isn't matched.
306 * Discard the following (offset, data) pairs.
308 while (v1 < 0x40000000 && i < ArrayLen-2)
309 READ_NEXT_PAIR(v1, v2, i);
311 i -= 2; /* prevent from for-loop += 2 */
313 /* Configure matched pairs and skip to end of if-else. */
314 while (v1 < 0x40000000 && i < ArrayLen-2) {
315 odm_ConfigRF_RadioA_8723B(pDM_Odm, v1, v2);
316 READ_NEXT_PAIR(v1, v2, i);
319 /* Keeps reading until ENDIF. */
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);
330 /******************************************************************************
331 * TxPowerTrack_SDIO.TXT
332 ******************************************************************************/
334 static u8 gDeltaSwingTableIdx_MP_5GB_N_TxPowerTrack_SDIO_8723B[][DELTA_SWINGIDX_SIZE] = {
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
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
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
348 static u8 gDeltaSwingTableIdx_MP_5GB_P_TxPowerTrack_SDIO_8723B[][DELTA_SWINGIDX_SIZE] = {
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
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
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
362 static u8 gDeltaSwingTableIdx_MP_5GA_N_TxPowerTrack_SDIO_8723B[][DELTA_SWINGIDX_SIZE] = {
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
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
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
376 static u8 gDeltaSwingTableIdx_MP_5GA_P_TxPowerTrack_SDIO_8723B[][DELTA_SWINGIDX_SIZE] = {
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
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
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
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
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
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
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
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
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
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
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
423 void ODM_ReadAndConfig_MP_8723B_TxPowerTrack_SDIO(PDM_ODM_T pDM_Odm)
425 PODM_RF_CAL_T pRFCalibrateInfo = &(pDM_Odm->RFCalibrateInfo);
431 ("===> ODM_ReadAndConfig_MP_MP_8723B\n")
436 pRFCalibrateInfo->DeltaSwingTableIdx_2GA_P,
437 gDeltaSwingTableIdx_MP_2GA_P_TxPowerTrack_SDIO_8723B,
441 pRFCalibrateInfo->DeltaSwingTableIdx_2GA_N,
442 gDeltaSwingTableIdx_MP_2GA_N_TxPowerTrack_SDIO_8723B,
446 pRFCalibrateInfo->DeltaSwingTableIdx_2GB_P,
447 gDeltaSwingTableIdx_MP_2GB_P_TxPowerTrack_SDIO_8723B,
451 pRFCalibrateInfo->DeltaSwingTableIdx_2GB_N,
452 gDeltaSwingTableIdx_MP_2GB_N_TxPowerTrack_SDIO_8723B,
457 pRFCalibrateInfo->DeltaSwingTableIdx_2GCCKA_P,
458 gDeltaSwingTableIdx_MP_2GCCKA_P_TxPowerTrack_SDIO_8723B,
462 pRFCalibrateInfo->DeltaSwingTableIdx_2GCCKA_N,
463 gDeltaSwingTableIdx_MP_2GCCKA_N_TxPowerTrack_SDIO_8723B,
467 pRFCalibrateInfo->DeltaSwingTableIdx_2GCCKB_P,
468 gDeltaSwingTableIdx_MP_2GCCKB_P_TxPowerTrack_SDIO_8723B,
472 pRFCalibrateInfo->DeltaSwingTableIdx_2GCCKB_N,
473 gDeltaSwingTableIdx_MP_2GCCKB_N_TxPowerTrack_SDIO_8723B,
478 pRFCalibrateInfo->DeltaSwingTableIdx_5GA_P,
479 gDeltaSwingTableIdx_MP_5GA_P_TxPowerTrack_SDIO_8723B,
480 DELTA_SWINGIDX_SIZE*3
483 pRFCalibrateInfo->DeltaSwingTableIdx_5GA_N,
484 gDeltaSwingTableIdx_MP_5GA_N_TxPowerTrack_SDIO_8723B,
485 DELTA_SWINGIDX_SIZE*3
488 pRFCalibrateInfo->DeltaSwingTableIdx_5GB_P,
489 gDeltaSwingTableIdx_MP_5GB_P_TxPowerTrack_SDIO_8723B,
490 DELTA_SWINGIDX_SIZE*3
493 pRFCalibrateInfo->DeltaSwingTableIdx_5GB_N,
494 gDeltaSwingTableIdx_MP_5GB_N_TxPowerTrack_SDIO_8723B,
495 DELTA_SWINGIDX_SIZE*3
499 /******************************************************************************
501 ******************************************************************************/
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"
758 void ODM_ReadAndConfig_MP_8723B_TXPWR_LMT(PDM_ODM_T pDM_Odm)
761 u8 **Array = Array_MP_8723B_TXPWR_LMT;
767 ("===> ODM_ReadAndConfig_MP_8723B_TXPWR_LMT\n")
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];
779 odm_ConfigBB_TXPWR_LMT_8723B(