xref: /freebsd/sys/contrib/dev/athk/ath11k/debug.h (revision 28348caeee6ee98251b0aaa026e8d52b5032e92c)
1dd4f32aeSBjoern A. Zeeb /* SPDX-License-Identifier: BSD-3-Clause-Clear */
2dd4f32aeSBjoern A. Zeeb /*
3dd4f32aeSBjoern A. Zeeb  * Copyright (c) 2018-2019 The Linux Foundation. All rights reserved.
4*28348caeSBjoern A. Zeeb  * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
5dd4f32aeSBjoern A. Zeeb  */
6dd4f32aeSBjoern A. Zeeb 
7dd4f32aeSBjoern A. Zeeb #ifndef _ATH11K_DEBUG_H_
8dd4f32aeSBjoern A. Zeeb #define _ATH11K_DEBUG_H_
9dd4f32aeSBjoern A. Zeeb 
10dd4f32aeSBjoern A. Zeeb #include "trace.h"
11dd4f32aeSBjoern A. Zeeb #include "debugfs.h"
12dd4f32aeSBjoern A. Zeeb 
13dd4f32aeSBjoern A. Zeeb enum ath11k_debug_mask {
14dd4f32aeSBjoern A. Zeeb 	ATH11K_DBG_AHB		= 0x00000001,
15dd4f32aeSBjoern A. Zeeb 	ATH11K_DBG_WMI		= 0x00000002,
16dd4f32aeSBjoern A. Zeeb 	ATH11K_DBG_HTC		= 0x00000004,
17dd4f32aeSBjoern A. Zeeb 	ATH11K_DBG_DP_HTT	= 0x00000008,
18dd4f32aeSBjoern A. Zeeb 	ATH11K_DBG_MAC		= 0x00000010,
19dd4f32aeSBjoern A. Zeeb 	ATH11K_DBG_BOOT		= 0x00000020,
20dd4f32aeSBjoern A. Zeeb 	ATH11K_DBG_QMI		= 0x00000040,
21dd4f32aeSBjoern A. Zeeb 	ATH11K_DBG_DATA		= 0x00000080,
22dd4f32aeSBjoern A. Zeeb 	ATH11K_DBG_MGMT		= 0x00000100,
23dd4f32aeSBjoern A. Zeeb 	ATH11K_DBG_REG		= 0x00000200,
24dd4f32aeSBjoern A. Zeeb 	ATH11K_DBG_TESTMODE	= 0x00000400,
25*28348caeSBjoern A. Zeeb 	ATH11K_DBG_HAL		= 0x00000800,
26dd4f32aeSBjoern A. Zeeb 	ATH11K_DBG_PCI		= 0x00001000,
27*28348caeSBjoern A. Zeeb 	ATH11K_DBG_DP_TX	= 0x00002000,
28*28348caeSBjoern A. Zeeb 	ATH11K_DBG_DP_RX	= 0x00004000,
29*28348caeSBjoern A. Zeeb 	ATH11K_DBG_CE		= 0x00008000,
30dd4f32aeSBjoern A. Zeeb };
31dd4f32aeSBjoern A. Zeeb 
ath11k_dbg_str(enum ath11k_debug_mask mask)32*28348caeSBjoern A. Zeeb static inline const char *ath11k_dbg_str(enum ath11k_debug_mask mask)
33*28348caeSBjoern A. Zeeb {
34*28348caeSBjoern A. Zeeb 	switch (mask) {
35*28348caeSBjoern A. Zeeb 	case ATH11K_DBG_AHB:
36*28348caeSBjoern A. Zeeb 		return "ahb";
37*28348caeSBjoern A. Zeeb 	case ATH11K_DBG_WMI:
38*28348caeSBjoern A. Zeeb 		return "wmi";
39*28348caeSBjoern A. Zeeb 	case ATH11K_DBG_HTC:
40*28348caeSBjoern A. Zeeb 		return "htc";
41*28348caeSBjoern A. Zeeb 	case ATH11K_DBG_DP_HTT:
42*28348caeSBjoern A. Zeeb 		return "dp_htt";
43*28348caeSBjoern A. Zeeb 	case ATH11K_DBG_MAC:
44*28348caeSBjoern A. Zeeb 		return "mac";
45*28348caeSBjoern A. Zeeb 	case ATH11K_DBG_BOOT:
46*28348caeSBjoern A. Zeeb 		return "boot";
47*28348caeSBjoern A. Zeeb 	case ATH11K_DBG_QMI:
48*28348caeSBjoern A. Zeeb 		return "qmi";
49*28348caeSBjoern A. Zeeb 	case ATH11K_DBG_DATA:
50*28348caeSBjoern A. Zeeb 		return "data";
51*28348caeSBjoern A. Zeeb 	case ATH11K_DBG_MGMT:
52*28348caeSBjoern A. Zeeb 		return "mgmt";
53*28348caeSBjoern A. Zeeb 	case ATH11K_DBG_REG:
54*28348caeSBjoern A. Zeeb 		return "reg";
55*28348caeSBjoern A. Zeeb 	case ATH11K_DBG_TESTMODE:
56*28348caeSBjoern A. Zeeb 		return "testmode";
57*28348caeSBjoern A. Zeeb 	case ATH11K_DBG_HAL:
58*28348caeSBjoern A. Zeeb 		return "hal";
59*28348caeSBjoern A. Zeeb 	case ATH11K_DBG_PCI:
60*28348caeSBjoern A. Zeeb 		return "pci";
61*28348caeSBjoern A. Zeeb 	case ATH11K_DBG_DP_TX:
62*28348caeSBjoern A. Zeeb 		return "dp_tx";
63*28348caeSBjoern A. Zeeb 	case ATH11K_DBG_DP_RX:
64*28348caeSBjoern A. Zeeb 		return "dp_rx";
65*28348caeSBjoern A. Zeeb 	case ATH11K_DBG_CE:
66*28348caeSBjoern A. Zeeb 		return "ce";
67*28348caeSBjoern A. Zeeb 
68*28348caeSBjoern A. Zeeb 	/* no default handler to allow compiler to check that the
69*28348caeSBjoern A. Zeeb 	 * enum is fully handled
70*28348caeSBjoern A. Zeeb 	 */
71*28348caeSBjoern A. Zeeb 	}
72*28348caeSBjoern A. Zeeb 
73*28348caeSBjoern A. Zeeb 	return "<?>";
74*28348caeSBjoern A. Zeeb }
75*28348caeSBjoern A. Zeeb 
76dd4f32aeSBjoern A. Zeeb __printf(2, 3) void ath11k_info(struct ath11k_base *ab, const char *fmt, ...);
77dd4f32aeSBjoern A. Zeeb __printf(2, 3) void ath11k_err(struct ath11k_base *ab, const char *fmt, ...);
78dd4f32aeSBjoern A. Zeeb __printf(2, 3) void ath11k_warn(struct ath11k_base *ab, const char *fmt, ...);
79dd4f32aeSBjoern A. Zeeb 
80dd4f32aeSBjoern A. Zeeb extern unsigned int ath11k_debug_mask;
81dd4f32aeSBjoern A. Zeeb 
82dd4f32aeSBjoern A. Zeeb #ifdef CONFIG_ATH11K_DEBUG
83dd4f32aeSBjoern A. Zeeb __printf(3, 4) void __ath11k_dbg(struct ath11k_base *ab,
84dd4f32aeSBjoern A. Zeeb 				 enum ath11k_debug_mask mask,
85dd4f32aeSBjoern A. Zeeb 				 const char *fmt, ...);
86dd4f32aeSBjoern A. Zeeb void ath11k_dbg_dump(struct ath11k_base *ab,
87dd4f32aeSBjoern A. Zeeb 		     enum ath11k_debug_mask mask,
88dd4f32aeSBjoern A. Zeeb 		     const char *msg, const char *prefix,
89dd4f32aeSBjoern A. Zeeb 		     const void *buf, size_t len);
90dd4f32aeSBjoern A. Zeeb #else /* CONFIG_ATH11K_DEBUG */
__ath11k_dbg(struct ath11k_base * ab,enum ath11k_debug_mask dbg_mask,const char * fmt,...)91dd4f32aeSBjoern A. Zeeb static inline int __ath11k_dbg(struct ath11k_base *ab,
92dd4f32aeSBjoern A. Zeeb 			       enum ath11k_debug_mask dbg_mask,
93dd4f32aeSBjoern A. Zeeb 			       const char *fmt, ...)
94dd4f32aeSBjoern A. Zeeb {
95dd4f32aeSBjoern A. Zeeb 	return 0;
96dd4f32aeSBjoern A. Zeeb }
97dd4f32aeSBjoern A. Zeeb 
ath11k_dbg_dump(struct ath11k_base * ab,enum ath11k_debug_mask mask,const char * msg,const char * prefix,const void * buf,size_t len)98dd4f32aeSBjoern A. Zeeb static inline void ath11k_dbg_dump(struct ath11k_base *ab,
99dd4f32aeSBjoern A. Zeeb 				   enum ath11k_debug_mask mask,
100dd4f32aeSBjoern A. Zeeb 				   const char *msg, const char *prefix,
101dd4f32aeSBjoern A. Zeeb 				   const void *buf, size_t len)
102dd4f32aeSBjoern A. Zeeb {
103dd4f32aeSBjoern A. Zeeb }
104dd4f32aeSBjoern A. Zeeb #endif /* CONFIG_ATH11K_DEBUG */
105dd4f32aeSBjoern A. Zeeb 
106dd4f32aeSBjoern A. Zeeb #define ath11k_dbg(ar, dbg_mask, fmt, ...)			\
107dd4f32aeSBjoern A. Zeeb do {								\
108dd4f32aeSBjoern A. Zeeb 	if ((ath11k_debug_mask & dbg_mask) ||			\
109dd4f32aeSBjoern A. Zeeb 	    trace_ath11k_log_dbg_enabled())			\
110dd4f32aeSBjoern A. Zeeb 		__ath11k_dbg(ar, dbg_mask, fmt, ##__VA_ARGS__);	\
111dd4f32aeSBjoern A. Zeeb } while (0)
112dd4f32aeSBjoern A. Zeeb 
113dd4f32aeSBjoern A. Zeeb #endif /* _ATH11K_DEBUG_H_ */
114