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
22 #ifndef __ODM_DBG_H__
\r
23 #define __ODM_DBG_H__
\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
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
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
39 //-----------------------------------------------------------------------------
\r
41 // Never used in a call to ODM_RT_TRACE()!
\r
43 #define ODM_DBG_OFF 1
\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
50 #define ODM_DBG_SERIOUS 2
\r
53 // Abnormal, rare, or unexpeted cases.
\r
54 // For example, IRP/Packet/OID canceled, device suprisely unremoved and so on.
\r
56 #define ODM_DBG_WARNING 3
\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
63 #define ODM_DBG_LOUD 4
\r
66 // Normal case with detail execution flow or information.
\r
68 #define ODM_DBG_TRACE 5
\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
77 #define F_RATE_AP_RPT BIT7
\r
79 //-----------------------------------------------------------------------------
\r
80 // Define the tracing components
\r
82 //-----------------------------------------------------------------------------
\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
97 #define ODM_COMP_DYNAMIC_PRICCA BIT12
\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
106 #define ODM_COMP_EDCA_TURBO BIT20
\r
108 #define ODM_FW_DEBUG_TRACE BIT22
\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
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
121 /*------------------------Export Marco Definition---------------------------*/
\r
123 #define config_phydm_read_txagc_check(data) (data != INVALID_TXAGC_DATA)
\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
132 #define DbgPrint panic_printk
\r
133 #define RT_PRINTK(fmt, args...) DbgPrint( "%s(): " fmt, __FUNCTION__, ## args);
\r
137 #define ASSERT(expr)
\r
141 #define ODM_RT_TRACE(pDM_Odm, comp, level, fmt) \
\r
143 if(((comp) & pDM_Odm->DebugComponents) && (level <= pDM_Odm->DebugLevel || level == ODM_DBG_SERIOUS)) \
\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
165 #define ODM_RT_TRACE_F(pDM_Odm, comp, level, fmt) \
\r
166 if(((comp) & pDM_Odm->DebugComponents) && (level <= pDM_Odm->DebugLevel)) \
\r
171 #define ODM_RT_ASSERT(pDM_Odm, expr, fmt) \
\r
173 DbgPrint( "Assertion failed! %s at ......\n", #expr); \
\r
174 DbgPrint( " ......%s,%s,line=%d\n",__FILE__,__FUNCTION__,__LINE__); \
\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
182 #define ODM_PRINT_ADDR(pDM_Odm, comp, level, title_str, ptr) \
\r
183 if(((comp) & pDM_Odm->DebugComponents) && (level <= pDM_Odm->DebugLevel)) \
\r
186 pu1Byte __ptr = (pu1Byte)ptr; \
\r
187 DbgPrint("[ODM] "); \
\r
188 DbgPrint(title_str); \
\r
190 for( __i=0; __i<6; __i++ ) \
\r
191 DbgPrint("%02X%s", __ptr[__i], (__i==5)?"":"-"); \
\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
206 PHYDM_InitDebugSetting(IN PDM_ODM_T pDM_Odm);
\r
208 VOID phydm_BasicDbgMessage( IN PVOID pDM_VOID);
\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
221 #define PHYDM_SNPRINTF(msg) \
\r
224 DCMD_Printf(output);\
\r
228 #if (DM_ODM_SUPPORT_TYPE == ODM_CE) || defined(__OSK__)
\r
229 #define PHYDM_DBGPRINT 0
\r
231 #define PHYDM_DBGPRINT 1
\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
239 #define PHYDM_SSCANF(x, y, z) sscanf(x, y, z)
\r
241 #define PHYDM_VAST_INFO_SNPRINTF(msg)\
\r
247 #if (PHYDM_DBGPRINT == 1)
\r
248 #define PHYDM_SNPRINTF(msg)\
\r
254 #define PHYDM_SNPRINTF(msg)\
\r
256 if(out_len > used)\
\r
257 used+=snprintf msg;\
\r
263 VOID phydm_BasicProfile(
\r
267 IN u4Byte *_out_len
\r
269 #if(DM_ODM_SUPPORT_TYPE & (ODM_CE|ODM_AP))
\r
272 IN PDM_ODM_T pDM_Odm,
\r
282 IN PDM_ODM_T pDM_Odm,
\r
283 IN char input[][16],
\r
284 IN u4Byte input_num,
\r
290 #if (DM_ODM_SUPPORT_TYPE == ODM_WIN)
\r
291 void phydm_sbd_check(
\r
292 IN PDM_ODM_T pDM_Odm
\r
295 void phydm_sbd_callback(
\r
299 void phydm_sbd_workitem_callback(
\r
305 phydm_fw_trace_en_h2c(
\r
308 IN u4Byte monitor_mode,
\r
313 phydm_fw_trace_handler(
\r
320 phydm_fw_trace_handler_code(
\r
327 phydm_fw_trace_handler_8051(
\r
333 #endif // __ODM_DBG_H__
\r