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