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