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