1f0553ca9SKalle Valo /* SPDX-License-Identifier: ISC */
2855aed12SSimon Wunderlich /*
38b1083d6SKalle Valo  * Copyright (c) 2013-2015 Qualcomm Atheros, Inc.
4855aed12SSimon Wunderlich  */
5855aed12SSimon Wunderlich 
6855aed12SSimon Wunderlich #ifndef SPECTRAL_H
7855aed12SSimon Wunderlich #define SPECTRAL_H
8855aed12SSimon Wunderlich 
9855aed12SSimon Wunderlich #include "../spectral_common.h"
10855aed12SSimon Wunderlich 
11855aed12SSimon Wunderlich /**
12855aed12SSimon Wunderlich  * struct ath10k_spec_scan - parameters for Atheros spectral scan
13855aed12SSimon Wunderlich  *
14855aed12SSimon Wunderlich  * @count: number of scan results requested for manual mode
15855aed12SSimon Wunderlich  * @fft_size: number of bins to be requested = 2^(fft_size - bin_scale)
16855aed12SSimon Wunderlich  */
17855aed12SSimon Wunderlich struct ath10k_spec_scan {
18855aed12SSimon Wunderlich 	u8 count;
19855aed12SSimon Wunderlich 	u8 fft_size;
20855aed12SSimon Wunderlich };
21855aed12SSimon Wunderlich 
22855aed12SSimon Wunderlich /* enum ath10k_spectral_mode:
23855aed12SSimon Wunderlich  *
24855aed12SSimon Wunderlich  * @SPECTRAL_DISABLED: spectral mode is disabled
25855aed12SSimon Wunderlich  * @SPECTRAL_BACKGROUND: hardware sends samples when it is not busy with
26855aed12SSimon Wunderlich  *	something else.
27855aed12SSimon Wunderlich  * @SPECTRAL_MANUAL: spectral scan is enabled, triggering for samples
28855aed12SSimon Wunderlich  *	is performed manually.
29855aed12SSimon Wunderlich  */
30855aed12SSimon Wunderlich enum ath10k_spectral_mode {
31855aed12SSimon Wunderlich 	SPECTRAL_DISABLED = 0,
32855aed12SSimon Wunderlich 	SPECTRAL_BACKGROUND,
33855aed12SSimon Wunderlich 	SPECTRAL_MANUAL,
34855aed12SSimon Wunderlich };
35855aed12SSimon Wunderlich 
3642e01cb9SMatthias Schiffer #ifdef CONFIG_ATH10K_SPECTRAL
37855aed12SSimon Wunderlich 
38855aed12SSimon Wunderlich int ath10k_spectral_process_fft(struct ath10k *ar,
39991adf71SRaja Mani 				struct wmi_phyerr_ev_arg *phyerr,
402332d0aeSMichal Kazior 				const struct phyerr_fft_report *fftr,
41855aed12SSimon Wunderlich 				size_t bin_len, u64 tsf);
42855aed12SSimon Wunderlich int ath10k_spectral_start(struct ath10k *ar);
43855aed12SSimon Wunderlich int ath10k_spectral_vif_stop(struct ath10k_vif *arvif);
44855aed12SSimon Wunderlich int ath10k_spectral_create(struct ath10k *ar);
45855aed12SSimon Wunderlich void ath10k_spectral_destroy(struct ath10k *ar);
46855aed12SSimon Wunderlich 
47855aed12SSimon Wunderlich #else
48855aed12SSimon Wunderlich 
49855aed12SSimon Wunderlich static inline int
ath10k_spectral_process_fft(struct ath10k * ar,struct wmi_phyerr_ev_arg * phyerr,const struct phyerr_fft_report * fftr,size_t bin_len,u64 tsf)50855aed12SSimon Wunderlich ath10k_spectral_process_fft(struct ath10k *ar,
51991adf71SRaja Mani 			    struct wmi_phyerr_ev_arg *phyerr,
522332d0aeSMichal Kazior 			    const struct phyerr_fft_report *fftr,
53855aed12SSimon Wunderlich 			    size_t bin_len, u64 tsf)
54855aed12SSimon Wunderlich {
55855aed12SSimon Wunderlich 	return 0;
56855aed12SSimon Wunderlich }
57855aed12SSimon Wunderlich 
ath10k_spectral_start(struct ath10k * ar)58855aed12SSimon Wunderlich static inline int ath10k_spectral_start(struct ath10k *ar)
59855aed12SSimon Wunderlich {
60855aed12SSimon Wunderlich 	return 0;
61855aed12SSimon Wunderlich }
62855aed12SSimon Wunderlich 
ath10k_spectral_vif_stop(struct ath10k_vif * arvif)63855aed12SSimon Wunderlich static inline int ath10k_spectral_vif_stop(struct ath10k_vif *arvif)
64855aed12SSimon Wunderlich {
65855aed12SSimon Wunderlich 	return 0;
66855aed12SSimon Wunderlich }
67855aed12SSimon Wunderlich 
ath10k_spectral_create(struct ath10k * ar)68855aed12SSimon Wunderlich static inline int ath10k_spectral_create(struct ath10k *ar)
69855aed12SSimon Wunderlich {
70855aed12SSimon Wunderlich 	return 0;
71855aed12SSimon Wunderlich }
72855aed12SSimon Wunderlich 
ath10k_spectral_destroy(struct ath10k * ar)73855aed12SSimon Wunderlich static inline void ath10k_spectral_destroy(struct ath10k *ar)
74855aed12SSimon Wunderlich {
75855aed12SSimon Wunderlich }
76855aed12SSimon Wunderlich 
7742e01cb9SMatthias Schiffer #endif /* CONFIG_ATH10K_SPECTRAL */
78855aed12SSimon Wunderlich 
79855aed12SSimon Wunderlich #endif /* SPECTRAL_H */
80