xref: /OK3568_Linux_fs/external/rkwifibt/drivers/rtl8852be/phl/phl_wpp.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1 /******************************************************************************
2  *
3  * Copyright(c) 2020 Realtek Corporation.
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 #pragma once
16 
17 #ifndef PHL_WPP_H
18 #define PHL_WPP_H
19 
20 #define PHL_WPP_CONTROL_GUID\
21 	WPP_DEFINE_CONTROL_GUID( \
22 		rtPhlGuid, (16D085D0,69AD,41FD,94E1,77667C0C6664), \
23 		WPP_DEFINE_BIT(COMP_PHL_DBG) \
24 		WPP_DEFINE_BIT(COMP_PHL_RECV) \
25 		WPP_DEFINE_BIT(COMP_PHL_XMIT) \
26 		WPP_DEFINE_BIT(COMP_PHL_MAC) \
27 		WPP_DEFINE_BIT(COMP_PHL_SOUND)\
28 		WPP_DEFINE_BIT(COMP_PHL_WOW)\
29 		WPP_DEFINE_BIT(COMP_PHL_TRIG)\
30 		WPP_DEFINE_BIT(COMP_PHL_PKTOFLD)\
31 		WPP_DEFINE_BIT(COMP_PHL_FSM)\
32 		WPP_DEFINE_BIT(COMP_PHL_PS)\
33 		WPP_DEFINE_BIT(COMP_PHL_PSTS)\
34 		WPP_DEFINE_BIT(COMP_PHL_LED)\
35 		WPP_DEFINE_BIT(COMP_PHL_BB)\
36 		WPP_DEFINE_BIT(COMP_PHL_RF)\
37 		WPP_DEFINE_BIT(COMP_PHL_MCC)\
38 		WPP_DEFINE_BIT(COMP_PHL_P2PPS)\
39 		WPP_DEFINE_BIT(COMP_PHL_ECSA)\
40 		WPP_DEFINE_BIT(COMP_PHL_CMDDISP)\
41 		WPP_DEFINE_BIT(COMP_PHL_BTC)\
42 		WPP_DEFINE_BIT(COMP_PHL_TWT)\
43 		) \
44 		HALMAC_WPP_CONTROL_GUIDS \
45 		HALBB_WPP_CONTROL_GUIDS
46 		//HALRF_WPP_CONTROL_GUIDS
47 /*
48  * Note that the comment blocks begin with "begin_wpp" and end with "end_wpp"
49  * will be scanned by the trace preprocessor to define our trace function.
50  */
51 
52 #undef WPP_COMPID_LEVEL_ENABLED
53 #define WPP_COMPID_LEVEL_ENABLED(COMPID, LEVEL)	  \
54 	((WPP_CONTROL(WPP_BIT_ ## COMPID).Level >= LEVEL) && \
55 	 (WPP_CONTROL(WPP_BIT_ ## COMPID).Flags[WPP_FLAG_NO(WPP_BIT_ ## COMPID)] & \
56 	  WPP_MASK(WPP_BIT_ ## COMPID)))
57 
58 #undef WPP_COMPID_LEVEL_LOGGER
59 #define WPP_COMPID_LEVEL_LOGGER(COMPID, LEVEL)	  \
60 	(WPP_CONTROL(WPP_BIT_ ## COMPID).Logger),
61 
62 #undef WPP_COMPID_LEVEL__sts_ENABLED
63 #define WPP_COMPID_LEVEL__sts_ENABLED(COMPID, LEVEL, _sts)	  \
64 	((WPP_CONTROL(WPP_BIT_ ## COMPID).Level >= LEVEL) && \
65 	 (WPP_CONTROL(WPP_BIT_ ## COMPID).Flags[WPP_FLAG_NO(WPP_BIT_ ## COMPID)] & \
66 	  WPP_MASK(WPP_BIT_ ## COMPID)))
67 
68 #undef WPP_COMPID_LEVEL__sts_LOGGER
69 #define WPP_COMPID_LEVEL__sts_LOGGER(COMPID, LEVEL, _sts)	  \
70 	(WPP_CONTROL(WPP_BIT_ ## COMPID).Logger),
71 
72 /*
73  * begin_wpp config
74  *
75  * USEPREFIX (PHL_TRACE, "%!STDPREFIX! %s", PHL_PREFIX);
76  * FUNC PHL_TRACE{}(COMPID, LEVEL, MSG,...);
77  *
78  * FUNC PHL_DATA{}(COMPID, LEVEL, MSG,...);
79  *
80  * USEPREFIX (PHL_ERR, "%!STDPREFIX! %s ERROR\t", PHL_PREFIX);
81  * FUNC PHL_ERR{COMPID=COMP_PHL_DBG, LEVEL=TRACE_LEVEL_ERROR}(MSG,...);
82  *
83  * USEPREFIX (PHL_PRINT, "%!STDPREFIX! %s", PHL_PREFIX);
84  * FUNC PHL_PRINT{COMPID=COMP_PHL_DBG, LEVEL=TRACE_LEVEL_CRITICAL}(MSG,...);
85  *
86  * USEPREFIX (PHL_WARN, "%!STDPREFIX! %s WARN\t", PHL_PREFIX);
87  * FUNC PHL_WARN{COMPID=COMP_PHL_DBG, LEVEL=TRACE_LEVEL_WARNING}(MSG,...);
88  *
89  * USEPREFIX (PHL_INFO, "%!STDPREFIX! %s INFO\t", PHL_PREFIX);
90  * FUNC PHL_INFO{COMPID=COMP_PHL_DBG, LEVEL=TRACE_LEVEL_INFORMATION}(MSG,...);
91  *
92  * USEPREFIX (PHL_DBG, "%!STDPREFIX! %s", PHL_PREFIX);
93  * FUNC PHL_DBG{COMPID=COMP_PHL_DBG, LEVEL=TRACE_LEVEL_VERBOSE}(MSG,...);
94  *
95  * USEPREFIX (FUNCIN, "%!STDPREFIX! %s", PHL_PREFIX);
96  * FUNC FUNCIN{COMPID=COMP_PHL_DBG, LEVEL=TRACE_LEVEL_VERBOSE}();
97  * USESUFFIX(FUNCIN, "Enter %!FUNC!");
98  *
99  * USEPREFIX (FUNCOUT, "%!STDPREFIX! %s", PHL_PREFIX);
100  * FUNC FUNCOUT{COMPID=COMP_PHL_DBG, LEVEL=TRACE_LEVEL_VERBOSE}();
101  * USESUFFIX(FUNCOUT, "Leave %!FUNC!");
102  *
103  * CUSTOM_TYPE(RTW_PHL_STATUS, ItemEnum(rtw_phl_status) );
104  * USEPREFIX (FUNCIN_WSTS, "%!STDPREFIX! %s", PHL_PREFIX);
105  * FUNC FUNCIN_WSTS{COMPID=COMP_PHL_DBG, LEVEL=TRACE_LEVEL_VERBOSE}(_sts);
106  * USESUFFIX(FUNCIN_WSTS, "Enter with %!RTW_PHL_STATUS! %!FUNC!", _sts);
107  *
108  * USEPREFIX (FUNCOUT_WSTS, "%!STDPREFIX! %s", PHL_PREFIX);
109  * FUNC FUNCOUT_WSTS{COMPID=COMP_PHL_DBG, LEVEL=TRACE_LEVEL_VERBOSE}(_sts);
110  * USESUFFIX(FUNCOUT_WSTS, "Leave with %!RTW_PHL_STATUS! %!FUNC!", _sts);
111  *
112  * USEPREFIX (BB_TRACE, "%!STDPREFIX! [BB]\t");
113  * FUNC BB_TRACE{COMPID=COMP_PHL_BB, LEVEL=TRACE_LEVEL_INFORMATION}(MSG,...);
114  *
115  * USEPREFIX (BB_WARNING, "%!STDPREFIX! [BB][WARN]\t");
116  * FUNC BB_WARNING{COMPID=COMP_PHL_BB, LEVEL=TRACE_LEVEL_WARNING}(MSG,...);
117  *
118  * USEPREFIX (RF_TRACE, "%!STDPREFIX! [RF]\t");
119  * FUNC RF_TRACE{COMPID=COMP_PHL_RF, LEVEL=TRACE_LEVEL_INFORMATION}(MSG,...);
120  *
121  * USEPREFIX (RF_WARNING, "%!STDPREFIX! [RF][WARN]\t");
122  * FUNC RF_WARNING{COMPID=COMP_PHL_RF, LEVEL=TRACE_LEVEL_WARNING}(MSG,...);
123  *
124  * end_wpp
125  */
126 
127 /*
128  * begin_wpp config
129  *
130  * USEPREFIX (PLTFM_MSG_ERR, "%!STDPREFIX! [MAC][ERR]\t");
131  * FUNC PLTFM_MSG_ERR{COMPID=COMP_PHL_MAC, LEVEL=TRACE_LEVEL_ERROR}(MSG,...);
132  *
133  * USEPREFIX (PLTFM_MSG_ALWAYS, "%!STDPREFIX! [MAC]\t");
134  * FUNC PLTFM_MSG_ALWAYS{COMPID=COMP_PHL_MAC, LEVEL=TRACE_LEVEL_CRITICAL}(MSG,...);
135  *
136  * USEPREFIX (PLTFM_MSG_WARN, "%!STDPREFIX! [MAC][WARN]\t");
137  * FUNC PLTFM_MSG_WARN{COMPID=COMP_PHL_MAC, LEVEL=TRACE_LEVEL_WARNING}(MSG,...);
138  *
139  * USEPREFIX (PLTFM_MSG_TRACE, "%!STDPREFIX! [MAC][TRACE]\t");
140  * FUNC PLTFM_MSG_TRACE{COMPID=COMP_PHL_MAC, LEVEL=TRACE_LEVEL_INFORMATION}(MSG,...);
141  *
142  * end_wpp
143  */
144 
145 #ifdef CONFIG_FSM
146 #undef WPP_COMPID_LEVEL_FSM_ENABLED
147 #define WPP_COMPID_LEVEL_FSM_ENABLED(COMPID, LEVEL, FSM)	  \
148 	((!FSM || phl_fsm_dbg_level(FSM, LEVEL) || \
149 	  LEVEL == TRACE_LEVEL_ERROR || LEVEL == TRACE_LEVEL_WARNING) && \
150 	 (WPP_CONTROL(WPP_BIT_ ## COMPID).Level >= LEVEL) && \
151 	 (WPP_CONTROL(WPP_BIT_ ## COMPID).Flags[WPP_FLAG_NO(WPP_BIT_ ## COMPID)] & \
152 	  WPP_MASK(WPP_BIT_ ## COMPID)))
153 
154 #undef WPP_COMPID_LEVEL_FSM_LOGGER
155 #define WPP_COMPID_LEVEL_FSM_LOGGER(COMPID, LEVEL, FSM)	  \
156 	(WPP_CONTROL(WPP_BIT_ ## COMPID).Logger),
157 #endif
158 /*
159  * begin_wpp config
160  *
161  * USEPREFIX (FSM_ERR, "%!STDPREFIX! %s ERROR\t", PHL_PREFIX);
162  * FUNC FSM_ERR{COMPID=COMP_PHL_DBG, LEVEL=TRACE_LEVEL_ERROR}(FSM,MSG,...);
163  *
164  * USEPREFIX (FSM_WARN, "%!STDPREFIX! %s WARN\t", PHL_PREFIX);
165  * FUNC FSM_WARN{COMPID=COMP_PHL_DBG, LEVEL=TRACE_LEVEL_WARNING}(FSM,MSG,...);
166  *
167  * USEPREFIX (FSM_PRINT, "%!STDPREFIX! %s", PHL_PREFIX);
168  * FUNC FSM_PRINT{COMPID=COMP_PHL_DBG, LEVEL=TRACE_LEVEL_CRITICAL}(FSM,MSG,...);
169  *
170  * USEPREFIX (FSM_INFO, "%!STDPREFIX! %s INFO\t", PHL_PREFIX);
171  * FUNC FSM_INFO{COMPID=COMP_PHL_DBG, LEVEL=TRACE_LEVEL_INFORMATION}(FSM,MSG,...);
172  *
173  * USEPREFIX (FSM_DBG, "%!STDPREFIX! %s", PHL_PREFIX);
174  * FUNC FSM_DBG{COMPID=COMP_PHL_DBG, LEVEL=TRACE_LEVEL_VERBOSE}(FSM,MSG,...);
175  *
176  * end_wpp
177  */
178 
179 #undef WPP_COMPID_LEVEL_opsfun_ENABLED
180 #define WPP_COMPID_LEVEL_opsfun_ENABLED(COMPID, LEVEL, opsfun)	  \
181 	((WPP_CONTROL(WPP_BIT_ ## COMPID).Level >= LEVEL) && \
182 	 (WPP_CONTROL(WPP_BIT_ ## COMPID).Flags[WPP_FLAG_NO(WPP_BIT_ ## COMPID)] & \
183 	  WPP_MASK(WPP_BIT_ ## COMPID)))
184 
185 #undef WPP_COMPID_LEVEL_opsfun_LOGGER
186 #define WPP_COMPID_LEVEL_opsfun_LOGGER(COMPID, LEVEL, opsfun)	  \
187 	(WPP_CONTROL(WPP_BIT_ ## COMPID).Logger),
188 
189 /*
190  * begin_wpp config
191  *
192  * USEPREFIX (phl_ops_error_msg, "%!STDPREFIX! %s", PHL_PREFIX);
193  * FUNC phl_ops_error_msg{COMPID=COMP_PHL_DBG, LEVEL=TRACE_LEVEL_ERROR}(opsfun);
194  * USESUFFIX(phl_ops_error_msg, "### %!FUNC! - Please hook phl_hci_ops.%s ###\n", opsfun);
195  *
196  * USEPREFIX (hal_error_msg, "%!STDPREFIX! %s", PHL_PREFIX);
197  * FUNC hal_error_msg{COMPID=COMP_PHL_DBG, LEVEL=TRACE_LEVEL_ERROR}(opsfun);
198  * USESUFFIX(hal_error_msg, "### %!FUNC! - Error : Please hook hal_ops.%s ###\n", opsfun);
199  *
200  * end_wpp
201  */
202 
203 /*
204  * Define the 'xstr' structure for logging buffer and length pairs
205  * and the 'log_xstr' function which returns it to create one in-place.
206  * this enables logging of complex data types.
207  */
208 
209 typedef struct xstr { char * _buf; size_t  _len; } xstr_t;
log_xstr(void * p,size_t l)210 __inline xstr_t log_xstr(void * p, size_t l)
211 {
212 	xstr_t xs;
213 	xs._buf = (char *)p;
214 	xs._len = l;
215 	return xs;
216 }
217 
218 #define WPP_LOGHEXDUMP(x) WPP_LOGPAIR(2, &((x)._len)) WPP_LOGPAIR((x)._len, (x)._buf)
219 
220 #undef WPP_COMPID_LEVEL_BUF_LEN_PREFIX_ENABLED
221 #define WPP_COMPID_LEVEL_BUF_LEN_PREFIX_ENABLED(COMPID, LEVEL, BUF, LEN, PREFIX) \
222 	((WPP_CONTROL(WPP_BIT_ ## COMPID).Level >= LEVEL) && \
223 	 (WPP_CONTROL(WPP_BIT_ ## COMPID).Flags[WPP_FLAG_NO(WPP_BIT_ ## COMPID)] & \
224 	  WPP_MASK(WPP_BIT_ ## COMPID)))
225 
226 #undef WPP_COMPID_LEVEL_BUF_LEN_PREFIX_LOGGER
227 #define WPP_COMPID_LEVEL_BUF_LEN_PREFIX_LOGGER(COMPID, LEVEL, BUF, LEN, PREFIX) \
228 	(WPP_CONTROL(WPP_BIT_ ## COMPID).Logger),
229 
230 #define WPP_COMPID_LEVEL_BUF_LEN_PREFIX_PRE(COMPID, LEVEL, BUF, LEN, PREFIX) \
231 	{ if (BUF != NULL) { \
232 
233 #define WPP_COMPID_LEVEL_BUF_LEN_PREFIX_POST(COMPID, LEVEL, BUF, LEN, PREFIX) \
234 	/* TraceMessage() */; }}
235 
236 /*
237  * begin_wpp config
238  *
239  * DEFINE_CPLX_TYPE(HEXDUMP, WPP_LOGHEXDUMP, xstr_t, ItemHEXDump, "s", _HEX_, 0, 2);
240  * USEPREFIX (debug_dump_data, "%!STDPREFIX! %s\t[debug dump] %s", PHL_PREFIX, PREFIX);
241  * FUNC debug_dump_data{COMPID=COMP_PHL_DBG, LEVEL=TRACE_LEVEL_INFORMATION}(BUF,LEN, PREFIX);
242  * USESUFFIX(debug_dump_data, "%!HEXDUMP!", log_xstr(BUF, LEN));
243  *
244  * end_wpp
245  */
246 
247 #undef WPP_LEVEL_BB_COMPID_ENABLED
248 #define WPP_LEVEL_BB_COMPID_ENABLED(LEVEL, BB, COMPID)	  \
249 	((WPP_CONTROL(WPP_BIT_ ## COMPID).Level >= LEVEL) && \
250 	 (WPP_CONTROL(WPP_BIT_ ## COMPID).Flags[WPP_FLAG_NO(WPP_BIT_ ## COMPID)] & \
251 	  WPP_MASK(WPP_BIT_ ## COMPID)))
252 
253 #undef WPP_LEVEL_BB_COMPID_LOGGER
254 #define WPP_LEVEL_BB_COMPID_LOGGER(LEVEL, BB, COMPID)	  \
255 	(WPP_CONTROL(WPP_BIT_ ## COMPID).Logger),
256 
257 /*
258  * begin_wpp config
259  *
260  * USEPREFIX (BB_DBG, "%!STDPREFIX! [BB]\t");
261  * FUNC BB_DBG{LEVEL=TRACE_LEVEL_INFORMATION}(BB, COMPID, MSG,...);
262  *
263  * end_wpp
264  */
265 
266 
267 #undef WPP_LEVEL_RF_COMPID_ENABLED
268 #define WPP_LEVEL_RF_COMPID_ENABLED(LEVEL, RF, COMPID)	  \
269 	((WPP_CONTROL(WPP_BIT_ ## COMPID).Level >= LEVEL) && \
270 	(WPP_CONTROL(WPP_BIT_ ## COMPID).Flags[WPP_FLAG_NO(WPP_BIT_ ## COMPID)] & \
271 	WPP_MASK(WPP_BIT_ ## COMPID)))
272 
273 #undef WPP_LEVEL_RF_COMPID_LOGGER
274 #define WPP_LEVEL_RF_COMPID_LOGGER(LEVEL, RF, COMPID)	  \
275 	(WPP_CONTROL(WPP_BIT_ ## COMPID).Logger),
276 
277 /*
278  * begin_wpp config
279  *
280  * USEPREFIX (RF_DBG, "%!STDPREFIX! [RF]\t");
281  * FUNC RF_DBG{LEVEL=TRACE_LEVEL_INFORMATION}(RF, COMPID, MSG,...);
282  *
283  * end_wpp
284  */
285 
286 #endif
287