1 // SPDX-License-Identifier: GPL-2.0 2 /****************************************************************************** 3 * 4 * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. 5 * 6 ******************************************************************************/ 7 8 #include <linux/kernel.h> 9 #include "odm_precomp.h" 10 11 static bool CheckPositive( 12 struct dm_odm_t *pDM_Odm, const u32 Condition1, const u32 Condition2 13 ) 14 { 15 u8 _BoardType = 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 */ 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 /* Value Defined Check =============== */ 79 /* QFN Type [15:12] and Cut Version [27:24] need to do value check */ 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 /* Bit Defined Check ================ */ 94 /* We don't care [31:28] and [23:20] */ 95 cond1 &= 0x000F0FFF; 96 driver1 &= 0x000F0FFF; 97 98 if ((cond1 & driver1) == cond1) { 99 u32 bitMask = 0; 100 101 if ((cond1 & 0x0F) == 0) /* BoardType is DONTCARE */ 102 return true; 103 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; 112 113 /* BoardType of each RF path is matched */ 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 struct dm_odm_t *pDM_Odm, const u32 Condition1, const u32 Condition2 125 ) 126 { 127 return true; 128 } 129 130 /****************************************************************************** 131 * RadioA.TXT 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(struct dm_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 /* This (offset, data) pair doesn't care the condition. */ 280 if (v1 < 0x40000000) { 281 odm_ConfigRF_RadioA_8723B(pDM_Odm, v1, v2); 282 continue; 283 } else { 284 /* This line is the beginning of branch. */ 285 bool bMatched = true; 286 u8 cCond = (u8)((v1 & (BIT29|BIT28)) >> 28); 287 288 if (cCond == COND_ELSE) { /* ELSE, ENDIF */ 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 /* Condition isn't matched. 306 * Discard the following (offset, data) pairs. 307 */ 308 while (v1 < 0x40000000 && i < ArrayLen-2) 309 READ_NEXT_PAIR(v1, v2, i); 310 311 i -= 2; /* prevent from for-loop += 2 */ 312 } else { 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); 317 } 318 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); 324 } 325 } 326 } 327 } 328 } 329 330 /****************************************************************************** 331 * TxPowerTrack_SDIO.TXT 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(struct dm_odm_t *pDM_Odm) 424 { 425 struct odm_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 * TXPWR_LMT.TXT 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(struct dm_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 } 791