1 /******************************************************************************
3 * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
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.
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
14 ******************************************************************************/
17 #include "odm_precomp.h"
26 u8 _BoardType = ((pDM_Odm->BoardType & BIT4) >> 4) << 0 | /* _GLNA */
27 ((pDM_Odm->BoardType & BIT3) >> 3) << 1 | /* _GPA */
28 ((pDM_Odm->BoardType & BIT7) >> 7) << 2 | /* _ALNA */
29 ((pDM_Odm->BoardType & BIT6) >> 6) << 3 | /* _APA */
30 ((pDM_Odm->BoardType & BIT2) >> 2) << 4; /* _BT */
32 u32 cond1 = Condition1, cond2 = Condition2;
33 u32 driver1 = pDM_Odm->CutVersion << 24 |
34 pDM_Odm->SupportPlatform << 16 |
35 pDM_Odm->PackageType << 12 |
36 pDM_Odm->SupportInterface << 8 |
39 u32 driver2 = pDM_Odm->TypeGLNA << 0 |
40 pDM_Odm->TypeGPA << 8 |
41 pDM_Odm->TypeALNA << 16 |
42 pDM_Odm->TypeAPA << 24;
44 ODM_RT_TRACE(pDM_Odm, ODM_COMP_INIT, ODM_DBG_TRACE,
45 ("===> [8812A] CheckPositive (cond1, cond2) = (0x%X 0x%X)\n", cond1, cond2));
46 ODM_RT_TRACE(pDM_Odm, ODM_COMP_INIT, ODM_DBG_TRACE,
47 ("===> [8812A] CheckPositive (driver1, driver2) = (0x%X 0x%X)\n", driver1, driver2));
49 ODM_RT_TRACE(pDM_Odm, ODM_COMP_INIT, ODM_DBG_TRACE,
50 (" (Platform, Interface) = (0x%X, 0x%X)\n", pDM_Odm->SupportPlatform, pDM_Odm->SupportInterface));
51 ODM_RT_TRACE(pDM_Odm, ODM_COMP_INIT, ODM_DBG_TRACE,
52 (" (Board, Package) = (0x%X, 0x%X)\n", pDM_Odm->BoardType, pDM_Odm->PackageType));
54 /* Value Defined Check =============== */
55 /* QFN Type [15:12] and Cut Version [27:24] need to do value check */
57 if (((cond1 & 0x0000F000) != 0) && ((cond1 & 0x0000F000) != (driver1 & 0x0000F000)))
59 if (((cond1 & 0x0F000000) != 0) && ((cond1 & 0x0F000000) != (driver1 & 0x0F000000)))
62 /* Bit Defined Check ================ */
63 /* We don't care [31:28] and [23:20] */
65 driver1 &= 0x000F0FFF;
67 if ((cond1 & driver1) == cond1) {
69 if ((cond1 & 0x0F) == 0) /* BoardType is DONTCARE */
72 if ((cond1 & BIT0) != 0) /* GLNA */
73 bitMask |= 0x000000FF;
74 if ((cond1 & BIT1) != 0) /* GPA */
75 bitMask |= 0x0000FF00;
76 if ((cond1 & BIT2) != 0) /* ALNA */
77 bitMask |= 0x00FF0000;
78 if ((cond1 & BIT3) != 0) /* APA */
79 bitMask |= 0xFF000000;
81 if ((cond2 & bitMask) == (driver2 & bitMask)) /* BoardType of each RF path is matched */
98 /******************************************************************************
100 ******************************************************************************/
102 static u32 Array_MP_8723B_RadioA[] = {
126 0x80002000, 0x00000000, 0x40000000, 0x00000000,
128 0x90003000, 0x00000000, 0x40000000, 0x00000000,
130 0x90004000, 0x00000000, 0x40000000, 0x00000000,
132 0xA0000000, 0x00000000,
134 0xB0000000, 0x00000000,
141 0x80002000, 0x00000000, 0x40000000, 0x00000000,
143 0x90003000, 0x00000000, 0x40000000, 0x00000000,
145 0x90004000, 0x00000000, 0x40000000, 0x00000000,
147 0xA0000000, 0x00000000,
149 0xB0000000, 0x00000000,
231 ODM_ReadAndConfig_MP_8723B_RadioA(
236 u32 ArrayLen = sizeof(Array_MP_8723B_RadioA)/sizeof(u32);
237 u32 * Array = Array_MP_8723B_RadioA;
239 ODM_RT_TRACE(pDM_Odm, ODM_COMP_INIT, ODM_DBG_LOUD, ("===> ODM_ReadAndConfig_MP_8723B_RadioA\n"));
241 for (i = 0; i < ArrayLen; i += 2)
246 /* This (offset, data) pair doesn't care the condition. */
249 odm_ConfigRF_RadioA_8723B(pDM_Odm, v1, v2);
253 { /* This line is the beginning of branch. */
254 bool bMatched = true;
255 u8 cCond = (u8)((v1 & (BIT29|BIT28)) >> 28);
257 if (cCond == COND_ELSE) { /* ELSE, ENDIF */
259 READ_NEXT_PAIR(v1, v2, i);
260 } else if (! CheckPositive(pDM_Odm, v1, v2)) {
262 READ_NEXT_PAIR(v1, v2, i);
263 READ_NEXT_PAIR(v1, v2, i);
265 READ_NEXT_PAIR(v1, v2, i);
266 if (! CheckNegative(pDM_Odm, v1, v2))
270 READ_NEXT_PAIR(v1, v2, i);
273 if (bMatched == false)
274 { /* Condition isn't matched. Discard the following (offset, data) pairs. */
275 while (v1 < 0x40000000 && i < ArrayLen -2)
276 READ_NEXT_PAIR(v1, v2, i);
278 i -= 2; /* prevent from for-loop += 2 */
280 else /* Configure matched pairs and skip to end of if-else. */
282 while (v1 < 0x40000000 && i < ArrayLen-2) {
283 odm_ConfigRF_RadioA_8723B(pDM_Odm, v1, v2);
284 READ_NEXT_PAIR(v1, v2, i);
287 /* Keeps reading until ENDIF. */
288 cCond = (u8)((v1 & (BIT29|BIT28)) >> 28);
289 while (cCond != COND_ENDIF && i < ArrayLen-2) {
290 READ_NEXT_PAIR(v1, v2, i);
291 cCond = (u8)((v1 & (BIT29|BIT28)) >> 28);
298 /******************************************************************************
299 * TxPowerTrack_SDIO.TXT
300 ******************************************************************************/
302 static u8 gDeltaSwingTableIdx_MP_5GB_N_TxPowerTrack_SDIO_8723B[][DELTA_SWINGIDX_SIZE] = {
303 {0, 1, 1, 2, 2, 3, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 11, 12, 12, 13, 13, 14, 14, 14, 14, 14, 14, 14},
304 {0, 1, 2, 3, 3, 4, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, 14, 14, 14, 14, 14},
305 {0, 1, 2, 3, 3, 4, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, 14, 14, 14, 14, 14},
307 static u8 gDeltaSwingTableIdx_MP_5GB_P_TxPowerTrack_SDIO_8723B[][DELTA_SWINGIDX_SIZE] = {
308 {0, 1, 2, 3, 3, 4, 5, 6, 6, 7, 8, 9, 9, 10, 11, 12, 12, 13, 14, 15, 15, 16, 16, 17, 17, 18, 19, 20, 20, 20},
309 {0, 1, 2, 3, 3, 4, 5, 6, 6, 7, 8, 9, 9, 10, 11, 12, 12, 13, 14, 15, 15, 16, 17, 18, 18, 19, 19, 20, 20, 20},
310 {0, 1, 2, 3, 3, 4, 5, 6, 6, 7, 8, 9, 9, 10, 11, 12, 12, 13, 14, 15, 15, 16, 17, 18, 18, 19, 20, 21, 21, 21},
312 static u8 gDeltaSwingTableIdx_MP_5GA_N_TxPowerTrack_SDIO_8723B[][DELTA_SWINGIDX_SIZE] = {
313 {0, 1, 2, 3, 3, 4, 4, 5, 5, 6, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, 14, 14, 14, 14, 14},
314 {0, 1, 2, 3, 3, 4, 5, 6, 6, 6, 7, 7, 8, 8, 9, 10, 11, 11, 12, 13, 13, 14, 15, 16, 16, 16, 16, 16, 16, 16},
315 {0, 1, 2, 3, 3, 4, 5, 6, 6, 7, 8, 9, 9, 10, 10, 11, 11, 12, 13, 14, 14, 15, 15, 16, 16, 16, 16, 16, 16, 16},
317 static u8 gDeltaSwingTableIdx_MP_5GA_P_TxPowerTrack_SDIO_8723B[][DELTA_SWINGIDX_SIZE] = {
318 {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},
319 {0, 1, 2, 3, 3, 4, 5, 6, 6, 7, 8, 9, 9, 10, 11, 12, 12, 13, 14, 15, 15, 16, 17, 18, 18, 19, 20, 21, 21, 21},
320 {0, 1, 2, 3, 3, 4, 5, 6, 6, 7, 8, 9, 9, 10, 11, 12, 12, 13, 14, 15, 15, 16, 17, 18, 18, 19, 20, 21, 21, 21},
322 static u8 gDeltaSwingTableIdx_MP_2GB_N_TxPowerTrack_SDIO_8723B[] = {0, 0, 1, 2, 2, 2, 3, 3, 3, 4, 5, 5, 6, 6, 6, 6, 7, 7, 7, 8, 8, 9, 9, 10, 10, 11, 12, 13, 14, 15};
323 static u8 gDeltaSwingTableIdx_MP_2GB_P_TxPowerTrack_SDIO_8723B[] = {0, 0, 1, 2, 2, 3, 3, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 10, 11, 11, 12, 12, 13, 13, 14, 15, 15};
324 static u8 gDeltaSwingTableIdx_MP_2GA_N_TxPowerTrack_SDIO_8723B[] = {0, 0, 1, 2, 2, 2, 3, 3, 3, 4, 5, 5, 6, 6, 6, 6, 7, 7, 7, 8, 8, 9, 9, 10, 10, 11, 12, 13, 14, 15};
325 static u8 gDeltaSwingTableIdx_MP_2GA_P_TxPowerTrack_SDIO_8723B[] = {0, 0, 1, 2, 2, 3, 3, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 10, 11, 11, 12, 12, 13, 13, 14, 15, 15};
326 static u8 gDeltaSwingTableIdx_MP_2GCCKB_N_TxPowerTrack_SDIO_8723B[] = {0, 0, 1, 2, 2, 3, 3, 4, 4, 5, 6, 6, 7, 7, 7, 8, 8, 8, 9, 9, 9, 10, 10, 11, 11, 12, 12, 13, 14, 15};
327 static u8 gDeltaSwingTableIdx_MP_2GCCKB_P_TxPowerTrack_SDIO_8723B[] = {0, 0, 1, 2, 2, 2, 3, 3, 3, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 9, 10, 10, 11, 11, 12, 12, 13, 14, 15};
328 static u8 gDeltaSwingTableIdx_MP_2GCCKA_N_TxPowerTrack_SDIO_8723B[] = {0, 0, 1, 2, 2, 3, 3, 4, 4, 5, 6, 6, 7, 7, 7, 8, 8, 8, 9, 9, 9, 10, 10, 11, 11, 12, 12, 13, 14, 15};
329 static u8 gDeltaSwingTableIdx_MP_2GCCKA_P_TxPowerTrack_SDIO_8723B[] = {0, 0, 1, 2, 2, 2, 3, 3, 3, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 9, 10, 10, 11, 11, 12, 12, 13, 14, 15};
332 ODM_ReadAndConfig_MP_8723B_TxPowerTrack_SDIO(
336 PODM_RF_CAL_T pRFCalibrateInfo = &(pDM_Odm->RFCalibrateInfo);
338 ODM_RT_TRACE(pDM_Odm, ODM_COMP_INIT, ODM_DBG_LOUD, ("===> ODM_ReadAndConfig_MP_MP_8723B\n"));
341 memcpy(pRFCalibrateInfo->DeltaSwingTableIdx_2GA_P, gDeltaSwingTableIdx_MP_2GA_P_TxPowerTrack_SDIO_8723B, DELTA_SWINGIDX_SIZE);
342 memcpy(pRFCalibrateInfo->DeltaSwingTableIdx_2GA_N, gDeltaSwingTableIdx_MP_2GA_N_TxPowerTrack_SDIO_8723B, DELTA_SWINGIDX_SIZE);
343 memcpy(pRFCalibrateInfo->DeltaSwingTableIdx_2GB_P, gDeltaSwingTableIdx_MP_2GB_P_TxPowerTrack_SDIO_8723B, DELTA_SWINGIDX_SIZE);
344 memcpy(pRFCalibrateInfo->DeltaSwingTableIdx_2GB_N, gDeltaSwingTableIdx_MP_2GB_N_TxPowerTrack_SDIO_8723B, DELTA_SWINGIDX_SIZE);
346 memcpy(pRFCalibrateInfo->DeltaSwingTableIdx_2GCCKA_P, gDeltaSwingTableIdx_MP_2GCCKA_P_TxPowerTrack_SDIO_8723B, DELTA_SWINGIDX_SIZE);
347 memcpy(pRFCalibrateInfo->DeltaSwingTableIdx_2GCCKA_N, gDeltaSwingTableIdx_MP_2GCCKA_N_TxPowerTrack_SDIO_8723B, DELTA_SWINGIDX_SIZE);
348 memcpy(pRFCalibrateInfo->DeltaSwingTableIdx_2GCCKB_P, gDeltaSwingTableIdx_MP_2GCCKB_P_TxPowerTrack_SDIO_8723B, DELTA_SWINGIDX_SIZE);
349 memcpy(pRFCalibrateInfo->DeltaSwingTableIdx_2GCCKB_N, gDeltaSwingTableIdx_MP_2GCCKB_N_TxPowerTrack_SDIO_8723B, DELTA_SWINGIDX_SIZE);
351 memcpy(pRFCalibrateInfo->DeltaSwingTableIdx_5GA_P, gDeltaSwingTableIdx_MP_5GA_P_TxPowerTrack_SDIO_8723B, DELTA_SWINGIDX_SIZE*3);
352 memcpy(pRFCalibrateInfo->DeltaSwingTableIdx_5GA_N, gDeltaSwingTableIdx_MP_5GA_N_TxPowerTrack_SDIO_8723B, DELTA_SWINGIDX_SIZE*3);
353 memcpy(pRFCalibrateInfo->DeltaSwingTableIdx_5GB_P, gDeltaSwingTableIdx_MP_5GB_P_TxPowerTrack_SDIO_8723B, DELTA_SWINGIDX_SIZE*3);
354 memcpy(pRFCalibrateInfo->DeltaSwingTableIdx_5GB_N, gDeltaSwingTableIdx_MP_5GB_N_TxPowerTrack_SDIO_8723B, DELTA_SWINGIDX_SIZE*3);
357 /******************************************************************************
359 ******************************************************************************/
361 static u8 * Array_MP_8723B_TXPWR_LMT[] = {
362 "FCC", "2.4G", "20M", "CCK", "1T", "01", "32",
363 "ETSI", "2.4G", "20M", "CCK", "1T", "01", "32",
364 "MKK", "2.4G", "20M", "CCK", "1T", "01", "32",
365 "FCC", "2.4G", "20M", "CCK", "1T", "02", "32",
366 "ETSI", "2.4G", "20M", "CCK", "1T", "02", "32",
367 "MKK", "2.4G", "20M", "CCK", "1T", "02", "32",
368 "FCC", "2.4G", "20M", "CCK", "1T", "03", "32",
369 "ETSI", "2.4G", "20M", "CCK", "1T", "03", "32",
370 "MKK", "2.4G", "20M", "CCK", "1T", "03", "32",
371 "FCC", "2.4G", "20M", "CCK", "1T", "04", "32",
372 "ETSI", "2.4G", "20M", "CCK", "1T", "04", "32",
373 "MKK", "2.4G", "20M", "CCK", "1T", "04", "32",
374 "FCC", "2.4G", "20M", "CCK", "1T", "05", "32",
375 "ETSI", "2.4G", "20M", "CCK", "1T", "05", "32",
376 "MKK", "2.4G", "20M", "CCK", "1T", "05", "32",
377 "FCC", "2.4G", "20M", "CCK", "1T", "06", "32",
378 "ETSI", "2.4G", "20M", "CCK", "1T", "06", "32",
379 "MKK", "2.4G", "20M", "CCK", "1T", "06", "32",
380 "FCC", "2.4G", "20M", "CCK", "1T", "07", "32",
381 "ETSI", "2.4G", "20M", "CCK", "1T", "07", "32",
382 "MKK", "2.4G", "20M", "CCK", "1T", "07", "32",
383 "FCC", "2.4G", "20M", "CCK", "1T", "08", "32",
384 "ETSI", "2.4G", "20M", "CCK", "1T", "08", "32",
385 "MKK", "2.4G", "20M", "CCK", "1T", "08", "32",
386 "FCC", "2.4G", "20M", "CCK", "1T", "09", "32",
387 "ETSI", "2.4G", "20M", "CCK", "1T", "09", "32",
388 "MKK", "2.4G", "20M", "CCK", "1T", "09", "32",
389 "FCC", "2.4G", "20M", "CCK", "1T", "10", "32",
390 "ETSI", "2.4G", "20M", "CCK", "1T", "10", "32",
391 "MKK", "2.4G", "20M", "CCK", "1T", "10", "32",
392 "FCC", "2.4G", "20M", "CCK", "1T", "11", "32",
393 "ETSI", "2.4G", "20M", "CCK", "1T", "11", "32",
394 "MKK", "2.4G", "20M", "CCK", "1T", "11", "32",
395 "FCC", "2.4G", "20M", "CCK", "1T", "12", "63",
396 "ETSI", "2.4G", "20M", "CCK", "1T", "12", "32",
397 "MKK", "2.4G", "20M", "CCK", "1T", "12", "32",
398 "FCC", "2.4G", "20M", "CCK", "1T", "13", "63",
399 "ETSI", "2.4G", "20M", "CCK", "1T", "13", "32",
400 "MKK", "2.4G", "20M", "CCK", "1T", "13", "32",
401 "FCC", "2.4G", "20M", "CCK", "1T", "14", "63",
402 "ETSI", "2.4G", "20M", "CCK", "1T", "14", "63",
403 "MKK", "2.4G", "20M", "CCK", "1T", "14", "32",
404 "FCC", "2.4G", "20M", "OFDM", "1T", "01", "28",
405 "ETSI", "2.4G", "20M", "OFDM", "1T", "01", "32",
406 "MKK", "2.4G", "20M", "OFDM", "1T", "01", "32",
407 "FCC", "2.4G", "20M", "OFDM", "1T", "02", "28",
408 "ETSI", "2.4G", "20M", "OFDM", "1T", "02", "32",
409 "MKK", "2.4G", "20M", "OFDM", "1T", "02", "32",
410 "FCC", "2.4G", "20M", "OFDM", "1T", "03", "32",
411 "ETSI", "2.4G", "20M", "OFDM", "1T", "03", "32",
412 "MKK", "2.4G", "20M", "OFDM", "1T", "03", "32",
413 "FCC", "2.4G", "20M", "OFDM", "1T", "04", "32",
414 "ETSI", "2.4G", "20M", "OFDM", "1T", "04", "32",
415 "MKK", "2.4G", "20M", "OFDM", "1T", "04", "32",
416 "FCC", "2.4G", "20M", "OFDM", "1T", "05", "32",
417 "ETSI", "2.4G", "20M", "OFDM", "1T", "05", "32",
418 "MKK", "2.4G", "20M", "OFDM", "1T", "05", "32",
419 "FCC", "2.4G", "20M", "OFDM", "1T", "06", "32",
420 "ETSI", "2.4G", "20M", "OFDM", "1T", "06", "32",
421 "MKK", "2.4G", "20M", "OFDM", "1T", "06", "32",
422 "FCC", "2.4G", "20M", "OFDM", "1T", "07", "32",
423 "ETSI", "2.4G", "20M", "OFDM", "1T", "07", "32",
424 "MKK", "2.4G", "20M", "OFDM", "1T", "07", "32",
425 "FCC", "2.4G", "20M", "OFDM", "1T", "08", "32",
426 "ETSI", "2.4G", "20M", "OFDM", "1T", "08", "32",
427 "MKK", "2.4G", "20M", "OFDM", "1T", "08", "32",
428 "FCC", "2.4G", "20M", "OFDM", "1T", "09", "32",
429 "ETSI", "2.4G", "20M", "OFDM", "1T", "09", "32",
430 "MKK", "2.4G", "20M", "OFDM", "1T", "09", "32",
431 "FCC", "2.4G", "20M", "OFDM", "1T", "10", "28",
432 "ETSI", "2.4G", "20M", "OFDM", "1T", "10", "32",
433 "MKK", "2.4G", "20M", "OFDM", "1T", "10", "32",
434 "FCC", "2.4G", "20M", "OFDM", "1T", "11", "28",
435 "ETSI", "2.4G", "20M", "OFDM", "1T", "11", "32",
436 "MKK", "2.4G", "20M", "OFDM", "1T", "11", "32",
437 "FCC", "2.4G", "20M", "OFDM", "1T", "12", "63",
438 "ETSI", "2.4G", "20M", "OFDM", "1T", "12", "32",
439 "MKK", "2.4G", "20M", "OFDM", "1T", "12", "32",
440 "FCC", "2.4G", "20M", "OFDM", "1T", "13", "63",
441 "ETSI", "2.4G", "20M", "OFDM", "1T", "13", "32",
442 "MKK", "2.4G", "20M", "OFDM", "1T", "13", "32",
443 "FCC", "2.4G", "20M", "OFDM", "1T", "14", "63",
444 "ETSI", "2.4G", "20M", "OFDM", "1T", "14", "63",
445 "MKK", "2.4G", "20M", "OFDM", "1T", "14", "63",
446 "FCC", "2.4G", "20M", "HT", "1T", "01", "26",
447 "ETSI", "2.4G", "20M", "HT", "1T", "01", "32",
448 "MKK", "2.4G", "20M", "HT", "1T", "01", "32",
449 "FCC", "2.4G", "20M", "HT", "1T", "02", "26",
450 "ETSI", "2.4G", "20M", "HT", "1T", "02", "32",
451 "MKK", "2.4G", "20M", "HT", "1T", "02", "32",
452 "FCC", "2.4G", "20M", "HT", "1T", "03", "32",
453 "ETSI", "2.4G", "20M", "HT", "1T", "03", "32",
454 "MKK", "2.4G", "20M", "HT", "1T", "03", "32",
455 "FCC", "2.4G", "20M", "HT", "1T", "04", "32",
456 "ETSI", "2.4G", "20M", "HT", "1T", "04", "32",
457 "MKK", "2.4G", "20M", "HT", "1T", "04", "32",
458 "FCC", "2.4G", "20M", "HT", "1T", "05", "32",
459 "ETSI", "2.4G", "20M", "HT", "1T", "05", "32",
460 "MKK", "2.4G", "20M", "HT", "1T", "05", "32",
461 "FCC", "2.4G", "20M", "HT", "1T", "06", "32",
462 "ETSI", "2.4G", "20M", "HT", "1T", "06", "32",
463 "MKK", "2.4G", "20M", "HT", "1T", "06", "32",
464 "FCC", "2.4G", "20M", "HT", "1T", "07", "32",
465 "ETSI", "2.4G", "20M", "HT", "1T", "07", "32",
466 "MKK", "2.4G", "20M", "HT", "1T", "07", "32",
467 "FCC", "2.4G", "20M", "HT", "1T", "08", "32",
468 "ETSI", "2.4G", "20M", "HT", "1T", "08", "32",
469 "MKK", "2.4G", "20M", "HT", "1T", "08", "32",
470 "FCC", "2.4G", "20M", "HT", "1T", "09", "32",
471 "ETSI", "2.4G", "20M", "HT", "1T", "09", "32",
472 "MKK", "2.4G", "20M", "HT", "1T", "09", "32",
473 "FCC", "2.4G", "20M", "HT", "1T", "10", "26",
474 "ETSI", "2.4G", "20M", "HT", "1T", "10", "32",
475 "MKK", "2.4G", "20M", "HT", "1T", "10", "32",
476 "FCC", "2.4G", "20M", "HT", "1T", "11", "26",
477 "ETSI", "2.4G", "20M", "HT", "1T", "11", "32",
478 "MKK", "2.4G", "20M", "HT", "1T", "11", "32",
479 "FCC", "2.4G", "20M", "HT", "1T", "12", "63",
480 "ETSI", "2.4G", "20M", "HT", "1T", "12", "32",
481 "MKK", "2.4G", "20M", "HT", "1T", "12", "32",
482 "FCC", "2.4G", "20M", "HT", "1T", "13", "63",
483 "ETSI", "2.4G", "20M", "HT", "1T", "13", "32",
484 "MKK", "2.4G", "20M", "HT", "1T", "13", "32",
485 "FCC", "2.4G", "20M", "HT", "1T", "14", "63",
486 "ETSI", "2.4G", "20M", "HT", "1T", "14", "63",
487 "MKK", "2.4G", "20M", "HT", "1T", "14", "63",
488 "FCC", "2.4G", "20M", "HT", "2T", "01", "30",
489 "ETSI", "2.4G", "20M", "HT", "2T", "01", "32",
490 "MKK", "2.4G", "20M", "HT", "2T", "01", "32",
491 "FCC", "2.4G", "20M", "HT", "2T", "02", "32",
492 "ETSI", "2.4G", "20M", "HT", "2T", "02", "32",
493 "MKK", "2.4G", "20M", "HT", "2T", "02", "32",
494 "FCC", "2.4G", "20M", "HT", "2T", "03", "32",
495 "ETSI", "2.4G", "20M", "HT", "2T", "03", "32",
496 "MKK", "2.4G", "20M", "HT", "2T", "03", "32",
497 "FCC", "2.4G", "20M", "HT", "2T", "04", "32",
498 "ETSI", "2.4G", "20M", "HT", "2T", "04", "32",
499 "MKK", "2.4G", "20M", "HT", "2T", "04", "32",
500 "FCC", "2.4G", "20M", "HT", "2T", "05", "32",
501 "ETSI", "2.4G", "20M", "HT", "2T", "05", "32",
502 "MKK", "2.4G", "20M", "HT", "2T", "05", "32",
503 "FCC", "2.4G", "20M", "HT", "2T", "06", "32",
504 "ETSI", "2.4G", "20M", "HT", "2T", "06", "32",
505 "MKK", "2.4G", "20M", "HT", "2T", "06", "32",
506 "FCC", "2.4G", "20M", "HT", "2T", "07", "32",
507 "ETSI", "2.4G", "20M", "HT", "2T", "07", "32",
508 "MKK", "2.4G", "20M", "HT", "2T", "07", "32",
509 "FCC", "2.4G", "20M", "HT", "2T", "08", "32",
510 "ETSI", "2.4G", "20M", "HT", "2T", "08", "32",
511 "MKK", "2.4G", "20M", "HT", "2T", "08", "32",
512 "FCC", "2.4G", "20M", "HT", "2T", "09", "32",
513 "ETSI", "2.4G", "20M", "HT", "2T", "09", "32",
514 "MKK", "2.4G", "20M", "HT", "2T", "09", "32",
515 "FCC", "2.4G", "20M", "HT", "2T", "10", "32",
516 "ETSI", "2.4G", "20M", "HT", "2T", "10", "32",
517 "MKK", "2.4G", "20M", "HT", "2T", "10", "32",
518 "FCC", "2.4G", "20M", "HT", "2T", "11", "30",
519 "ETSI", "2.4G", "20M", "HT", "2T", "11", "32",
520 "MKK", "2.4G", "20M", "HT", "2T", "11", "32",
521 "FCC", "2.4G", "20M", "HT", "2T", "12", "63",
522 "ETSI", "2.4G", "20M", "HT", "2T", "12", "32",
523 "MKK", "2.4G", "20M", "HT", "2T", "12", "32",
524 "FCC", "2.4G", "20M", "HT", "2T", "13", "63",
525 "ETSI", "2.4G", "20M", "HT", "2T", "13", "32",
526 "MKK", "2.4G", "20M", "HT", "2T", "13", "32",
527 "FCC", "2.4G", "20M", "HT", "2T", "14", "63",
528 "ETSI", "2.4G", "20M", "HT", "2T", "14", "63",
529 "MKK", "2.4G", "20M", "HT", "2T", "14", "63",
530 "FCC", "2.4G", "40M", "HT", "1T", "01", "63",
531 "ETSI", "2.4G", "40M", "HT", "1T", "01", "63",
532 "MKK", "2.4G", "40M", "HT", "1T", "01", "63",
533 "FCC", "2.4G", "40M", "HT", "1T", "02", "63",
534 "ETSI", "2.4G", "40M", "HT", "1T", "02", "63",
535 "MKK", "2.4G", "40M", "HT", "1T", "02", "63",
536 "FCC", "2.4G", "40M", "HT", "1T", "03", "26",
537 "ETSI", "2.4G", "40M", "HT", "1T", "03", "32",
538 "MKK", "2.4G", "40M", "HT", "1T", "03", "32",
539 "FCC", "2.4G", "40M", "HT", "1T", "04", "26",
540 "ETSI", "2.4G", "40M", "HT", "1T", "04", "32",
541 "MKK", "2.4G", "40M", "HT", "1T", "04", "32",
542 "FCC", "2.4G", "40M", "HT", "1T", "05", "32",
543 "ETSI", "2.4G", "40M", "HT", "1T", "05", "32",
544 "MKK", "2.4G", "40M", "HT", "1T", "05", "32",
545 "FCC", "2.4G", "40M", "HT", "1T", "06", "32",
546 "ETSI", "2.4G", "40M", "HT", "1T", "06", "32",
547 "MKK", "2.4G", "40M", "HT", "1T", "06", "32",
548 "FCC", "2.4G", "40M", "HT", "1T", "07", "32",
549 "ETSI", "2.4G", "40M", "HT", "1T", "07", "32",
550 "MKK", "2.4G", "40M", "HT", "1T", "07", "32",
551 "FCC", "2.4G", "40M", "HT", "1T", "08", "26",
552 "ETSI", "2.4G", "40M", "HT", "1T", "08", "32",
553 "MKK", "2.4G", "40M", "HT", "1T", "08", "32",
554 "FCC", "2.4G", "40M", "HT", "1T", "09", "26",
555 "ETSI", "2.4G", "40M", "HT", "1T", "09", "32",
556 "MKK", "2.4G", "40M", "HT", "1T", "09", "32",
557 "FCC", "2.4G", "40M", "HT", "1T", "10", "26",
558 "ETSI", "2.4G", "40M", "HT", "1T", "10", "32",
559 "MKK", "2.4G", "40M", "HT", "1T", "10", "32",
560 "FCC", "2.4G", "40M", "HT", "1T", "11", "26",
561 "ETSI", "2.4G", "40M", "HT", "1T", "11", "32",
562 "MKK", "2.4G", "40M", "HT", "1T", "11", "32",
563 "FCC", "2.4G", "40M", "HT", "1T", "12", "63",
564 "ETSI", "2.4G", "40M", "HT", "1T", "12", "32",
565 "MKK", "2.4G", "40M", "HT", "1T", "12", "32",
566 "FCC", "2.4G", "40M", "HT", "1T", "13", "63",
567 "ETSI", "2.4G", "40M", "HT", "1T", "13", "32",
568 "MKK", "2.4G", "40M", "HT", "1T", "13", "32",
569 "FCC", "2.4G", "40M", "HT", "1T", "14", "63",
570 "ETSI", "2.4G", "40M", "HT", "1T", "14", "63",
571 "MKK", "2.4G", "40M", "HT", "1T", "14", "63",
572 "FCC", "2.4G", "40M", "HT", "2T", "01", "63",
573 "ETSI", "2.4G", "40M", "HT", "2T", "01", "63",
574 "MKK", "2.4G", "40M", "HT", "2T", "01", "63",
575 "FCC", "2.4G", "40M", "HT", "2T", "02", "63",
576 "ETSI", "2.4G", "40M", "HT", "2T", "02", "63",
577 "MKK", "2.4G", "40M", "HT", "2T", "02", "63",
578 "FCC", "2.4G", "40M", "HT", "2T", "03", "30",
579 "ETSI", "2.4G", "40M", "HT", "2T", "03", "30",
580 "MKK", "2.4G", "40M", "HT", "2T", "03", "30",
581 "FCC", "2.4G", "40M", "HT", "2T", "04", "32",
582 "ETSI", "2.4G", "40M", "HT", "2T", "04", "30",
583 "MKK", "2.4G", "40M", "HT", "2T", "04", "30",
584 "FCC", "2.4G", "40M", "HT", "2T", "05", "32",
585 "ETSI", "2.4G", "40M", "HT", "2T", "05", "30",
586 "MKK", "2.4G", "40M", "HT", "2T", "05", "30",
587 "FCC", "2.4G", "40M", "HT", "2T", "06", "32",
588 "ETSI", "2.4G", "40M", "HT", "2T", "06", "30",
589 "MKK", "2.4G", "40M", "HT", "2T", "06", "30",
590 "FCC", "2.4G", "40M", "HT", "2T", "07", "32",
591 "ETSI", "2.4G", "40M", "HT", "2T", "07", "30",
592 "MKK", "2.4G", "40M", "HT", "2T", "07", "30",
593 "FCC", "2.4G", "40M", "HT", "2T", "08", "32",
594 "ETSI", "2.4G", "40M", "HT", "2T", "08", "30",
595 "MKK", "2.4G", "40M", "HT", "2T", "08", "30",
596 "FCC", "2.4G", "40M", "HT", "2T", "09", "32",
597 "ETSI", "2.4G", "40M", "HT", "2T", "09", "30",
598 "MKK", "2.4G", "40M", "HT", "2T", "09", "30",
599 "FCC", "2.4G", "40M", "HT", "2T", "10", "32",
600 "ETSI", "2.4G", "40M", "HT", "2T", "10", "30",
601 "MKK", "2.4G", "40M", "HT", "2T", "10", "30",
602 "FCC", "2.4G", "40M", "HT", "2T", "11", "30",
603 "ETSI", "2.4G", "40M", "HT", "2T", "11", "30",
604 "MKK", "2.4G", "40M", "HT", "2T", "11", "30",
605 "FCC", "2.4G", "40M", "HT", "2T", "12", "63",
606 "ETSI", "2.4G", "40M", "HT", "2T", "12", "32",
607 "MKK", "2.4G", "40M", "HT", "2T", "12", "32",
608 "FCC", "2.4G", "40M", "HT", "2T", "13", "63",
609 "ETSI", "2.4G", "40M", "HT", "2T", "13", "32",
610 "MKK", "2.4G", "40M", "HT", "2T", "13", "32",
611 "FCC", "2.4G", "40M", "HT", "2T", "14", "63",
612 "ETSI", "2.4G", "40M", "HT", "2T", "14", "63",
613 "MKK", "2.4G", "40M", "HT", "2T", "14", "63"
617 ODM_ReadAndConfig_MP_8723B_TXPWR_LMT(
622 u32 ArrayLen = sizeof(Array_MP_8723B_TXPWR_LMT)/sizeof(u8 *);
623 u8 * *Array = Array_MP_8723B_TXPWR_LMT;
625 ODM_RT_TRACE(pDM_Odm, ODM_COMP_INIT, ODM_DBG_LOUD, ("===> ODM_ReadAndConfig_MP_8723B_TXPWR_LMT\n"));
627 for (i = 0; i < ArrayLen; i += 7) {
628 u8 * regulation = Array[i];
629 u8 * band = Array[i+1];
630 u8 * bandwidth = Array[i+2];
631 u8 * rate = Array[i+3];
632 u8 * rfPath = Array[i+4];
633 u8 * chnl = Array[i+5];
634 u8 * val = Array[i+6];
636 odm_ConfigBB_TXPWR_LMT_8723B(pDM_Odm, regulation, band, bandwidth, rate, rfPath, chnl, val);