1 /******************************************************************************
\r
3 * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
\r
5 * This program is free software; you can redistribute it and/or modify it
\r
6 * under the terms of version 2 of the GNU General Public License as
\r
7 * published by the Free Software Foundation.
\r
9 * This program is distributed in the hope that it will be useful, but WITHOUT
\r
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
\r
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
\r
14 * You should have received a copy of the GNU General Public License along with
\r
15 * this program; if not, write to the Free Software Foundation, Inc.,
\r
16 * 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
\r
19 ******************************************************************************/
\r
21 //============================================================
\r
23 //============================================================
\r
25 #include "Mp_Precomp.h"
\r
26 #include "phydm_precomp.h"
\r
30 PHYDM_InitDebugSetting(
\r
31 IN PDM_ODM_T pDM_Odm
\r
34 pDM_Odm->DebugLevel = ODM_DBG_TRACE;
\r
36 pDM_Odm->DebugComponents =
\r
41 // ODM_COMP_RA_MASK |
\r
42 // ODM_COMP_DYNAMIC_TXPWR |
\r
43 // ODM_COMP_FA_CNT |
\r
44 // ODM_COMP_RSSI_MONITOR |
\r
45 // ODM_COMP_CCK_PD |
\r
46 // ODM_COMP_ANT_DIV |
\r
47 // ODM_COMP_PWR_SAVE |
\r
48 // ODM_COMP_PWR_TRAIN |
\r
49 // ODM_COMP_RATE_ADAPTIVE |
\r
50 // ODM_COMP_PATH_DIV |
\r
51 // ODM_COMP_DYNAMIC_PRICCA |
\r
54 // ODM_COMP_CFO_TRACKING |
\r
56 // PHYDM_COMP_ADAPTIVITY |
\r
59 // ODM_COMP_EDCA_TURBO |
\r
60 // ODM_COMP_EARLY_MODE |
\r
62 // ODM_COMP_TX_PWR_TRACK |
\r
63 // ODM_COMP_RX_GAIN_TRACK |
\r
64 // ODM_COMP_CALIBRATION |
\r
66 // ODM_COMP_COMMON |
\r
73 #if(DM_ODM_SUPPORT_TYPE & ODM_WIN)
\r
75 static u1Byte BbDbgBuf[BB_TMP_BUF_SIZE];
\r
77 phydm_BB_Debug_Info(IN PDM_ODM_T pDM_Odm)
\r
80 u1Byte RX_HT_BW, RX_VHT_BW, RXSC, RX_HT, RX_BW;
\r
81 static u1Byte vRX_BW ;
\r
82 u4Byte value32, value32_1, value32_2, value32_3;
\r
83 s4Byte SFO_A, SFO_B, SFO_C, SFO_D;
\r
84 s4Byte LFO_A, LFO_B, LFO_C, LFO_D;
\r
85 static u1Byte MCSS,Tail,Parity,rsv,vrsv,idx,smooth,htsound,agg,stbc,vstbc,fec,fecext,sgi,sgiext,htltf,vgid,vNsts,vtxops,vrsv2,vbrsv,bf,vbcrc;
\r
86 static u2Byte HLength,htcrc8,Length;
\r
87 static u2Byte vpaid;
\r
88 static u2Byte vLength,vhtcrc8,vMCSS,vTail,vbTail;
\r
89 static u1Byte HMCSS,HRX_BW;
\r
93 s1Byte RXEVM_0, RXEVM_1, RXEVM_2 ;
\r
94 u1Byte RF_gain_pathA, RF_gain_pathB, RF_gain_pathC, RF_gain_pathD;
\r
95 u1Byte RX_SNR_pathA, RX_SNR_pathB, RX_SNR_pathC, RX_SNR_pathD;
\r
97 const char *RXHT_table[] = {"legacy", "HT", "VHT"};
\r
98 const char *BW_table[] = {"20M", "40M", "80M"};
\r
99 const char *RXSC_table[] = {"duplicate/full bw", "usc20-1", "lsc20-1", "usc20-2", "lsc20-2", "usc40", "lsc40"};
\r
101 const char *L_rate[]={"6M","9M","12M","18M","24M","36M","48M","54M"};
\r
105 const double evm_comp_20M = 0.579919469776867; //10*log10(64.0/56.0)
\r
106 const double evm_comp_40M = 0.503051183113957; //10*log10(128.0/114.0)
\r
107 const double evm_comp_80M = 0.244245993314183; //10*log10(256.0/242.0)
\r
108 const double evm_comp_160M = 0.244245993314183; //10*log10(512.0/484.0)
\r
111 if(pDM_Odm->SupportICType & ODM_IC_11N_SERIES)
\r
114 rsprintf(BbDbgBuf, BT_TMP_BUF_SIZE, "\r\n %-35s \n", "BB Report Info");
\r
115 DCMD_Printf(BbDbgBuf);
\r
117 //BW & Mode Detection
\r
118 ///////////////////////////////////////////////////////
\r
119 value32 = ODM_GetBBReg(pDM_Odm, 0xf80 ,bMaskDWord);
\r
120 value32_2 =value32;
\r
121 RX_HT_BW = (u1Byte)(value32&0x1) ;
\r
122 RX_VHT_BW = (u1Byte)((value32>>1)&0x3);
\r
123 RXSC = (u1Byte)(value32&0x78);
\r
124 value32_1= (value32&0x180)>>7;
\r
125 RX_HT = (u1Byte)(value32_1);
\r
127 rsprintf(BbDbgBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = %d", "F80", value32_2);
\r
128 DCMD_Printf(BbDbgBuf);
\r
130 rsprintf(BbDbgBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = %d", "RX_HT_BW", RX_HT_BW);
\r
131 DCMD_Printf(BbDbgBuf);
\r
133 rsprintf(BbDbgBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = %d", "RX_VHT_BW", RX_VHT_BW);
\r
134 DCMD_Printf(BbDbgBuf);
\r
136 rsprintf(BbDbgBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = %d", "RX_SC", RXSC);
\r
137 DCMD_Printf(BbDbgBuf);
\r
139 rsprintf(BbDbgBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = %d", "RX_HT", RX_HT);
\r
140 DCMD_Printf(BbDbgBuf);
\r
143 //rsprintf(BbDbgBuf, BT_TMP_BUF_SIZE, "\r\n RX_HT:%s ", RXHT_table[RX_HT]);
\r
144 //DCMD_Printf(BbDbgBuf);
\r
149 rsprintf(BbDbgBuf, BT_TMP_BUF_SIZE, "\r\n Mode: VHT Mode");
\r
150 DCMD_Printf(BbDbgBuf);
\r
153 rsprintf(BbDbgBuf, BT_TMP_BUF_SIZE, " BW=20M");
\r
154 DCMD_Printf(BbDbgBuf);
\r
156 else if(RX_VHT_BW==1)
\r
158 rsprintf(BbDbgBuf, BT_TMP_BUF_SIZE, " BW=40M");
\r
159 DCMD_Printf(BbDbgBuf);
\r
163 rsprintf(BbDbgBuf, BT_TMP_BUF_SIZE, " BW=80M");
\r
164 DCMD_Printf(BbDbgBuf);
\r
168 else if(RX_HT == 1)
\r
170 rsprintf(BbDbgBuf, BT_TMP_BUF_SIZE, "\r\n Mode: HT Mode");
\r
171 DCMD_Printf(BbDbgBuf);
\r
174 rsprintf(BbDbgBuf, BT_TMP_BUF_SIZE, " BW=20M");
\r
175 DCMD_Printf(BbDbgBuf);
\r
177 else if(RX_HT_BW==1)
\r
179 rsprintf(BbDbgBuf, BT_TMP_BUF_SIZE, " BW=40M");
\r
180 DCMD_Printf(BbDbgBuf);
\r
186 rsprintf(BbDbgBuf, BT_TMP_BUF_SIZE, "\r\n Mode: Legeacy Mode");
\r
187 DCMD_Printf(BbDbgBuf);
\r
193 rsprintf(BbDbgBuf, BT_TMP_BUF_SIZE, "\r\n duplicate/full bw");
\r
195 rsprintf(BbDbgBuf, BT_TMP_BUF_SIZE, "\r\n usc20-1");
\r
197 rsprintf(BbDbgBuf, BT_TMP_BUF_SIZE, "\r\n lsc20-1");
\r
199 rsprintf(BbDbgBuf, BT_TMP_BUF_SIZE, "\r\n usc20-2");
\r
201 rsprintf(BbDbgBuf, BT_TMP_BUF_SIZE, "\r\n lsc20-2");
\r
203 rsprintf(BbDbgBuf, BT_TMP_BUF_SIZE, "\r\n usc40");
\r
205 rsprintf(BbDbgBuf, BT_TMP_BUF_SIZE, "\r\n lsc40");
\r
206 DCMD_Printf(BbDbgBuf);
\r
210 rsprintf(BbDbgBuf, BT_TMP_BUF_SIZE, " BW:%s", BW_table[RX_VHT_BW]);
\r
213 else if(RX_HT == 1){
\r
214 rsprintf(BbDbgBuf, BT_TMP_BUF_SIZE, " BW:%s", BW_table[RX_HT_BW]);
\r
218 rsprintf(BbDbgBuf, BT_TMP_BUF_SIZE, "");
\r
220 DCMD_Printf(BbDbgBuf);
\r
221 rsprintf(BbDbgBuf, BT_TMP_BUF_SIZE, " RXSC:%s", RXSC_table[RXSC]);
\r
222 DCMD_Printf(BbDbgBuf);
\r
224 ///////////////////////////////////////////////////////
\r
226 // rsprintf(BbDbgBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = %d", "dB Conversion: 10log(65)", ODM_PWdB_Conversion(65,10,0));
\r
227 // DCMD_Printf(BbDbgBuf);
\r
229 // RX signal power and AGC related info
\r
230 ///////////////////////////////////////////////////////
\r
231 value32 = ODM_GetBBReg(pDM_Odm, 0xF90 ,bMaskDWord);
\r
232 pwDB = (u1Byte) ((value32 & bMaskByte1) >> 8);
\r
234 sig_power = -110+pwDB;
\r
235 rsprintf(BbDbgBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = %d", "OFDM RX Signal Power(dB)", sig_power);
\r
236 DCMD_Printf(BbDbgBuf);
\r
239 value32 = ODM_GetBBReg(pDM_Odm, 0xd14 ,bMaskDWord);
\r
240 RX_SNR_pathA = (u1Byte)(value32&0xFF)>>1;
\r
241 RF_gain_pathA = (s1Byte) ((value32 & bMaskByte1) >> 8);
\r
243 value32 = ODM_GetBBReg(pDM_Odm, 0xd54 ,bMaskDWord);
\r
244 RX_SNR_pathB = (u1Byte)(value32&0xFF)>>1;
\r
245 RF_gain_pathB = (s1Byte) ((value32 & bMaskByte1) >> 8);
\r
247 value32 = ODM_GetBBReg(pDM_Odm, 0xd94 ,bMaskDWord);
\r
248 RX_SNR_pathC = (u1Byte)(value32&0xFF)>>1;
\r
249 RF_gain_pathC = (s1Byte) ((value32 & bMaskByte1) >> 8);
\r
251 value32 = ODM_GetBBReg(pDM_Odm, 0xdd4 ,bMaskDWord);
\r
252 RX_SNR_pathD = (u1Byte)(value32&0xFF)>>1;
\r
253 RF_gain_pathD = (s1Byte) ((value32 & bMaskByte1) >> 8);
\r
255 rsprintf(BbDbgBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = %d / %d / %d / %d", "OFDM RX RF Gain(A/B/C/D)", RF_gain_pathA, RF_gain_pathA, RF_gain_pathC, RF_gain_pathD);
\r
256 DCMD_Printf(BbDbgBuf);
\r
257 ///////////////////////////////////////////////////////
\r
259 // RX Counter related info
\r
260 ///////////////////////////////////////////////////////
\r
261 value32 = ODM_GetBBReg(pDM_Odm, 0xF08 ,bMaskDWord);
\r
262 rsprintf(BbDbgBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = %d", "OFDM CCA Counter", ((value32&0xFFFF0000)>>16));
\r
263 DCMD_Printf(BbDbgBuf);
\r
265 value32 = ODM_GetBBReg(pDM_Odm, 0xFD0 ,bMaskDWord);
\r
266 rsprintf(BbDbgBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = %d", "OFDM SBD Fail Counter", value32&0xFFFF);
\r
267 DCMD_Printf(BbDbgBuf);
\r
269 value32 = ODM_GetBBReg(pDM_Odm, 0xFC4 ,bMaskDWord);
\r
270 rsprintf(BbDbgBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = %d / %d", "VHT SIGA/SIGB CRC8 Fail Counter", value32&0xFFFF, ((value32&0xFFFF0000)>>16));
\r
271 DCMD_Printf(BbDbgBuf);
\r
273 value32 = ODM_GetBBReg(pDM_Odm, 0xFCC ,bMaskDWord);
\r
274 rsprintf(BbDbgBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = %d", "CCK CCA Counter", value32&0xFFFF);
\r
275 DCMD_Printf(BbDbgBuf);
\r
277 value32 = ODM_GetBBReg(pDM_Odm, 0xFBC ,bMaskDWord);
\r
278 rsprintf(BbDbgBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = %d / %d", "LSIG (\"Parity Fail\"/\"Rate Illegal\") Counter", value32&0xFFFF, ((value32&0xFFFF0000)>>16));
\r
279 DCMD_Printf(BbDbgBuf);
\r
281 value32_1 = ODM_GetBBReg(pDM_Odm, 0xFC8 ,bMaskDWord);
\r
282 value32_2 = ODM_GetBBReg(pDM_Odm, 0xFC0 ,bMaskDWord);
\r
283 rsprintf(BbDbgBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = %d / %d", "HT/VHT MCS NOT SUPPORT counter", ((value32_2&0xFFFF0000)>>16), value32_1&0xFFFF);
\r
284 DCMD_Printf(BbDbgBuf);
\r
285 ///////////////////////////////////////////////////////
\r
287 // PostFFT related info
\r
288 ///////////////////////////////////////////////////////
\r
290 value32 = ODM_GetBBReg(pDM_Odm, 0xF8c ,bMaskDWord);
\r
291 RXEVM_0 = (s1Byte) ((value32 & bMaskByte2) >> 16);
\r
296 DCMD_Printf(BbDbgBuf);
\r
297 RXEVM_1 = (s1Byte) ((value32 & bMaskByte3) >> 24);
\r
299 value32 = ODM_GetBBReg(pDM_Odm, 0xF88 ,bMaskDWord);
\r
300 RXEVM_2 = (s1Byte) ((value32 & bMaskByte2) >> 16);
\r
310 RXEVM_0 -= evm_comp_20M;
\r
311 RXEVM_1 -= evm_comp_20M;
\r
312 RXEVM_2 -= evm_comp_20M;
\r
314 else if(RX_BW == 1){
\r
315 RXEVM_0 -= evm_comp_40M;
\r
316 RXEVM_1 -= evm_comp_40M;
\r
317 RXEVM_2 -= evm_comp_40M;
\r
319 else if (RX_BW == 2){
\r
320 RXEVM_0 -= evm_comp_80M;
\r
321 RXEVM_1 -= evm_comp_80M;
\r
322 RXEVM_2 -= evm_comp_80M;
\r
325 rsprintf(BbDbgBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = %d / %d / %d", "RXEVM (1ss/2ss/3ss)", RXEVM_0, RXEVM_1, RXEVM_2);
\r
326 DCMD_Printf(BbDbgBuf);
\r
328 // value32 = ODM_GetBBReg(pDM_Odm, 0xD14 ,bMaskDWord);
\r
329 rsprintf(BbDbgBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = %d / %d / %d / %d", "RXSNR(A/B/C/D, dB)", RX_SNR_pathA, RX_SNR_pathB, RX_SNR_pathC, RX_SNR_pathD);
\r
330 DCMD_Printf(BbDbgBuf);
\r
331 // rsprintf(BbDbgBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = %d", "B_RXSNR", (value32&0xFF00)>>9);
\r
332 // DCMD_Printf(BbDbgBuf);
\r
334 value32 = ODM_GetBBReg(pDM_Odm, 0xF8C ,bMaskDWord);
\r
335 rsprintf(BbDbgBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = %d / %d", "CSI_1st /CSI_2nd", value32&0xFFFF, ((value32&0xFFFF0000)>>16));
\r
336 DCMD_Printf(BbDbgBuf);
\r
337 ///////////////////////////////////////////////////////
\r
339 //BW & Mode Detection
\r
341 //Reset Page F Counter
\r
342 ODM_SetBBReg(pDM_Odm, 0xB58 ,BIT0, 1);
\r
343 ODM_SetBBReg(pDM_Odm, 0xB58 ,BIT0, 0);
\r
347 value32 = ODM_GetBBReg(pDM_Odm, 0xd0c ,bMaskDWord);
\r
348 value32_1 = ODM_GetBBReg(pDM_Odm, 0xd4c ,bMaskDWord);
\r
349 value32_2 = ODM_GetBBReg(pDM_Odm, 0xd8c ,bMaskDWord);
\r
350 value32_3 = ODM_GetBBReg(pDM_Odm, 0xdcc ,bMaskDWord);
\r
352 SFO_A=(s4Byte)(value32&bMask12Bits);
\r
353 SFO_B=(s4Byte)(value32_1&bMask12Bits);
\r
354 SFO_C=(s4Byte)(value32_2&bMask12Bits);
\r
355 SFO_D=(s4Byte)(value32_3&bMask12Bits);
\r
357 LFO_A=(s4Byte)(value32>>16);
\r
358 LFO_B=(s4Byte)(value32_1>>16);
\r
359 LFO_C=(s4Byte)(value32_2>>16);
\r
360 LFO_D=(s4Byte)(value32_3>>16);
\r
367 SFO_A=(SFO_A*312500)/2048;
\r
373 SFO_B=(SFO_B*312500)/2048;
\r
378 SFO_C=(SFO_C*312500)/2048;
\r
383 SFO_D=(SFO_D*312500)/2048;
\r
406 LFO_A=LFO_A*312500/4096;
\r
407 LFO_B=LFO_B*312500/4096;
\r
408 LFO_C=LFO_C*312500/4096;
\r
409 LFO_D=LFO_D*312500/4096;
\r
410 rsprintf(BbDbgBuf, BT_TMP_BUF_SIZE, "\r\n %-35s", "CFO Report Info");
\r
411 DCMD_Printf(BbDbgBuf);
\r
413 rsprintf(BbDbgBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = %d / %d/ %d/ %d", " Short CFO(Hz) <A/B/C/D>", SFO_A,SFO_B,SFO_C,SFO_D);
\r
414 DCMD_Printf(BbDbgBuf);
\r
416 rsprintf(BbDbgBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = %d / %d/ %d/ %d", " Long CFO(Hz) <A/B/C/D>", LFO_A,LFO_B,LFO_C,LFO_D);
\r
417 DCMD_Printf(BbDbgBuf);
\r
420 value32 = ODM_GetBBReg(pDM_Odm, 0xd10 ,bMaskDWord);
\r
421 value32_1 = ODM_GetBBReg(pDM_Odm, 0xd50 ,bMaskDWord);
\r
422 value32_2 = ODM_GetBBReg(pDM_Odm, 0xd90 ,bMaskDWord);
\r
423 value32_3 = ODM_GetBBReg(pDM_Odm, 0xdd0 ,bMaskDWord);
\r
425 SFO_A=(s4Byte)(value32&0x7ff);
\r
426 SFO_B=(s4Byte)(value32_1&0x7ff);
\r
427 SFO_C=(s4Byte)(value32_2&0x7ff);
\r
428 SFO_D=(s4Byte)(value32_3&0x7ff);
\r
450 SFO_A=SFO_A*312500/1024;
\r
451 SFO_B=SFO_B*312500/1024;
\r
452 SFO_C=SFO_C*312500/1024;
\r
453 SFO_D=SFO_D*312500/1024;
\r
455 LFO_A=(s4Byte)(value32>>16);
\r
456 LFO_B=(s4Byte)(value32_1>>16);
\r
457 LFO_C=(s4Byte)(value32_2>>16);
\r
458 LFO_D=(s4Byte)(value32_3>>16);
\r
479 LFO_A=LFO_A*312500/4096;
\r
480 LFO_B=LFO_B*312500/4096;
\r
481 LFO_C=LFO_C*312500/4096;
\r
482 LFO_D=LFO_D*312500/4096;
\r
484 rsprintf(BbDbgBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = %d / %d/ %d/ %d", " Value SCFO(Hz) <A/B/C/D>", SFO_A,SFO_B,SFO_C,SFO_D);
\r
485 DCMD_Printf(BbDbgBuf);
\r
487 rsprintf(BbDbgBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = %d / %d/ %d/ %d", " ACQ CFO(Hz) <A/B/C/D>", LFO_A,LFO_B,LFO_C,LFO_D);
\r
488 DCMD_Printf(BbDbgBuf);
\r
490 value32 = ODM_GetBBReg(pDM_Odm, 0xd14 ,bMaskDWord);
\r
491 value32_1 = ODM_GetBBReg(pDM_Odm, 0xd54 ,bMaskDWord);
\r
492 value32_2 = ODM_GetBBReg(pDM_Odm, 0xd94 ,bMaskDWord);
\r
493 value32_3 = ODM_GetBBReg(pDM_Odm, 0xdd4 ,bMaskDWord);
\r
495 LFO_A=(s4Byte)(value32>>16);
\r
496 LFO_B=(s4Byte)(value32_1>>16);
\r
497 LFO_C=(s4Byte)(value32_2>>16);
\r
498 LFO_D=(s4Byte)(value32_3>>16);
\r
519 LFO_A=LFO_A*312500/4096;
\r
520 LFO_B=LFO_B*312500/4096;
\r
521 LFO_C=LFO_C*312500/4096;
\r
522 LFO_D=LFO_D*312500/4096;
\r
524 rsprintf(BbDbgBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = %d / %d/ %d/ %d", " End CFO(Hz) <A/B/C/D>", LFO_A,LFO_B,LFO_C,LFO_D);
\r
525 DCMD_Printf(BbDbgBuf);
\r
527 value32 = ODM_GetBBReg(pDM_Odm, 0xf20 ,bMaskDWord); //L SIG
\r
529 Tail=(u1Byte)((value32&0xfc0000)>>16);
\r
530 Parity = (u1Byte)((value32&0x20000)>>16);
\r
531 Length =(u2Byte)((value32&0x1ffe00)>>8);
\r
532 rsv = (u1Byte)(value32&0x10);
\r
533 MCSS=(u1Byte)(value32&0x0f);
\r
564 rsprintf(BbDbgBuf, BT_TMP_BUF_SIZE, "\r\n %-35s", "L-SIG");
\r
565 DCMD_Printf(BbDbgBuf);
\r
567 rsprintf(BbDbgBuf, BT_TMP_BUF_SIZE, "\r\n Rate:%s", L_rate[idx]);
\r
568 DCMD_Printf(BbDbgBuf);
\r
570 rsprintf(BbDbgBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = %x/ %x /%x", " Rsv/Length/Parity",rsv,RX_BW,Length);
\r
571 DCMD_Printf(BbDbgBuf);
\r
573 rsprintf(BbDbgBuf, BT_TMP_BUF_SIZE, "\r\n %-35s", "HT-SIG1");
\r
574 DCMD_Printf(BbDbgBuf);
\r
576 value32 = ODM_GetBBReg(pDM_Odm, 0xf2c ,bMaskDWord); //HT SIG
\r
580 HMCSS=(u1Byte)(value32&0x7F);
\r
581 HRX_BW = (u1Byte)(value32&0x80);
\r
582 HLength =(u2Byte)((value32>>8)&0xffff);
\r
584 rsprintf(BbDbgBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = %x / %x/ %x", " MCS/BW/Length",HMCSS,HRX_BW,HLength);
\r
585 DCMD_Printf(BbDbgBuf);
\r
587 rsprintf(BbDbgBuf, BT_TMP_BUF_SIZE, "\r\n %-35s", "HT-SIG2");
\r
588 DCMD_Printf(BbDbgBuf);
\r
590 value32 = ODM_GetBBReg(pDM_Odm, 0xf30 ,bMaskDWord); //HT SIG
\r
594 smooth = (u1Byte)(value32&0x01);
\r
595 htsound = (u1Byte)(value32&0x02);
\r
596 rsv=(u1Byte)(value32&0x04);
\r
597 agg =(u1Byte)(value32&0x08);
\r
598 stbc =(u1Byte)(value32&0x30);
\r
599 fec=(u1Byte)(value32&0x40);
\r
600 sgi=(u1Byte)(value32&0x80);
\r
601 htltf=(u1Byte)((value32&0x300)>>8);
\r
602 htcrc8=(u2Byte)((value32&0x3fc00)>>8);
\r
603 Tail=(u1Byte)((value32&0xfc0000)>>16);
\r
607 rsprintf(BbDbgBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = %x / %x/ %x/ %x/ %x/ %x", " Smooth/NoSound/Rsv/Aggregate/STBC/LDPC",smooth,htsound,rsv,agg,stbc,fec);
\r
608 DCMD_Printf(BbDbgBuf);
\r
609 rsprintf(BbDbgBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = %x / %x/ %x/ %x", " SGI/E-HT-LTFs/CRC/Tail",sgi,htltf,htcrc8,Tail);
\r
610 DCMD_Printf(BbDbgBuf);
\r
613 rsprintf(BbDbgBuf, BT_TMP_BUF_SIZE, "\r\n %-35s", "VHT-SIG-A1");
\r
614 DCMD_Printf(BbDbgBuf);
\r
615 value32 = ODM_GetBBReg(pDM_Odm, 0xf2c ,bMaskDWord); //VHT SIG A1
\r
618 //value32 = ODM_GetBBReg(pDM_Odm, 0xf2c ,bMaskDWord); //VHT SIG A1
\r
619 vRX_BW=(u1Byte)(value32&0x03);
\r
620 vrsv=(u1Byte)(value32&0x04);
\r
621 vstbc =(u1Byte)(value32&0x08);
\r
622 vgid = (u1Byte)((value32&0x3f0)>>4);
\r
623 vNsts = (u1Byte)(((value32&0x1c00)>>8)+1);
\r
624 vpaid = (u2Byte)(value32&0x3fe);
\r
625 vtxops =(u1Byte)((value32&0x400000)>>20);
\r
626 vrsv2 = (u1Byte)((value32&0x800000)>>20);
\r
629 //rsprintf(BbDbgBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = %x", "F2C", value32);
\r
630 //DCMD_Printf(BbDbgBuf);
\r
633 rsprintf(BbDbgBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = %x / %x/ %x/ %x/ %x/ %x /%x /%x", " BW/Rsv1/STBC/GID/Nsts/PAID/TXOPPS/Rsv2",vRX_BW,vrsv,vstbc,vgid,vNsts,vpaid,vtxops,vrsv2);
\r
634 DCMD_Printf(BbDbgBuf);
\r
636 rsprintf(BbDbgBuf, BT_TMP_BUF_SIZE, "\r\n %-35s", "VHT-SIG-A2");
\r
637 DCMD_Printf(BbDbgBuf);
\r
638 value32 = ODM_GetBBReg(pDM_Odm, 0xf30 ,bMaskDWord); //VHT SIG
\r
643 //value32 = ODM_GetBBReg(pDM_Odm, 0xf30 ,bMaskDWord); //VHT SIG
\r
645 //sgi=(u1Byte)(value32&0x01);
\r
646 sgiext =(u1Byte)(value32&0x03);
\r
647 //fec = (u1Byte)(value32&0x04);
\r
648 fecext = (u1Byte)(value32&0x0C);
\r
650 vMCSS =(u1Byte)(value32&0xf0);
\r
651 bf = (u1Byte)((value32&0x100)>>8);
\r
652 vrsv =(u1Byte)((value32&0x200)>>8);
\r
653 vhtcrc8=(u2Byte)((value32&0x3fc00)>>8);
\r
654 vTail=(u1Byte)((value32&0xfc0000)>>16);
\r
656 //rsprintf(BbDbgBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = %x", "F30", value32);
\r
657 //DCMD_Printf(BbDbgBuf);
\r
659 rsprintf(BbDbgBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = %x / %x/ %x/ %x/ %x/ %x/ %x", " SGI/FEC/MCS/BF/Rsv/CRC/Tail",sgiext,fecext,vMCSS,bf,vrsv,vhtcrc8,vTail);
\r
660 DCMD_Printf(BbDbgBuf);
\r
662 rsprintf(BbDbgBuf, BT_TMP_BUF_SIZE, "\r\n %-35s", "VHT-SIG-B");
\r
663 DCMD_Printf(BbDbgBuf);
\r
664 value32 = ODM_GetBBReg(pDM_Odm, 0xf34 ,bMaskDWord); //VHT SIG
\r
666 vLength=(u2Byte)(value32&0x1fffff);
\r
667 vbrsv = (u1Byte)((value32&0x600000)>>20);
\r
668 vbTail =(u2Byte)((value32&0x1f800000)>>20);
\r
669 vbcrc = (u1Byte)((value32&0x80000000)>>28);
\r
672 //rsprintf(BbDbgBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = %x", "F34", value32);
\r
673 //DCMD_Printf(BbDbgBuf);
\r
674 rsprintf(BbDbgBuf, BT_TMP_BUF_SIZE, "\r\n %-35s = %x / %x/ %x/ %x/", " Length/Rsv/Tail/CRC",vLength,vbrsv,vbTail,vbcrc);
\r
675 DCMD_Printf(BbDbgBuf);
\r
681 VOID phydm_BasicProfile(
\r
685 PDM_ODM_T pDM_Odm = (PDM_ODM_T)pDM_VOID;
\r
686 PADAPTER Adapter = pDM_Odm->Adapter;
\r
688 char* ICType = NULL;
\r
690 rsprintf(BbDbgBuf, BT_TMP_BUF_SIZE, "\r\n%-35s", "% Basic Profile %");
\r
691 DCMD_Printf(BbDbgBuf);
\r
693 if(pDM_Odm->SupportICType == ODM_RTL8192C)
\r
694 ICType = "RTL8192C";
\r
695 else if(pDM_Odm->SupportICType == ODM_RTL8192D)
\r
696 ICType = "RTL8192D";
\r
697 else if(pDM_Odm->SupportICType == ODM_RTL8723A)
\r
698 ICType = "RTL8723A";
\r
699 else if(pDM_Odm->SupportICType == ODM_RTL8188E)
\r
700 ICType = "RTL8188E";
\r
701 else if(pDM_Odm->SupportICType == ODM_RTL8812)
\r
702 ICType = "RTL8812A";
\r
703 else if(pDM_Odm->SupportICType == ODM_RTL8821)
\r
704 ICType = "RTL8821A";
\r
705 else if(pDM_Odm->SupportICType == ODM_RTL8192E)
\r
706 ICType = "RTL8192E";
\r
707 else if(pDM_Odm->SupportICType == ODM_RTL8723B)
\r
708 ICType = "RTL8723B";
\r
709 else if(pDM_Odm->SupportICType == ODM_RTL8814A)
\r
710 ICType = "RTL8814A";
\r
711 else if(pDM_Odm->SupportICType == ODM_RTL8881A)
\r
712 ICType = "RTL8881A";
\r
713 else if(pDM_Odm->SupportICType == ODM_RTL8821B)
\r
714 ICType = "RTL8821B";
\r
715 else if(pDM_Odm->SupportICType == ODM_RTL8822B)
\r
716 ICType = "RTL8822B";
\r
717 else if(pDM_Odm->SupportICType == ODM_RTL8703B)
\r
718 ICType = "RTL8703B";
\r
719 else if(pDM_Odm->SupportICType == ODM_RTL8195A)
\r
720 ICType = "RTL8195A";
\r
721 else if(pDM_Odm->SupportICType == ODM_RTL8188F)
\r
722 ICType = "RTL8188F";
\r
723 rsprintf(BbDbgBuf, BT_TMP_BUF_SIZE, "\r\n %-35s: %s (MP Chip: %s)","IC Type", ICType, pDM_Odm->bIsMPChip?"Yes":"No");
\r
724 DCMD_Printf(BbDbgBuf);
\r
726 if(pDM_Odm->CutVersion==ODM_CUT_A)
\r
728 else if(pDM_Odm->CutVersion==ODM_CUT_B)
\r
730 else if(pDM_Odm->CutVersion==ODM_CUT_C)
\r
732 else if(pDM_Odm->CutVersion==ODM_CUT_D)
\r
734 else if(pDM_Odm->CutVersion==ODM_CUT_E)
\r
736 else if(pDM_Odm->CutVersion==ODM_CUT_F)
\r
738 else if(pDM_Odm->CutVersion==ODM_CUT_I)
\r
740 rsprintf(BbDbgBuf, BT_TMP_BUF_SIZE, "\r\n %-35s: %s","Cut Version", Cut);
\r
741 DCMD_Printf(BbDbgBuf);
\r
742 rsprintf(BbDbgBuf, BT_TMP_BUF_SIZE, "\r\n %-35s: %d","PHY Parameter Version", ODM_GetHWImgVersion(pDM_Odm));
\r
743 DCMD_Printf(BbDbgBuf);
\r
744 rsprintf(BbDbgBuf, BT_TMP_BUF_SIZE, "\r\n %-35s: %d (Subversion: %d)","FW Version", Adapter->MgntInfo.FirmwareVersion, Adapter->MgntInfo.FirmwareSubVersion);
\r
745 DCMD_Printf(BbDbgBuf);
\r
747 //1 PHY DM Version List
\r
748 rsprintf(BbDbgBuf, BT_TMP_BUF_SIZE, "\r\n%-35s","% PHYDM Version %");
\r
749 DCMD_Printf(BbDbgBuf);
\r
750 rsprintf(BbDbgBuf, BT_TMP_BUF_SIZE, "\r\n %-35s: %s","Adaptivity", ADAPTIVITY_VERSION);
\r
751 DCMD_Printf(BbDbgBuf);
\r
752 rsprintf(BbDbgBuf, BT_TMP_BUF_SIZE, "\r\n %-35s: %s","DIG", DIG_VERSION);
\r
753 DCMD_Printf(BbDbgBuf);
\r
754 rsprintf(BbDbgBuf, BT_TMP_BUF_SIZE, "\r\n %-35s: %s","Dynamic BB PowerSaving", DYNAMIC_BBPWRSAV_VERSION);
\r
755 DCMD_Printf(BbDbgBuf);
\r
756 rsprintf(BbDbgBuf, BT_TMP_BUF_SIZE, "\r\n %-35s: %s","CFO Tracking", CFO_TRACKING_VERSION);
\r
757 DCMD_Printf(BbDbgBuf);
\r
758 rsprintf(BbDbgBuf, BT_TMP_BUF_SIZE, "\r\n %-35s: %s","Antenna Diversity", ANTDIV_VERSION);
\r
759 DCMD_Printf(BbDbgBuf);
\r
760 rsprintf(BbDbgBuf, BT_TMP_BUF_SIZE, "\r\n %-35s: %s","Power Tracking", POWRTRACKING_VERSION);
\r
761 DCMD_Printf(BbDbgBuf);
\r
762 rsprintf(BbDbgBuf, BT_TMP_BUF_SIZE, "\r\n %-35s: %s","Dynamic TxPower", DYNAMIC_TXPWR_VERSION);
\r
763 DCMD_Printf(BbDbgBuf);
\r
764 rsprintf(BbDbgBuf, BT_TMP_BUF_SIZE, "\r\n %-35s: %s","RA Info", RAINFO_VERSION);
\r
765 DCMD_Printf(BbDbgBuf);
\r
766 rsprintf(BbDbgBuf, BT_TMP_BUF_SIZE, "\r\n %-35s: %s","Antenna Detection", ANTDECT_VERSION);
\r
767 DCMD_Printf(BbDbgBuf);
\r
768 rsprintf(BbDbgBuf, BT_TMP_BUF_SIZE, "\r\n %-35s: %s","Auto Channel Selection", ACS_VERSION);
\r
769 DCMD_Printf(BbDbgBuf);
\r
770 rsprintf(BbDbgBuf, BT_TMP_BUF_SIZE, "\r\n %-35s: %s","EDCA Turbo", EDCATURBO_VERSION);
\r
771 DCMD_Printf(BbDbgBuf);
\r
772 rsprintf(BbDbgBuf, BT_TMP_BUF_SIZE, "\r\n %-35s: %s","Path Diversity", PATHDIV_VERSION);
\r
773 DCMD_Printf(BbDbgBuf);
\r
774 rsprintf(BbDbgBuf, BT_TMP_BUF_SIZE, "\r\n %-35s: %s","RxHP", RXHP_VERSION);
\r
775 DCMD_Printf(BbDbgBuf);
\r
780 phydm_BasicDbgMessage
\r
785 #if( DM_ODM_SUPPORT_TYPE & (ODM_WIN|ODM_CE))
\r
786 PDM_ODM_T pDM_Odm = (PDM_ODM_T)pDM_VOID;
\r
787 PFALSE_ALARM_STATISTICS FalseAlmCnt = (PFALSE_ALARM_STATISTICS)PhyDM_Get_Structure( pDM_Odm , PHYDM_FALSEALMCNT);
\r
788 pDIG_T pDM_DigTable = &pDM_Odm->DM_DigTable;
\r
790 ODM_RT_TRACE(pDM_Odm,ODM_COMP_COMMON, ODM_DBG_LOUD, ("odm_BasicDbgMsg==>\n"));
\r
791 ODM_RT_TRACE(pDM_Odm,ODM_COMP_COMMON, ODM_DBG_LOUD, ("bLinked = %d, RSSI_Min = %d, CurrentIGI = 0x%x \n",
\r
792 pDM_Odm->bLinked, pDM_Odm->RSSI_Min, pDM_DigTable->CurIGValue) );
\r
793 ODM_RT_TRACE(pDM_Odm,ODM_COMP_COMMON, ODM_DBG_LOUD, ("Cnt_Cck_fail = %d, Cnt_Ofdm_fail = %d, Total False Alarm = %d\n",
\r
794 FalseAlmCnt->Cnt_Cck_fail, FalseAlmCnt->Cnt_Ofdm_fail, FalseAlmCnt->Cnt_all));
\r
795 ODM_RT_TRACE(pDM_Odm,ODM_COMP_COMMON, ODM_DBG_LOUD, ("RxRate = 0x%x, RSSI_A = %d, RSSI_B = %d\n",
\r
796 pDM_Odm->RxRate, pDM_Odm->RSSI_A, pDM_Odm->RSSI_B));
\r
797 ODM_RT_TRACE(pDM_Odm,ODM_COMP_COMMON, ODM_DBG_LOUD, ("RSSI_C = %d, RSSI_D = %d\n", pDM_Odm->RSSI_C, pDM_Odm->RSSI_D));
\r
801 #if( DM_ODM_SUPPORT_TYPE & ODM_CE)
\r
802 struct _PHYDM_COMMAND {
811 struct _PHYDM_COMMAND phy_dm_ary[] = {
812 {"antdiv", PHYDM_ANTDIV},
817 IN PDM_ODM_T pDM_Odm,
829 used += snprintf(output+used, out_len-used, "GET, nothing to print\n");
835 token = strsep(&input, ", ");
838 n = sizeof(phy_dm_ary)/sizeof(struct _PHYDM_COMMAND);
839 for (i = 0; i < n; i++) {
840 if (strcmp(phy_dm_ary[i].name, token) == 0) {
841 id = phy_dm_ary[i].id;
847 used += snprintf(output+used, out_len-used, "SET, command not found!\n");
854 token = strsep(&input, ", ");
855 sscanf(token, "%d", &var);
857 used += snprintf(output+used, out_len-used, "SET, old antdiv_select=%d\n", pDM_Odm->antdiv_select);
858 pDM_Odm->antdiv_select = var;
860 used += snprintf(output+used, out_len-used, "SET, new antdiv_select=%d\n", pDM_Odm->antdiv_select);
865 used += snprintf(output+used, out_len-used, "SET, unknown command!\n");