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