1 /* SPDX-License-Identifier: BSD-3-Clause-Clear */
2 /*
3  * Copyright (c) 2018-2021 The Linux Foundation. All rights reserved.
4  * Copyright (c) 2021-2025 Qualcomm Innovation Center, Inc. All rights reserved.
5  */
6 
7 #ifndef _ATH12K_DEBUGFS_H_
8 #define _ATH12K_DEBUGFS_H_
9 
10 #ifdef CONFIG_ATH12K_DEBUGFS
11 void ath12k_debugfs_soc_create(struct ath12k_base *ab);
12 void ath12k_debugfs_soc_destroy(struct ath12k_base *ab);
13 void ath12k_debugfs_register(struct ath12k *ar);
14 void ath12k_debugfs_unregister(struct ath12k *ar);
15 void ath12k_debugfs_fw_stats_process(struct ath12k *ar,
16 				     struct ath12k_fw_stats *stats);
17 void ath12k_debugfs_fw_stats_reset(struct ath12k *ar);
18 
ath12k_debugfs_is_extd_rx_stats_enabled(struct ath12k * ar)19 static inline bool ath12k_debugfs_is_extd_rx_stats_enabled(struct ath12k *ar)
20 {
21 	return ar->debug.extd_rx_stats;
22 }
23 
ath12k_debugfs_rx_filter(struct ath12k * ar)24 static inline int ath12k_debugfs_rx_filter(struct ath12k *ar)
25 {
26 	return ar->debug.rx_filter;
27 }
28 
29 #define ATH12K_CCK_RATES			4
30 #define ATH12K_OFDM_RATES			8
31 #define ATH12K_HT_RATES				8
32 #define ATH12K_VHT_RATES			12
33 #define ATH12K_HE_RATES				12
34 #define ATH12K_HE_RATES_WITH_EXTRA_MCS		14
35 #define ATH12K_EHT_RATES			16
36 #define HE_EXTRA_MCS_SUPPORT			GENMASK(31, 16)
37 #define ATH12K_NSS_1				1
38 #define ATH12K_NSS_4				4
39 #define ATH12K_NSS_8				8
40 #define ATH12K_HW_NSS(_rcode)			(((_rcode) >> 5) & 0x7)
41 #define TPC_STATS_WAIT_TIME			(1 * HZ)
42 #define MAX_TPC_PREAM_STR_LEN			7
43 #define TPC_INVAL				-128
44 #define TPC_MAX					127
45 #define TPC_STATS_WAIT_TIME			(1 * HZ)
46 #define TPC_STATS_TOT_ROW			700
47 #define TPC_STATS_TOT_COLUMN			100
48 #define MODULATION_LIMIT			126
49 
50 #define ATH12K_TPC_STATS_BUF_SIZE	(TPC_STATS_TOT_ROW * TPC_STATS_TOT_COLUMN)
51 
52 enum wmi_tpc_pream_bw {
53 	WMI_TPC_PREAM_CCK,
54 	WMI_TPC_PREAM_OFDM,
55 	WMI_TPC_PREAM_HT20,
56 	WMI_TPC_PREAM_HT40,
57 	WMI_TPC_PREAM_VHT20,
58 	WMI_TPC_PREAM_VHT40,
59 	WMI_TPC_PREAM_VHT80,
60 	WMI_TPC_PREAM_VHT160,
61 	WMI_TPC_PREAM_HE20,
62 	WMI_TPC_PREAM_HE40,
63 	WMI_TPC_PREAM_HE80,
64 	WMI_TPC_PREAM_HE160,
65 	WMI_TPC_PREAM_EHT20,
66 	WMI_TPC_PREAM_EHT40,
67 	WMI_TPC_PREAM_EHT60,
68 	WMI_TPC_PREAM_EHT80,
69 	WMI_TPC_PREAM_EHT120,
70 	WMI_TPC_PREAM_EHT140,
71 	WMI_TPC_PREAM_EHT160,
72 	WMI_TPC_PREAM_EHT200,
73 	WMI_TPC_PREAM_EHT240,
74 	WMI_TPC_PREAM_EHT280,
75 	WMI_TPC_PREAM_EHT320,
76 	WMI_TPC_PREAM_MAX
77 };
78 
79 enum ath12k_debug_tpc_stats_ctl_mode {
80 	ATH12K_TPC_STATS_CTL_MODE_LEGACY_5GHZ_6GHZ,
81 	ATH12K_TPC_STATS_CTL_MODE_HT_VHT20_5GHZ_6GHZ,
82 	ATH12K_TPC_STATS_CTL_MODE_HE_EHT20_5GHZ_6GHZ,
83 	ATH12K_TPC_STATS_CTL_MODE_HT_VHT40_5GHZ_6GHZ,
84 	ATH12K_TPC_STATS_CTL_MODE_HE_EHT40_5GHZ_6GHZ,
85 	ATH12K_TPC_STATS_CTL_MODE_VHT80_5GHZ_6GHZ,
86 	ATH12K_TPC_STATS_CTL_MODE_HE_EHT80_5GHZ_6GHZ,
87 	ATH12K_TPC_STATS_CTL_MODE_VHT160_5GHZ_6GHZ,
88 	ATH12K_TPC_STATS_CTL_MODE_HE_EHT160_5GHZ_6GHZ,
89 	ATH12K_TPC_STATS_CTL_MODE_HE_EHT320_5GHZ_6GHZ,
90 	ATH12K_TPC_STATS_CTL_MODE_CCK_2GHZ,
91 	ATH12K_TPC_STATS_CTL_MODE_LEGACY_2GHZ,
92 	ATH12K_TPC_STATS_CTL_MODE_HT20_2GHZ,
93 	ATH12K_TPC_STATS_CTL_MODE_HT40_2GHZ,
94 
95 	ATH12K_TPC_STATS_CTL_MODE_EHT80_SU_PUNC20 = 23,
96 	ATH12K_TPC_STATS_CTL_MODE_EHT160_SU_PUNC20,
97 	ATH12K_TPC_STATS_CTL_MODE_EHT320_SU_PUNC40,
98 	ATH12K_TPC_STATS_CTL_MODE_EHT320_SU_PUNC80,
99 	ATH12K_TPC_STATS_CTL_MODE_EHT320_SU_PUNC120
100 };
101 
102 enum ath12k_debug_tpc_stats_support_modes {
103 	ATH12K_TPC_STATS_SUPPORT_160 = 0,
104 	ATH12K_TPC_STATS_SUPPORT_320,
105 	ATH12K_TPC_STATS_SUPPORT_AX,
106 	ATH12K_TPC_STATS_SUPPORT_AX_EXTRA_MCS,
107 	ATH12K_TPC_STATS_SUPPORT_BE,
108 	ATH12K_TPC_STATS_SUPPORT_BE_PUNC,
109 };
110 #else
ath12k_debugfs_soc_create(struct ath12k_base * ab)111 static inline void ath12k_debugfs_soc_create(struct ath12k_base *ab)
112 {
113 }
114 
ath12k_debugfs_soc_destroy(struct ath12k_base * ab)115 static inline void ath12k_debugfs_soc_destroy(struct ath12k_base *ab)
116 {
117 }
118 
ath12k_debugfs_register(struct ath12k * ar)119 static inline void ath12k_debugfs_register(struct ath12k *ar)
120 {
121 }
122 
ath12k_debugfs_unregister(struct ath12k * ar)123 static inline void ath12k_debugfs_unregister(struct ath12k *ar)
124 {
125 }
126 
ath12k_debugfs_fw_stats_process(struct ath12k * ar,struct ath12k_fw_stats * stats)127 static inline void ath12k_debugfs_fw_stats_process(struct ath12k *ar,
128 						   struct ath12k_fw_stats *stats)
129 {
130 }
131 
ath12k_debugfs_fw_stats_reset(struct ath12k * ar)132 static inline void ath12k_debugfs_fw_stats_reset(struct ath12k *ar)
133 {
134 }
135 
ath12k_debugfs_is_extd_rx_stats_enabled(struct ath12k * ar)136 static inline bool ath12k_debugfs_is_extd_rx_stats_enabled(struct ath12k *ar)
137 {
138 	return false;
139 }
140 
ath12k_debugfs_rx_filter(struct ath12k * ar)141 static inline int ath12k_debugfs_rx_filter(struct ath12k *ar)
142 {
143 	return 0;
144 }
145 #endif /* CONFIG_ATH12K_DEBUGFS */
146 
147 #endif /* _ATH12K_DEBUGFS_H_ */
148