xref: /OK3568_Linux_fs/external/rkwifibt/drivers/rtl8852bs/phl/phl_debug.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /******************************************************************************
2*4882a593Smuzhiyun  *
3*4882a593Smuzhiyun  * Copyright(c) 2019 - 2021 Realtek Corporation.
4*4882a593Smuzhiyun  *
5*4882a593Smuzhiyun  * This program is free software; you can redistribute it and/or modify it
6*4882a593Smuzhiyun  * under the terms of version 2 of the GNU General Public License as
7*4882a593Smuzhiyun  * published by the Free Software Foundation.
8*4882a593Smuzhiyun  *
9*4882a593Smuzhiyun  * This program is distributed in the hope that it will be useful, but WITHOUT
10*4882a593Smuzhiyun  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11*4882a593Smuzhiyun  * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
12*4882a593Smuzhiyun  * more details.
13*4882a593Smuzhiyun  *
14*4882a593Smuzhiyun  *****************************************************************************/
15*4882a593Smuzhiyun #ifndef _PHL_DEBUG_H_
16*4882a593Smuzhiyun #define _PHL_DEBUG_H_
17*4882a593Smuzhiyun 
18*4882a593Smuzhiyun /* phl log level */
19*4882a593Smuzhiyun enum {
20*4882a593Smuzhiyun 	_PHL_NONE_ = 0,
21*4882a593Smuzhiyun 	_PHL_ALWAYS_ = 1,
22*4882a593Smuzhiyun 	_PHL_ERR_ = 2,
23*4882a593Smuzhiyun 	_PHL_WARNING_ = 3,
24*4882a593Smuzhiyun 	_PHL_INFO_ = 4,
25*4882a593Smuzhiyun 	_PHL_DEBUG_ = 5,
26*4882a593Smuzhiyun 	_PHL_MAX_ = 6
27*4882a593Smuzhiyun };
28*4882a593Smuzhiyun 
29*4882a593Smuzhiyun #define PHL_PREFIX "PHL: "
30*4882a593Smuzhiyun #define HALPS_PREFIX "HALPS:"
31*4882a593Smuzhiyun 
32*4882a593Smuzhiyun #define	PHL_DBG_OUTBUF(max_buff_len, used_len, buff_addr, remain_len, fmt, ...)\
33*4882a593Smuzhiyun 	do {									\
34*4882a593Smuzhiyun 		u32 *used_len_tmp = &(used_len);				\
35*4882a593Smuzhiyun 		if (*used_len_tmp < max_buff_len)				\
36*4882a593Smuzhiyun 			*used_len_tmp += _os_snprintf(buff_addr, remain_len, fmt, ##__VA_ARGS__);\
37*4882a593Smuzhiyun 	} while (0)
38*4882a593Smuzhiyun 
39*4882a593Smuzhiyun #ifdef CONFIG_RTW_DEBUG
40*4882a593Smuzhiyun 
41*4882a593Smuzhiyun /*Define the tracing components*/
42*4882a593Smuzhiyun #define COMP_PHL_DBG BIT0		/* For function call tracing. */
43*4882a593Smuzhiyun #define COMP_PHL_RECV BIT1
44*4882a593Smuzhiyun #define COMP_PHL_XMIT BIT2
45*4882a593Smuzhiyun #define COMP_PHL_MAC BIT3
46*4882a593Smuzhiyun #define COMP_PHL_SOUND BIT4
47*4882a593Smuzhiyun #define COMP_PHL_WOW BIT5
48*4882a593Smuzhiyun #define COMP_PHL_TRIG BIT6
49*4882a593Smuzhiyun #define COMP_PHL_PKTOFLD BIT7
50*4882a593Smuzhiyun #define COMP_PHL_FSM BIT8
51*4882a593Smuzhiyun #define COMP_PHL_PS BIT9
52*4882a593Smuzhiyun #define COMP_PHL_PSTS BIT10
53*4882a593Smuzhiyun #define COMP_PHL_BB BIT11
54*4882a593Smuzhiyun #define COMP_PHL_RF BIT12
55*4882a593Smuzhiyun #define COMP_PHL_LED BIT13
56*4882a593Smuzhiyun #define COMP_PHL_MCC BIT14
57*4882a593Smuzhiyun #define COMP_PHL_P2PPS BIT15
58*4882a593Smuzhiyun #define COMP_PHL_ECSA BIT16
59*4882a593Smuzhiyun #define COMP_PHL_CMDDISP BIT17
60*4882a593Smuzhiyun #define COMP_PHL_BTC BIT18
61*4882a593Smuzhiyun #define COMP_PHL_TWT BIT19
62*4882a593Smuzhiyun 
63*4882a593Smuzhiyun extern u32 phl_log_components;
64*4882a593Smuzhiyun extern u8 phl_log_level;
65*4882a593Smuzhiyun #define DEBUG_MAX_NAME_LEN 50
66*4882a593Smuzhiyun 
67*4882a593Smuzhiyun struct dbg_alloc_buf {
68*4882a593Smuzhiyun 	_os_list list;
69*4882a593Smuzhiyun 	u8 file_name[DEBUG_MAX_NAME_LEN];
70*4882a593Smuzhiyun 	u8 func_name[DEBUG_MAX_NAME_LEN];
71*4882a593Smuzhiyun 	u32 line_num;
72*4882a593Smuzhiyun 	u32 buf_size;
73*4882a593Smuzhiyun 	u8 *buf_ptr;
74*4882a593Smuzhiyun };
75*4882a593Smuzhiyun 
76*4882a593Smuzhiyun struct dbg_mem_ctx {
77*4882a593Smuzhiyun 	_os_list alloc_buf_list;
78*4882a593Smuzhiyun 	_os_lock alloc_buf_list_lock;
79*4882a593Smuzhiyun 	u32 alloc_buf_cnt;
80*4882a593Smuzhiyun };
81*4882a593Smuzhiyun 
82*4882a593Smuzhiyun 
83*4882a593Smuzhiyun #undef PHL_TRACE
84*4882a593Smuzhiyun #define PHL_TRACE(comp, level, fmt, ...)     \
85*4882a593Smuzhiyun 	do {\
86*4882a593Smuzhiyun 		if(((comp) & phl_log_components) && (level <= phl_log_level)) {\
87*4882a593Smuzhiyun 			_os_dbgdump(PHL_PREFIX fmt, ##__VA_ARGS__);\
88*4882a593Smuzhiyun 		} \
89*4882a593Smuzhiyun 	} while (0)
90*4882a593Smuzhiyun 
91*4882a593Smuzhiyun #undef PHL_DATA
92*4882a593Smuzhiyun #define PHL_DATA(comp, level, fmt, ...)     \
93*4882a593Smuzhiyun 	do {\
94*4882a593Smuzhiyun 		if(((comp) & phl_log_components) && (level <= phl_log_level)) {\
95*4882a593Smuzhiyun 			_os_dbgdump_c(fmt, ##__VA_ARGS__);\
96*4882a593Smuzhiyun 		} \
97*4882a593Smuzhiyun 	} while (0)
98*4882a593Smuzhiyun 
99*4882a593Smuzhiyun #undef PHL_ASSERT
100*4882a593Smuzhiyun #define PHL_ASSERT(fmt, ...) \
101*4882a593Smuzhiyun 	do {\
102*4882a593Smuzhiyun 			PHL_TRACE(COMP_PHL_DBG, _PHL_ERR_, "ERROR " fmt, ##__VA_ARGS__);\
103*4882a593Smuzhiyun 			_os_assert(true); \
104*4882a593Smuzhiyun 	} while (0)
105*4882a593Smuzhiyun 
106*4882a593Smuzhiyun 
107*4882a593Smuzhiyun #undef PHL_PRINT
108*4882a593Smuzhiyun #define PHL_PRINT(fmt, ...)     \
109*4882a593Smuzhiyun 	do {\
110*4882a593Smuzhiyun 			PHL_TRACE(COMP_PHL_DBG, _PHL_ALWAYS_, fmt, ##__VA_ARGS__);\
111*4882a593Smuzhiyun 	} while (0)
112*4882a593Smuzhiyun 
113*4882a593Smuzhiyun #undef PHL_ERR
114*4882a593Smuzhiyun #define PHL_ERR(fmt, ...)     \
115*4882a593Smuzhiyun 	do {\
116*4882a593Smuzhiyun 			PHL_TRACE(COMP_PHL_DBG, _PHL_ERR_, "ERROR " fmt, ##__VA_ARGS__);\
117*4882a593Smuzhiyun 	} while (0)
118*4882a593Smuzhiyun 
119*4882a593Smuzhiyun #undef PHL_WARN
120*4882a593Smuzhiyun #define PHL_WARN(fmt, ...)     \
121*4882a593Smuzhiyun 	do {\
122*4882a593Smuzhiyun 			PHL_TRACE(COMP_PHL_DBG, _PHL_WARNING_, "WARN " fmt, ##__VA_ARGS__);\
123*4882a593Smuzhiyun 	} while (0)
124*4882a593Smuzhiyun 
125*4882a593Smuzhiyun #undef PHL_INFO
126*4882a593Smuzhiyun #define PHL_INFO(fmt, ...)     \
127*4882a593Smuzhiyun 	do {\
128*4882a593Smuzhiyun 			PHL_TRACE(COMP_PHL_DBG, _PHL_INFO_, fmt, ##__VA_ARGS__);\
129*4882a593Smuzhiyun 	} while (0)
130*4882a593Smuzhiyun 
131*4882a593Smuzhiyun #undef PHL_DBG
132*4882a593Smuzhiyun #define PHL_DBG(fmt, ...)     \
133*4882a593Smuzhiyun 	do {\
134*4882a593Smuzhiyun 			PHL_TRACE(COMP_PHL_DBG, _PHL_DEBUG_, fmt, ##__VA_ARGS__);\
135*4882a593Smuzhiyun 	} while (0)
136*4882a593Smuzhiyun 
137*4882a593Smuzhiyun #define FUNCIN() PHL_TRACE(COMP_PHL_DBG, _PHL_DEBUG_, "Enter %s\n", __FUNCTION__)
138*4882a593Smuzhiyun #define FUNCOUT() PHL_TRACE(COMP_PHL_DBG, _PHL_DEBUG_, "Leave %s\n", __FUNCTION__)
139*4882a593Smuzhiyun #define FUNCIN_WSTS(_sts) PHL_TRACE(COMP_PHL_DBG, _PHL_DEBUG_, "Enter with 0x%08X %s\n", _sts, __FUNCTION__)
140*4882a593Smuzhiyun #define FUNCOUT_WSTS(_sts) PHL_TRACE(COMP_PHL_DBG, _PHL_DEBUG_, "Leave with 0x%08X %s\n", _sts, __FUNCTION__)
141*4882a593Smuzhiyun 
142*4882a593Smuzhiyun void debug_dump_data(u8 *buf, u32 buf_len, const char *prefix);
143*4882a593Smuzhiyun void rt_alloc_dbg_buf(void *phl, u8 *buf_ptr, u32 buf_size,
144*4882a593Smuzhiyun 		const u8 *file_name, u32 line_num, const u8 *func_name);
145*4882a593Smuzhiyun void rt_free_dbg_buf(void *phl, u8 *buf_ptr, u32 buf_size,
146*4882a593Smuzhiyun 		const u8 *file_name, u32 line_num, const u8 *func_name);
147*4882a593Smuzhiyun void rt_mem_dbg_init(void *phl);
148*4882a593Smuzhiyun void rt_mem_dbg_deinit(void *phl);
149*4882a593Smuzhiyun u32 rtw_phl_dbg_ctrl_comp(u8 ctrl, u32 comp_bit);
150*4882a593Smuzhiyun void debug_dump_mac_address(u8 *mac_addr);
151*4882a593Smuzhiyun 
152*4882a593Smuzhiyun #define phl_ops_error_msg(ops_fun)	  \
153*4882a593Smuzhiyun 	PHL_ERR("### %s - Please hook phl_hci_ops.%s ###\n", __func__, ops_fun)
154*4882a593Smuzhiyun 
155*4882a593Smuzhiyun #define hal_error_msg(ops_fun)		\
156*4882a593Smuzhiyun 	PHL_PRINT("### %s - Error : Please hook hal_ops.%s ###\n", __FUNCTION__, ops_fun)
157*4882a593Smuzhiyun 
158*4882a593Smuzhiyun #else  /* CONFIG_RTW_DEBUG */
159*4882a593Smuzhiyun 
160*4882a593Smuzhiyun #define PHL_TRACE(comp, level, fmt, ...)
161*4882a593Smuzhiyun #define PHL_PRINT(fmt, ...)
162*4882a593Smuzhiyun #define PHL_ERR(fmt, ...)
163*4882a593Smuzhiyun #define PHL_WARN(fmt, ...)
164*4882a593Smuzhiyun #define PHL_INFO(fmt, ...)
165*4882a593Smuzhiyun #define PHL_DBG(fmt, ...)
166*4882a593Smuzhiyun #define PHL_DATA(fmt, ...)
167*4882a593Smuzhiyun #define PHL_ASSERT(fmt, ...)
168*4882a593Smuzhiyun #define FUNCIN()
169*4882a593Smuzhiyun #define FUNCOUT()
170*4882a593Smuzhiyun #define FUNCIN_WSTS(_sts)
171*4882a593Smuzhiyun #define FUNCOUT_WSTS(_sts)
172*4882a593Smuzhiyun #define debug_dump_data(_buf, _buf_len, _prefix)
173*4882a593Smuzhiyun #define debug_dump_mac_address(_mac_addr)
174*4882a593Smuzhiyun #define rt_alloc_dbg_buf(_phl, _buf, _buf_size, _file_name, _line_num, \
175*4882a593Smuzhiyun 			_func_name)
176*4882a593Smuzhiyun #define rt_free_dbg_buf(_phl, _buf, _buf_size, _file_name, _line_num, \
177*4882a593Smuzhiyun 			_func_name)
178*4882a593Smuzhiyun #define rt_mem_dbg_init(_phl)
179*4882a593Smuzhiyun #define rt_mem_dbg_deinit(_phl)
180*4882a593Smuzhiyun 
181*4882a593Smuzhiyun #define rtw_phl_dbg_ctrl_comp(_ctrl, _comp_bit) 0
182*4882a593Smuzhiyun #define phl_ops_error_msg(ops_fun) do {} while (0)
183*4882a593Smuzhiyun #define hal_error_msg(ops_fun) do {} while (0)
184*4882a593Smuzhiyun 
185*4882a593Smuzhiyun #endif  /* CONFIG_RTW_DEBUG */
186*4882a593Smuzhiyun #endif	/* _PHL_DEBUG_H_ */
187