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