net: wireless: rockchip: add rtl8822be pcie wifi driver
[firefly-linux-kernel-4.4.55.git] / drivers / net / wireless / rockchip_wlan / rtl8822be / hal / phydm / phydm_debug.h
1 /******************************************************************************\r
2  *\r
3  * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.\r
4  *                                        \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
8  *\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
12  * more details.\r
13  *\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
17  *\r
18  *\r
19  ******************************************************************************/\r
20 \r
21 \r
22 #ifndef __ODM_DBG_H__\r
23 #define __ODM_DBG_H__\r
24 \r
25 /*#define DEBUG_VERSION "1.1"*/  /*2015.07.29 YuChen*/\r
26 /*#define DEBUG_VERSION "1.2"*/  /*2015.08.28 Dino*/\r
27 #define DEBUG_VERSION   "1.3"  /*2016.04.28 YuChen*/\r
28 //-----------------------------------------------------------------------------\r
29 //      Define the debug levels\r
30 //\r
31 //      1.      DBG_TRACE and DBG_LOUD are used for normal cases.\r
32 //      So that, they can help SW engineer to develope or trace states changed \r
33 //      and also help HW enginner to trace every operation to and from HW, \r
34 //      e.g IO, Tx, Rx. \r
35 //\r
36 //      2.      DBG_WARNNING and DBG_SERIOUS are used for unusual or error cases, \r
37 //      which help us to debug SW or HW.\r
38 //\r
39 //-----------------------------------------------------------------------------\r
40 //\r
41 //      Never used in a call to ODM_RT_TRACE()!\r
42 //\r
43 #define ODM_DBG_OFF                                     1\r
44 \r
45 //\r
46 //      Fatal bug. \r
47 //      For example, Tx/Rx/IO locked up, OS hangs, memory access violation, \r
48 //      resource allocation failed, unexpected HW behavior, HW BUG and so on.\r
49 //\r
50 #define ODM_DBG_SERIOUS                         2\r
51 \r
52 //\r
53 //      Abnormal, rare, or unexpeted cases.\r
54 //      For example, IRP/Packet/OID canceled, device suprisely unremoved and so on.\r
55 //\r
56 #define ODM_DBG_WARNING                         3\r
57 \r
58 //\r
59 //      Normal case with useful information about current SW or HW state. \r
60 //      For example, Tx/Rx descriptor to fill, Tx/Rx descriptor completed status, \r
61 //      SW protocol state change, dynamic mechanism state change and so on.\r
62 //\r
63 #define ODM_DBG_LOUD                                    4\r
64 \r
65 //\r
66 //      Normal case with detail execution flow or information.\r
67 //\r
68 #define ODM_DBG_TRACE                                   5\r
69 \r
70 /*FW DBG MSG*/\r
71 #define RATE_DECISION   BIT0\r
72 #define INIT_RA_TABLE   BIT1\r
73 #define RATE_UP                 BIT2\r
74 #define RATE_DOWN               BIT3\r
75 #define TRY_DONE                BIT4\r
76 #define RA_H2C          BIT5\r
77 #define F_RATE_AP_RPT   BIT7\r
78 \r
79 //-----------------------------------------------------------------------------\r
80 // Define the tracing components\r
81 //\r
82 //-----------------------------------------------------------------------------\r
83 //BB Functions\r
84 #define ODM_COMP_DIG                                    BIT0    \r
85 #define ODM_COMP_RA_MASK                                BIT1    \r
86 #define ODM_COMP_DYNAMIC_TXPWR          BIT2\r
87 #define ODM_COMP_FA_CNT                         BIT3\r
88 #define ODM_COMP_RSSI_MONITOR           BIT4\r
89 #define ODM_COMP_SNIFFER                                BIT5\r
90 #define ODM_COMP_ANT_DIV                                BIT6\r
91 #define ODM_COMP_DFS                                    BIT7\r
92 #define ODM_COMP_NOISY_DETECT           BIT8\r
93 #define ODM_COMP_RATE_ADAPTIVE          BIT9\r
94 #define ODM_COMP_PATH_DIV                       BIT10\r
95 #define ODM_COMP_CCX                                    BIT11\r
96 \r
97 #define ODM_COMP_DYNAMIC_PRICCA         BIT12\r
98                                                                         /*BIT13 TBD*/\r
99 #define ODM_COMP_MP                                     BIT14\r
100 #define ODM_COMP_CFO_TRACKING           BIT15\r
101 #define ODM_COMP_ACS                                    BIT16\r
102 #define PHYDM_COMP_ADAPTIVITY           BIT17\r
103 #define PHYDM_COMP_RA_DBG                       BIT18\r
104 #define PHYDM_COMP_TXBF                         BIT19\r
105 //MAC Functions\r
106 #define ODM_COMP_EDCA_TURBO                     BIT20\r
107                                                                         /*BIT21 TBD*/\r
108 #define ODM_FW_DEBUG_TRACE                      BIT22\r
109 //RF Functions\r
110                                                                         /*BIT23 TBD*/\r
111 #define ODM_COMP_TX_PWR_TRACK           BIT24\r
112 #define ODM_COMP_RX_GAIN_TRACK          BIT25\r
113 #define ODM_COMP_CALIBRATION                    BIT26\r
114 //Common Functions\r
115 #define ODM_PHY_CONFIG                          BIT28\r
116 #define ODM_COMP_INIT                                   BIT29\r
117 #define ODM_COMP_COMMON                         BIT30\r
118 #define ODM_COMP_API                                    BIT31\r
119 \r
120 \r
121 /*------------------------Export Marco Definition---------------------------*/\r
122 \r
123 #define config_phydm_read_txagc_check(data)             (data != INVALID_TXAGC_DATA)\r
124 \r
125 #if (DM_ODM_SUPPORT_TYPE == ODM_WIN)\r
126         #define RT_PRINTK                               DbgPrint\r
127 #elif (DM_ODM_SUPPORT_TYPE == ODM_CE)\r
128         #define DbgPrint        printk\r
129         #define RT_PRINTK(fmt, args...) DbgPrint( "%s(): " fmt, __FUNCTION__, ## args);\r
130         #define RT_DISP(dbgtype, dbgflag, printstr)\r
131 #else\r
132         #define DbgPrint        panic_printk\r
133         #define RT_PRINTK(fmt, args...) DbgPrint( "%s(): " fmt, __FUNCTION__, ## args);\r
134 #endif\r
135 \r
136 #ifndef ASSERT\r
137         #define ASSERT(expr)\r
138 #endif\r
139 \r
140 #if DBG\r
141 #define ODM_RT_TRACE(pDM_Odm, comp, level, fmt)                                                                 \\r
142         do {    \\r
143                 if(((comp) & pDM_Odm->DebugComponents) && (level <= pDM_Odm->DebugLevel || level == ODM_DBG_SERIOUS))   \\r
144                 {                                                                                                                                                       \\r
145                         if (pDM_Odm->SupportICType == ODM_RTL8188E)                                                     \\r
146                                 DbgPrint("[PhyDM-8188E] ");                                                                                     \\r
147                         else if(pDM_Odm->SupportICType == ODM_RTL8192E)                                                 \\r
148                                 DbgPrint("[PhyDM-8192E] ");                                                                                     \\r
149                         else if(pDM_Odm->SupportICType == ODM_RTL8812)                                                  \\r
150                                 DbgPrint("[PhyDM-8812A] ");                                                                                     \\r
151                         else if(pDM_Odm->SupportICType == ODM_RTL8821)                                                  \\r
152                                 DbgPrint("[PhyDM-8821A] ");                                                                                     \\r
153                         else if(pDM_Odm->SupportICType == ODM_RTL8814A)                                                 \\r
154                                 DbgPrint("[PhyDM-8814A] ");                                                                                     \\r
155                         else if(pDM_Odm->SupportICType == ODM_RTL8703B)                                                 \\r
156                                 DbgPrint("[PhyDM-8703B] ");                                                                                     \\r
157                         else if(pDM_Odm->SupportICType == ODM_RTL8822B)                                                 \\r
158                                 DbgPrint("[PhyDM-8822B] ");                                                                                     \\r
159                         else if (pDM_Odm->SupportICType == ODM_RTL8188F)                                                        \\r
160                                 DbgPrint("[PhyDM-8188F] ");                                                                                     \\r
161                         RT_PRINTK fmt;                                                                                                                  \\r
162                 }       \\r
163         } while (0)\r
164 \r
165 #define ODM_RT_TRACE_F(pDM_Odm, comp, level, fmt)                                                                       \\r
166                 if(((comp) & pDM_Odm->DebugComponents) && (level <= pDM_Odm->DebugLevel))       \\r
167                 {                                                                                                                                                       \\r
168                         RT_PRINTK fmt;                                                                                                                  \\r
169                 }\r
170 \r
171 #define ODM_RT_ASSERT(pDM_Odm, expr, fmt)                                                                                       \\r
172                 if(!(expr)) {                                                                                                                                   \\r
173                         DbgPrint( "Assertion failed! %s at ......\n", #expr);                                                           \\r
174                         DbgPrint( "      ......%s,%s,line=%d\n",__FILE__,__FUNCTION__,__LINE__);                        \\r
175                         RT_PRINTK fmt;                                                                                                                  \\r
176                         ASSERT(FALSE);                                                                                                                  \\r
177                 }\r
178 #define ODM_dbg_enter() { DbgPrint("==> %s\n", __FUNCTION__); }\r
179 #define ODM_dbg_exit() { DbgPrint("<== %s\n", __FUNCTION__); }\r
180 #define ODM_dbg_trace(str) { DbgPrint("%s:%s\n", __FUNCTION__, str); }\r
181 \r
182 #define ODM_PRINT_ADDR(pDM_Odm, comp, level, title_str, ptr)                                                    \\r
183                         if(((comp) & pDM_Odm->DebugComponents) && (level <= pDM_Odm->DebugLevel))       \\r
184                         {                                                                                                                                               \\r
185                                 int __i;                                                                                                                                \\r
186                                 pu1Byte __ptr = (pu1Byte)ptr;                                                                                   \\r
187                                 DbgPrint("[ODM] ");                                                                                                     \\r
188                                 DbgPrint(title_str);                                                                                                    \\r
189                                 DbgPrint(" ");                                                                                                          \\r
190                                 for( __i=0; __i<6; __i++ )                                                                                              \\r
191                                         DbgPrint("%02X%s", __ptr[__i], (__i==5)?"":"-");                                                \\r
192                                 DbgPrint("\n");                                                                                                         \\r
193                         }\r
194 #else\r
195 #define ODM_RT_TRACE(pDM_Odm, comp, level, fmt)\r
196 #define ODM_RT_TRACE_F(pDM_Odm, comp, level, fmt)\r
197 #define ODM_RT_ASSERT(pDM_Odm, expr, fmt)\r
198 #define ODM_dbg_enter()\r
199 #define ODM_dbg_exit()\r
200 #define ODM_dbg_trace(str)\r
201 #define ODM_PRINT_ADDR(pDM_Odm, comp, level, title_str, ptr)\r
202 #endif\r
203 \r
204 \r
205 VOID \r
206 PHYDM_InitDebugSetting(IN               PDM_ODM_T               pDM_Odm);\r
207 \r
208 VOID phydm_BasicDbgMessage(     IN              PVOID                   pDM_VOID);\r
209 \r
210 #if (DM_ODM_SUPPORT_TYPE == ODM_WIN)\r
211 #define PHYDM_DBGPRINT          0\r
212 #define PHYDM_SSCANF(x, y, z)   DCMD_Scanf(x, y, z)\r
213 #define PHYDM_VAST_INFO_SNPRINTF        PHYDM_SNPRINTF\r
214 #if (PHYDM_DBGPRINT == 1)\r
215 #define PHYDM_SNPRINTF(msg)     \\r
216                 do {\\r
217                         rsprintf msg;\\r
218                         DbgPrint(output);\\r
219                 } while (0)\r
220 #else\r
221 #define PHYDM_SNPRINTF(msg)     \\r
222                 do {\\r
223                         rsprintf msg;\\r
224                         DCMD_Printf(output);\\r
225                 } while (0)\r
226 #endif\r
227 #else\r
228 #if (DM_ODM_SUPPORT_TYPE == ODM_CE) || defined(__OSK__)\r
229 #define PHYDM_DBGPRINT          0\r
230 #else\r
231 #define PHYDM_DBGPRINT          1\r
232 #endif\r
233 #define MAX_ARGC                                20\r
234 #define MAX_ARGV                                16\r
235 #define DCMD_DECIMAL                    "%d"\r
236 #define DCMD_CHAR                               "%c"\r
237 #define DCMD_HEX                                "%x"\r
238 \r
239 #define PHYDM_SSCANF(x, y, z)   sscanf(x, y, z)\r
240 \r
241 #define PHYDM_VAST_INFO_SNPRINTF(msg)\\r
242                 do {\\r
243                         snprintf msg;\\r
244                         DbgPrint(output);\\r
245                 } while (0)\r
246 \r
247 #if (PHYDM_DBGPRINT == 1)\r
248 #define PHYDM_SNPRINTF(msg)\\r
249                 do {\\r
250                         snprintf msg;\\r
251                         DbgPrint(output);\\r
252                 } while (0)\r
253 #else\r
254 #define PHYDM_SNPRINTF(msg)\\r
255                 do {\\r
256                         if(out_len > used)\\r
257                                 used+=snprintf msg;\\r
258                 } while (0)\r
259 #endif\r
260 #endif\r
261 \r
262 \r
263 VOID phydm_BasicProfile(\r
264         IN              PVOID                   pDM_VOID,\r
265         IN              u4Byte                  *_used,\r
266         OUT             char                            *output,\r
267         IN              u4Byte                  *_out_len\r
268         );\r
269 #if(DM_ODM_SUPPORT_TYPE & (ODM_CE|ODM_AP))\r
270 s4Byte\r
271 phydm_cmd(\r
272         IN PDM_ODM_T    pDM_Odm,\r
273         IN char         *input,\r
274         IN u4Byte       in_len,\r
275         IN u1Byte       flag,\r
276         OUT char        *output,\r
277         IN u4Byte       out_len\r
278 );\r
279 #endif\r
280 VOID\r
281 phydm_cmd_parser(\r
282         IN PDM_ODM_T    pDM_Odm,\r
283         IN char         input[][16],\r
284         IN u4Byte       input_num,\r
285         IN u1Byte       flag,\r
286         OUT char        *output,\r
287         IN u4Byte       out_len\r
288 );\r
289 \r
290 #if (DM_ODM_SUPPORT_TYPE == ODM_WIN)\r
291 void phydm_sbd_check(\r
292         IN      PDM_ODM_T                                       pDM_Odm\r
293         );\r
294 \r
295 void phydm_sbd_callback(\r
296         PRT_TIMER               pTimer\r
297         );\r
298 \r
299 void phydm_sbd_workitem_callback(\r
300     IN PVOID            pContext\r
301         );\r
302 #endif\r
303 \r
304 VOID\r
305 phydm_fw_trace_en_h2c(\r
306         IN      PVOID   pDM_VOID,\r
307         IN      BOOLEAN         enable,\r
308         IN      u4Byte          monitor_mode,\r
309         IN      u4Byte          macid\r
310 );\r
311 \r
312 VOID\r
313 phydm_fw_trace_handler(\r
314         IN              PVOID   pDM_VOID,\r
315         IN              pu1Byte CmdBuf,\r
316         IN              u1Byte  CmdLen\r
317 );\r
318 \r
319 VOID\r
320 phydm_fw_trace_handler_code(\r
321         IN      PVOID   pDM_VOID,\r
322         IN      pu1Byte Buffer,\r
323         IN      u1Byte  CmdLen\r
324 );\r
325 \r
326 VOID\r
327 phydm_fw_trace_handler_8051(\r
328         IN      PVOID   pDM_VOID,\r
329         IN      pu1Byte CmdBuf,\r
330         IN      u1Byte  CmdLen\r
331 );\r
332 \r
333 #endif  // __ODM_DBG_H__\r
334 \r