xref: /wlan-driver/qca-wifi-host-cmn/umac/regulatory/dispatcher/inc/wlan_reg_tgt_api.h (revision 5113495b16420b49004c444715d2daae2066e7dc)
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