• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
16 
17 #ifndef	__ODM_DBG_H__
18 #define __ODM_DBG_H__
19 
20 
21 /*  */
22 /*	Define the debug levels */
23 /*  */
24 /*	1. DBG_TRACE and DBG_LOUD are used for normal cases. */
25 /*	They can help SW engineer to develop or trace states changed */
26 /*	and also help HW enginner to trace every operation to and from HW, */
27 /*	e.g IO, Tx, Rx. */
28 /*  */
29 /*	2. DBG_WARNNING and DBG_SERIOUS are used for unusual or error cases, */
30 /*	which help us to debug SW or HW. */
31 
32 /*	Never used in a call to ODM_RT_TRACE()! */
33 #define ODM_DBG_OFF				1
34 
35 /*	Fatal bug. */
36 /*	For example, Tx/Rx/IO locked up, OS hangs, memory access violation, */
37 /*	resource allocation failed, unexpected HW behavior, HW BUG and so on. */
38 #define ODM_DBG_SERIOUS				2
39 
40 /*	Abnormal, rare, or unexpeted cases. */
41 /*	For example, IRP/Packet/OID canceled, device suprisely unremoved and so on. */
42 #define ODM_DBG_WARNING				3
43 
44 /*	Normal case with useful information about current SW or HW state. */
45 /*	For example, Tx/Rx descriptor to fill, Tx/Rx descr. completed status, */
46 /*	SW protocol state change, dynamic mechanism state change and so on. */
47 /*  */
48 #define ODM_DBG_LOUD					4
49 
50 /*	Normal case with detail execution flow or information. */
51 #define ODM_DBG_TRACE					5
52 
53 /*  Define the tracing components */
54 /* BB Functions */
55 #define ODM_COMP_DIG					BIT(0)
56 #define ODM_COMP_RA_MASK				BIT(1)
57 #define ODM_COMP_DYNAMIC_TXPWR				BIT(2)
58 #define ODM_COMP_FA_CNT					BIT(3)
59 #define ODM_COMP_RSSI_MONITOR				BIT(4)
60 #define ODM_COMP_CCK_PD					BIT(5)
61 #define ODM_COMP_ANT_DIV				BIT(6)
62 #define ODM_COMP_PWR_SAVE				BIT(7)
63 #define ODM_COMP_PWR_TRA				BIT(8)
64 #define ODM_COMP_RATE_ADAPTIVE				BIT(9)
65 #define ODM_COMP_PATH_DIV				BIT(10)
66 #define ODM_COMP_PSD					BIT(11)
67 #define ODM_COMP_DYNAMIC_PRICCA				BIT(12)
68 #define ODM_COMP_RXHP					BIT(13)
69 /* MAC Functions */
70 #define ODM_COMP_EDCA_TURBO				BIT(16)
71 #define ODM_COMP_EARLY_MODE				BIT(17)
72 /* RF Functions */
73 #define ODM_COMP_TX_PWR_TRACK				BIT(24)
74 #define ODM_COMP_RX_GAIN_TRACK				BIT(25)
75 #define ODM_COMP_CALIBRATION				BIT(26)
76 /* Common Functions */
77 #define ODM_COMP_COMMON					BIT(30)
78 #define ODM_COMP_INIT					BIT(31)
79 
80 /*------------------------Export Marco Definition---------------------------*/
81 #define RT_PRINTK(fmt, args...)				\
82 	pr_info("%s(): " fmt, __func__, ## args);
83 
84 #ifndef ASSERT
85 	#define ASSERT(expr)
86 #endif
87 
88 #define ODM_RT_TRACE(pDM_Odm, comp, level, fmt)				\
89 	if (((comp) & pDM_Odm->DebugComponents) &&			\
90 	    (level <= pDM_Odm->DebugLevel)) {				\
91 		pr_info("[ODM-8188E] ");				\
92 		RT_PRINTK fmt;						\
93 	}
94 
95 #define ODM_RT_ASSERT(pDM_Odm, expr, fmt)				\
96 	if (!(expr)) {							\
97 		pr_info("Assertion failed! %s at ......\n", #expr);	\
98 		pr_info("      ......%s,%s,line=%d\n", __FILE__,	\
99 			__func__, __LINE__);				\
100 		RT_PRINTK fmt;						\
101 		ASSERT(false);						\
102 	}
103 
104 void ODM_InitDebugSetting(struct odm_dm_struct *pDM_Odm);
105 
106 #endif	/*  __ODM_DBG_H__ */
107