1 /*
2 * Copyright (c) 2017, 2019-2020 The Linux Foundation. All rights reserved.
3 * Copyright (c) 2021-2022 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: target_if_wifi_pos.h
22 * This file declares the functions pertinent to wifi positioning component's
23 * target if layer.
24 */
25 #ifndef _WIFI_POS_TGT_IF_H_
26 #define _WIFI_POS_TGT_IF_H_
27
28 #include "qdf_types.h"
29 #include "qdf_status.h"
30 #include "wlan_cmn.h"
31 #include "wmi_unified_api.h"
32 #include "wifi_pos_utils_i.h"
33
34 struct oem_data_req;
35 struct oem_data_rsp;
36 struct wlan_objmgr_psoc;
37 struct wlan_soc_southbound_cb;
38 struct wlan_lmac_if_tx_ops;
39 struct wlan_lmac_if_rx_ops;
40
41 #ifdef WLAN_FEATURE_CIF_CFR
42 /**
43 * target_if_wifi_pos_get_indirect_data - Get the indirect data from the
44 * response
45 * @priv_obj: Wifi Pos private object
46 * @indirect: Indirect data
47 * @rsp: Oem data response
48 * @cookie: Cookie
49 *
50 * Return: QDF_STATUS
51 */
52 QDF_STATUS target_if_wifi_pos_get_indirect_data(
53 struct wifi_pos_psoc_priv_obj *priv_obj,
54 struct wmi_host_oem_indirect_data *indirect,
55 struct oem_data_rsp *rsp, uint32_t *cookie);
56 /**
57 * target_if_wifi_pos_replenish_ring() - Replenish the CFR DMA ring
58 * @priv: Pointer to Wifi Pos psoc private object
59 * @ring_idx: Ring Index
60 * @vaddr: Virtual address
61 * @cookie: Cookie
62 *
63 * Return: QDF_STATUS
64 */
65 QDF_STATUS
66 target_if_wifi_pos_replenish_ring(struct wifi_pos_psoc_priv_obj *priv,
67 uint8_t ring_idx,
68 void *vaddr, uint32_t cookie);
69 #else
70 static inline
target_if_wifi_pos_get_indirect_data(struct wifi_pos_psoc_priv_obj * priv_obj,struct wmi_host_oem_indirect_data * indirect,struct oem_data_rsp * rsp,uint32_t * cookie)71 QDF_STATUS target_if_wifi_pos_get_indirect_data(
72 struct wifi_pos_psoc_priv_obj *priv_obj,
73 struct wmi_host_oem_indirect_data *indirect,
74 struct oem_data_rsp *rsp, uint32_t *cookie)
75 {
76 return QDF_STATUS_SUCCESS;
77 }
78
79 static inline QDF_STATUS
target_if_wifi_pos_replenish_ring(struct wifi_pos_psoc_priv_obj * priv,uint8_t ring_idx,void * vaddr,uint32_t cookie)80 target_if_wifi_pos_replenish_ring(struct wifi_pos_psoc_priv_obj *priv,
81 uint8_t ring_idx,
82 void *vaddr, uint32_t cookie)
83 {
84 return QDF_STATUS_SUCCESS;
85 }
86 #endif
87
88 #ifdef WIFI_POS_CONVERGED
89 /**
90 * target_if_wifi_pos_get_vht_ch_width: function to get vht channel width
91 * @psoc: pointer to psoc object
92 * @ch_width: pointer to the variable in which output value needs to be filled
93 *
94 * Return: status of operation
95 */
96 QDF_STATUS target_if_wifi_pos_get_vht_ch_width(struct wlan_objmgr_psoc *psoc,
97 enum phy_ch_width *ch_width);
98 #endif
99
100 #if defined(WLAN_FEATURE_CIF_CFR) && defined(WIFI_POS_CONVERGED)
101 /**
102 * target_if_wifi_pos_init_cir_cfr_rings: set DMA ring cap in psoc private
103 * object
104 * @psoc: pointer to psoc object
105 * @hal_soc: pointer to hal soc
106 * @num_mac: number of mac
107 * @buf: buffer containing DMA ring cap
108 *
109 * Return: status of operation
110 */
111 QDF_STATUS target_if_wifi_pos_init_cir_cfr_rings(struct wlan_objmgr_psoc *psoc,
112 void *hal_soc, uint8_t num_mac,
113 void *buf);
114 /**
115 * target_if_wifi_pos_deinit_dma_rings: frees up DMA rings
116 * @psoc: pointer to psoc
117 *
118 * Return: status of operation
119 */
120 QDF_STATUS target_if_wifi_pos_deinit_dma_rings(struct wlan_objmgr_psoc *psoc);
121 #else
target_if_wifi_pos_init_cir_cfr_rings(struct wlan_objmgr_psoc * psoc,void * hal_soc,uint8_t num_mac,void * buf)122 static inline QDF_STATUS target_if_wifi_pos_init_cir_cfr_rings(
123 struct wlan_objmgr_psoc *psoc, void *hal_soc,
124 uint8_t num_mac, void *buf)
125 {
126 return QDF_STATUS_SUCCESS;
127 }
128
target_if_wifi_pos_deinit_dma_rings(struct wlan_objmgr_psoc * psoc)129 static inline QDF_STATUS target_if_wifi_pos_deinit_dma_rings(
130 struct wlan_objmgr_psoc *psoc)
131 {
132 return QDF_STATUS_SUCCESS;
133 }
134 #endif
135
136 #ifndef CNSS_GENL
137 /**
138 * target_if_wifi_pos_convert_pdev_id_host_to_target: function to get target
139 * pdev_id from host pdev_id
140 * @psoc: pointer to psoc object
141 * @host_pdev_id: host pdev id
142 * @target_pdev_id: target pdev id
143 *
144 * Return: QDF_STATUS_SUCCESS in case of success, error codes in
145 * case of failure
146 */
147 QDF_STATUS target_if_wifi_pos_convert_pdev_id_host_to_target(
148 struct wlan_objmgr_psoc *psoc, uint32_t host_pdev_id,
149 uint32_t *target_pdev_id);
150
151 /**
152 * target_if_wifi_pos_convert_pdev_id_target_to_host: function to get host
153 * pdev_id from target pdev_id
154 * @psoc: pointer to psoc object
155 * @target_pdev_id: target pdev id
156 * @host_pdev_id: host pdev id
157 *
158 * Return: QDF_STATUS_SUCCESS in case of success, error codes in
159 * case of failure
160 */
161 QDF_STATUS target_if_wifi_pos_convert_pdev_id_target_to_host(
162 struct wlan_objmgr_psoc *psoc, uint32_t target_pdev_id,
163 uint32_t *host_pdev_id);
164
165 #else
166
target_if_wifi_pos_convert_pdev_id_host_to_target(struct wlan_objmgr_psoc * psoc,uint32_t host_pdev_id,uint32_t * target_pdev_id)167 static inline QDF_STATUS target_if_wifi_pos_convert_pdev_id_host_to_target(
168 struct wlan_objmgr_psoc *psoc, uint32_t host_pdev_id,
169 uint32_t *target_pdev_id)
170 {
171 return QDF_STATUS_SUCCESS;
172 }
173
target_if_wifi_pos_convert_pdev_id_target_to_host(struct wlan_objmgr_psoc * psoc,uint32_t target_pdev_id,uint32_t * host_pdev_id)174 static inline QDF_STATUS target_if_wifi_pos_convert_pdev_id_target_to_host(
175 struct wlan_objmgr_psoc *psoc, uint32_t target_pdev_id,
176 uint32_t *host_pdev_id)
177 {
178 return QDF_STATUS_SUCCESS;
179 }
180 #endif /* CNSS_GENL */
181 #endif /* _WIFI_POS_TGT_IF_H_ */
182