1 /* 2 * Copyright (c) 2017-2021 The Linux Foundation. All rights reserved. 3 * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved. 4 * 5 * Permission to use, copy, modify, and/or distribute this software for 6 * any purpose with or without fee is hereby granted, provided that the 7 * above copyright notice and this permission notice appear in all 8 * copies. 9 * 10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL 11 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED 12 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE 13 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL 14 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR 15 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER 16 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 17 * PERFORMANCE OF THIS SOFTWARE. 18 */ 19 20 /** 21 * DOC: wlan_reg_tgt_api.h 22 * This file provides prototypes of the regulatory component target 23 * interface routines 24 */ 25 26 #ifndef __WLAN_REG_TGT_API_H 27 #define __WLAN_REG_TGT_API_H 28 29 /** 30 * tgt_reg_process_master_chan_list() - process master channel list 31 * @reg_info: regulatory info 32 * 33 * Return: QDF_STATUS 34 */ 35 QDF_STATUS tgt_reg_process_master_chan_list(struct cur_regulatory_info 36 *reg_info); 37 38 #ifdef CONFIG_BAND_6GHZ 39 /** 40 * tgt_reg_process_master_chan_list_ext() - process master ext channel list 41 * @reg_info: regulatory info 42 * 43 * Return: QDF_STATUS 44 */ 45 QDF_STATUS tgt_reg_process_master_chan_list_ext(struct cur_regulatory_info 46 *reg_info); 47 48 #ifdef CONFIG_AFC_SUPPORT 49 /** 50 * tgt_reg_process_afc_event() - process the AFC event 51 * @afc_info: AFC regulatory info 52 * 53 * Return: QDF_STATUS 54 */ 55 QDF_STATUS 56 tgt_reg_process_afc_event(struct afc_regulatory_info *afc_info); 57 #endif 58 #endif 59 60 /** 61 * tgt_reg_process_11d_new_country() - process new 11d country event 62 * @psoc: pointer to psoc 63 * @reg_11d_new_cc: new 11d country pointer 64 * 65 * Return: QDF_STATUS 66 */ 67 QDF_STATUS tgt_reg_process_11d_new_country(struct wlan_objmgr_psoc *psoc, 68 struct reg_11d_new_country *reg_11d_new_cc); 69 70 /** 71 * tgt_reg_set_regdb_offloaded() - set/clear regulatory offloaded flag 72 * @psoc: psoc pointer 73 * @val: flag value to set 74 * 75 * Return: Success or Failure 76 */ 77 QDF_STATUS tgt_reg_set_regdb_offloaded(struct wlan_objmgr_psoc *psoc, 78 bool val); 79 80 /** 81 * tgt_reg_set_11d_offloaded() - set/clear 11d offloaded flag 82 * @psoc: psoc pointer 83 * @val: flag value to set 84 * 85 * Return: Success or Failure 86 */ 87 QDF_STATUS tgt_reg_set_11d_offloaded(struct wlan_objmgr_psoc *psoc, 88 bool val); 89 /** 90 * tgt_reg_process_ch_avoid_event() - process new ch avoid event 91 * @psoc: pointer to psoc 92 * @ch_avoid_evnt: channel avoid event 93 * 94 * Return: QDF_STATUS 95 */ 96 QDF_STATUS tgt_reg_process_ch_avoid_event(struct wlan_objmgr_psoc *psoc, 97 struct ch_avoid_ind_type *ch_avoid_evnt); 98 99 /** 100 * tgt_reg_ignore_fw_reg_offload_ind() - Check whether regdb offload indication 101 * from FW needs to be ignored. 102 * @psoc: Pointer to psoc 103 */ 104 bool tgt_reg_ignore_fw_reg_offload_ind(struct wlan_objmgr_psoc *psoc); 105 106 /** 107 * tgt_reg_set_6ghz_supported() - Whether 6ghz is supported by the chip 108 * @psoc: Pointer to psoc 109 * @val: value 110 */ 111 QDF_STATUS tgt_reg_set_6ghz_supported(struct wlan_objmgr_psoc *psoc, 112 bool val); 113 114 /** 115 * tgt_reg_set_5dot9_ghz_supported() - Whether 5.9ghz is supported by the chip 116 * @psoc: Pointer to psoc 117 * @val: value 118 */ 119 QDF_STATUS tgt_reg_set_5dot9_ghz_supported(struct wlan_objmgr_psoc *psoc, 120 bool val); 121 122 /** 123 * tgt_reg_set_ext_tpc_supported() - Whether FW supports new WMI cmd for TPC 124 * @psoc: Pointer to psoc 125 * @val: value 126 * 127 * Return: QDF_STATUS 128 */ 129 QDF_STATUS tgt_reg_set_ext_tpc_supported(struct wlan_objmgr_psoc *psoc, 130 bool val); 131 132 #if defined(CONFIG_BAND_6GHZ) 133 /** 134 * tgt_reg_set_lower_6g_edge_ch_supp() - Assign the value set by FW for lower 135 * 6ghz edge channel (5935 MHz) support 136 * @psoc: Pointer to psoc 137 * @val: value 138 */ 139 QDF_STATUS tgt_reg_set_lower_6g_edge_ch_supp(struct wlan_objmgr_psoc *psoc, 140 bool val); 141 142 /** 143 * tgt_reg_set_disable_upper_6g_edge_ch_supp() - Assign the value set by FW 144 * for upper 6G edge channel {7115MHz) disablement 145 * @psoc: Pointer to psoc 146 * @val: value 147 */ 148 QDF_STATUS 149 tgt_reg_set_disable_upper_6g_edge_ch_supp(struct wlan_objmgr_psoc *psoc, 150 bool val); 151 #else 152 static inline tgt_reg_set_lower_6g_edge_ch_supp(struct wlan_objmgr_psoc * psoc,bool val)153 QDF_STATUS tgt_reg_set_lower_6g_edge_ch_supp(struct wlan_objmgr_psoc *psoc, 154 bool val) 155 { 156 return QDF_STATUS_E_FAILURE; 157 } 158 159 static inline QDF_STATUS tgt_reg_set_disable_upper_6g_edge_ch_supp(struct wlan_objmgr_psoc * psoc,bool val)160 tgt_reg_set_disable_upper_6g_edge_ch_supp(struct wlan_objmgr_psoc *psoc, 161 bool val) 162 163 { 164 return QDF_STATUS_E_FAILURE; 165 } 166 #endif 167 168 #ifdef CONFIG_AFC_SUPPORT 169 /** 170 * tgt_reg_set_afc_dev_type() - set target afc device type 171 * @psoc: Pointer to psoc 172 * @reg_afc_dev_type: afc device deployment type 173 * 174 * Return: QDF_STATUS 175 */ 176 QDF_STATUS 177 tgt_reg_set_afc_dev_type(struct wlan_objmgr_psoc *psoc, 178 enum reg_afc_dev_deploy_type reg_afc_dev_type); 179 180 /** 181 * tgt_reg_get_afc_dev_type() - get target afc device type 182 * @psoc: Pointer to psoc 183 * @reg_afc_dev_type: Pointer to afc device deploymenttype 184 * 185 * Return: QDF_STATUS 186 */ 187 QDF_STATUS 188 tgt_reg_get_afc_dev_type(struct wlan_objmgr_psoc *psoc, 189 enum reg_afc_dev_deploy_type *reg_afc_dev_type); 190 191 /** 192 * tgt_reg_set_eirp_preferred_support() - Set EIRP as the preferred 193 * support for TPC power command 194 * @psoc: psoc pointer 195 * @reg_is_eirp_support_preferred: Boolean to indicate if target prefers EIRP 196 * support for TPC power command 197 * 198 * Return: Success or Failure 199 */ 200 QDF_STATUS 201 tgt_reg_set_eirp_preferred_support(struct wlan_objmgr_psoc *psoc, 202 bool reg_is_eirp_support_preferred); 203 204 /** 205 * tgt_reg_get_eirp_preferred_support() - Check if is EIRP support is 206 * preferred by the target for TPC power command 207 * @psoc: psoc pointer 208 * @reg_is_eirp_support_preferred: Pointer to reg_is_eirp_support_preferred 209 * 210 * Return: Success or Failure 211 */ 212 QDF_STATUS 213 tgt_reg_get_eirp_preferred_support(struct wlan_objmgr_psoc *psoc, 214 bool *reg_is_eirp_support_preferred); 215 #endif 216 217 /** 218 * tgt_reg_process_r2p_table_update_response() - process rate2power table update 219 * response 220 * @psoc: pointer to psoc 221 * @pdev_id: pdev id from target 222 * 223 * Return: QDF_STATUS 224 */ 225 QDF_STATUS tgt_reg_process_r2p_table_update_response( 226 struct wlan_objmgr_psoc *psoc, 227 uint32_t pdev_id); 228 #endif 229