net: wireless: rockchip_wlan: add rtl8723ds support
[firefly-linux-kernel-4.4.55.git] / drivers / net / wireless / rockchip_wlan / rtl8723ds / 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 FW Functions*/\r
84 #define PHYDM_FW_COMP_RA                        BIT0    \r
85 #define PHYDM_FW_COMP_MU                        BIT1    \r
86 #define PHYDM_FW_COMP_PATH_DIV          BIT2\r
87 #define PHYDM_FW_COMP_PHY_CONFIG        BIT3\r
88 \r
89 \r
90 /*BB Driver Functions*/\r
91 #define ODM_COMP_DIG                                    BIT0    \r
92 #define ODM_COMP_RA_MASK                                BIT1    \r
93 #define ODM_COMP_DYNAMIC_TXPWR          BIT2\r
94 #define ODM_COMP_FA_CNT                         BIT3\r
95 #define ODM_COMP_RSSI_MONITOR           BIT4\r
96 #define ODM_COMP_SNIFFER                                BIT5\r
97 #define ODM_COMP_ANT_DIV                                BIT6\r
98 #define ODM_COMP_DFS                                    BIT7\r
99 #define ODM_COMP_NOISY_DETECT           BIT8\r
100 #define ODM_COMP_RATE_ADAPTIVE          BIT9\r
101 #define ODM_COMP_PATH_DIV                       BIT10\r
102 #define ODM_COMP_CCX                                    BIT11\r
103 \r
104 #define ODM_COMP_DYNAMIC_PRICCA         BIT12\r
105                                                                         /*BIT13 TBD*/\r
106 #define ODM_COMP_MP                                     BIT14\r
107 #define ODM_COMP_CFO_TRACKING           BIT15\r
108 #define ODM_COMP_ACS                                    BIT16\r
109 #define PHYDM_COMP_ADAPTIVITY           BIT17\r
110 #define PHYDM_COMP_RA_DBG                       BIT18\r
111 #define PHYDM_COMP_TXBF                         BIT19\r
112 //MAC Functions\r
113 #define ODM_COMP_EDCA_TURBO                     BIT20\r
114                                                                         /*BIT21 TBD*/\r
115 #define ODM_FW_DEBUG_TRACE                      BIT22\r
116 //RF Functions\r
117                                                                         /*BIT23 TBD*/\r
118 #define ODM_COMP_TX_PWR_TRACK           BIT24\r
119                                                                         /*BIT25 TBD*/\r
120 #define ODM_COMP_CALIBRATION                    BIT26\r
121 //Common Functions\r
122                                                                         /*BIT27 TBD*/\r
123 #define ODM_PHY_CONFIG                          BIT28\r
124 #define ODM_COMP_INIT                                   BIT29\r
125 #define ODM_COMP_COMMON                         BIT30\r
126 #define ODM_COMP_API                                    BIT31\r
127 \r
128 \r
129 /*------------------------Export Marco Definition---------------------------*/\r
130 \r
131 #define config_phydm_read_txagc_check(data)             (data != INVALID_TXAGC_DATA)\r
132 \r
133 #if (DM_ODM_SUPPORT_TYPE == ODM_WIN)\r
134         #define RT_PRINTK                               DbgPrint\r
135 #elif (DM_ODM_SUPPORT_TYPE == ODM_CE)\r
136         #define DbgPrint        printk\r
137         #define RT_PRINTK(fmt, args...) DbgPrint( "%s(): " fmt, __FUNCTION__, ## args);\r
138         #define RT_DISP(dbgtype, dbgflag, printstr)\r
139 #else\r
140         #define DbgPrint        panic_printk\r
141         #define RT_PRINTK(fmt, args...) DbgPrint( "%s(): " fmt, __FUNCTION__, ## args);\r
142 #endif\r
143 \r
144 #ifndef ASSERT\r
145         #define ASSERT(expr)\r
146 #endif\r
147 \r
148 #if DBG\r
149 #define ODM_RT_TRACE(pDM_Odm, comp, level, fmt)                                                                 \\r
150         do {    \\r
151                 if(((comp) & pDM_Odm->DebugComponents) && (level <= pDM_Odm->DebugLevel || level == ODM_DBG_SERIOUS))   \\r
152                 {                                                                                                                                                       \\r
153                         if (pDM_Odm->SupportICType == ODM_RTL8188E)                                                     \\r
154                                 DbgPrint("[PhyDM-8188E] ");                                                                                     \\r
155                         else if(pDM_Odm->SupportICType == ODM_RTL8192E)                                                 \\r
156                                 DbgPrint("[PhyDM-8192E] ");                                                                                     \\r
157                         else if(pDM_Odm->SupportICType == ODM_RTL8812)                                                  \\r
158                                 DbgPrint("[PhyDM-8812A] ");                                                                                     \\r
159                         else if(pDM_Odm->SupportICType == ODM_RTL8821)                                                  \\r
160                                 DbgPrint("[PhyDM-8821A] ");                                                                                     \\r
161                         else if(pDM_Odm->SupportICType == ODM_RTL8814A)                                                 \\r
162                                 DbgPrint("[PhyDM-8814A] ");                                                                                     \\r
163                         else if(pDM_Odm->SupportICType == ODM_RTL8703B)                                                 \\r
164                                 DbgPrint("[PhyDM-8703B] ");                                                                                     \\r
165                         else if(pDM_Odm->SupportICType == ODM_RTL8822B)                                                 \\r
166                                 DbgPrint("[PhyDM-8822B] ");                                                                                     \\r
167                         else if (pDM_Odm->SupportICType == ODM_RTL8188F)                                                        \\r
168                                 DbgPrint("[PhyDM-8188F] ");                                                                                     \\r
169                         RT_PRINTK fmt;                                                                                                                  \\r
170                 }       \\r
171         } while (0)\r
172 \r
173 #define ODM_RT_TRACE_F(pDM_Odm, comp, level, fmt)                                                                       \\r
174                 if(((comp) & pDM_Odm->DebugComponents) && (level <= pDM_Odm->DebugLevel))       \\r
175                 {                                                                                                                                                       \\r
176                         RT_PRINTK fmt;                                                                                                                  \\r
177                 }\r
178 \r
179 #define ODM_RT_ASSERT(pDM_Odm, expr, fmt)                                                                                       \\r
180                 if(!(expr)) {                                                                                                                                   \\r
181                         DbgPrint( "Assertion failed! %s at ......\n", #expr);                                                           \\r
182                         DbgPrint( "      ......%s,%s,line=%d\n",__FILE__,__FUNCTION__,__LINE__);                        \\r
183                         RT_PRINTK fmt;                                                                                                                  \\r
184                         ASSERT(FALSE);                                                                                                                  \\r
185                 }\r
186 #define ODM_dbg_enter() { DbgPrint("==> %s\n", __FUNCTION__); }\r
187 #define ODM_dbg_exit() { DbgPrint("<== %s\n", __FUNCTION__); }\r
188 #define ODM_dbg_trace(str) { DbgPrint("%s:%s\n", __FUNCTION__, str); }\r
189 \r
190 #define ODM_PRINT_ADDR(pDM_Odm, comp, level, title_str, ptr)                                                    \\r
191                         if(((comp) & pDM_Odm->DebugComponents) && (level <= pDM_Odm->DebugLevel))       \\r
192                         {                                                                                                                                               \\r
193                                 int __i;                                                                                                                                \\r
194                                 pu1Byte __ptr = (pu1Byte)ptr;                                                                                   \\r
195                                 DbgPrint("[ODM] ");                                                                                                     \\r
196                                 DbgPrint(title_str);                                                                                                    \\r
197                                 DbgPrint(" ");                                                                                                          \\r
198                                 for( __i=0; __i<6; __i++ )                                                                                              \\r
199                                         DbgPrint("%02X%s", __ptr[__i], (__i==5)?"":"-");                                                \\r
200                                 DbgPrint("\n");                                                                                                         \\r
201                         }\r
202 #else\r
203 #define ODM_RT_TRACE(pDM_Odm, comp, level, fmt)\r
204 #define ODM_RT_TRACE_F(pDM_Odm, comp, level, fmt)\r
205 #define ODM_RT_ASSERT(pDM_Odm, expr, fmt)\r
206 #define ODM_dbg_enter()\r
207 #define ODM_dbg_exit()\r
208 #define ODM_dbg_trace(str)\r
209 #define ODM_PRINT_ADDR(pDM_Odm, comp, level, title_str, ptr)\r
210 #endif\r
211 \r
212 \r
213 VOID \r
214 PHYDM_InitDebugSetting(IN               PDM_ODM_T               pDM_Odm);\r
215 \r
216 VOID phydm_BasicDbgMessage(     IN              PVOID                   pDM_VOID);\r
217 \r
218 #if (DM_ODM_SUPPORT_TYPE == ODM_WIN)\r
219 #define PHYDM_DBGPRINT          0\r
220 #define PHYDM_SSCANF(x, y, z)   DCMD_Scanf(x, y, z)\r
221 #define PHYDM_VAST_INFO_SNPRINTF        PHYDM_SNPRINTF\r
222 #if (PHYDM_DBGPRINT == 1)\r
223 #define PHYDM_SNPRINTF(msg)     \\r
224                 do {\\r
225                         rsprintf msg;\\r
226                         DbgPrint(output);\\r
227                 } while (0)\r
228 #else\r
229 #define PHYDM_SNPRINTF(msg)     \\r
230                 do {\\r
231                         rsprintf msg;\\r
232                         DCMD_Printf(output);\\r
233                 } while (0)\r
234 #endif\r
235 #else\r
236 #if (DM_ODM_SUPPORT_TYPE == ODM_CE) || defined(__OSK__)\r
237 #define PHYDM_DBGPRINT          0\r
238 #else\r
239 #define PHYDM_DBGPRINT          1\r
240 #endif\r
241 #define MAX_ARGC                                20\r
242 #define MAX_ARGV                                16\r
243 #define DCMD_DECIMAL                    "%d"\r
244 #define DCMD_CHAR                               "%c"\r
245 #define DCMD_HEX                                "%x"\r
246 \r
247 #define PHYDM_SSCANF(x, y, z)   sscanf(x, y, z)\r
248 \r
249 #define PHYDM_VAST_INFO_SNPRINTF(msg)\\r
250                 do {\\r
251                         snprintf msg;\\r
252                         DbgPrint(output);\\r
253                 } while (0)\r
254 \r
255 #if (PHYDM_DBGPRINT == 1)\r
256 #define PHYDM_SNPRINTF(msg)\\r
257                 do {\\r
258                         snprintf msg;\\r
259                         DbgPrint(output);\\r
260                 } while (0)\r
261 #else\r
262 #define PHYDM_SNPRINTF(msg)\\r
263                 do {\\r
264                         if(out_len > used)\\r
265                                 used+=snprintf msg;\\r
266                 } while (0)\r
267 #endif\r
268 #endif\r
269 \r
270 \r
271 VOID phydm_BasicProfile(\r
272         IN              PVOID                   pDM_VOID,\r
273         IN              u4Byte                  *_used,\r
274         OUT             char                            *output,\r
275         IN              u4Byte                  *_out_len\r
276         );\r
277 #if(DM_ODM_SUPPORT_TYPE & (ODM_CE|ODM_AP))\r
278 s4Byte\r
279 phydm_cmd(\r
280         IN PDM_ODM_T    pDM_Odm,\r
281         IN char         *input,\r
282         IN u4Byte       in_len,\r
283         IN u1Byte       flag,\r
284         OUT char        *output,\r
285         IN u4Byte       out_len\r
286 );\r
287 #endif\r
288 VOID\r
289 phydm_cmd_parser(\r
290         IN PDM_ODM_T    pDM_Odm,\r
291         IN char         input[][16],\r
292         IN u4Byte       input_num,\r
293         IN u1Byte       flag,\r
294         OUT char        *output,\r
295         IN u4Byte       out_len\r
296 );\r
297 \r
298 VOID\r
299 phydm_la_mode_bb_setting(\r
300         IN      PVOID           pDM_VOID,\r
301         IN      u4Byte          DbgPort,\r
302         IN      BOOLEAN         bTriggerEdge,\r
303         IN      u1Byte          sampling_rate\r
304 );\r
305 \r
306 u1Byte\r
307 phydm_la_mode_mac_setting(\r
308         IN      PVOID           pDM_VOID,\r
309         IN      u4Byte          TriggerTime_mu_sec\r
310 );\r
311 \r
312 #if (DM_ODM_SUPPORT_TYPE == ODM_WIN)\r
313 void phydm_sbd_check(\r
314         IN      PDM_ODM_T                                       pDM_Odm\r
315         );\r
316 \r
317 void phydm_sbd_callback(\r
318         PRT_TIMER               pTimer\r
319         );\r
320 \r
321 void phydm_sbd_workitem_callback(\r
322     IN PVOID            pContext\r
323         );\r
324 #endif\r
325 \r
326 VOID\r
327 phydm_fw_trace_en_h2c(\r
328         IN      PVOID           pDM_VOID,\r
329         IN      BOOLEAN         enable,\r
330         IN      u4Byte          fw_debug_component,     \r
331         IN      u4Byte          monitor_mode,\r
332         IN      u4Byte          macid\r
333 );\r
334 \r
335 VOID\r
336 phydm_fw_trace_handler(\r
337         IN              PVOID   pDM_VOID,\r
338         IN              pu1Byte CmdBuf,\r
339         IN              u1Byte  CmdLen\r
340 );\r
341 \r
342 VOID\r
343 phydm_fw_trace_handler_code(\r
344         IN      PVOID   pDM_VOID,\r
345         IN      pu1Byte Buffer,\r
346         IN      u1Byte  CmdLen\r
347 );\r
348 \r
349 VOID\r
350 phydm_fw_trace_handler_8051(\r
351         IN      PVOID   pDM_VOID,\r
352         IN      pu1Byte CmdBuf,\r
353         IN      u1Byte  CmdLen\r
354 );\r
355 \r
356 #endif  // __ODM_DBG_H__\r
357 \r