1 /*
2  * Copyright (c) 2017-2021 The Linux Foundation. All rights reserved.
3  * Copyright (c) 2021-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: This target interface shall be used
22  *      to communicate with target using WMI.
23  */
24 #ifndef _WLAN_TARGET_IF_H_
25 #define _WLAN_TARGET_IF_H_
26 
27 #include "qdf_types.h"
28 #include "qdf_util.h"
29 #include "wlan_objmgr_psoc_obj.h"
30 #include "wmi_unified_api.h"
31 #include "wmi_unified_priv.h"
32 #include "wmi_unified_param.h"
33 #include <target_type.h>
34 
35 #define TGT_WMI_PDEV_ID_SOC	0	/* WMI SOC ID */
36 
37 /* ASCII "TGT\0" */
38 #define TGT_MAGIC 0x54575400
39 
40 #define target_if_fatal(params...) \
41 	QDF_TRACE_FATAL(QDF_MODULE_ID_TARGET_IF, params)
42 #define target_if_err(params...) \
43 	QDF_TRACE_ERROR(QDF_MODULE_ID_TARGET_IF, params)
44 #define target_if_warn(params...) \
45 	QDF_TRACE_WARN(QDF_MODULE_ID_TARGET_IF, params)
46 #define target_if_info(params...) \
47 	QDF_TRACE_INFO(QDF_MODULE_ID_TARGET_IF, params)
48 #define target_if_debug(params...) \
49 	QDF_TRACE_DEBUG(QDF_MODULE_ID_TARGET_IF, params)
50 #define TARGET_IF_ENTER() \
51 	QDF_TRACE_ENTER(QDF_MODULE_ID_TARGET_IF, "enter")
52 #define TARGET_IF_EXIT() \
53 	QDF_TRACE_EXIT(QDF_MODULE_ID_TARGET_IF, "exit")
54 #define target_if_err_rl(params...) \
55 	QDF_TRACE_ERROR_RL(QDF_MODULE_ID_TARGET_IF, params)
56 
57 
58 #define targetif_nofl_fatal(params...) \
59 	QDF_TRACE_FATAL_NO_FL(QDF_MODULE_ID_TARGET_IF, params)
60 #define targetif_nofl_err(params...) \
61 	QDF_TRACE_ERROR_NO_FL(QDF_MODULE_ID_TARGET_IF, params)
62 #define targetif_nofl_warn(params...) \
63 	QDF_TRACE_WARN_NO_FL(QDF_MODULE_ID_TARGET_IF, params)
64 #define targetif_nofl_info(params...) \
65 	QDF_TRACE_INFO_NO_FL(QDF_MODULE_ID_TARGET_IF, params)
66 #define targetif_nofl_debug(params...) \
67 	QDF_TRACE_DEBUG_NO_FL(QDF_MODULE_ID_TARGET_IF, params)
68 
69 #ifdef SERIALIZE_WMI_RX_EXECUTION_CTX
70 #define WMI_RX_EXECUTION_CTX WMI_RX_SERIALIZER_CTX
71 #else
72 #define WMI_RX_EXECUTION_CTX WMI_RX_UMAC_CTX
73 #endif /* SERIALIZE_WMI_RX_EXECUTION_CTX */
74 
75 typedef struct wlan_objmgr_psoc *(*get_psoc_handle_callback)(
76 			void *scn_handle);
77 
78 typedef struct wlan_objmgr_pdev *(*get_pdev_handle_callback)(
79 			void *scn_handle);
80 
81 typedef int (*wmi_legacy_service_ready_callback)(uint32_t event_id,
82 						void *handle,
83 						uint8_t *event_data,
84 						uint32_t length);
85 
86 /* Enum for ext and ext2 processing status */
87 enum wmi_init_status {
88 	wmi_init_success,
89 	wmi_init_ext_processing_failed,
90 	wmi_init_ext2_processing_failed,
91 };
92 
93 /**
94  * struct target_if_ctx - target_interface context
95  * @magic: magic for target if ctx
96  * @get_psoc_hdl_cb:  function pointer to get psoc
97  * @get_pdev_hdl_cb:  function pointer to get pdev
98  * @service_ready_cb: function pointeer for service ready callback
99  * @lock: spin lock for protecting the ctx
100  */
101 struct target_if_ctx {
102 	uint32_t magic;
103 	get_psoc_handle_callback get_psoc_hdl_cb;
104 	get_pdev_handle_callback get_pdev_hdl_cb;
105 	wmi_legacy_service_ready_callback service_ready_cb;
106 	qdf_spinlock_t lock;
107 };
108 
109 struct target_psoc_info;
110 /**
111  * struct host_fw_ver - holds host fw version
112  * @host_ver: Host version
113  * @target_ver: Target version ID
114  * @target_rev: Target revision ID
115  * @wlan_ver: FW SW version
116  * @wlan_ver_1: FW SW version second dword
117  * @abi_ver: ABI version
118  */
119 struct host_fw_ver {
120 	uint32_t host_ver;
121 	uint32_t target_ver;
122 	uint32_t target_rev;
123 	uint32_t wlan_ver;
124 	uint32_t wlan_ver_1;
125 	uint32_t abi_ver;
126 };
127 
128 struct common_dbglog_handle;
129 struct common_accelerator_handle;
130 
131 /**
132  * struct comp_hdls - Non-umac/lower layer components handles, it is a sub
133  *                    structure of target psoc information
134  * @hif_hdl: HIF handle
135  * @htc_hdl: HTC handle
136  * @wmi_hdl: WMI handle
137  * @accelerator_hdl: NSS offload/IPA handle
138  * @dbglog_hdl: Debug log handle
139  */
140 struct comp_hdls {
141 	struct hif_opaque_softc *hif_hdl;
142 	HTC_HANDLE htc_hdl;
143 	struct wmi_unified *wmi_hdl;
144 	struct common_accelerator_handle *accelerator_hdl;
145 	struct common_dbglog_handle *dbglog_hdl;
146 };
147 
148 /**
149  * struct target_supported_modes - List of HW modes supported by target.
150  *
151  * @num_modes: Number of modes supported
152  * @hw_mode_ids: List of HW mode ids
153  * @phy_bit_map: List of Phy bit maps
154  */
155 struct target_supported_modes {
156 	uint8_t num_modes;
157 	uint32_t hw_mode_ids[WMI_HOST_HW_MODE_MAX];
158 	uint32_t phy_bit_map[WMI_HOST_HW_MODE_MAX];
159 };
160 
161 /**
162  * struct target_version_info - Target version information
163  *
164  * @reg_db_version_major: REG DB version major
165  * @reg_db_version_minor: REG DB version minor
166  * @bdf_reg_db_version_major: BDF REG DB version major
167  * @bdf_reg_db_version_minor: BDF REG DB version minor
168  */
169 struct target_version_info {
170 	uint8_t reg_db_version_major;
171 	uint8_t reg_db_version_minor;
172 	uint8_t bdf_reg_db_version_major;
173 	uint8_t bdf_reg_db_version_minor;
174 };
175 
176 /**
177  * struct tgt_info - FW or lower layer related info(required by target_if),
178  *                   it is a sub structure of taarget psoc information
179  * @version: Host FW version struct
180  * @wlan_res_cfg:  target_resource_config info
181  * @wlan_ext_res_cfg: wmi_host_ext_resource_config info
182  * @wmi_service_ready: is service ready received
183  * @wmi_ready: is ready event received
184  * @total_mac_phy_cnt: num of mac phys
185  * @num_radios: number of radios
186  * @wmi_service_status: wmi service status success or failed
187  * @wlan_init_status: Target init status
188  * @target_type: Target type
189  * @max_descs: Max descriptors
190  * @preferred_hw_mode: preferred hw mode
191  * @wmi_timeout: wait timeout for target events
192  * @event: qdf_event for target events
193  * @service_bitmap: WMI service bitmap
194  * @target_caps: target capabilities
195  * @service_ext_param: ext service params
196  * @service_ext2_param: service ready ext2 event params
197  * @mac_phy_cap: phy caps array
198  * @mac_phy_caps_ext2: mac phy caps ext2 params
199  * @dbr_ring_cap: dbr_ring capability info
200  * @scaling_params: Spectral bin scaling parameters
201  * @num_mem_chunks: number of mem chunks allocated
202  * @mem_chunks: allocated memory blocks for FW
203  * @hw_mode_cap: HW mode caps of preferred mode
204  * @hw_modes: supported hardware modes
205  * @pdev_id_to_phy_id_map: pdev id to phy id map
206  * @is_pdevid_to_phyid_map: true if @pdev_id_to_phy_id_map is valid
207  * @scan_radio_caps: scan radio capabilities
208  * @msdu_idx_qtype_map: HTT msdu index to qtype mapping table
209  * @device_mode: Global Device mode
210  * @sbs_lower_band_end_freq: sbs lower band end frequency
211  * @health_mon_param: health monitor params
212  * @aux_dev_caps: aux device capability
213  * @aoa_caps: aoa capabilities from target
214  */
215 struct tgt_info {
216 	struct host_fw_ver version;
217 	target_resource_config wlan_res_cfg;
218 	wmi_host_ext_resource_config wlan_ext_res_cfg;
219 	bool wmi_service_ready;
220 	bool wmi_ready;
221 	uint8_t total_mac_phy_cnt;
222 	uint8_t num_radios;
223 	enum wmi_init_status wmi_service_status;
224 	uint32_t wlan_init_status;
225 	uint32_t target_type;
226 	uint32_t max_descs;
227 	uint32_t preferred_hw_mode;
228 	uint32_t wmi_timeout;
229 	qdf_event_t event;
230 	uint32_t service_bitmap[PSOC_SERVICE_BM_SIZE];
231 	struct wlan_psoc_target_capability_info target_caps;
232 	struct wlan_psoc_host_service_ext_param service_ext_param;
233 	struct wlan_psoc_host_service_ext2_param service_ext2_param;
234 	struct wlan_psoc_host_mac_phy_caps
235 			mac_phy_cap[PSOC_MAX_MAC_PHY_CAP];
236 	struct wlan_psoc_host_mac_phy_caps_ext2
237 			mac_phy_caps_ext2[PSOC_MAX_MAC_PHY_CAP];
238 	struct wlan_psoc_host_dbr_ring_caps *dbr_ring_cap;
239 	struct wlan_psoc_host_spectral_scaling_params *scaling_params;
240 	uint32_t num_mem_chunks;
241 	struct wmi_host_mem_chunk mem_chunks[MAX_MEM_CHUNKS];
242 	struct wlan_psoc_host_hw_mode_caps hw_mode_cap;
243 	struct target_supported_modes hw_modes;
244 	uint8_t pdev_id_to_phy_id_map[WLAN_UMAC_MAX_PDEVS];
245 	bool is_pdevid_to_phyid_map;
246 	struct wlan_psoc_host_scan_radio_caps *scan_radio_caps;
247 	uint8_t *msdu_idx_qtype_map;
248 	uint32_t device_mode;
249 	uint32_t sbs_lower_band_end_freq;
250 #ifdef HEALTH_MON_SUPPORT
251 	struct wmi_health_mon_params health_mon_param;
252 #endif /* HEALTH_MON_SUPPORT */
253 	struct wlan_psoc_host_aux_dev_caps *aux_dev_caps;
254 #ifdef WLAN_RCC_ENHANCED_AOA_SUPPORT
255 	struct wlan_psoc_host_rcc_enh_aoa_caps_ext2 *aoa_caps;
256 #endif /* WLAN_RCC_ENHANCED_AOA_SUPPORT */
257 };
258 
259 /**
260  * struct target_ops - Holds feature specific function pointers, which would be
261  *                     invoked as part of service ready or ext service ready
262  * @ext_resource_config_enable: Ext resource config
263  * @peer_config: Peer config enable
264  * @mesh_support_enable: Mesh support enable
265  * @smart_antenna_enable: Smart antenna enable
266  * @atf_config_enable: ATF config enable
267  * @btcoex_config_enable: BTCOEX config enable
268  * @lteu_ext_support_enable: LTE-U Ext config enable
269  * @set_init_cmd_dev_based_params: Sets Init command params
270  * @alloc_pdevs: Allocates PDEVs
271  * @update_pdev_tgt_info: Updates PDEV target info
272  * @mem_mgr_alloc_chunk: Allocates memory through MEM manager
273  * @mem_mgr_free_chunks: Free memory chunks through MEM manager
274  * @print_svc_ready_ex_param: Print service ready ext params
275  * @add_11ax_modes: Adds 11ax modes to reg cap
276  * @set_default_tgt_config: Sets target config with default values
277  * @sw_version_check: Checks the SW version
278  * @smart_log_enable: Enable Smart Logs feature
279  * @eapol_minrate_enable: Enable EAPOL minimum rate configuration
280  * @cfr_support_enable: CFR support enable
281  * @set_pktlog_checksum: Set the pktlog checksum from FW ready event to pl_dev
282  * @csa_switch_count_status: CSA event handler
283  * @ema_init: Initialize Enhanced MBSSID advertisement feature
284  * @mlo_capable: Checks if the SoC is MLO capable
285  * @mlo_get_group_id: Get the MLO group id of the SoC
286  * @mlo_setup_done_event: MLO setup sequence complete event handler
287  */
288 struct target_ops {
289 	QDF_STATUS (*ext_resource_config_enable)
290 		(struct wlan_objmgr_psoc *psoc,
291 		 struct target_psoc_info *tgt_info, uint8_t *event);
292 	void (*peer_config)
293 		(struct wlan_objmgr_psoc *psoc,
294 		 struct target_psoc_info *tgt_info, uint8_t *event);
295 	void (*mesh_support_enable)
296 		(struct wlan_objmgr_psoc *psoc,
297 		 struct target_psoc_info *tgt_info, uint8_t *event);
298 	void (*smart_antenna_enable)
299 		(struct wlan_objmgr_psoc *psoc,
300 		 struct target_psoc_info *tgt_info, uint8_t *event);
301 	void (*atf_config_enable)
302 		(struct wlan_objmgr_psoc *psoc,
303 		 struct target_psoc_info *tgt_info, uint8_t *event);
304 	void (*btcoex_config_enable)
305 		(struct wlan_objmgr_psoc *psoc,
306 		 struct target_psoc_info *tgt_info, uint8_t *event);
307 	void (*lteu_ext_support_enable)
308 		(struct wlan_objmgr_psoc *psoc,
309 		 struct target_psoc_info *tgt_info, uint8_t *event);
310 	void (*set_init_cmd_dev_based_params)
311 		(struct wlan_objmgr_psoc *psoc,
312 		 struct target_psoc_info *tgt_info);
313 	QDF_STATUS (*alloc_pdevs)
314 		(struct wlan_objmgr_psoc *psoc,
315 		 struct target_psoc_info *tgt_info);
316 	QDF_STATUS (*update_pdev_tgt_info)
317 		(struct wlan_objmgr_psoc *psoc,
318 		 struct target_psoc_info *tgt_info);
319 	uint32_t (*mem_mgr_alloc_chunk)(struct wlan_objmgr_psoc *psoc,
320 		struct target_psoc_info *tgt_info,
321 		u_int32_t req_id, u_int32_t idx, u_int32_t num_units,
322 		u_int32_t unit_len, u_int32_t num_unit_info);
323 	QDF_STATUS (*mem_mgr_free_chunks)(struct wlan_objmgr_psoc *psoc,
324 			struct target_psoc_info *tgt_hdl);
325 	void (*print_svc_ready_ex_param)(
326 		 struct wlan_objmgr_psoc *psoc,
327 		 struct target_psoc_info *tgt_info);
328 	void (*add_11ax_modes)(
329 		 struct wlan_objmgr_psoc *psoc,
330 		 struct target_psoc_info *tgt_info);
331 	void (*set_default_tgt_config)(
332 		 struct wlan_objmgr_psoc *psoc,
333 		 struct target_psoc_info *tgt_info);
334 	QDF_STATUS (*sw_version_check)(
335 		 struct wlan_objmgr_psoc *psoc,
336 		 struct target_psoc_info *tgt_hdl,
337 		 uint8_t *evt_buf);
338 	void (*eapol_minrate_enable)
339 		(struct wlan_objmgr_psoc *psoc,
340 		 struct target_psoc_info *tgt_info, uint8_t *event);
341 	void (*cfr_support_enable)
342 		(struct wlan_objmgr_psoc *psoc,
343 		 struct target_psoc_info *tgt_info, uint8_t *event);
344 	void (*set_pktlog_checksum)
345 		(struct wlan_objmgr_pdev *pdev, uint32_t checksum);
346 	int (*csa_switch_count_status)(
347 		struct wlan_objmgr_psoc *psoc,
348 		struct pdev_csa_switch_count_status csa_status);
349 	void (*ema_init)(struct wlan_objmgr_pdev *pdev);
350 #if defined(WLAN_FEATURE_11BE_MLO) && defined(WLAN_MLO_MULTI_CHIP)
351 	bool (*mlo_capable)(struct wlan_objmgr_psoc *psoc);
352 	uint8_t (*mlo_get_group_id)(struct wlan_objmgr_psoc *psoc);
353 	void (*mlo_setup_done_event)(struct wlan_objmgr_psoc *psoc);
354 #endif
355 };
356 
357 /**
358  * struct target_psoc_info - target psoc information
359  * @hdls: component handles (htc/htt/wmi) sub structure
360  * @info: target related info sub structure
361  * @feature_ptr: stores legacy pointer or few driver specific structures
362  * @tif_ops: holds driver specific function pointers
363  */
364 struct target_psoc_info {
365 	struct comp_hdls hdls;
366 	struct tgt_info info;
367 	void *feature_ptr;
368 	struct target_ops *tif_ops;
369 };
370 
371 /**
372  * struct target_pdev_info - target pdev information
373  * @wmi_handle: WMI handle
374  * @accelerator_hdl: NSS offload/IPA handles
375  * @pdev_idx: pdev id (of FW)
376  * @phy_idx: phy id (of FW)
377  * @hw_link_id: Unique link id across SoC required in multi-soc ML
378  * @feature_ptr: stores legacy pointer or few driver specific structures
379  */
380 struct target_pdev_info {
381 	struct wmi_unified *wmi_handle;
382 	struct common_accelerator_handle *accelerator_hdl;
383 	int32_t pdev_idx;
384 	int32_t phy_idx;
385 #if defined(WLAN_FEATURE_11BE_MLO) && defined(WLAN_MLO_MULTI_CHIP)
386 	uint16_t hw_link_id;
387 #endif
388 	void *feature_ptr;
389 };
390 
391 /**
392  * struct target_mu_caps - max number of users per-PPDU for OFDMA/MU-MIMO
393  * @ofdma_dl: max users for Downlink OFDMA transmissions
394  * @ofdma_ul: max users for Uplink OFDMA transmissions
395  * @mumimo_dl: max users for Downlink MU-MIMO transmissions
396  * @mumimo_ul: max users for Uplink MU-MIMO transmissions
397  */
398 struct target_mu_caps {
399 	uint16_t ofdma_dl;
400 	uint16_t ofdma_ul;
401 	uint16_t mumimo_dl;
402 	uint16_t mumimo_ul;
403 };
404 
405 
406 /**
407  * target_if_init() - target_if Initialization
408  * @psoc_hdl_cb: function pointer to get wmi handle
409  *
410  * Return: QDF_STATUS
411  */
412 QDF_STATUS target_if_init(get_psoc_handle_callback psoc_hdl_cb);
413 
414 /**
415  * target_if_deinit() - Close target_if
416  *
417  * Return: QDF_STATUS_SUCCESS - in case of success
418  */
419 QDF_STATUS target_if_deinit(void);
420 
421 /**
422  * target_if_store_pdev_target_if_ctx() - stores objmgr pdev in target if ctx
423  * @pdev_hdl_cb: function pointer to get objmgr pdev
424  *
425  * Return: QDF_STATUS_SUCCESS - in case of success
426  */
427 QDF_STATUS target_if_store_pdev_target_if_ctx(
428 		get_pdev_handle_callback pdev_hdl_cb);
429 
430 /**
431  * target_if_get_ctx() - Get target if ctx
432  *
433  * Return: target if ctx
434  */
435 struct target_if_ctx *target_if_get_ctx(void);
436 
437 /**
438  * target_if_get_psoc_from_scn_hdl() - get psoc from scn handle
439  * @scn_handle: scn handle
440  *
441  * This API is generally used while processing wmi event.
442  * In wmi event SCN handle will be passed by wmi hence
443  * using this API we can get psoc from scn handle.
444  *
445  * Return: index for matching scn handle
446  */
447 struct wlan_objmgr_psoc *target_if_get_psoc_from_scn_hdl(void *scn_handle);
448 
449 /**
450  * target_if_get_pdev_from_scn_hdl() - get pdev from scn handle
451  * @scn_handle: scn handle
452  *
453  * This API is generally used while processing wmi event.
454  * In wmi event SCN handle will be passed by wmi hence
455  * using this API we can get pdev from scn handle.
456  *
457  * Return: pdev for matching scn handle
458  */
459 struct wlan_objmgr_pdev *target_if_get_pdev_from_scn_hdl(void *scn_handle);
460 
461 /**
462  * target_if_register_tx_ops() - register tx_ops
463  * @tx_ops: tx_ops structure
464  *
465  * This function is to be used by components to populate
466  * the OL function pointers (tx_ops) required by the component
467  * for UMAC-LMAC interaction, with the appropriate handler
468  *
469  * Return: QDF STATUS
470  */
471 QDF_STATUS target_if_register_tx_ops(struct wlan_lmac_if_tx_ops *tx_ops);
472 
473 /**
474  * target_if_get_psoc_legacy_service_ready_cb() - get psoc from scn handle
475  *
476  * This API is generally used while processing wmi event.
477  * In wmi event SCN handle will be passed by wmi hence
478  * using this API we can get psoc from scn handle.
479  *
480  * Return: wmi_legacy_service_ready_callback
481  */
482 wmi_legacy_service_ready_callback
483 		target_if_get_psoc_legacy_service_ready_cb(void);
484 
485 /**
486  * target_if_register_legacy_service_ready_cb() - get legacy
487  *                                       service ready handler from scn handle
488  *
489  * @service_ready_cb: function pointer to service ready callback
490  *
491  * Return: QDF Status
492  */
493 QDF_STATUS target_if_register_legacy_service_ready_cb(
494 	wmi_legacy_service_ready_callback service_ready_cb);
495 
496 /**
497  * target_if_alloc_pdev_tgt_info() - alloc pdev tgt info
498  * @pdev: pointer to pdev
499  *
500  * API to allocate memory for target_pdev_info
501  *
502  * Return: SUCCESS on successful memory allocation or Failure
503  */
504 QDF_STATUS target_if_alloc_pdev_tgt_info(struct wlan_objmgr_pdev *pdev);
505 
506 /**
507  * target_if_free_pdev_tgt_info() - free pdev tgt info
508  * @pdev: pointer to pdev
509  *
510  * API to free allocated memory for target_pdev_info
511  *
512  * Return: SUCCESS on successful memory deallocation or Failure
513  */
514 QDF_STATUS target_if_free_pdev_tgt_info(struct wlan_objmgr_pdev *pdev);
515 
516 /**
517  * target_if_alloc_psoc_tgt_info() - alloc psoc tgt info
518  * @psoc: pointer to psoc
519  *
520  * API to allocate memory for target_psoc_info
521  *
522  * Return: SUCCESS on successful memory allocation or Failure
523  */
524 QDF_STATUS target_if_alloc_psoc_tgt_info(struct wlan_objmgr_psoc *psoc);
525 
526 /**
527  * target_if_psoc_tgt_info_mem_free() - free memory which attached in
528  *                                      psoc tgt info
529  * @tgt_psoc_info: target psoc info object
530  *
531  * API to free allocated memory for target_psoc_info
532  *
533  * Return: SUCCESS on successful memory deallocation or Failure
534  */
535 QDF_STATUS target_if_psoc_tgt_info_mem_free(
536 		struct target_psoc_info *tgt_psoc_info);
537 
538 /**
539  * target_if_free_psoc_tgt_info() - free psoc tgt info
540  * @psoc: pointer to psoc
541  *
542  * API to free allocated memory for target_psoc_info
543  *
544  * Return: SUCCESS on successful memory deallocation or Failure
545  */
546 QDF_STATUS target_if_free_psoc_tgt_info(struct wlan_objmgr_psoc *psoc);
547 
548 /**
549  * target_is_tgt_type_ar900b() - Check if the target type is AR900B
550  * @target_type: target type to be checked.
551  *
552  * Return: true if the target_type is AR900B, else false.
553  */
554 bool target_is_tgt_type_ar900b(uint32_t target_type);
555 
556 /**
557  * target_is_tgt_type_qca9984() - Check if the target type is QCA9984
558  * @target_type: target type to be checked.
559  *
560  * Return: true if the target_type is QCA9984, else false.
561  */
562 bool target_is_tgt_type_qca9984(uint32_t target_type);
563 
564 /**
565  * target_is_tgt_type_qca9888() - Check if the target type is QCA9888
566  * @target_type: target type to be checked.
567  *
568  * Return: true if the target_type is QCA9888, else false.
569  */
570 bool target_is_tgt_type_qca9888(uint32_t target_type);
571 
572 /**
573  * target_is_tgt_type_adrastea() - Check if the target type is QCS40X
574  * @target_type: target type to be checked.
575  *
576  * Return: true if the target_type is QCS40X, else false.
577  */
578 bool target_is_tgt_type_adrastea(uint32_t target_type);
579 
580 /**
581  * target_is_tgt_type_qcn9000() - Check if the target type is QCN9000 (pine)
582  * @target_type: target type to be checked.
583  *
584  * Return: true if the target_type is QCN9000, else false.
585  */
586 bool target_is_tgt_type_qcn9000(uint32_t target_type);
587 
588 /**
589  * target_is_tgt_type_qcn6122() - Check if the target type is QCN6122 (Spruce)
590  * @target_type: target type to be checked.
591  *
592  * Return: true if the target_type is QCN6122, else false.
593  */
594 bool target_is_tgt_type_qcn6122(uint32_t target_type);
595 
596 /**
597  * target_is_tgt_type_qcn9160() - Check if the target type is QCN9160 (york)
598  * @target_type: target type to be checked.
599  *
600  * Return: true if the target_type is QCN9160, else false.
601  */
602 bool target_is_tgt_type_qcn9160(uint32_t target_type);
603 
604 /**
605  * target_is_tgt_type_qcn6432() - Check if the target type is QCN6432 (Pebble)
606  * @target_type: target type to be checked.
607  *
608  * Return: true if the target_type is QCN6432, else false.
609  */
610 bool target_is_tgt_type_qcn6432(uint32_t target_type);
611 
612 /**
613  * target_is_tgt_type_qcn7605() - Check if the target type is QCN7605
614  * @target_type: target type to be checked.
615  *
616  * Return: true if the target_type is QCN7605, else false.
617  */
618 bool target_is_tgt_type_qcn7605(uint32_t target_type);
619 
620 /**
621  * target_if_is_vdev_valid - vdev id is valid or not
622  * @vdev_id: vdev id
623  *
624  * Return: true or false
625  */
target_if_is_vdev_valid(uint8_t vdev_id)626 static inline bool target_if_is_vdev_valid(uint8_t vdev_id)
627 {
628 	return (vdev_id < WLAN_UMAC_PSOC_MAX_VDEVS ? true : false);
629 }
630 
631 /**
632  * target_psoc_set_wlan_init_status() - set info wlan_init_status
633  * @psoc_info:          pointer to structure target_psoc_info
634  * @wlan_init_status:   FW init status
635  *
636  * API to set wlan_init_status
637  *
638  * Return: void
639  */
target_psoc_set_wlan_init_status(struct target_psoc_info * psoc_info,uint32_t wlan_init_status)640 static inline void target_psoc_set_wlan_init_status
641 		(struct target_psoc_info *psoc_info, uint32_t wlan_init_status)
642 {
643 	if (!psoc_info)
644 		return;
645 
646 	psoc_info->info.wlan_init_status = wlan_init_status;
647 }
648 
649 #ifdef QCA_MULTIPASS_SUPPORT
650 /**
651  * target_is_multipass_sap() - Get multipass sap capabilities
652  * @psoc_info: pointer to structure target_psoc_info
653  *
654  * Return: True is FW support multipass SAP.
655  */
target_is_multipass_sap(struct target_psoc_info * psoc_info)656 static inline bool target_is_multipass_sap(struct target_psoc_info *psoc_info)
657 {
658 	return psoc_info->info.service_ext2_param.is_multipass_sap;
659 }
660 #else
target_is_multipass_sap(struct target_psoc_info * psoc_info)661 static inline bool target_is_multipass_sap(struct target_psoc_info *psoc_info)
662 {
663 	return false;
664 }
665 #endif
666 
667 /**
668  * target_psoc_get_wlan_init_status() - get info wlan_init_status
669  * @psoc_info:  pointer to structure target_psoc_info
670  *
671  * API to get wlan_init_status
672  *
673  * Return: uint32_t
674  */
target_psoc_get_wlan_init_status(struct target_psoc_info * psoc_info)675 static inline uint32_t target_psoc_get_wlan_init_status
676 		(struct target_psoc_info *psoc_info)
677 {
678 	if (!psoc_info)
679 		return (uint32_t)-1;
680 
681 	return psoc_info->info.wlan_init_status;
682 }
683 
684 /**
685  * target_psoc_set_target_type() - set info target_type
686  * @psoc_info:  pointer to structure target_psoc_info
687  * @target_type: Target type
688  *
689  * API to set target_type
690  *
691  * Return: void
692  */
target_psoc_set_target_type(struct target_psoc_info * psoc_info,uint32_t target_type)693 static inline void target_psoc_set_target_type
694 		(struct target_psoc_info *psoc_info, uint32_t target_type)
695 {
696 	if (!psoc_info)
697 		return;
698 
699 	psoc_info->info.target_type = target_type;
700 }
701 
702 /**
703  * target_psoc_get_target_type() - get info target_type
704  * @psoc_info:  pointer to structure target_psoc_info
705  *
706  * API to get target_type
707  *
708  * Return: unit32_t
709  */
target_psoc_get_target_type(struct target_psoc_info * psoc_info)710 static inline uint32_t target_psoc_get_target_type
711 		(struct target_psoc_info *psoc_info)
712 {
713 	if (!psoc_info)
714 		return (uint32_t)-1;
715 
716 	return psoc_info->info.target_type;
717 }
718 
719 /**
720  * target_psoc_set_max_descs() - set info max_descs
721  * @psoc_info:  pointer to structure target_psoc_info
722  * @max_descs:  Max descriptors
723  *
724  * API to set max_descs
725  *
726  * Return: void
727  */
target_psoc_set_max_descs(struct target_psoc_info * psoc_info,uint32_t max_descs)728 static inline void target_psoc_set_max_descs
729 		(struct target_psoc_info *psoc_info, uint32_t max_descs)
730 {
731 	if (!psoc_info)
732 		return;
733 
734 	psoc_info->info.max_descs = max_descs;
735 }
736 
737 /**
738  * target_psoc_get_max_descs() - get info max_descs
739  * @psoc_info:  pointer to structure target_psoc_info
740  *
741  * API to get max_descs
742  *
743  * Return: unint32_t
744  */
target_psoc_get_max_descs(struct target_psoc_info * psoc_info)745 static inline uint32_t target_psoc_get_max_descs
746 		(struct target_psoc_info *psoc_info)
747 {
748 	if (!psoc_info)
749 		return (uint32_t)-1;
750 
751 	return psoc_info->info.max_descs;
752 }
753 
754 /**
755  * target_psoc_set_wmi_service_ready() - set info wmi_service_ready
756  * @psoc_info:         pointer to structure target_psoc_info
757  * @wmi_service_ready: service ready flag
758  *
759  * API to set wmi_service_ready
760  *
761  * Return: void
762  */
target_psoc_set_wmi_service_ready(struct target_psoc_info * psoc_info,bool wmi_service_ready)763 static inline void target_psoc_set_wmi_service_ready
764 		(struct target_psoc_info *psoc_info, bool wmi_service_ready)
765 {
766 	if (!psoc_info)
767 		return;
768 
769 	psoc_info->info.wmi_service_ready = wmi_service_ready;
770 }
771 
772 /**
773  * target_psoc_get_wmi_service_ready() - get info wmi_service_ready
774  * @psoc_info:  pointer to structure target_psoc_info
775  *
776  * API to get wmi_service_ready
777  *
778  * Return: bool
779  */
target_psoc_get_wmi_service_ready(struct target_psoc_info * psoc_info)780 static inline bool target_psoc_get_wmi_service_ready
781 		(struct target_psoc_info *psoc_info)
782 {
783 	return psoc_info->info.wmi_service_ready;
784 }
785 
786 /**
787  * target_psoc_set_wmi_ready() - set info wmi_ready
788  * @psoc_info:  pointer to structure target_psoc_info
789  * @wmi_ready:  Ready event flag
790  *
791  * API to set wmi_ready
792  *
793  * Return: void
794  */
target_psoc_set_wmi_ready(struct target_psoc_info * psoc_info,bool wmi_ready)795 static inline void target_psoc_set_wmi_ready
796 		(struct target_psoc_info *psoc_info, bool wmi_ready)
797 {
798 	if (!psoc_info)
799 		return;
800 
801 	psoc_info->info.wmi_ready = wmi_ready;
802 }
803 
804 /**
805  * target_psoc_get_wmi_ready() - get info wmi_ready
806  * @psoc_info:  pointer to structure target_psoc_info
807  *
808  * API to get wmi_ready
809  *
810  * Return: bool
811  */
target_psoc_get_wmi_ready(struct target_psoc_info * psoc_info)812 static inline bool target_psoc_get_wmi_ready
813 		(struct target_psoc_info *psoc_info)
814 {
815 	return psoc_info->info.wmi_ready;
816 }
817 
818 /**
819  * target_psoc_set_preferred_hw_mode() - set preferred_hw_mode
820  * @psoc_info:  pointer to structure target_psoc_info
821  * @preferred_hw_mode: Preferred HW mode
822  *
823  * API to set preferred_hw_mode
824  *
825  * Return: void
826  */
target_psoc_set_preferred_hw_mode(struct target_psoc_info * psoc_info,uint32_t preferred_hw_mode)827 static inline void target_psoc_set_preferred_hw_mode(
828 		struct target_psoc_info *psoc_info, uint32_t preferred_hw_mode)
829 {
830 	if (!psoc_info)
831 		return;
832 
833 	psoc_info->info.preferred_hw_mode = preferred_hw_mode;
834 }
835 
836 /**
837  * target_psoc_get_preferred_hw_mode() - get preferred_hw_mode
838  * @psoc_info:  pointer to structure target_psoc_info
839  *
840  * API to get preferred_hw_mode
841  *
842  * Return: unint32_t
843  */
target_psoc_get_preferred_hw_mode(struct target_psoc_info * psoc_info)844 static inline uint32_t target_psoc_get_preferred_hw_mode
845 		(struct target_psoc_info *psoc_info)
846 {
847 	if (!psoc_info)
848 		return WMI_HOST_HW_MODE_MAX;
849 
850 	return psoc_info->info.preferred_hw_mode;
851 }
852 
853 /**
854  * target_psoc_get_supported_hw_modes() - get supported_hw_mode in target
855  * @psoc_info:  pointer to structure target_psoc_info
856  *
857  * API to get list of supported HW modes
858  *
859  * Return: pointer to target_supported_modes
860  */
target_psoc_get_supported_hw_modes(struct target_psoc_info * psoc_info)861 static inline struct target_supported_modes *target_psoc_get_supported_hw_modes
862 		(struct target_psoc_info *psoc_info)
863 {
864 	if (!psoc_info)
865 		return NULL;
866 
867 	return &psoc_info->info.hw_modes;
868 }
869 
870 /**
871  * target_psoc_set_wmi_timeout() - set wmi_timeout
872  * @psoc_info:  pointer to structure target_psoc_info
873  * @wmi_timeout: WMI timeout value in sec
874  *
875  * API to set wmi_timeout
876  *
877  * Return: void
878  */
target_psoc_set_wmi_timeout(struct target_psoc_info * psoc_info,uint32_t wmi_timeout)879 static inline void target_psoc_set_wmi_timeout
880 		(struct target_psoc_info *psoc_info, uint32_t wmi_timeout)
881 {
882 	if (!psoc_info)
883 		return;
884 
885 	psoc_info->info.wmi_timeout = wmi_timeout;
886 }
887 
888 /**
889  * target_psoc_get_wmi_timeout() - get wmi_timeout
890  * @psoc_info:  pointer to structure target_psoc_info
891  *
892  * API to get wmi_timeout
893  *
894  * Return: unint32_t
895  */
target_psoc_get_wmi_timeout(struct target_psoc_info * psoc_info)896 static inline uint32_t target_psoc_get_wmi_timeout
897 		(struct target_psoc_info *psoc_info)
898 {
899 	if (!psoc_info)
900 		return (uint32_t)-1;
901 
902 	return psoc_info->info.wmi_timeout;
903 }
904 
905 /**
906  * target_psoc_set_total_mac_phy_cnt() - set total_mac_phy
907  * @psoc_info:  pointer to structure target_psoc_infoa
908  * @total_mac_phy_cnt: Total MAC PHY cnt
909  *
910  * API to set total_mac_phy
911  *
912  * Return: void
913  */
target_psoc_set_total_mac_phy_cnt(struct target_psoc_info * psoc_info,uint8_t total_mac_phy_cnt)914 static inline void target_psoc_set_total_mac_phy_cnt
915 		(struct target_psoc_info *psoc_info, uint8_t total_mac_phy_cnt)
916 {
917 	if (!psoc_info)
918 		return;
919 
920 	psoc_info->info.total_mac_phy_cnt = total_mac_phy_cnt;
921 }
922 
923 /**
924  * target_psoc_get_total_mac_phy_cnt() - get total_mac_phy
925  * @psoc_info:  pointer to structure target_psoc_info
926  *
927  * API to get total_mac_phy
928  *
929  * Return: unint8_t
930  */
target_psoc_get_total_mac_phy_cnt(struct target_psoc_info * psoc_info)931 static inline uint8_t target_psoc_get_total_mac_phy_cnt(
932 		struct target_psoc_info *psoc_info)
933 {
934 	if (!psoc_info)
935 		return 0;
936 
937 	return psoc_info->info.total_mac_phy_cnt;
938 }
939 
940 /**
941  * target_psoc_set_num_radios() - set num of radios
942  * @psoc_info:  pointer to structure target_psoc_info
943  * @num_radios: Number of radios
944  *
945  * API to set number of radios
946  *
947  * Return: number of radios
948  */
target_psoc_set_num_radios(struct target_psoc_info * psoc_info,uint8_t num_radios)949 static inline void target_psoc_set_num_radios(
950 		struct target_psoc_info *psoc_info, uint8_t num_radios)
951 {
952 	if (!psoc_info)
953 		return;
954 
955 	psoc_info->info.num_radios = num_radios;
956 }
957 
958 /**
959  * target_psoc_set_pdev_id_to_phy_id_map() - set pdev to phy id mapping
960  * @psoc_info:  pointer to structure target_psoc_info
961  * @phy_id_map: phy_id
962  *
963  * API to set pdev id to phy id mapping
964  *
965  * Return: void
966  */
target_psoc_set_pdev_id_to_phy_id_map(struct target_psoc_info * psoc_info,uint8_t * phy_id_map)967 static inline void target_psoc_set_pdev_id_to_phy_id_map(
968 		struct target_psoc_info *psoc_info,
969 		uint8_t *phy_id_map)
970 {
971 	if (!psoc_info)
972 		return;
973 
974 	psoc_info->info.is_pdevid_to_phyid_map = true;
975 	qdf_mem_copy(psoc_info->info.pdev_id_to_phy_id_map, phy_id_map,
976 		     PSOC_MAX_PHY_REG_CAP);
977 }
978 
979 /**
980  * target_psoc_get_num_radios() - get number of radios
981  * @psoc_info:  pointer to structure target_psoc_info
982  *
983  * API to get number_of_radios
984  *
985  * Return: number of radios
986  */
target_psoc_get_num_radios(struct target_psoc_info * psoc_info)987 static inline uint8_t target_psoc_get_num_radios
988 		(struct target_psoc_info *psoc_info)
989 {
990 	if (!psoc_info)
991 		return 0;
992 
993 	return psoc_info->info.num_radios;
994 }
995 
996 /**
997  * target_psoc_get_num_radios_for_mode() - get number of radios for a hw-mode
998  * @psoc_info:  pointer to structure target_psoc_info
999  * @mode: hardware mode
1000  *
1001  * API to get number_of_radios for a HW mode
1002  *
1003  * Return: number of radios
1004  */
1005 
target_psoc_get_num_radios_for_mode(struct target_psoc_info * psoc_info,uint8_t mode)1006 static inline uint8_t target_psoc_get_num_radios_for_mode
1007 		(struct target_psoc_info *psoc_info, uint8_t mode)
1008 {
1009 	uint8_t mac_phy_count;
1010 	uint8_t num_radios = 0;
1011 	struct tgt_info *info = &psoc_info->info;
1012 
1013 	if (!psoc_info)
1014 		return 0;
1015 
1016 	for (mac_phy_count = 0;
1017 		mac_phy_count < target_psoc_get_total_mac_phy_cnt(psoc_info);
1018 		mac_phy_count++) {
1019 		num_radios +=
1020 		(info->mac_phy_cap[mac_phy_count].hw_mode_id == mode);
1021 	}
1022 
1023 	return num_radios;
1024 }
1025 
1026 /**
1027  * target_psoc_set_service_bitmap() - set service_bitmap
1028  * @psoc_info:  pointer to structure target_psoc_info
1029  * @service_bitmap: FW service bitmap
1030  *
1031  * API to set service_bitmap
1032  *
1033  * Return: void
1034  */
target_psoc_set_service_bitmap(struct target_psoc_info * psoc_info,uint32_t * service_bitmap)1035 static inline void target_psoc_set_service_bitmap
1036 		(struct target_psoc_info *psoc_info, uint32_t *service_bitmap)
1037 {
1038 	qdf_mem_copy(psoc_info->info.service_bitmap, service_bitmap,
1039 			sizeof(psoc_info->info.service_bitmap));
1040 }
1041 
1042 /**
1043  * target_psoc_get_service_bitmap() - get service_bitmap
1044  * @psoc_info:  pointer to structure target_psoc_info
1045  *
1046  * API to get service_bitmap
1047  *
1048  * Return: unint32_t
1049  */
target_psoc_get_service_bitmap(struct target_psoc_info * psoc_info)1050 static inline uint32_t *target_psoc_get_service_bitmap
1051 		(struct target_psoc_info *psoc_info)
1052 {
1053 	return psoc_info->info.service_bitmap;
1054 }
1055 
1056 /**
1057  * target_psoc_set_num_mem_chunks() - set num_mem_chunks
1058  * @psoc_info:  pointer to structure target_psoc_info
1059  * @num_mem_chunks: Num Memory chunks allocated for FW
1060  *
1061  * API to set num_mem_chunks
1062  *
1063  * Return: void
1064  */
target_psoc_set_num_mem_chunks(struct target_psoc_info * psoc_info,uint32_t num_mem_chunks)1065 static inline void target_psoc_set_num_mem_chunks(
1066 		struct target_psoc_info *psoc_info, uint32_t num_mem_chunks)
1067 {
1068 	if (!psoc_info)
1069 		return;
1070 	psoc_info->info.num_mem_chunks = num_mem_chunks;
1071 }
1072 
1073 /**
1074  * target_psoc_get_num_mem_chunks() - get num_mem_chunks
1075  * @psoc_info:  pointer to structure target_psoc_info
1076  *
1077  * API to get total_mac_phy
1078  *
1079  * Return: unint8_t
1080  */
target_psoc_get_num_mem_chunks(struct target_psoc_info * psoc_info)1081 static inline uint32_t target_psoc_get_num_mem_chunks
1082 		(struct target_psoc_info *psoc_info)
1083 {
1084 	if (!psoc_info)
1085 		return (uint32_t)-1;
1086 
1087 	return psoc_info->info.num_mem_chunks;
1088 }
1089 
1090 /**
1091  * target_psoc_set_hif_hdl() - set hif_hdl
1092  * @psoc_info:  pointer to structure target_psoc_info
1093  * @hif_hdl:    HIF handle
1094  *
1095  * API to set hif_hdl
1096  *
1097  * Return: void
1098  */
target_psoc_set_hif_hdl(struct target_psoc_info * psoc_info,struct hif_opaque_softc * hif_hdl)1099 static inline void target_psoc_set_hif_hdl
1100 		(struct target_psoc_info *psoc_info,
1101 		 struct hif_opaque_softc *hif_hdl)
1102 {
1103 	if (!psoc_info)
1104 		return;
1105 
1106 	psoc_info->hdls.hif_hdl = hif_hdl;
1107 }
1108 
1109 /**
1110  * target_psoc_get_hif_hdl() - get hif_hdl
1111  * @psoc_info:  pointer to structure target_psoc_info
1112  *
1113  * API to get hif_hdl
1114  *
1115  * Return: hif_hdl
1116  */
target_psoc_get_hif_hdl(struct target_psoc_info * psoc_info)1117 static inline struct hif_opaque_softc *target_psoc_get_hif_hdl
1118 		(struct target_psoc_info *psoc_info)
1119 {
1120 	if (!psoc_info)
1121 		return NULL;
1122 
1123 	return psoc_info->hdls.hif_hdl;
1124 }
1125 
1126 /**
1127  * target_psoc_set_htc_hdl() - set htc_hdl
1128  * @psoc_info:  pointer to structure target_psoc_info
1129  * @htc_hdl:    HTC handle
1130  *
1131  * API to set htc_hdl
1132  *
1133  * Return: void
1134  */
target_psoc_set_htc_hdl(struct target_psoc_info * psoc_info,HTC_HANDLE htc_hdl)1135 static inline void target_psoc_set_htc_hdl(
1136 		struct target_psoc_info *psoc_info,
1137 		HTC_HANDLE htc_hdl)
1138 {
1139 	if (!psoc_info)
1140 		return;
1141 
1142 	psoc_info->hdls.htc_hdl = htc_hdl;
1143 }
1144 
1145 /**
1146  * target_psoc_get_htc_hdl() - get htc_hdl
1147  * @psoc_info:  pointer to structure target_psoc_info
1148  *
1149  * API to get htc_hdl
1150  *
1151  * Return: htc_hdl
1152  */
target_psoc_get_htc_hdl(struct target_psoc_info * psoc_info)1153 static inline HTC_HANDLE target_psoc_get_htc_hdl
1154 		(struct target_psoc_info *psoc_info)
1155 {
1156 	if (!psoc_info)
1157 		return NULL;
1158 
1159 	return psoc_info->hdls.htc_hdl;
1160 }
1161 
1162 /**
1163  * target_psoc_set_wmi_hdl() - set wmi_hdl
1164  * @psoc_info:  pointer to structure target_psoc_info
1165  * @wmi_hdl:    WMI handle
1166  *
1167  * API to set wmi_hdl
1168  *
1169  * Return: void
1170  */
target_psoc_set_wmi_hdl(struct target_psoc_info * psoc_info,struct wmi_unified * wmi_hdl)1171 static inline void target_psoc_set_wmi_hdl
1172 		(struct target_psoc_info *psoc_info,
1173 		 struct wmi_unified *wmi_hdl)
1174 {
1175 	if (!psoc_info)
1176 		return;
1177 
1178 	psoc_info->hdls.wmi_hdl = wmi_hdl;
1179 }
1180 
1181 /**
1182  * target_psoc_get_wmi_hdl() - get wmi_hdl
1183  * @psoc_info:  pointer to structure target_psoc_info
1184  *
1185  * API to get wmi_hdl
1186  *
1187  * Return: wmi_hdl
1188  */
target_psoc_get_wmi_hdl(struct target_psoc_info * psoc_info)1189 static inline struct wmi_unified *target_psoc_get_wmi_hdl
1190 		(struct target_psoc_info *psoc_info)
1191 {
1192 	if (!psoc_info)
1193 		return NULL;
1194 
1195 	return psoc_info->hdls.wmi_hdl;
1196 }
1197 
1198 /**
1199  * target_psoc_set_accelerator_hdl() - set accelerator_hdl
1200  * @psoc_info:  pointer to structure target_psoc_info
1201  * @accelerator_hdl: Accelator handle
1202  *
1203  * API to set accelerator_hdl
1204  *
1205  * Return: void
1206  */
target_psoc_set_accelerator_hdl(struct target_psoc_info * psoc_info,struct common_accelerator_handle * accelerator_hdl)1207 static inline void target_psoc_set_accelerator_hdl
1208 		(struct target_psoc_info *psoc_info,
1209 		 struct common_accelerator_handle *accelerator_hdl)
1210 {
1211 	if (!psoc_info)
1212 		return;
1213 
1214 	psoc_info->hdls.accelerator_hdl = accelerator_hdl;
1215 }
1216 
1217 /**
1218  * target_psoc_get_accelerator_hdl() - get accelerator_hdl
1219  * @psoc_info:  pointer to structure target_psoc_info
1220  *
1221  * API to get accelerator_hdl
1222  *
1223  * Return: accelerator_hdl
1224  */
1225 static inline
target_psoc_get_accelerator_hdl(struct target_psoc_info * psoc_info)1226 struct common_accelerator_handle *target_psoc_get_accelerator_hdl
1227 		(struct target_psoc_info *psoc_info)
1228 {
1229 	if (!psoc_info)
1230 		return NULL;
1231 
1232 	return psoc_info->hdls.accelerator_hdl;
1233 }
1234 
1235 /**
1236  * target_psoc_set_feature_ptr() - set feature_ptr
1237  * @psoc_info:  pointer to structure target_psoc_info
1238  * @feature_ptr: set feature pointer
1239  *
1240  * API to set feature_ptr
1241  *
1242  * Return: void
1243  */
target_psoc_set_feature_ptr(struct target_psoc_info * psoc_info,void * feature_ptr)1244 static inline void target_psoc_set_feature_ptr
1245 		(struct target_psoc_info *psoc_info, void *feature_ptr)
1246 {
1247 	if (!psoc_info)
1248 		return;
1249 
1250 	psoc_info->feature_ptr = feature_ptr;
1251 }
1252 
1253 /**
1254  * target_psoc_get_feature_ptr() - get feature_ptr
1255  * @psoc_info:  pointer to structure target_psoc_info
1256  *
1257  * API to get feature_ptr
1258  *
1259  * Return: feature_ptr
1260  */
target_psoc_get_feature_ptr(struct target_psoc_info * psoc_info)1261 static inline void *target_psoc_get_feature_ptr
1262 		(struct target_psoc_info *psoc_info)
1263 {
1264 	if (!psoc_info)
1265 		return NULL;
1266 
1267 	return psoc_info->feature_ptr;
1268 }
1269 
1270 /**
1271  * target_psoc_get_version()- get host_fw_ver version
1272  * @psoc_info:  pointer to structure target_psoc_info
1273  *
1274  * API to get host_fw_ver version
1275  *
1276  * Return: void
1277  */
target_psoc_get_version(struct target_psoc_info * psoc_info)1278 static inline struct host_fw_ver *target_psoc_get_version
1279 		(struct target_psoc_info *psoc_info)
1280 {
1281 	return &psoc_info->info.version;
1282 }
1283 
1284 /**
1285  * target_psoc_get_target_ver()- get target version
1286  * @psoc_info:  pointer to structure target_psoc_info
1287  *
1288  * API to get target version
1289  *
1290  * Return: target version
1291  */
target_psoc_get_target_ver(struct target_psoc_info * psoc_info)1292 static inline uint32_t target_psoc_get_target_ver
1293 		(struct target_psoc_info *psoc_info)
1294 {
1295 	return psoc_info->info.version.target_ver;
1296 }
1297 
1298 /**
1299  * target_psoc_set_target_ver()- set target version
1300  * @psoc_info:  pointer to structure target_psoc_info
1301  * @target_ver: Target version
1302  *
1303  * API to set target version
1304  *
1305  * Return: void
1306  */
target_psoc_set_target_ver(struct target_psoc_info * psoc_info,uint32_t target_ver)1307 static inline void target_psoc_set_target_ver
1308 		(struct target_psoc_info *psoc_info, uint32_t target_ver)
1309 {
1310 	if (!psoc_info)
1311 		return;
1312 
1313 	psoc_info->info.version.target_ver = target_ver;
1314 }
1315 
1316 /**
1317  * target_psoc_set_target_rev()- set target revision
1318  * @psoc_info:  pointer to structure target_psoc_info
1319  * @target_rev: Target revision
1320  *
1321  * API to get target version
1322  *
1323  * Return: void
1324  */
target_psoc_set_target_rev(struct target_psoc_info * psoc_info,uint32_t target_rev)1325 static inline void target_psoc_set_target_rev
1326 		(struct target_psoc_info *psoc_info, uint32_t target_rev)
1327 {
1328 	if (!psoc_info)
1329 		return;
1330 
1331 	psoc_info->info.version.target_rev = target_rev;
1332 }
1333 
1334 /**
1335  * target_psoc_get_target_rev()- get target revision
1336  * @psoc_info:  pointer to structure target_psoc_info
1337  *
1338  * API to get target revision
1339  *
1340  * Return: target revision
1341  */
target_psoc_get_target_rev(struct target_psoc_info * psoc_info)1342 static inline uint32_t target_psoc_get_target_rev
1343 		(struct target_psoc_info *psoc_info)
1344 {
1345 	return psoc_info->info.version.target_rev;
1346 }
1347 
1348 /**
1349  * target_psoc_set_dbglog_hdl() - set dbglog_hdl
1350  * @psoc_info:  pointer to structure target_psoc_info
1351  * @dbglog_hdl:    dbglog handle
1352  *
1353  * API to set dbglog_hdl
1354  *
1355  * Return: void
1356  */
target_psoc_set_dbglog_hdl(struct target_psoc_info * psoc_info,struct common_dbglog_handle * dbglog_hdl)1357 static inline void target_psoc_set_dbglog_hdl
1358 		(struct target_psoc_info *psoc_info,
1359 		 struct common_dbglog_handle *dbglog_hdl)
1360 {
1361 	if (!psoc_info)
1362 		return;
1363 
1364 	psoc_info->hdls.dbglog_hdl = dbglog_hdl;
1365 }
1366 
1367 /**
1368  * target_psoc_get_dbglog_hdl() - get dbglog_hdl
1369  * @psoc_info:  pointer to structure target_psoc_info
1370  *
1371  * API to get dbglog_hdl
1372  *
1373  * Return: dbglog_hdl
1374  */
target_psoc_get_dbglog_hdl(struct target_psoc_info * psoc_info)1375 static inline struct common_dbglog_handle *target_psoc_get_dbglog_hdl
1376 		(struct target_psoc_info *psoc_info)
1377 {
1378 	if (!psoc_info)
1379 		return NULL;
1380 
1381 	return psoc_info->hdls.dbglog_hdl;
1382 }
1383 
1384 /**
1385  * target_psoc_get_wlan_res_cfg() - get wlan_res_cfg
1386  * @psoc_info:  pointer to structure target_psoc_info
1387  *
1388  * API to get wlan_res_cfg
1389  *
1390  * Return: structure pointer to host_fw_ver
1391  */
target_psoc_get_wlan_res_cfg(struct target_psoc_info * psoc_info)1392 static inline target_resource_config *target_psoc_get_wlan_res_cfg
1393 		(struct target_psoc_info *psoc_info)
1394 {
1395 	if (!psoc_info)
1396 		return NULL;
1397 
1398 	return &psoc_info->info.wlan_res_cfg;
1399 }
1400 
1401 /**
1402  * target_psoc_get_wlan_ext_res_cfg() - get wlan_ext_res_cfg
1403  * @psoc_info:  pointer to structure target_psoc_info
1404  *
1405  * API to get wlan_ext_res_cfg
1406  *
1407  * Return: structure pointer to wmi_host_ext_resource_config
1408  */
target_psoc_get_wlan_ext_res_cfg(struct target_psoc_info * psoc_info)1409 static inline wmi_host_ext_resource_config *target_psoc_get_wlan_ext_res_cfg
1410 		(struct target_psoc_info *psoc_info)
1411 {
1412 	if (!psoc_info)
1413 		return NULL;
1414 
1415 	return &psoc_info->info.wlan_ext_res_cfg;
1416 }
1417 
1418 /**
1419  * target_psoc_get_event() - get event queue
1420  * @psoc_info:  pointer to structure target_psoc_info
1421  *
1422  * API to get event_queue
1423  *
1424  * Return: structure pointer to qdf_wait_queue_head_t
1425  */
target_psoc_get_event(struct target_psoc_info * psoc_info)1426 static inline qdf_event_t *target_psoc_get_event
1427 		(struct target_psoc_info *psoc_info)
1428 {
1429 	if (!psoc_info)
1430 		return NULL;
1431 
1432 	return &psoc_info->info.event;
1433 }
1434 
1435 /**
1436  * target_psoc_get_target_caps() - get target_caps
1437  * @psoc_info:  pointer to structure target_psoc_info
1438  *
1439  * API to get target_caps
1440  *
1441  * Return: structure pointer to wlan_psoc_target_capability_info
1442  */
1443 static inline struct wlan_psoc_target_capability_info
target_psoc_get_target_caps(struct target_psoc_info * psoc_info)1444 		*target_psoc_get_target_caps(struct target_psoc_info *psoc_info)
1445 {
1446 	if (!psoc_info)
1447 		return NULL;
1448 
1449 	return &psoc_info->info.target_caps;
1450 }
1451 
1452 /**
1453  * target_psoc_get_service_ext_param() - get service_ext_param
1454  * @psoc_info:  pointer to structure target_psoc_info
1455  *
1456  * API to get service_ext_param
1457  *
1458  * Return: structure pointer to wlan_psoc_host_service_ext_param
1459  */
1460 static inline struct wlan_psoc_host_service_ext_param
target_psoc_get_service_ext_param(struct target_psoc_info * psoc_info)1461 		*target_psoc_get_service_ext_param
1462 		(struct target_psoc_info *psoc_info)
1463 {
1464 	if (!psoc_info)
1465 		return NULL;
1466 
1467 	return &psoc_info->info.service_ext_param;
1468 }
1469 
1470 /**
1471  * target_psoc_get_service_ext2_param() - get service_ext2_param
1472  * @psoc_info:  pointer to structure target_psoc_info
1473  *
1474  * API to get service_ext2_param
1475  *
1476  * Return: structure pointer to wlan_psoc_host_service_ext2_param
1477  */
1478 static inline struct wlan_psoc_host_service_ext2_param
target_psoc_get_service_ext2_param(struct target_psoc_info * psoc_info)1479 		*target_psoc_get_service_ext2_param
1480 		(struct target_psoc_info *psoc_info)
1481 {
1482 	if (!psoc_info)
1483 		return NULL;
1484 
1485 	return &psoc_info->info.service_ext2_param;
1486 }
1487 
1488 /**
1489  * target_psoc_get_num_dbr_ring_caps() - get no of dbr_ring_caps
1490  * @psoc_info:  pointer to structure target_psoc_info
1491  *
1492  * API to get num_dbr_ring_caps
1493  *
1494  * Return: no of dbr_ring_caps
1495  */
target_psoc_get_num_dbr_ring_caps(struct target_psoc_info * psoc_info)1496 static inline uint32_t target_psoc_get_num_dbr_ring_caps
1497 		(struct target_psoc_info *psoc_info)
1498 {
1499 	if (!psoc_info)
1500 		return 0;
1501 
1502 	if (psoc_info->info.service_ext_param.num_dbr_ring_caps)
1503 		return psoc_info->info.service_ext_param.num_dbr_ring_caps;
1504 
1505 	return psoc_info->info.service_ext2_param.num_dbr_ring_caps;
1506 }
1507 
1508 /**
1509  * target_psoc_get_aoa_caps() - get aoa_caps
1510  * @psoc_info:  pointer to structure target_psoc_info
1511  *
1512  * API to get aoa_caps
1513  *
1514  * Return: structure pointer to wlan_psoc_host_rcc_enh_aoa_caps_ext2
1515  */
1516 #ifdef WLAN_RCC_ENHANCED_AOA_SUPPORT
1517 static inline
target_psoc_get_aoa_caps(struct target_psoc_info * psoc_info)1518 struct wlan_psoc_host_rcc_enh_aoa_caps_ext2 *target_psoc_get_aoa_caps
1519 		(struct target_psoc_info *psoc_info)
1520 {
1521 	if (!psoc_info)
1522 		return NULL;
1523 
1524 	return psoc_info->info.aoa_caps;
1525 }
1526 #endif /* WLAN_RCC_ENHANCED_AOA_SUPPORT */
1527 
1528 /**
1529  * target_psoc_get_num_scan_radio_caps() - get no of scan_radio_caps
1530  * @psoc_info:  pointer to structure target_psoc_info
1531  *
1532  * API to get num_scan_radio_caps
1533  *
1534  * Return: no of scan_radio_caps
1535  */
target_psoc_get_num_scan_radio_caps(struct target_psoc_info * psoc_info)1536 static inline uint32_t target_psoc_get_num_scan_radio_caps
1537 		(struct target_psoc_info *psoc_info)
1538 {
1539 	if (!psoc_info)
1540 		return 0;
1541 
1542 	return psoc_info->info.service_ext2_param.num_scan_radio_caps;
1543 }
1544 
1545 /**
1546  * target_psoc_get_mac_phy_cap_for_mode() - get mac_phy_cap for a hw-mode
1547  * @psoc_info:  pointer to structure target_psoc_info
1548  * @mode: hardware mode
1549  *
1550  * API to get mac_phy_cap for a specified hw-mode
1551  *
1552  * Return: structure pointer to wlan_psoc_host_mac_phy_caps
1553  */
1554 
1555 static inline struct wlan_psoc_host_mac_phy_caps
target_psoc_get_mac_phy_cap_for_mode(struct target_psoc_info * psoc_info,uint8_t mode)1556 		*target_psoc_get_mac_phy_cap_for_mode
1557 		(struct target_psoc_info *psoc_info, uint8_t mode)
1558 {
1559 	uint8_t mac_phy_idx;
1560 	struct tgt_info *info = &psoc_info->info;
1561 
1562 	if (!psoc_info)
1563 		return NULL;
1564 
1565 	for (mac_phy_idx = 0;
1566 		mac_phy_idx < PSOC_MAX_MAC_PHY_CAP;
1567 			mac_phy_idx++)
1568 		if (info->mac_phy_cap[mac_phy_idx].hw_mode_id == mode)
1569 			break;
1570 
1571 	if (mac_phy_idx == PSOC_MAX_MAC_PHY_CAP)
1572 		return NULL;
1573 
1574 	return &info->mac_phy_cap[mac_phy_idx];
1575 }
1576 
1577 /**
1578  * target_psoc_get_mac_phy_cap_ext2_for_mode() - get mac_phy_caps_ext2
1579  *                                               for a hw-mode
1580  * @psoc_info:  pointer to structure target_psoc_info
1581  * @mode: hw mode
1582  *
1583  * API to get mac_phy_cap for a specified hw-mode
1584  *
1585  * Return: structure pointer to wlan_psoc_host_mac_phy_caps_ext2
1586  */
1587 
1588 static inline struct wlan_psoc_host_mac_phy_caps_ext2
target_psoc_get_mac_phy_cap_ext2_for_mode(struct target_psoc_info * psoc_info,uint8_t mode)1589 		*target_psoc_get_mac_phy_cap_ext2_for_mode
1590 		(struct target_psoc_info *psoc_info, uint8_t mode)
1591 {
1592 	uint8_t mac_phy_idx;
1593 	struct tgt_info *info = &psoc_info->info;
1594 
1595 	if (!psoc_info)
1596 		return NULL;
1597 
1598 	for (mac_phy_idx = 0;
1599 		mac_phy_idx < PSOC_MAX_MAC_PHY_CAP;
1600 			mac_phy_idx++)
1601 		if (info->mac_phy_caps_ext2[mac_phy_idx].hw_mode_id == mode)
1602 			break;
1603 
1604 	if (mac_phy_idx == PSOC_MAX_MAC_PHY_CAP)
1605 		return NULL;
1606 
1607 	return &info->mac_phy_caps_ext2[mac_phy_idx];
1608 }
1609 
1610 /**
1611  * target_psoc_get_mac_phy_cap() - get mac_phy_cap
1612  * @psoc_info:  pointer to structure target_psoc_info
1613  *
1614  * API to get mac_phy_cap
1615  *
1616  * Return: structure pointer to wlan_psoc_host_mac_phy_caps
1617  */
target_psoc_get_mac_phy_cap(struct target_psoc_info * psoc_info)1618 static inline struct wlan_psoc_host_mac_phy_caps *target_psoc_get_mac_phy_cap
1619 		(struct target_psoc_info *psoc_info)
1620 {
1621 	uint32_t preferred_hw_mode;
1622 	struct wlan_psoc_host_mac_phy_caps *mac_phy_cap;
1623 
1624 	if (!psoc_info)
1625 		return NULL;
1626 
1627 	preferred_hw_mode =
1628 		target_psoc_get_preferred_hw_mode(psoc_info);
1629 
1630 	if (preferred_hw_mode < WMI_HOST_HW_MODE_MAX) {
1631 		mac_phy_cap =
1632 			target_psoc_get_mac_phy_cap_for_mode
1633 			(psoc_info, preferred_hw_mode);
1634 	} else {
1635 		mac_phy_cap = psoc_info->info.mac_phy_cap;
1636 	}
1637 
1638 	return mac_phy_cap;
1639 }
1640 
1641 /**
1642  * target_psoc_get_mac_phy_cap_ext2() - get mac_phy_caps_ext2
1643  * @psoc_info:  pointer to structure target_psoc_info
1644  *
1645  * API to get mac_phy_caps_ext2
1646  *
1647  * Return: structure pointer to wlan_psoc_host_mac_phy_caps
1648  */
1649 static inline struct wlan_psoc_host_mac_phy_caps_ext2
target_psoc_get_mac_phy_cap_ext2(struct target_psoc_info * psoc_info)1650 		*target_psoc_get_mac_phy_cap_ext2
1651 		(struct target_psoc_info *psoc_info)
1652 {
1653 	uint32_t preferred_hw_mode;
1654 	struct wlan_psoc_host_mac_phy_caps_ext2 *mac_phy_caps_ext2;
1655 
1656 	if (!psoc_info)
1657 		return NULL;
1658 
1659 	preferred_hw_mode =
1660 		target_psoc_get_preferred_hw_mode(psoc_info);
1661 
1662 	if (preferred_hw_mode < WMI_HOST_HW_MODE_MAX) {
1663 		mac_phy_caps_ext2 =
1664 			target_psoc_get_mac_phy_cap_ext2_for_mode
1665 			(psoc_info, preferred_hw_mode);
1666 	} else {
1667 		mac_phy_caps_ext2 = psoc_info->info.mac_phy_caps_ext2;
1668 	}
1669 
1670 	return mac_phy_caps_ext2;
1671 }
1672 
1673 /**
1674  * target_psoc_get_dbr_ring_caps() - get dbr_ring_cap
1675  * @psoc_info:  pointer to structure target_psoc_info
1676  *
1677  * API to get dbr_ring_cap
1678  *
1679  * Return: structure pointer to wlan_psoc_host_dbr_ring_caps
1680  */
1681 static inline struct wlan_psoc_host_dbr_ring_caps
target_psoc_get_dbr_ring_caps(struct target_psoc_info * psoc_info)1682 	*target_psoc_get_dbr_ring_caps(struct target_psoc_info *psoc_info)
1683 {
1684 	if (!psoc_info)
1685 		return NULL;
1686 
1687 	return psoc_info->info.dbr_ring_cap;
1688 }
1689 
1690 /**
1691  * target_psoc_get_scan_radio_caps() - get scan_radio_cap
1692  * @psoc_info:  pointer to structure target_psoc_info
1693  *
1694  * API to get scan_radio_cap
1695  *
1696  * Return: structure pointer to wlan_psoc_host_scan_radio_caps
1697  */
1698 static inline struct wlan_psoc_host_scan_radio_caps
target_psoc_get_scan_radio_caps(struct target_psoc_info * psoc_info)1699 	*target_psoc_get_scan_radio_caps(struct target_psoc_info *psoc_info)
1700 {
1701 	if (!psoc_info)
1702 		return NULL;
1703 
1704 	return psoc_info->info.scan_radio_caps;
1705 }
1706 
1707 /**
1708  * target_psoc_get_spectral_scaling_params() - get Spectral scaling params
1709  * @psoc_info:  pointer to structure target_psoc_info
1710  *
1711  * API to get Spectral scaling params
1712  *
1713  * Return: structure pointer to wlan_psoc_host_spectral_scaling_params
1714  */
1715 static inline struct wlan_psoc_host_spectral_scaling_params
target_psoc_get_spectral_scaling_params(struct target_psoc_info * psoc_info)1716 		*target_psoc_get_spectral_scaling_params(
1717 		struct target_psoc_info *psoc_info)
1718 {
1719 	if (!psoc_info)
1720 		return NULL;
1721 
1722 	return psoc_info->info.scaling_params;
1723 }
1724 
1725 /**
1726  * target_psoc_get_mem_chunks() - get mem_chunks
1727  * @psoc_info:  pointer to structure target_psoc_info
1728  *
1729  * API to get mem_chunks
1730  *
1731  * Return: structure pointer to wmi_host_mem_chunk
1732  */
target_psoc_get_mem_chunks(struct target_psoc_info * psoc_info)1733 static inline struct wmi_host_mem_chunk *target_psoc_get_mem_chunks
1734 		(struct target_psoc_info *psoc_info)
1735 {
1736 	if (!psoc_info)
1737 		return NULL;
1738 
1739 	return psoc_info->info.mem_chunks;
1740 }
1741 
1742 /**
1743  * target_psoc_get_tif_ops() - get tif_ops
1744  * @psoc_info:  pointer to structure target_psoc_info
1745  *
1746  * API to get tif_ops
1747  *
1748  * Return: structure pointer to target_ops
1749  */
target_psoc_get_tif_ops(struct target_psoc_info * psoc_info)1750 static inline struct target_ops *target_psoc_get_tif_ops
1751 		(struct target_psoc_info *psoc_info)
1752 {
1753 	if (!psoc_info)
1754 		return NULL;
1755 
1756 	return psoc_info->tif_ops;
1757 }
1758 
1759 /**
1760  * target_pdev_set_feature_ptr() - set feature_ptr
1761  * @pdev_info:  pointer to structure target_pdev_info
1762  * @feature_ptr: Feature pointer
1763  *
1764  * API to set feature_ptr
1765  *
1766  * Return: void
1767  */
target_pdev_set_feature_ptr(struct target_pdev_info * pdev_info,void * feature_ptr)1768 static inline void target_pdev_set_feature_ptr
1769 		(struct target_pdev_info *pdev_info, void *feature_ptr)
1770 {
1771 	if (!pdev_info)
1772 		return;
1773 
1774 	pdev_info->feature_ptr = feature_ptr;
1775 }
1776 
1777 /**
1778  * target_pdev_get_feature_ptr() - get feature_ptr
1779  * @pdev_info:  pointer to structure target_pdev_info
1780  *
1781  * API to get feature_ptr
1782  *
1783  * Return: feature_ptr
1784  */
target_pdev_get_feature_ptr(struct target_pdev_info * pdev_info)1785 static inline void *target_pdev_get_feature_ptr
1786 		(struct target_pdev_info *pdev_info)
1787 {
1788 	if (!pdev_info)
1789 		return NULL;
1790 
1791 	return pdev_info->feature_ptr;
1792 }
1793 
1794 /**
1795  * target_pdev_set_wmi_handle() - set wmi_handle
1796  * @pdev_info:  pointer to structure target_pdev_info
1797  * @wmi_handle: WMI handle
1798  *
1799  * API to set wmi_handle
1800  *
1801  * Return: void
1802  */
target_pdev_set_wmi_handle(struct target_pdev_info * pdev_info,struct wmi_unified * wmi_handle)1803 static inline void target_pdev_set_wmi_handle
1804 		(struct target_pdev_info *pdev_info,
1805 		 struct wmi_unified *wmi_handle)
1806 {
1807 	if (!pdev_info)
1808 		return;
1809 
1810 	pdev_info->wmi_handle = wmi_handle;
1811 }
1812 
1813 /**
1814  * target_pdev_get_wmi_handle() - get wmi_handle
1815  * @pdev_info:  pointer to structure target_dev_info
1816  *
1817  * API to get wmi_handle
1818  *
1819  * Return: wmi_handle
1820  */
target_pdev_get_wmi_handle(struct target_pdev_info * pdev_info)1821 static inline struct wmi_unified *target_pdev_get_wmi_handle
1822 		(struct target_pdev_info *pdev_info)
1823 {
1824 	if (!pdev_info)
1825 		return NULL;
1826 
1827 	return pdev_info->wmi_handle;
1828 }
1829 
1830 /**
1831  * target_pdev_set_accelerator_hdl() - set accelerator_hdl
1832  * @pdev_info:  pointer to structure target_pdev_info
1833  * @accelerator_hdl: Accelator handle
1834  *
1835  * API to set accelerator_hdl
1836  *
1837  * Return: void
1838  */
target_pdev_set_accelerator_hdl(struct target_pdev_info * pdev_info,struct common_accelerator_handle * accelerator_hdl)1839 static inline void target_pdev_set_accelerator_hdl
1840 		(struct target_pdev_info *pdev_info,
1841 		 struct common_accelerator_handle *accelerator_hdl)
1842 {
1843 	if (!pdev_info)
1844 		return;
1845 
1846 	pdev_info->accelerator_hdl = accelerator_hdl;
1847 }
1848 
1849 /**
1850  * target_pdev_get_accelerator_hdl() - get accelerator_hdl
1851  * @pdev_info:  pointer to structure target_dev_info
1852  *
1853  * API to get accelerator_hdl
1854  *
1855  * Return: accelerator_hdl
1856  */
1857 static inline struct common_accelerator_handle *
target_pdev_get_accelerator_hdl(struct target_pdev_info * pdev_info)1858 target_pdev_get_accelerator_hdl(struct target_pdev_info *pdev_info)
1859 {
1860 	if (!pdev_info)
1861 		return NULL;
1862 
1863 	return pdev_info->accelerator_hdl;
1864 }
1865 
1866 /**
1867  * target_pdev_set_pdev_idx() - set pdev_idx
1868  * @pdev_info:  pointer to structure target_pdev_info
1869  * @pdev_idx:   PDEV id of FW
1870  *
1871  * API to set pdev_idx
1872  *
1873  * Return: void
1874  */
target_pdev_set_pdev_idx(struct target_pdev_info * pdev_info,int32_t pdev_idx)1875 static inline void target_pdev_set_pdev_idx
1876 		(struct target_pdev_info *pdev_info, int32_t pdev_idx)
1877 {
1878 	if (!pdev_info)
1879 		return;
1880 
1881 	pdev_info->pdev_idx = pdev_idx;
1882 }
1883 
1884 /**
1885  * target_pdev_get_pdev_idx() - get pdev_idx
1886  * @pdev_info:  pointer to structure target_dev_info
1887  *
1888  * API to get pdev_idx
1889  *
1890  * Return: int32_t
1891  */
target_pdev_get_pdev_idx(struct target_pdev_info * pdev_info)1892 static inline int32_t  target_pdev_get_pdev_idx
1893 		(struct target_pdev_info *pdev_info)
1894 {
1895 	if (!pdev_info)
1896 		return -EINVAL;
1897 
1898 	return pdev_info->pdev_idx;
1899 }
1900 
1901 /**
1902  * target_pdev_set_phy_idx() - set phy_idx
1903  * @pdev_info:  pointer to structure target_pdev_info
1904  * @phy_idx:    phy ID of FW
1905  *
1906  * API to set phy_idx
1907  *
1908  * Return: void
1909  */
target_pdev_set_phy_idx(struct target_pdev_info * pdev_info,int32_t phy_idx)1910 static inline void target_pdev_set_phy_idx
1911 		(struct target_pdev_info *pdev_info, int32_t phy_idx)
1912 {
1913 	if (!pdev_info)
1914 		return;
1915 
1916 	pdev_info->phy_idx  = phy_idx;
1917 }
1918 
1919 /**
1920  * target_pdev_get_phy_idx() - get phy_idx
1921  * @pdev_info:  pointer to structure target_dev_info
1922  *
1923  * API to get phy_idx
1924  *
1925  * Return: int32_t
1926  */
target_pdev_get_phy_idx(struct target_pdev_info * pdev_info)1927 static inline int32_t target_pdev_get_phy_idx
1928 		(struct target_pdev_info *pdev_info)
1929 {
1930 	if (!pdev_info)
1931 		return -EINVAL;
1932 
1933 	return pdev_info->phy_idx;
1934 }
1935 
1936 /**
1937  * GET_WMI_HDL_FROM_PSOC() - get wmi handle from psoc
1938  * @psoc:  psoc object
1939  *
1940  * API to get wmi_handle from psoc
1941  *
1942  * Return: wmi_handle on success
1943  *         if tgt handle is not initialized, it returns NULL
1944  */
GET_WMI_HDL_FROM_PSOC(struct wlan_objmgr_psoc * psoc)1945 static inline struct wmi_unified *GET_WMI_HDL_FROM_PSOC(
1946 		struct wlan_objmgr_psoc *psoc)
1947 {
1948 	struct target_psoc_info *tgt_if_handle;
1949 
1950 	if (psoc) {
1951 		tgt_if_handle = psoc->tgt_if_handle;
1952 
1953 		if (tgt_if_handle)
1954 			return target_psoc_get_wmi_hdl(tgt_if_handle);
1955 		else
1956 			return NULL;
1957 	}
1958 
1959 	return NULL;
1960 }
1961 
1962 /**
1963  * GET_WMI_HDL_FROM_PDEV() - get wmi handle from pdev
1964  * @pdev:  pdev object
1965  *
1966  * API to get wmi_handle from pdev
1967  *
1968  * Return: wmi_handle on success
1969  *         if tgt handle is not initialized, it returns NULL
1970  */
GET_WMI_HDL_FROM_PDEV(struct wlan_objmgr_pdev * pdev)1971 static inline struct wmi_unified *GET_WMI_HDL_FROM_PDEV(
1972 		struct wlan_objmgr_pdev *pdev)
1973 {
1974 	struct target_pdev_info *tgt_if_handle;
1975 
1976 	if (pdev) {
1977 		tgt_if_handle =  pdev->tgt_if_handle;
1978 
1979 		if (tgt_if_handle)
1980 			return target_pdev_get_wmi_handle(tgt_if_handle);
1981 		else
1982 			return NULL;
1983 	}
1984 
1985 	return NULL;
1986 }
1987 
1988 /**
1989  * get_wmi_unified_hdl_from_psoc() - get wmi handle from psoc
1990  * @psoc:  psoc object
1991  *
1992  * API to get wmi_handle from psoc
1993  *
1994  * Return: wmi_handle on success
1995  *         if tgt handle is not initialized, it returns NULL
1996  */
1997 static inline wmi_unified_t
get_wmi_unified_hdl_from_psoc(struct wlan_objmgr_psoc * psoc)1998 get_wmi_unified_hdl_from_psoc(struct wlan_objmgr_psoc *psoc)
1999 {
2000 	return (wmi_unified_t)GET_WMI_HDL_FROM_PSOC(psoc);
2001 }
2002 
2003 /**
2004  * get_wmi_unified_hdl_from_pdev() - get wmi handle from pdev
2005  * @pdev:  pdev object
2006  *
2007  * API to get wmi_handle from pdev
2008  *
2009  * Return: wmi_handle on success
2010  *         if tgt handle is not initialized, it returns NULL
2011  */
2012 static inline wmi_unified_t
get_wmi_unified_hdl_from_pdev(struct wlan_objmgr_pdev * pdev)2013 get_wmi_unified_hdl_from_pdev(struct wlan_objmgr_pdev *pdev)
2014 {
2015 	return (wmi_unified_t)GET_WMI_HDL_FROM_PDEV(pdev);
2016 }
2017 
2018 /**
2019  * target_if_ext_res_cfg_enable() - Enable ext resource config
2020  * @psoc:  psoc object
2021  * @tgt_hdl: target_psoc_info pointer
2022  * @evt_buf: Event buffer received from FW
2023  *
2024  * API to enable Ext resource config
2025  *
2026  * Return: none
2027  */
target_if_ext_res_cfg_enable(struct wlan_objmgr_psoc * psoc,struct target_psoc_info * tgt_hdl,uint8_t * evt_buf)2028 static inline void target_if_ext_res_cfg_enable(struct wlan_objmgr_psoc *psoc,
2029 			struct target_psoc_info *tgt_hdl, uint8_t *evt_buf)
2030 {
2031 	if ((tgt_hdl->tif_ops) &&
2032 		(tgt_hdl->tif_ops->ext_resource_config_enable))
2033 		tgt_hdl->tif_ops->ext_resource_config_enable(psoc,
2034 				tgt_hdl, evt_buf);
2035 }
2036 
2037 /**
2038  * target_if_peer_cfg_enable() - Enable peer config
2039  * @psoc:  psoc object
2040  * @tgt_hdl: target_psoc_info pointer
2041  * @evt_buf: Event buffer received from FW
2042  *
2043  * API to enable peer config
2044  *
2045  * Return: none
2046  */
target_if_peer_cfg_enable(struct wlan_objmgr_psoc * psoc,struct target_psoc_info * tgt_hdl,uint8_t * evt_buf)2047 static inline void target_if_peer_cfg_enable(struct wlan_objmgr_psoc *psoc,
2048 			struct target_psoc_info *tgt_hdl, uint8_t *evt_buf)
2049 {
2050 	if ((tgt_hdl->tif_ops) &&
2051 		(tgt_hdl->tif_ops->peer_config))
2052 		tgt_hdl->tif_ops->peer_config(psoc, tgt_hdl, evt_buf);
2053 }
2054 
2055 /**
2056  * target_if_mesh_support_enable() - Enable MESH mode support
2057  * @psoc:  psoc object
2058  * @tgt_hdl: target_psoc_info pointer
2059  * @evt_buf: Event buffer received from FW
2060  *
2061  * API to enable Mesh mode
2062  *
2063  * Return: none
2064  */
target_if_mesh_support_enable(struct wlan_objmgr_psoc * psoc,struct target_psoc_info * tgt_hdl,uint8_t * evt_buf)2065 static inline void target_if_mesh_support_enable(struct wlan_objmgr_psoc *psoc,
2066 			struct target_psoc_info *tgt_hdl, uint8_t *evt_buf)
2067 {
2068 	if ((tgt_hdl->tif_ops) &&
2069 		(tgt_hdl->tif_ops->mesh_support_enable))
2070 		tgt_hdl->tif_ops->mesh_support_enable(psoc, tgt_hdl, evt_buf);
2071 }
2072 
2073 /**
2074  * target_if_eapol_minrate_enable() - Enable EAPOL Minrate in Tunnel Mode
2075  * @psoc: psoc object
2076  * @tgt_hdl: target_psoc_info pointer
2077  * @evt_buf: Event buffer received from FW
2078  *
2079  * API to enable eapol minrate
2080  *
2081  * Return: none
2082  */
target_if_eapol_minrate_enable(struct wlan_objmgr_psoc * psoc,struct target_psoc_info * tgt_hdl,uint8_t * evt_buf)2083 static inline void target_if_eapol_minrate_enable(struct wlan_objmgr_psoc *psoc,
2084 			struct target_psoc_info *tgt_hdl, uint8_t *evt_buf)
2085 {
2086 	if ((tgt_hdl->tif_ops) &&
2087 	    (tgt_hdl->tif_ops->eapol_minrate_enable))
2088 		tgt_hdl->tif_ops->eapol_minrate_enable(psoc, tgt_hdl, evt_buf);
2089 }
2090 
2091 /**
2092  * target_if_smart_antenna_enable() - Enable Smart antenna module
2093  * @psoc:  psoc object
2094  * @tgt_hdl: target_psoc_info pointer
2095  * @evt_buf: Event buffer received from FW
2096  *
2097  * API to enable Smart antenna
2098  *
2099  * Return: none
2100  */
target_if_smart_antenna_enable(struct wlan_objmgr_psoc * psoc,struct target_psoc_info * tgt_hdl,uint8_t * evt_buf)2101 static inline void target_if_smart_antenna_enable(struct wlan_objmgr_psoc *psoc,
2102 			struct target_psoc_info *tgt_hdl, uint8_t *evt_buf)
2103 {
2104 	if ((tgt_hdl->tif_ops) &&
2105 		(tgt_hdl->tif_ops->smart_antenna_enable))
2106 		tgt_hdl->tif_ops->smart_antenna_enable(psoc, tgt_hdl, evt_buf);
2107 }
2108 
2109 /**
2110  * target_if_cfr_support_enable() - Enable cfr support
2111  * @psoc:  psoc object
2112  * @tgt_hdl: target_psoc_info pointer
2113  * @evt_buf: Event buffer received from FW
2114  *
2115  * API to enable cfr support
2116  *
2117  * Return: none
2118  */
target_if_cfr_support_enable(struct wlan_objmgr_psoc * psoc,struct target_psoc_info * tgt_hdl,uint8_t * evt_buf)2119 static inline void target_if_cfr_support_enable(struct wlan_objmgr_psoc *psoc,
2120 			struct target_psoc_info *tgt_hdl, uint8_t *evt_buf)
2121 {
2122 	if ((tgt_hdl->tif_ops) &&
2123 	    (tgt_hdl->tif_ops->cfr_support_enable))
2124 		tgt_hdl->tif_ops->cfr_support_enable(psoc, tgt_hdl, evt_buf);
2125 }
2126 
2127 /**
2128  * target_if_set_pktlog_checksum() - Set pktlog checksum
2129  * @pdev: pdev object
2130  * @tgt_hdl: target_psoc_info pointer
2131  * @checksum: checksum received from FW
2132  *
2133  * API to set pktlog checksum
2134  *
2135  * Return: none
2136  */
target_if_set_pktlog_checksum(struct wlan_objmgr_pdev * pdev,struct target_psoc_info * tgt_hdl,uint32_t checksum)2137 static inline void target_if_set_pktlog_checksum(struct wlan_objmgr_pdev *pdev,
2138 			struct target_psoc_info *tgt_hdl, uint32_t checksum)
2139 {
2140 	if ((tgt_hdl->tif_ops) &&
2141 	    (tgt_hdl->tif_ops->set_pktlog_checksum))
2142 		tgt_hdl->tif_ops->set_pktlog_checksum(pdev, checksum);
2143 }
2144 
2145 /**
2146  * target_if_atf_cfg_enable() - Enable ATF config
2147  * @psoc:  psoc object
2148  * @tgt_hdl: target_psoc_info pointer
2149  * @evt_buf: Event buffer received from FW
2150  *
2151  * API to enable ATF config
2152  *
2153  * Return: none
2154  */
target_if_atf_cfg_enable(struct wlan_objmgr_psoc * psoc,struct target_psoc_info * tgt_hdl,uint8_t * evt_buf)2155 static inline void target_if_atf_cfg_enable(struct wlan_objmgr_psoc *psoc,
2156 			struct target_psoc_info *tgt_hdl, uint8_t *evt_buf)
2157 {
2158 	if ((tgt_hdl->tif_ops) &&
2159 		(tgt_hdl->tif_ops->atf_config_enable))
2160 		tgt_hdl->tif_ops->atf_config_enable(psoc, tgt_hdl, evt_buf);
2161 }
2162 
2163 /**
2164  * target_if_btcoex_cfg_enable() - Enable BT coex config
2165  * @psoc:  psoc object
2166  * @tgt_hdl: target_psoc_info pointer
2167  * @evt_buf: Event buffer received from FW
2168  *
2169  * API to enable BT coex config
2170  *
2171  * Return: none
2172  */
target_if_btcoex_cfg_enable(struct wlan_objmgr_psoc * psoc,struct target_psoc_info * tgt_hdl,uint8_t * evt_buf)2173 static inline void target_if_btcoex_cfg_enable(struct wlan_objmgr_psoc *psoc,
2174 			struct target_psoc_info *tgt_hdl, uint8_t *evt_buf)
2175 {
2176 	if ((tgt_hdl->tif_ops) &&
2177 		(tgt_hdl->tif_ops->btcoex_config_enable))
2178 		tgt_hdl->tif_ops->btcoex_config_enable(psoc, tgt_hdl, evt_buf);
2179 }
2180 
2181 /**
2182  * target_if_lteu_cfg_enable() - Enable LTEU config
2183  * @psoc:  psoc object
2184  * @tgt_hdl: target_psoc_info pointer
2185  * @evt_buf: Event buffer received from FW
2186  *
2187  * API to enable LTEU coex config
2188  *
2189  * Return: none
2190  */
target_if_lteu_cfg_enable(struct wlan_objmgr_psoc * psoc,struct target_psoc_info * tgt_hdl,uint8_t * evt_buf)2191 static inline void target_if_lteu_cfg_enable(struct wlan_objmgr_psoc *psoc,
2192 			struct target_psoc_info *tgt_hdl, uint8_t *evt_buf)
2193 {
2194 	if ((tgt_hdl->tif_ops) &&
2195 		(tgt_hdl->tif_ops->lteu_ext_support_enable))
2196 		tgt_hdl->tif_ops->lteu_ext_support_enable(psoc,	tgt_hdl,
2197 								evt_buf);
2198 }
2199 
2200 /**
2201  * target_if_set_init_cmd_dev_param() - Set init command params
2202  * @psoc:  psoc object
2203  * @tgt_hdl: target_psoc_info pointer
2204  *
2205  * API to set init command param based on config
2206  *
2207  * Return: none
2208  */
target_if_set_init_cmd_dev_param(struct wlan_objmgr_psoc * psoc,struct target_psoc_info * tgt_hdl)2209 static inline void target_if_set_init_cmd_dev_param(
2210 	struct wlan_objmgr_psoc *psoc, struct target_psoc_info *tgt_hdl)
2211 {
2212 	if ((tgt_hdl->tif_ops) &&
2213 		(tgt_hdl->tif_ops->set_init_cmd_dev_based_params)) {
2214 		tgt_hdl->tif_ops->set_init_cmd_dev_based_params(psoc,
2215 					tgt_hdl);
2216 	}
2217 }
2218 
2219 /**
2220  * target_if_alloc_pdevs() - Allocate PDEVs
2221  * @psoc:  psoc object
2222  * @tgt_hdl: target_psoc_info pointer
2223  *
2224  * API allocates PDEVs based on ext service ready param
2225  *
2226  * Return: SUCCESS on pdev allocation or PDEV allocation is not needed
2227  *         FAILURE, if allocation fails
2228  */
target_if_alloc_pdevs(struct wlan_objmgr_psoc * psoc,struct target_psoc_info * tgt_hdl)2229 static inline QDF_STATUS target_if_alloc_pdevs(struct wlan_objmgr_psoc *psoc,
2230 					struct target_psoc_info *tgt_hdl)
2231 {
2232 	QDF_STATUS ret_val;
2233 
2234 	if ((tgt_hdl->tif_ops) &&
2235 		(tgt_hdl->tif_ops->alloc_pdevs))
2236 		ret_val = tgt_hdl->tif_ops->alloc_pdevs(psoc, tgt_hdl);
2237 	else
2238 		ret_val = QDF_STATUS_SUCCESS;
2239 
2240 	return ret_val;
2241 }
2242 
2243 /**
2244  * target_if_update_pdev_tgt_info() - Update PDEVs info
2245  * @psoc:  psoc object
2246  * @tgt_hdl: target_psoc_info pointer
2247  *
2248  * API updates PDEVs info based on config
2249  *
2250  * Return: SUCCESS on pdev updation or PDEV updation is not needed
2251  *         FAILURE, if updation fails
2252  */
target_if_update_pdev_tgt_info(struct wlan_objmgr_psoc * psoc,struct target_psoc_info * tgt_hdl)2253 static inline QDF_STATUS target_if_update_pdev_tgt_info(
2254 	struct wlan_objmgr_psoc *psoc, struct target_psoc_info *tgt_hdl)
2255 {
2256 	QDF_STATUS ret_val;
2257 
2258 	if ((tgt_hdl->tif_ops) &&
2259 		(tgt_hdl->tif_ops->update_pdev_tgt_info))
2260 		ret_val = tgt_hdl->tif_ops->update_pdev_tgt_info(psoc,
2261 							tgt_hdl);
2262 	else
2263 		ret_val = QDF_STATUS_SUCCESS;
2264 
2265 	return ret_val;
2266 }
2267 
2268 /**
2269  * target_if_print_service_ready_ext_param() - Print Service ready ext param
2270  * @psoc:  psoc object
2271  * @tgt_hdl: target_psoc_info pointer
2272  *
2273  * API to print service ready ext param
2274  *
2275  * Return: none
2276  */
target_if_print_service_ready_ext_param(struct wlan_objmgr_psoc * psoc,struct target_psoc_info * tgt_hdl)2277 static inline void target_if_print_service_ready_ext_param(
2278 	struct wlan_objmgr_psoc *psoc, struct target_psoc_info *tgt_hdl)
2279 {
2280 	if ((tgt_hdl->tif_ops) &&
2281 		(tgt_hdl->tif_ops->print_svc_ready_ex_param)) {
2282 		tgt_hdl->tif_ops->print_svc_ready_ex_param(psoc,
2283 			tgt_hdl);
2284 	}
2285 }
2286 
2287 /**
2288  * target_if_add_11ax_modes() - Add 11ax modes explicitly
2289  * @psoc:  psoc object
2290  * @tgt_hdl: target_psoc_info pointer
2291  *
2292  * API to adds 11ax modes
2293  *
2294  * Return: none
2295  */
2296 #ifdef QCA_HOST_ADD_11AX_MODE_WAR
target_if_add_11ax_modes(struct wlan_objmgr_psoc * psoc,struct target_psoc_info * tgt_hdl)2297 static inline void target_if_add_11ax_modes(struct wlan_objmgr_psoc *psoc,
2298 					    struct target_psoc_info *tgt_hdl)
2299 {
2300 	if ((tgt_hdl->tif_ops) &&
2301 		(tgt_hdl->tif_ops->add_11ax_modes)) {
2302 		tgt_hdl->tif_ops->add_11ax_modes(psoc, tgt_hdl);
2303 	}
2304 }
2305 #else
target_if_add_11ax_modes(struct wlan_objmgr_psoc * psoc,struct target_psoc_info * tgt_hdl)2306 static inline void target_if_add_11ax_modes(struct wlan_objmgr_psoc *psoc,
2307 					    struct target_psoc_info *tgt_hdl)
2308 {
2309 }
2310 #endif
2311 
2312 /**
2313  * target_if_csa_switch_count_status() - Calls a function to process CSA event
2314  * @psoc:  psoc object
2315  * @tgt_hdl: target_psoc_info pointer
2316  * @csa_status: CSA switch count status event param
2317  *
2318  * Return: 0 on success, -1 on failure
2319  */
target_if_csa_switch_count_status(struct wlan_objmgr_psoc * psoc,struct target_psoc_info * tgt_hdl,struct pdev_csa_switch_count_status csa_status)2320 static inline int target_if_csa_switch_count_status(
2321 		struct wlan_objmgr_psoc *psoc,
2322 		struct target_psoc_info *tgt_hdl,
2323 		struct pdev_csa_switch_count_status csa_status)
2324 {
2325 	if (tgt_hdl->tif_ops && tgt_hdl->tif_ops->csa_switch_count_status)
2326 		return tgt_hdl->tif_ops->csa_switch_count_status(
2327 				psoc, csa_status);
2328 
2329 	return -1;
2330 }
2331 
2332 /**
2333  * target_if_set_default_config() - Set default config in init command
2334  * @psoc:  psoc object
2335  * @tgt_hdl: target_psoc_info pointer
2336  *
2337  * API to set default config in init command
2338  *
2339  * Return: none
2340  */
target_if_set_default_config(struct wlan_objmgr_psoc * psoc,struct target_psoc_info * tgt_hdl)2341 static inline void target_if_set_default_config(struct wlan_objmgr_psoc *psoc,
2342 					struct target_psoc_info *tgt_hdl)
2343 {
2344 	if ((tgt_hdl->tif_ops) &&
2345 		(tgt_hdl->tif_ops->set_default_tgt_config)) {
2346 		tgt_hdl->tif_ops->set_default_tgt_config(psoc, tgt_hdl);
2347 	}
2348 }
2349 
2350 /**
2351  * target_if_sw_version_check() - SW version check
2352  * @psoc:  psoc object
2353  * @tgt_hdl: target_psoc_info pointer
2354  * @evt_buf: Event buffer received from FW
2355  *
2356  * API checks the SW version
2357  *
2358  * Return: SUCCESS on version matches or version check is not needed
2359  *         FAILURE, if check fails
2360  */
target_if_sw_version_check(struct wlan_objmgr_psoc * psoc,struct target_psoc_info * tgt_hdl,uint8_t * evt_buf)2361 static inline QDF_STATUS target_if_sw_version_check(
2362 			struct wlan_objmgr_psoc *psoc,
2363 			struct target_psoc_info *tgt_hdl, uint8_t *evt_buf)
2364 {
2365 	QDF_STATUS ret_val;
2366 
2367 	if ((tgt_hdl->tif_ops) &&
2368 		(tgt_hdl->tif_ops->sw_version_check))
2369 		ret_val = tgt_hdl->tif_ops->sw_version_check(psoc, tgt_hdl,
2370 								evt_buf);
2371 	else
2372 		ret_val = QDF_STATUS_SUCCESS;
2373 
2374 	return ret_val;
2375 }
2376 
2377 /**
2378  * target_if_get_phy_capability()  - get phy capability
2379  * @target_psoc_info:  pointer to structure target_psoc_info
2380  *
2381  * API to get phy capability from the target caps
2382  *
2383  * Return: int32_t
2384  */
target_if_get_phy_capability(struct target_psoc_info * target_psoc_info)2385 static inline int32_t target_if_get_phy_capability
2386 			(struct target_psoc_info *target_psoc_info)
2387 {
2388 	if (!target_psoc_info)
2389 		return -EINVAL;
2390 
2391 	return target_psoc_info->info.target_caps.phy_capability;
2392 }
2393 
2394 /**
2395  * target_if_set_phy_capability()  - set phy capability
2396  * @target_psoc_info:  pointer to structure target_psoc_info
2397  * @phy_capability: PHY capabilities
2398  *
2399  * API to set phy capability in the target caps
2400  *
2401  * Return: None
2402  */
target_if_set_phy_capability(struct target_psoc_info * target_psoc_info,int phy_capability)2403 static inline void target_if_set_phy_capability
2404 		(struct target_psoc_info *target_psoc_info, int phy_capability)
2405 {
2406 	if (!target_psoc_info)
2407 		return;
2408 
2409 	target_psoc_info->info.target_caps.phy_capability = phy_capability;
2410 }
2411 
2412 /**
2413  * target_if_set_max_frag_entry() - set Maximum frag entries
2414  * @target_psoc_info:  pointer to structure target_psoc_info
2415  * @max_frag_entry: Maximum frag entries
2416  *
2417  * API to set Maximum frag entries from the target caps
2418  *
2419  * Return: None
2420  */
target_if_set_max_frag_entry(struct target_psoc_info * target_psoc_info,int max_frag_entry)2421 static inline void target_if_set_max_frag_entry
2422 		(struct target_psoc_info *target_psoc_info, int max_frag_entry)
2423 {
2424 	if (!target_psoc_info)
2425 		return;
2426 
2427 	target_psoc_info->info.target_caps.max_frag_entry = max_frag_entry;
2428 }
2429 
2430 /**
2431  * target_if_get_max_frag_entry() - get Maximum frag entries
2432  * @target_psoc_info:  pointer to structure target_psoc_info
2433  *
2434  * API to get Maximum frag entries from the target caps
2435  *
2436  * Return: int32_t
2437  */
target_if_get_max_frag_entry(struct target_psoc_info * target_psoc_info)2438 static inline int32_t target_if_get_max_frag_entry
2439 		(struct target_psoc_info *target_psoc_info)
2440 {
2441 	if (!target_psoc_info)
2442 		return -EINVAL;
2443 
2444 	return target_psoc_info->info.target_caps.max_frag_entry;
2445 }
2446 
2447 /**
2448  * target_if_get_ht_cap_info() - get ht capabilities info
2449  * @target_psoc_info:  pointer to structure target_psoc_info
2450  *
2451  * API to get ht capabilities info from the target caps
2452  *
2453  * Return: int32_t
2454  */
target_if_get_ht_cap_info(struct target_psoc_info * target_psoc_info)2455 static inline int32_t target_if_get_ht_cap_info
2456 		(struct target_psoc_info *target_psoc_info)
2457 {
2458 	if (!target_psoc_info)
2459 		return -EINVAL;
2460 
2461 	return target_psoc_info->info.target_caps.ht_cap_info;
2462 }
2463 
2464 /**
2465  * target_if_get_vht_cap_info() - get vht capabilities info
2466  * @target_psoc_info:  pointer to structure target_psoc_info
2467  *
2468  * API to get vht capabilities info from the target caps
2469  *
2470  * Return: int32_t
2471  */
target_if_get_vht_cap_info(struct target_psoc_info * target_psoc_info)2472 static inline int32_t target_if_get_vht_cap_info
2473 		(struct target_psoc_info *target_psoc_info)
2474 {
2475 	if (!target_psoc_info)
2476 		return -EINVAL;
2477 
2478 	return target_psoc_info->info.target_caps.vht_cap_info;
2479 }
2480 
2481 /**
2482  * target_if_get_num_rf_chains() - get Number of RF chains supported
2483  * @target_psoc_info:  pointer to structure target_psoc_info
2484  *
2485  * API to get Number of RF chains supported from the target caps
2486  *
2487  * Return: int32_t
2488  */
target_if_get_num_rf_chains(struct target_psoc_info * target_psoc_info)2489 static inline int32_t target_if_get_num_rf_chains
2490 		(struct target_psoc_info *target_psoc_info)
2491 {
2492 	if (!target_psoc_info)
2493 		return -EINVAL;
2494 
2495 	return target_psoc_info->info.target_caps.num_rf_chains;
2496 }
2497 
2498 /**
2499  * target_if_get_fw_version() - get firmware version
2500  * @target_psoc_info:  pointer to structure target_psoc_info
2501  *
2502  * API to get firmware version from the target caps
2503  *
2504  * Return: int32_t
2505  */
target_if_get_fw_version(struct target_psoc_info * target_psoc_info)2506 static inline int32_t target_if_get_fw_version
2507 		(struct target_psoc_info *target_psoc_info)
2508 {
2509 	if (!target_psoc_info)
2510 		return 0;
2511 
2512 	return target_psoc_info->info.target_caps.fw_version;
2513 }
2514 
2515 /**
2516  * target_if_get_wmi_fw_sub_feat_caps() - FW sub feature capabilities
2517  * @target_psoc_info:  pointer to structure target_psoc_info
2518  *
2519  * API to get FW sub feature capabilities from the target caps
2520  *
2521  * Return: int32_t
2522  */
target_if_get_wmi_fw_sub_feat_caps(struct target_psoc_info * target_psoc_info)2523 static inline int32_t target_if_get_wmi_fw_sub_feat_caps
2524 		(struct target_psoc_info *target_psoc_info)
2525 {
2526 	if (!target_psoc_info)
2527 		return -EINVAL;
2528 
2529 	return target_psoc_info->info.target_caps.wmi_fw_sub_feat_caps;
2530 }
2531 
2532 /**
2533  * target_if_get_conc_scan_config_bits() - Default concurrenct scan config
2534  * @tgt_hdl:  pointer to structure target_psoc_info
2535  *
2536  * API to get Default concurrenct scan config from the target caps
2537  *
2538  * Return: int32_t
2539  */
target_if_get_conc_scan_config_bits(struct target_psoc_info * tgt_hdl)2540 static inline int32_t target_if_get_conc_scan_config_bits
2541 		(struct target_psoc_info *tgt_hdl)
2542 {
2543 	if (!tgt_hdl)
2544 		return -EINVAL;
2545 
2546 	return tgt_hdl->info.service_ext_param.default_conc_scan_config_bits;
2547 }
2548 
2549 /**
2550  * target_if_get_fw_config_bits() - Default HW config bits
2551  * @tgt_hdl:  pointer to structure target_psoc_info
2552  *
2553  * API to get Default HW config bits from the target caps
2554  *
2555  * Return: int32_t
2556  */
target_if_get_fw_config_bits(struct target_psoc_info * tgt_hdl)2557 static inline int32_t target_if_get_fw_config_bits
2558 		(struct target_psoc_info *tgt_hdl)
2559 {
2560 	if (!tgt_hdl)
2561 		return -EINVAL;
2562 
2563 	return tgt_hdl->info.service_ext_param.default_fw_config_bits;
2564 }
2565 
2566 /**
2567  * target_psoc_get_num_hw_modes() - get number of dbs hardware modes
2568  * @tgt_hdl:  pointer to structure target_psoc_info
2569  *
2570  * API to get Number of Dual Band Simultaneous (DBS) hardware modes
2571  *
2572  * Return: int32_t
2573  */
target_psoc_get_num_hw_modes(struct target_psoc_info * tgt_hdl)2574 static inline int32_t target_psoc_get_num_hw_modes
2575 		(struct target_psoc_info *tgt_hdl)
2576 {
2577 	if (!tgt_hdl)
2578 		return -EINVAL;
2579 
2580 	return tgt_hdl->info.service_ext_param.num_hw_modes;
2581 }
2582 
2583 #ifdef WLAN_FEATURE_11BE_MLO
2584 static inline
target_psoc_get_num_max_mlo_link(struct target_psoc_info * tgt_hdl)2585 uint32_t target_psoc_get_num_max_mlo_link(struct target_psoc_info *tgt_hdl)
2586 {
2587 	if (!tgt_hdl)
2588 		return 0;
2589 
2590 	return tgt_hdl->info.service_ext2_param.num_max_mlo_link_per_ml_bss_supp;
2591 }
2592 
2593 static inline
target_if_res_cfg_get_num_max_mlo_link(struct target_psoc_info * tgt_hdl)2594 uint16_t target_if_res_cfg_get_num_max_mlo_link(struct target_psoc_info *tgt_hdl)
2595 {
2596 	if (!tgt_hdl)
2597 		return 0;
2598 
2599 	return tgt_hdl->info.wlan_res_cfg.num_max_mlo_link_per_ml_bss;
2600 }
2601 #else
2602 static inline
target_psoc_get_num_max_mlo_link(struct target_psoc_info * tgt_hdl)2603 uint32_t target_psoc_get_num_max_mlo_link(struct target_psoc_info *tgt_hdl)
2604 {
2605 	return 0;
2606 }
2607 
2608 static inline
target_if_res_cfg_get_num_max_mlo_link(struct target_psoc_info * tgt_hdl)2609 uint16_t target_if_res_cfg_get_num_max_mlo_link(struct target_psoc_info *tgt_hdl)
2610 {
2611 	return 0;
2612 }
2613 #endif
2614 
2615 #ifdef WLAN_SUPPORT_TWT
2616 #ifdef WLAN_TWT_AP_PDEV_COUNT_NUM_PHY
target_if_set_twt_ap_pdev_count(struct tgt_info * info,struct target_psoc_info * tgt_hdl)2617 static inline void target_if_set_twt_ap_pdev_count
2618 		(struct tgt_info *info, struct target_psoc_info *tgt_hdl)
2619 {
2620 	if (!tgt_hdl)
2621 		return;
2622 
2623 	info->wlan_res_cfg.twt_ap_pdev_count =
2624 					info->service_ext_param.num_phy;
2625 }
2626 #else
2627 #ifdef WLAN_TWT_2G_PHYB_WAR
target_if_set_twt_ap_pdev_count(struct tgt_info * info,struct target_psoc_info * tgt_hdl)2628 static inline void target_if_set_twt_ap_pdev_count
2629 		(struct tgt_info *info, struct target_psoc_info *tgt_hdl)
2630 {
2631 	uint32_t mode;
2632 	uint8_t num_radios;
2633 
2634 	if (!tgt_hdl)
2635 		return;
2636 
2637 	mode = target_psoc_get_preferred_hw_mode(tgt_hdl);
2638 	num_radios = target_psoc_get_num_radios(tgt_hdl);
2639 	if (mode == WMI_HOST_HW_MODE_2G_PHYB && num_radios == 1)
2640 		num_radios += 1;
2641 
2642 	info->wlan_res_cfg.twt_ap_pdev_count = num_radios;
2643 }
2644 #else
target_if_set_twt_ap_pdev_count(struct tgt_info * info,struct target_psoc_info * tgt_hdl)2645 static inline void target_if_set_twt_ap_pdev_count
2646 		(struct tgt_info *info, struct target_psoc_info *tgt_hdl)
2647 {
2648 	if (!tgt_hdl)
2649 		return;
2650 
2651 	info->wlan_res_cfg.twt_ap_pdev_count =
2652 					target_psoc_get_num_radios(tgt_hdl);
2653 }
2654 #endif /* WLAN_TWT_2G_PHYB_WAR */
2655 #endif /* WLAN_TWT_AP_PDEV_COUNT_NUM_PHY */
2656 #else
target_if_set_twt_ap_pdev_count(struct tgt_info * info,struct target_psoc_info * tgt_hdl)2657 static inline void target_if_set_twt_ap_pdev_count
2658 		(struct tgt_info *info, struct target_psoc_info *tgt_hdl)
2659 {
2660 }
2661 #endif /* WLAN_SUPPORT_TWT */
2662 
2663 /**
2664  * target_psoc_get_version_info() - Get version info from tgt info
2665  * @psoc_info: pointer to structure target_psoc_info
2666  * @reg_major: reg db version major
2667  * @reg_minor: reg db version minor
2668  * @bdf_major: bdf reg db version major
2669  * @bdf_minor: bdf reg db version minor
2670  *
2671  * API to get target version information.
2672  *
2673  * Return: void
2674  */
target_psoc_get_version_info(struct target_psoc_info * psoc_info,uint8_t * reg_major,uint8_t * reg_minor,uint8_t * bdf_major,uint8_t * bdf_minor)2675 static inline void target_psoc_get_version_info(
2676 					struct target_psoc_info *psoc_info,
2677 					uint8_t *reg_major, uint8_t *reg_minor,
2678 					uint8_t *bdf_major, uint8_t *bdf_minor)
2679 {
2680 	if (!psoc_info)
2681 		return;
2682 
2683 	*reg_major = psoc_info->info.service_ext2_param.reg_db_version_major;
2684 	*reg_minor = psoc_info->info.service_ext2_param.reg_db_version_minor;
2685 	*bdf_major =
2686 		psoc_info->info.service_ext2_param.bdf_reg_db_version_major;
2687 	*bdf_minor =
2688 		psoc_info->info.service_ext2_param.bdf_reg_db_version_minor;
2689 }
2690 
2691 /**
2692  * target_psoc_get_chan_width_switch_num_peers() - Get peer limit
2693  * @psoc_info: pointer to structure target_psoc_info
2694  *
2695  * API to get the number of peers supported per WMI command with the ID
2696  * WMI_PEER_CHAN_WIDTH_SWITCH_CMDID.
2697  *
2698  * Return: maximum peers allowed in a single WMI command with the given ID.
2699  */
target_psoc_get_chan_width_switch_num_peers(struct target_psoc_info * psoc_info)2700 static inline uint32_t target_psoc_get_chan_width_switch_num_peers(
2701 					    struct target_psoc_info *psoc_info)
2702 {
2703 	if (!psoc_info)
2704 		return 0;
2705 
2706 	return psoc_info->info.service_ext2_param.chwidth_num_peer_caps;
2707 }
2708 
2709 /**
2710  * target_pdev_is_scan_radio_supported() - API to check scan radio
2711  * support for the given radio
2712  * @pdev: pointer to pdev
2713  * @is_scan_radio_supported: pointer to scan radio support flag
2714  *
2715  * API to check scan radio support for the given radio
2716  *
2717  * Return: QDF_STATUS
2718  */
2719 QDF_STATUS
2720 target_pdev_is_scan_radio_supported(struct wlan_objmgr_pdev *pdev,
2721 				    bool *is_scan_radio_supported);
2722 
2723 /**
2724  * target_pdev_scan_radio_is_dfs_enabled() - API to check
2725  * whether DFS needs to be enabled/disabled for scan radio.
2726  * @pdev:  pointer to pdev
2727  * @is_dfs_en: Pointer to DFS enable flag
2728  *
2729  * API to check whether DFS needs to be enabled/disabled for
2730  * scan radio. This API should be used only for a scan radio
2731  * pdev.
2732  *
2733  * Return: QDF_STATUS
2734  */
2735 QDF_STATUS
2736 target_pdev_scan_radio_is_dfs_enabled(struct wlan_objmgr_pdev *pdev,
2737 				      bool *is_dfs_en);
2738 
2739 /**
2740  * target_is_scan_blanking_enabled() - API to check
2741  * whether scan blanking needs to be enabled/disabled for scan radio.
2742  * @pdev:  pointer to pdev
2743  * @blanking_en: Pointer to scan blanking enable flag
2744  *
2745  * API to check whether scan blanking needs to be enabled/disabled for
2746  * scan radio. This API should be used only for a scan radio pdev.
2747  *
2748  * Return: QDF_STATUS
2749  */
2750 QDF_STATUS
2751 target_is_scan_blanking_enabled(struct wlan_objmgr_pdev *pdev,
2752 				bool *blanking_en);
2753 
2754 /**
2755  * target_psoc_get_preamble_puncture_cap() - Get Preamble Puncturing capability
2756  * @psoc_info: pointer to structure target_psoc_info
2757  *
2758  * API to get the target capability for Preamble Punctured Tx
2759  *
2760  * Return: target capability for Preamble Punctured Tx.
2761  */
target_psoc_get_preamble_puncture_cap(struct target_psoc_info * psoc_info)2762 static inline uint32_t target_psoc_get_preamble_puncture_cap(
2763 					    struct target_psoc_info *psoc_info)
2764 {
2765 	if (!psoc_info)
2766 		return 0;
2767 
2768 	return psoc_info->info.service_ext2_param.preamble_puncture_bw_cap;
2769 }
2770 
2771 /**
2772  * target_psoc_get_mu_max_users() - Get max users for MU transmissions
2773  * @psoc_info: pointer to structure target_psoc_info
2774  * @mu_caps: pointer to structure for max OFDMA/MU-MIMO users per-PPDU
2775  *
2776  * API to get the max number of users per-PPDU supported for Uplink/Downlink
2777  * MU transmissions.
2778  *
2779  * Return: void
2780  */
target_psoc_get_mu_max_users(struct target_psoc_info * psoc_info,struct target_mu_caps * mu_caps)2781 static inline void target_psoc_get_mu_max_users(
2782 					struct target_psoc_info *psoc_info,
2783 					struct target_mu_caps *mu_caps)
2784 {
2785 	struct wlan_psoc_host_service_ext2_param *service_ext2_param;
2786 
2787 	if (!psoc_info || !mu_caps)
2788 		return;
2789 
2790 	service_ext2_param = &psoc_info->info.service_ext2_param;
2791 
2792 	mu_caps->ofdma_dl = service_ext2_param->max_users_dl_ofdma;
2793 	mu_caps->ofdma_ul = service_ext2_param->max_users_ul_ofdma;
2794 	mu_caps->mumimo_dl = service_ext2_param->max_users_dl_mumimo;
2795 	mu_caps->mumimo_ul = service_ext2_param->max_users_ul_mumimo;
2796 }
2797 
2798 /**
2799  * target_psoc_set_device_mode() - set global device_mode
2800  * @psoc_info: pointer to structure target_psoc_info
2801  * @device_mode: device mode mission monitor/ftm etc
2802  *
2803  * API to set global device mode
2804  *
2805  * Return: void
2806  */
target_psoc_set_device_mode(struct target_psoc_info * psoc_info,uint32_t device_mode)2807 static inline void target_psoc_set_device_mode
2808 		(struct target_psoc_info *psoc_info, uint32_t device_mode)
2809 {
2810 	if (!psoc_info)
2811 		return;
2812 
2813 	psoc_info->info.device_mode = device_mode;
2814 }
2815 
2816 /**
2817  * target_psoc_get_device_mode() - get info device_mode
2818  * @psoc_info: pointer to structure target_psoc_info
2819  *
2820  * API to get device_mode
2821  *
2822  * Return: enum QDF_GLOBAL_MODE
2823  */
target_psoc_get_device_mode(struct target_psoc_info * psoc_info)2824 static inline enum QDF_GLOBAL_MODE target_psoc_get_device_mode
2825 		(struct target_psoc_info *psoc_info)
2826 {
2827 	if (!psoc_info)
2828 		return QDF_GLOBAL_MAX_MODE;
2829 
2830 	return psoc_info->info.device_mode;
2831 }
2832 
2833 /**
2834  * target_if_set_reg_cc_ext_supp() - Set reg_cc_ext_supp capability
2835  * in WMI_INIT_CMD based on host capability of reg_cc_ext_event.
2836  *
2837  * @tgt_hdl: Pointer to struct target_psoc_info.
2838  * @psoc: Pointer to struct wlan_objmgr_psoc.
2839  *
2840  */
2841 void target_if_set_reg_cc_ext_supp(struct target_psoc_info *tgt_hdl,
2842 				   struct wlan_objmgr_psoc *psoc);
2843 
2844 /**
2845  * target_psoc_set_sbs_lower_band_end() - Set lower band end sbs frequency
2846  *
2847  * @psoc_info: Pointer to struct target_psoc_info.
2848  * @val: sbs lower band end cap value
2849  *
2850  * Return: None
2851  *
2852  */
2853 static inline
target_psoc_set_sbs_lower_band_end(struct target_psoc_info * psoc_info,uint32_t val)2854 void target_psoc_set_sbs_lower_band_end(struct target_psoc_info *psoc_info,
2855 				    uint32_t val)
2856 {
2857 	if (!psoc_info)
2858 		return;
2859 
2860 	psoc_info->info.sbs_lower_band_end_freq = val;
2861 }
2862 
2863 /**
2864  * target_psoc_set_sap_coex_fixed_chan_cap() - Set SAP coex fixed chan cap
2865  * @psoc_info: Pointer to struct target_psoc_info.
2866  * @val: SAP coex fixed chan support
2867  *
2868  * Return: None
2869  */
2870 static inline void
target_psoc_set_sap_coex_fixed_chan_cap(struct target_psoc_info * psoc_info,bool val)2871 target_psoc_set_sap_coex_fixed_chan_cap(struct target_psoc_info *psoc_info,
2872 					bool val)
2873 {
2874 	if (!psoc_info)
2875 		return;
2876 
2877 	psoc_info->info.service_ext2_param.sap_coex_fixed_chan_support = val;
2878 }
2879 
2880 /**
2881  * target_psoc_get_sap_coex_fixed_chan_cap() - Get SAP coex fixed chan cap
2882  * @psoc_info: Pointer to struct target_psoc_info.
2883  *
2884  * Return: sap_coex_fixed_chan_support received from firmware
2885  */
2886 static inline bool
target_psoc_get_sap_coex_fixed_chan_cap(struct target_psoc_info * psoc_info)2887 target_psoc_get_sap_coex_fixed_chan_cap(struct target_psoc_info *psoc_info)
2888 {
2889 	if (!psoc_info)
2890 		return false;
2891 
2892 	return psoc_info->info.service_ext2_param.sap_coex_fixed_chan_support;
2893 }
2894 
2895 /**
2896  * target_psoc_set_twt_ack_cap() - Set twt ack capability
2897  *
2898  * @psoc_info: Pointer to struct target_psoc_info.
2899  * @val: twt ack cap value
2900  *
2901  * Return: None
2902  *
2903  */
2904 static inline
target_psoc_set_twt_ack_cap(struct target_psoc_info * psoc_info,bool val)2905 void target_psoc_set_twt_ack_cap(struct target_psoc_info *psoc_info, bool val)
2906 {
2907 	if (!psoc_info)
2908 		return;
2909 
2910 	psoc_info->info.service_ext2_param.twt_ack_support_cap = val;
2911 }
2912 
2913 /**
2914  * target_psoc_get_twt_ack_cap() - Get twt ack capability
2915  *
2916  * @psoc_info: Pointer to struct target_psoc_info.
2917  * @val: twt ack cap value
2918  *
2919  * Return: None
2920  *
2921  */
2922 static inline
target_psoc_get_twt_ack_cap(struct target_psoc_info * psoc_info,bool * val)2923 void target_psoc_get_twt_ack_cap(struct target_psoc_info *psoc_info, bool *val)
2924 {
2925 	if (!psoc_info)
2926 		return;
2927 
2928 	*val = psoc_info->info.service_ext2_param.twt_ack_support_cap;
2929 }
2930 
2931 /**
2932  * target_psoc_get_target_cap_flags() - get flags containing information
2933  *                                      about target capabilities
2934  * @psoc_info:  pointer to structure target_psoc_info
2935  *
2936  * API to get flags containing information about target capabilities
2937  *
2938  * Return: target_cap_flags
2939  */
target_psoc_get_target_cap_flags(struct target_psoc_info * psoc_info)2940 static inline uint32_t target_psoc_get_target_cap_flags
2941 		(struct target_psoc_info *psoc_info)
2942 {
2943 	if (!psoc_info)
2944 		return 0;
2945 
2946 	return psoc_info->info.service_ext2_param.target_cap_flags;
2947 }
2948 
2949 /**
2950  * target_psoc_get_target_dp_peer_meta_data_ver() - Get DP RX peer metadata
2951  *                                                  version reported by target
2952  * @psoc_info:  pointer to structure target_psoc_info
2953  *
2954  * Return: value of DP RX peer metadata version
2955  */
target_psoc_get_target_dp_peer_meta_data_ver(struct target_psoc_info * psoc_info)2956 static inline uint8_t target_psoc_get_target_dp_peer_meta_data_ver(
2957 				struct target_psoc_info *psoc_info)
2958 {
2959 	if (!psoc_info)
2960 		return 0;
2961 
2962 	return psoc_info->info.service_ext2_param.dp_peer_meta_data_ver;
2963 }
2964 
2965 #if defined(WLAN_FEATURE_11BE_MLO) && defined(WLAN_MLO_MULTI_CHIP)
2966 #define PDEV_INVALID_HW_LINK_ID 0xFFFF
2967 
2968 /**
2969  * target_if_pdev_get_hw_link_id() - get hw_link_id
2970  * @pdev:  pointer to structure target_pdev_info
2971  *
2972  * API to get hw_link_id
2973  *
2974  * Return: hw link id if valid, otherwise %PDEV_INVALID_HW_LINK_ID
2975  */
2976 uint16_t  target_if_pdev_get_hw_link_id(struct wlan_objmgr_pdev *pdev);
2977 
2978 /**
2979  * target_pdev_set_hw_link_id() - set hw_link_id
2980  * @pdev:  pointer to structure target_pdev_info
2981  * @hw_link_id: unique hw link id of pdev across psoc
2982  *
2983  * API to set hw_link_id
2984  *
2985  * Return: void
2986  */
2987 void target_pdev_set_hw_link_id(struct wlan_objmgr_pdev *pdev,
2988 				uint16_t hw_link_id);
2989 
2990 /**
2991  * target_if_mlo_setup_req() - API to trigger MLO setup sequence
2992  * @pdev: Array of pointers to pdev object that are part of ML group
2993  * @num_pdevs: Number of pdevs in above array
2994  * @grp_id: ML Group ID
2995  *
2996  * Return: QDF_STATUS codes
2997  */
2998 QDF_STATUS target_if_mlo_setup_req(struct wlan_objmgr_pdev **pdev,
2999 				   uint8_t num_pdevs, uint8_t grp_id);
3000 
3001 /**
3002  * target_if_mlo_ready() - API to send MLO ready
3003  * @pdev: Array of pointers to pdev object that are part of ML group
3004  * @num_pdevs: Number of pdevs in above array
3005  *
3006  * Return: QDF_STATUS codes
3007  */
3008 QDF_STATUS target_if_mlo_ready(struct wlan_objmgr_pdev **pdev,
3009 			       uint8_t num_pdevs);
3010 
3011 /**
3012  * target_if_mlo_teardown_req() - API to trigger MLO teardown sequence
3013  * @pdev: Pointer to pdev object
3014  * @reason: Reason for triggering teardown
3015  * @reset: UMAC reset for mode1 SSR
3016  * @standby_active: Active radio while in standby mode
3017  *
3018  * Return: QDF_STATUS codes
3019  */
3020 QDF_STATUS target_if_mlo_teardown_req(struct wlan_objmgr_pdev *pdev,
3021 				      uint32_t reason, bool reset,
3022 				      bool standby_active);
3023 #endif /*WLAN_FEATURE_11BE_MLO && WLAN_MLO_MULTI_CHIP*/
3024 
3025 /**
3026  * target_if_is_platform_eht_capable() - API to check if the platform
3027  *                                       is EHT capable
3028  * @psoc: psoc object
3029  * @pdev_id: pdev id
3030  *
3031  * Return: True if platform is 11BE capable; else False
3032  */
3033 bool target_if_is_platform_eht_capable(struct wlan_objmgr_psoc *psoc,
3034 				       uint8_t pdev_id);
3035 #ifdef REO_SHARED_QREF_TABLE_EN
target_if_set_reo_shared_qref_feature(struct wlan_objmgr_psoc * psoc,struct tgt_info * info)3036 static inline void target_if_set_reo_shared_qref_feature(struct wlan_objmgr_psoc *psoc,
3037 							 struct tgt_info *info)
3038 {
3039 	struct target_psoc_info *tgt_hdl;
3040 
3041 	tgt_hdl = wlan_psoc_get_tgt_if_handle(psoc);
3042 	if (!tgt_hdl) {
3043 		target_if_err("target_psoc_info is null");
3044 		info->wlan_res_cfg.reo_qdesc_shared_addr_table_enabled = false;
3045 		return;
3046 	}
3047 
3048 	if (target_psoc_get_target_type(tgt_hdl) == TARGET_TYPE_QCN9224 ||
3049 	    target_psoc_get_target_type(tgt_hdl) == TARGET_TYPE_QCA5332 ||
3050 	    target_psoc_get_target_type(tgt_hdl) == TARGET_TYPE_QCN6432)
3051 		info->wlan_res_cfg.reo_qdesc_shared_addr_table_enabled = true;
3052 	else
3053 		info->wlan_res_cfg.reo_qdesc_shared_addr_table_enabled = false;
3054 
3055 }
3056 
3057 #else
target_if_set_reo_shared_qref_feature(struct wlan_objmgr_psoc * psoc,struct tgt_info * info)3058 static inline void target_if_set_reo_shared_qref_feature(struct wlan_objmgr_psoc *psoc,
3059 							 struct tgt_info *info)
3060 {
3061 	info->wlan_res_cfg.reo_qdesc_shared_addr_table_enabled = false;
3062 }
3063 #endif
3064 
3065 /**
3066  * target_if_phy_ch_width_to_wmi_chan_width() - convert host ch_width to fw format
3067  *
3068  * @ch_width: enum phy_ch_width
3069  *
3070  * Convert host driver chan width value to fw recognizable value.
3071  *
3072  * return: wmi_host_channel_width
3073  */
3074 wmi_host_channel_width
3075 target_if_phy_ch_width_to_wmi_chan_width(enum phy_ch_width ch_width);
3076 
3077 /**
3078  * target_if_wmi_chan_width_to_phy_ch_width() - convert channel width from
3079  * wmi_host_channel_width to phy_ch_width
3080  *
3081  * @ch_width: wmi_host_channel_width
3082  *
3083  * return: phy_ch_width
3084  */
3085 enum phy_ch_width
3086 target_if_wmi_chan_width_to_phy_ch_width(wmi_host_channel_width ch_width);
3087 
3088 #ifdef WLAN_FEATURE_11BE_MLO_ADV_FEATURE
target_if_set_num_max_mlo_link(struct wlan_objmgr_psoc * psoc,struct tgt_info * info)3089 static inline void target_if_set_num_max_mlo_link(struct wlan_objmgr_psoc *psoc,
3090 						  struct tgt_info *info)
3091 {
3092 	struct target_psoc_info *tgt_hdl;
3093 	uint16_t value;
3094 
3095 	tgt_hdl = wlan_psoc_get_tgt_if_handle(psoc);
3096 	if (!tgt_hdl)
3097 		return;
3098 
3099 	if (!target_psoc_get_num_max_mlo_link(tgt_hdl))
3100 		value = WLAN_MAX_ML_DEFAULT_LINK;
3101 	else
3102 		value = QDF_MIN(target_psoc_get_num_max_mlo_link(tgt_hdl),
3103 				info->wlan_res_cfg.num_max_mlo_link_per_ml_bss);
3104 
3105 	info->wlan_res_cfg.num_max_mlo_link_per_ml_bss = value;
3106 }
3107 #else
target_if_set_num_max_mlo_link(struct wlan_objmgr_psoc * psoc,struct tgt_info * info)3108 static inline void target_if_set_num_max_mlo_link(struct wlan_objmgr_psoc *psoc,
3109 						  struct tgt_info *info)
3110 {
3111 }
3112 #endif
3113 #endif
3114