xref: /OK3568_Linux_fs/kernel/drivers/net/wireless/ath/ath11k/debug.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /* SPDX-License-Identifier: BSD-3-Clause-Clear */
2*4882a593Smuzhiyun /*
3*4882a593Smuzhiyun  * Copyright (c) 2018-2019 The Linux Foundation. All rights reserved.
4*4882a593Smuzhiyun  */
5*4882a593Smuzhiyun 
6*4882a593Smuzhiyun #ifndef _ATH11K_DEBUG_H_
7*4882a593Smuzhiyun #define _ATH11K_DEBUG_H_
8*4882a593Smuzhiyun 
9*4882a593Smuzhiyun #include "trace.h"
10*4882a593Smuzhiyun #include "debugfs.h"
11*4882a593Smuzhiyun 
12*4882a593Smuzhiyun enum ath11k_debug_mask {
13*4882a593Smuzhiyun 	ATH11K_DBG_AHB		= 0x00000001,
14*4882a593Smuzhiyun 	ATH11K_DBG_WMI		= 0x00000002,
15*4882a593Smuzhiyun 	ATH11K_DBG_HTC		= 0x00000004,
16*4882a593Smuzhiyun 	ATH11K_DBG_DP_HTT	= 0x00000008,
17*4882a593Smuzhiyun 	ATH11K_DBG_MAC		= 0x00000010,
18*4882a593Smuzhiyun 	ATH11K_DBG_BOOT		= 0x00000020,
19*4882a593Smuzhiyun 	ATH11K_DBG_QMI		= 0x00000040,
20*4882a593Smuzhiyun 	ATH11K_DBG_DATA		= 0x00000080,
21*4882a593Smuzhiyun 	ATH11K_DBG_MGMT		= 0x00000100,
22*4882a593Smuzhiyun 	ATH11K_DBG_REG		= 0x00000200,
23*4882a593Smuzhiyun 	ATH11K_DBG_TESTMODE	= 0x00000400,
24*4882a593Smuzhiyun 	ATH11k_DBG_HAL		= 0x00000800,
25*4882a593Smuzhiyun 	ATH11K_DBG_PCI		= 0x00001000,
26*4882a593Smuzhiyun 	ATH11K_DBG_DP_TX	= 0x00002000,
27*4882a593Smuzhiyun 	ATH11K_DBG_DP_RX	= 0x00004000,
28*4882a593Smuzhiyun 	ATH11K_DBG_ANY		= 0xffffffff,
29*4882a593Smuzhiyun };
30*4882a593Smuzhiyun 
31*4882a593Smuzhiyun __printf(2, 3) void ath11k_info(struct ath11k_base *ab, const char *fmt, ...);
32*4882a593Smuzhiyun __printf(2, 3) void ath11k_err(struct ath11k_base *ab, const char *fmt, ...);
33*4882a593Smuzhiyun __printf(2, 3) void ath11k_warn(struct ath11k_base *ab, const char *fmt, ...);
34*4882a593Smuzhiyun 
35*4882a593Smuzhiyun extern unsigned int ath11k_debug_mask;
36*4882a593Smuzhiyun 
37*4882a593Smuzhiyun #ifdef CONFIG_ATH11K_DEBUG
38*4882a593Smuzhiyun __printf(3, 4) void __ath11k_dbg(struct ath11k_base *ab,
39*4882a593Smuzhiyun 				 enum ath11k_debug_mask mask,
40*4882a593Smuzhiyun 				 const char *fmt, ...);
41*4882a593Smuzhiyun void ath11k_dbg_dump(struct ath11k_base *ab,
42*4882a593Smuzhiyun 		     enum ath11k_debug_mask mask,
43*4882a593Smuzhiyun 		     const char *msg, const char *prefix,
44*4882a593Smuzhiyun 		     const void *buf, size_t len);
45*4882a593Smuzhiyun #else /* CONFIG_ATH11K_DEBUG */
__ath11k_dbg(struct ath11k_base * ab,enum ath11k_debug_mask dbg_mask,const char * fmt,...)46*4882a593Smuzhiyun static inline int __ath11k_dbg(struct ath11k_base *ab,
47*4882a593Smuzhiyun 			       enum ath11k_debug_mask dbg_mask,
48*4882a593Smuzhiyun 			       const char *fmt, ...)
49*4882a593Smuzhiyun {
50*4882a593Smuzhiyun 	return 0;
51*4882a593Smuzhiyun }
52*4882a593Smuzhiyun 
ath11k_dbg_dump(struct ath11k_base * ab,enum ath11k_debug_mask mask,const char * msg,const char * prefix,const void * buf,size_t len)53*4882a593Smuzhiyun static inline void ath11k_dbg_dump(struct ath11k_base *ab,
54*4882a593Smuzhiyun 				   enum ath11k_debug_mask mask,
55*4882a593Smuzhiyun 				   const char *msg, const char *prefix,
56*4882a593Smuzhiyun 				   const void *buf, size_t len)
57*4882a593Smuzhiyun {
58*4882a593Smuzhiyun }
59*4882a593Smuzhiyun #endif /* CONFIG_ATH11K_DEBUG */
60*4882a593Smuzhiyun 
61*4882a593Smuzhiyun #define ath11k_dbg(ar, dbg_mask, fmt, ...)			\
62*4882a593Smuzhiyun do {								\
63*4882a593Smuzhiyun 	if (ath11k_debug_mask & dbg_mask)			\
64*4882a593Smuzhiyun 		__ath11k_dbg(ar, dbg_mask, fmt, ##__VA_ARGS__);	\
65*4882a593Smuzhiyun } while (0)
66*4882a593Smuzhiyun 
67*4882a593Smuzhiyun #endif /* _ATH11K_DEBUG_H_ */
68