/* SPDX-License-Identifier: BSD-3-Clause-Clear */
/*
 * Copyright (c) 2019-2020 The Linux Foundation. All rights reserved.
 */

#ifndef ATH11K_SPECTRAL_H
#define ATH11K_SPECTRAL_H

#include "../spectral_common.h"
#include "dbring.h"

/* enum ath11k_spectral_mode:
 *
 * @SPECTRAL_DISABLED: spectral mode is disabled
 * @SPECTRAL_BACKGROUND: hardware sends samples when it is not busy with
 *	something else.
 * @SPECTRAL_MANUAL: spectral scan is enabled, triggering for samples
 *	is performed manually.
 */
enum ath11k_spectral_mode {
	ATH11K_SPECTRAL_DISABLED = 0,
	ATH11K_SPECTRAL_BACKGROUND,
	ATH11K_SPECTRAL_MANUAL,
};

struct ath11k_spectral {
	struct ath11k_dbring rx_ring;
	/* Protects enabled */
	spinlock_t lock;
	struct rchan *rfs_scan;	/* relay(fs) channel for spectral scan */
	struct dentry *scan_ctl;
	struct dentry *scan_count;
	struct dentry *scan_bins;
	enum ath11k_spectral_mode mode;
	u16 count;
	u8 fft_size;
	bool enabled;
};

#ifdef CONFIG_ATH11K_SPECTRAL

int ath11k_spectral_init(struct ath11k_base *ab);
void ath11k_spectral_deinit(struct ath11k_base *ab);
int ath11k_spectral_vif_stop(struct ath11k_vif *arvif);
void ath11k_spectral_reset_buffer(struct ath11k *ar);
enum ath11k_spectral_mode ath11k_spectral_get_mode(struct ath11k *ar);
struct ath11k_dbring *ath11k_spectral_get_dbring(struct ath11k *ar);

#else

static inline int ath11k_spectral_init(struct ath11k_base *ab)
{
	return 0;
}

static inline void ath11k_spectral_deinit(struct ath11k_base *ab)
{
}

static inline int ath11k_spectral_vif_stop(struct ath11k_vif *arvif)
{
	return 0;
}

static inline void ath11k_spectral_reset_buffer(struct ath11k *ar)
{
}

static inline
enum ath11k_spectral_mode ath11k_spectral_get_mode(struct ath11k *ar)
{
	return ATH11K_SPECTRAL_DISABLED;
}

static inline
struct ath11k_dbring *ath11k_spectral_get_dbring(struct ath11k *ar)
{
	return NULL;
}

#endif /* CONFIG_ATH11K_SPECTRAL */
#endif /* ATH11K_SPECTRAL_H */
