xref: /freebsd/sys/contrib/dev/athk/ath11k/reg.h (revision dd4f32ae62426a10a84b4322756d82c06c202c4e)
1*dd4f32aeSBjoern A. Zeeb /* SPDX-License-Identifier: BSD-3-Clause-Clear */
2*dd4f32aeSBjoern A. Zeeb /*
3*dd4f32aeSBjoern A. Zeeb  * Copyright (c) 2019 The Linux Foundation. All rights reserved.
4*dd4f32aeSBjoern A. Zeeb  */
5*dd4f32aeSBjoern A. Zeeb 
6*dd4f32aeSBjoern A. Zeeb #ifndef ATH11K_REG_H
7*dd4f32aeSBjoern A. Zeeb #define ATH11K_REG_H
8*dd4f32aeSBjoern A. Zeeb 
9*dd4f32aeSBjoern A. Zeeb #include <linux/kernel.h>
10*dd4f32aeSBjoern A. Zeeb #include <net/regulatory.h>
11*dd4f32aeSBjoern A. Zeeb 
12*dd4f32aeSBjoern A. Zeeb struct ath11k_base;
13*dd4f32aeSBjoern A. Zeeb struct ath11k;
14*dd4f32aeSBjoern A. Zeeb 
15*dd4f32aeSBjoern A. Zeeb /* DFS regdomains supported by Firmware */
16*dd4f32aeSBjoern A. Zeeb enum ath11k_dfs_region {
17*dd4f32aeSBjoern A. Zeeb 	ATH11K_DFS_REG_UNSET,
18*dd4f32aeSBjoern A. Zeeb 	ATH11K_DFS_REG_FCC,
19*dd4f32aeSBjoern A. Zeeb 	ATH11K_DFS_REG_ETSI,
20*dd4f32aeSBjoern A. Zeeb 	ATH11K_DFS_REG_MKK,
21*dd4f32aeSBjoern A. Zeeb 	ATH11K_DFS_REG_CN,
22*dd4f32aeSBjoern A. Zeeb 	ATH11K_DFS_REG_KR,
23*dd4f32aeSBjoern A. Zeeb 	ATH11K_DFS_REG_MKK_N,
24*dd4f32aeSBjoern A. Zeeb 	ATH11K_DFS_REG_UNDEF,
25*dd4f32aeSBjoern A. Zeeb };
26*dd4f32aeSBjoern A. Zeeb 
27*dd4f32aeSBjoern A. Zeeb /* ATH11K Regulatory API's */
28*dd4f32aeSBjoern A. Zeeb void ath11k_reg_init(struct ath11k *ar);
29*dd4f32aeSBjoern A. Zeeb void ath11k_reg_free(struct ath11k_base *ab);
30*dd4f32aeSBjoern A. Zeeb void ath11k_regd_update_work(struct work_struct *work);
31*dd4f32aeSBjoern A. Zeeb struct ieee80211_regdomain *
32*dd4f32aeSBjoern A. Zeeb ath11k_reg_build_regd(struct ath11k_base *ab,
33*dd4f32aeSBjoern A. Zeeb 		      struct cur_regulatory_info *reg_info, bool intersect);
34*dd4f32aeSBjoern A. Zeeb int ath11k_regd_update(struct ath11k *ar);
35*dd4f32aeSBjoern A. Zeeb int ath11k_reg_update_chan_list(struct ath11k *ar);
36*dd4f32aeSBjoern A. Zeeb #endif
37