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