1 | /* SPDX-License-Identifier: BSD-3-Clause-Clear */ |
2 | /* |
3 | * Copyright (c) 2019-2020 The Linux Foundation. All rights reserved. |
4 | * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved. |
5 | */ |
6 | |
7 | #ifndef ATH11K_SPECTRAL_H |
8 | #define ATH11K_SPECTRAL_H |
9 | |
10 | #include "../spectral_common.h" |
11 | #include "dbring.h" |
12 | |
13 | /* enum ath11k_spectral_mode: |
14 | * |
15 | * @SPECTRAL_DISABLED: spectral mode is disabled |
16 | * @SPECTRAL_BACKGROUND: hardware sends samples when it is not busy with |
17 | * something else. |
18 | * @SPECTRAL_MANUAL: spectral scan is enabled, triggering for samples |
19 | * is performed manually. |
20 | */ |
21 | enum ath11k_spectral_mode { |
22 | ATH11K_SPECTRAL_DISABLED = 0, |
23 | ATH11K_SPECTRAL_BACKGROUND, |
24 | ATH11K_SPECTRAL_MANUAL, |
25 | }; |
26 | |
27 | struct ath11k_spectral { |
28 | struct ath11k_dbring rx_ring; |
29 | /* Protects enabled */ |
30 | spinlock_t lock; |
31 | struct rchan *rfs_scan; /* relay(fs) channel for spectral scan */ |
32 | struct dentry *scan_ctl; |
33 | struct dentry *scan_count; |
34 | struct dentry *scan_bins; |
35 | enum ath11k_spectral_mode mode; |
36 | u16 count; |
37 | u8 fft_size; |
38 | bool enabled; |
39 | bool is_primary; |
40 | }; |
41 | |
42 | #ifdef CONFIG_ATH11K_SPECTRAL |
43 | |
44 | int ath11k_spectral_init(struct ath11k_base *ab); |
45 | void ath11k_spectral_deinit(struct ath11k_base *ab); |
46 | int ath11k_spectral_vif_stop(struct ath11k_vif *arvif); |
47 | void ath11k_spectral_reset_buffer(struct ath11k *ar); |
48 | enum ath11k_spectral_mode ath11k_spectral_get_mode(struct ath11k *ar); |
49 | struct ath11k_dbring *ath11k_spectral_get_dbring(struct ath11k *ar); |
50 | |
51 | #else |
52 | |
53 | static inline int ath11k_spectral_init(struct ath11k_base *ab) |
54 | { |
55 | return 0; |
56 | } |
57 | |
58 | static inline void ath11k_spectral_deinit(struct ath11k_base *ab) |
59 | { |
60 | } |
61 | |
62 | static inline int ath11k_spectral_vif_stop(struct ath11k_vif *arvif) |
63 | { |
64 | return 0; |
65 | } |
66 | |
67 | static inline void ath11k_spectral_reset_buffer(struct ath11k *ar) |
68 | { |
69 | } |
70 | |
71 | static inline |
72 | enum ath11k_spectral_mode ath11k_spectral_get_mode(struct ath11k *ar) |
73 | { |
74 | return ATH11K_SPECTRAL_DISABLED; |
75 | } |
76 | |
77 | static inline |
78 | struct ath11k_dbring *ath11k_spectral_get_dbring(struct ath11k *ar) |
79 | { |
80 | return NULL; |
81 | } |
82 | |
83 | #endif /* CONFIG_ATH11K_SPECTRAL */ |
84 | #endif /* ATH11K_SPECTRAL_H */ |
85 | |