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