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

#ifndef ATH11K_REG_H
#define ATH11K_REG_H

#include <linux/kernel.h>
#include <net/regulatory.h>

struct ath11k_base;
struct ath11k;
struct ath11k_afc_info;

#define DEFAULT_MIN_POWER    (-10)
#define AFC_AUTH_STATUS_OFFSET	1
#define AFC_AUTH_SUCCESS	1
#define AFC_AUTH_ERROR		0

/* DFS regdomains supported by Firmware */
enum ath11k_dfs_region {
	ATH11K_DFS_REG_UNSET,
	ATH11K_DFS_REG_FCC,
	ATH11K_DFS_REG_ETSI,
	ATH11K_DFS_REG_MKK,
	ATH11K_DFS_REG_CN,
	ATH11K_DFS_REG_KR,
	ATH11K_DFS_REG_MKK_N,
	ATH11K_DFS_REG_UNDEF,
};

enum ath11k_afc_power_update_status {
	ATH11K_AFC_POWER_UPDATE_IGNORE = 0, /*used of rexpiry event*/
	ATH11K_AFC_POWER_UPDATE_SUCCESS = 1,
	ATH11K_AFC_POWER_UPDATE_FAIL = 3,
};

struct ath11k_afc_req_fixed_params {
	u64 req_id;
	u16 version_minor;
	u16 version_major;
	u16 req_length;
	u16 status_code;
	s16 min_des_power;
} __packed;

/* ATH11K Regulatory API's */
void ath11k_reg_init(struct ath11k *ar);
void ath11k_reg_free(struct ath11k_base *ab);
void ath11k_regd_update_work(struct work_struct *work);
struct ieee80211_regdomain *
ath11k_reg_build_regd(struct ath11k_base *ab,
		      struct cur_regulatory_info *reg_info,
		      enum ieee80211_ap_reg_power power_type);
enum wmi_reg_6g_ap_type
ath11k_ieee80211_ap_pwr_type_convert(enum ieee80211_ap_reg_power power_type);
int ath11k_regd_update(struct ath11k *ar, bool init);
int ath11k_reg_update_chan_list(struct ath11k *ar);
int ath11k_copy_afc_response(struct ath11k *ar, char *afc_resp, u32 len);
int ath11k_process_expiry_event(struct ath11k_base *ab, struct ath11k_afc_info *afc);
int ath11k_reg_process_afc_power_event(struct ath11k *ar);
s8 ath11k_reg_get_afc_eirp_power(struct ath11k *ar, enum nl80211_chan_width bw, int cfi);
void ath11k_reg_get_afc_eirp_power_for_bw(struct ath11k *ar, u16 *start_freq,
					  u16 *center_freq, int pwr_level,
					  struct cfg80211_chan_def *chan_def,
					  s8 *tx_power);
void ath11k_reg_update_cc(struct ath11k_base *ab);

#endif
