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