blob: f1c3c1c87e0312ffd12d817cb8aad9eebba47d8b [file] [log] [blame]
Jeff Johnson295189b2012-06-20 16:38:30 -07001/*
Kiet Lam1ed83fc2014-02-19 01:15:45 -08002 * Copyright (c) 2012-2013 The Linux Foundation. All rights reserved.
3 *
4 * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
5 *
6 *
7 * Permission to use, copy, modify, and/or distribute this software for
8 * any purpose with or without fee is hereby granted, provided that the
9 * above copyright notice and this permission notice appear in all
10 * copies.
11 *
12 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
13 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
14 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
15 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
16 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
17 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
18 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
19 * PERFORMANCE OF THIS SOFTWARE.
Gopichand Nakkala92f07d82013-01-08 21:16:34 -080020 */
Kiet Lam1ed83fc2014-02-19 01:15:45 -080021
22/*
23 * This file was originally distributed by Qualcomm Atheros, Inc.
24 * under proprietary terms before Copyright ownership was assigned
25 * to the Linux Foundation.
26 */
27
Jeff Johnson295189b2012-06-20 16:38:30 -070028#if !defined( __VOS_API_H )
29#define __VOS_API_H
30
31/**=========================================================================
32
33 \file vos_Api.h
34
35 \brief virtual Operating System Services (vOSS) API
36
37 Header file that inludes all the vOSS API definitions.
38
Jeff Johnson295189b2012-06-20 16:38:30 -070039
40 ========================================================================*/
41 /*===========================================================================
42
43 EDIT HISTORY FOR FILE
44
45
46 This section contains comments describing changes made to the module.
47 Notice that changes are listed in reverse chronological order.
48
49
50 $Header:$ $DateTime: $ $Author: $
51
52
53 when who what, where, why
54 -------- --- --------------------------------------------------------
55 06/23/08 hba Added vos_preOpen()
56 05/18/08 lac Created module.
57===========================================================================*/
58
59/*--------------------------------------------------------------------------
60 Include Files
61 ------------------------------------------------------------------------*/
62// one stop shopping. This brings in the entire vOSS API.
63#include <vos_types.h>
64#include <vos_status.h>
65#include <vos_memory.h>
66#include <vos_list.h>
67#include <vos_getBin.h>
68#include <vos_trace.h>
69#include <vos_event.h>
70#include <vos_lock.h>
Jeff Johnson295189b2012-06-20 16:38:30 -070071#include <vos_nvitem.h>
Amar Singhal0a402232013-10-11 20:57:16 -070072#include <vos_mq.h>
Jeff Johnson295189b2012-06-20 16:38:30 -070073#include <vos_packet.h>
74#include <vos_threads.h>
75#include <vos_timer.h>
76#include <vos_pack_align.h>
77
78/*-------------------------------------------------------------------------
79 Function declarations and documenation
80 ------------------------------------------------------------------------*/
81
82/**--------------------------------------------------------------------------
83
84 \brief vos_preOpen() - PreOpen the vOSS Module
85
86 The \a vos_preOpen() function allocates the Vos Context, but do not
87 initialize all the members. This overal initialization will happen
88 at vos_Open().
89 The reason why we need vos_preOpen() is to get a minimum context
90 where to store BAL and SAL relative data, which happens before
91 vos_Open() is called.
92
93 \param pVosContext: A pointer to where to store the VOS Context
94
95
96 \return VOS_STATUS_SUCCESS - Scheduler was successfully initialized and
97 is ready to be used.
98
99 VOS_STATUS_E_FAILURE - Failure to initialize the scheduler/
100
101 \sa vos_open()
102
103---------------------------------------------------------------------------*/
104VOS_STATUS vos_preOpen ( v_CONTEXT_t *pVosContext );
105
106VOS_STATUS vos_preClose( v_CONTEXT_t *pVosContext );
107
Jeff Johnson295189b2012-06-20 16:38:30 -0700108
109VOS_STATUS vos_preStart( v_CONTEXT_t vosContext );
110
Jeff Johnson295189b2012-06-20 16:38:30 -0700111
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +0530112VOS_STATUS vos_open( v_CONTEXT_t *pVosContext, void *devHandle );
Jeff Johnson295189b2012-06-20 16:38:30 -0700113
114
115
116VOS_STATUS vos_start( v_CONTEXT_t vosContext );
117
118VOS_STATUS vos_stop( v_CONTEXT_t vosContext );
119
120VOS_STATUS vos_close( v_CONTEXT_t vosContext );
121
122/* vos shutdown will not close control transport and will not handshake with Riva */
123VOS_STATUS vos_shutdown( v_CONTEXT_t vosContext );
124
125/* the wda interface to shutdown */
126VOS_STATUS vos_wda_shutdown( v_CONTEXT_t vosContext );
127
128/**---------------------------------------------------------------------------
129
130 \brief vos_get_context() - get context data area
131
132 Each module in the system has a context / data area that is allocated
133 and maanged by voss. This API allows any user to get a pointer to its
134 allocated context data area from the VOSS global context.
135
136 \param vosContext - the VOSS Global Context.
137
138 \param moduleId - the module ID, who's context data are is being retrived.
139
140 \return - pointer to the context data area.
141
142 - NULL if the context data is not allocated for the module ID
143 specified
144
145 --------------------------------------------------------------------------*/
146v_VOID_t *vos_get_context( VOS_MODULE_ID moduleId,
147 v_CONTEXT_t vosContext );
148
149
150/**---------------------------------------------------------------------------
151
152 \brief vos_get_global_context() - get VOSS global Context
153
154 This API allows any user to get the VOS Global Context pointer from a
155 module context data area.
156
157 \param moduleContext - the input module context pointer
158
159 \param moduleId - the module ID who's context pointer is input in
160 moduleContext.
161
162 \return - pointer to the VOSS global context
163
164 - NULL if the function is unable to retreive the VOSS context.
165
166 --------------------------------------------------------------------------*/
167v_CONTEXT_t vos_get_global_context( VOS_MODULE_ID moduleId,
168 v_VOID_t *moduleContext );
169
170v_U8_t vos_is_logp_in_progress(VOS_MODULE_ID moduleId, v_VOID_t *moduleContext);
171void vos_set_logp_in_progress(VOS_MODULE_ID moduleId, v_U8_t value);
Sameer Thalappil9ab2fe52013-10-22 12:50:24 -0700172
Jeff Johnson295189b2012-06-20 16:38:30 -0700173v_U8_t vos_is_load_unload_in_progress(VOS_MODULE_ID moduleId, v_VOID_t *moduleContext);
174void vos_set_load_unload_in_progress(VOS_MODULE_ID moduleId, v_U8_t value);
175
Sameer Thalappil9ab2fe52013-10-22 12:50:24 -0700176v_U8_t vos_is_reinit_in_progress(VOS_MODULE_ID moduleId, v_VOID_t *moduleContext);
177void vos_set_reinit_in_progress(VOS_MODULE_ID moduleId, v_U8_t value);
178
Jeff Johnson295189b2012-06-20 16:38:30 -0700179/**---------------------------------------------------------------------------
180
181 \brief vos_alloc_context() - allocate a context within the VOSS global Context
182
183 This API allows any user to allocate a user context area within the
184 VOS Global Context.
185
186 \param pVosContext - pointer to the global Vos context
187
188 \param moduleId - the module ID who's context area is being allocated.
189
190 \param ppModuleContext - pointer to location where the pointer to the
191 allocated context is returned. Note this
192 output pointer is valid only if the API
193 returns VOS_STATUS_SUCCESS
194
195 \param size - the size of the context area to be allocated.
196
197 \return - VOS_STATUS_SUCCESS - the context for the module ID has been
198 allocated successfully. The pointer to the context area
199 can be found in *ppModuleContext.
200 \note This function returns VOS_STATUS_SUCCESS if the
201 module context was already allocated and the size
202 allocated matches the size on this call.
203
204 VOS_STATUS_E_INVAL - the moduleId is not a valid or does
205 not identify a module that can have a context allocated.
206
207 VOS_STATUS_E_EXISTS - vos could allocate the requested context
208 because a context for this module ID already exists and it is
209 a *different* size that specified on this call.
210
211 VOS_STATUS_E_NOMEM - vos could not allocate memory for the
212 requested context area.
213
214 \sa vos_get_context(), vos_free_context()
215
216 --------------------------------------------------------------------------*/
217VOS_STATUS vos_alloc_context( v_VOID_t *pVosContext, VOS_MODULE_ID moduleID,
218 v_VOID_t **ppModuleContext, v_SIZE_t size );
219
220
221/**---------------------------------------------------------------------------
222
223 \brief vos_free_context() - free an allocated a context within the
224 VOSS global Context
225
226 This API allows a user to free the user context area within the
227 VOS Global Context.
228
229 \param pVosContext - pointer to the global Vos context
230
231 \param moduleId - the module ID who's context area is being free
232
233 \param pModuleContext - pointer to module context area to be free'd.
234
235 \return - VOS_STATUS_SUCCESS - the context for the module ID has been
236 free'd. The pointer to the context area is not longer
237 available.
238
239 VOS_STATUS_E_FAULT - pVosContext or pModuleContext are not
240 valid pointers.
241
242 VOS_STATUS_E_INVAL - the moduleId is not a valid or does
243 not identify a module that can have a context free'd.
244
245 VOS_STATUS_E_EXISTS - vos could not free the requested
246 context area because a context for this module ID does not
247 exist in the global vos context.
248
249 \sa vos_get_context()
250
251 --------------------------------------------------------------------------*/
252VOS_STATUS vos_free_context( v_VOID_t *pVosContext, VOS_MODULE_ID moduleID,
253 v_VOID_t *pModuleContext );
Jeff Johnson295189b2012-06-20 16:38:30 -0700254v_BOOL_t vos_is_apps_power_collapse_allowed(void* pHddCtx);
Madan Mohan Koyyalamudiff3a7152013-06-13 14:47:55 +0530255void vos_abort_mac_scan(tANI_U8 sessionId);
Jeff Johnson295189b2012-06-20 16:38:30 -0700256
257/**
258 @brief vos_wlanShutdown() - This API will shutdown WLAN driver
259
260 This function is called when Riva subsystem crashes. There are two
261 methods (or operations) in WLAN driver to handle Riva crash,
262 1. shutdown: Called when Riva goes down, this will shutdown WLAN
263 driver without handshaking with Riva.
264 2. re-init: Next API
265
266 @param
267 NONE
268 @return
269 VOS_STATUS_SUCCESS - Operation completed successfully.
270 VOS_STATUS_E_FAILURE - Operation failed.
271
272*/
273VOS_STATUS vos_wlanShutdown(void);
274
275/**
276 @brief vos_wlanReInit() - This API will re-init WLAN driver
277
278 This function is called when Riva subsystem reboots. There are two
279 methods (or operations) in WLAN driver to handle Riva crash,
280 1. shutdown: Previous API
281 2. re-init: Called when Riva comes back after the crash. This will
282 re-initialize WLAN driver. In some cases re-open may be
283 referred instead of re-init.
284 @param
285 NONE
286 @return
287 VOS_STATUS_SUCCESS - Operation completed successfully.
288 VOS_STATUS_E_FAILURE - Operation failed.
289
290*/
291VOS_STATUS vos_wlanReInit(void);
292
Jeff Johnsone7245742012-09-05 17:12:55 -0700293/**
294 @brief vos_wlanRestart() - This API will reload WLAN driver.
295
296 This function is called if driver detects any fatal state which
297 can be recovered by a WLAN module reload ( Android framwork initiated ).
298 Note that this API will not initiate any RIVA subsystem restart.
299
300 @param
301 NONE
302 @return
303 VOS_STATUS_SUCCESS - Operation completed successfully.
304 VOS_STATUS_E_FAILURE - Operation failed.
305
306*/
307VOS_STATUS vos_wlanRestart(void);
308
Madan Mohan Koyyalamudi62080282013-08-05 12:51:17 +0530309/**
310 @brief vos_fwDumpReq()
311
312 This function is called to issue dump commands to Firmware
313
314 @param
Siddharth Bhal68115602015-01-18 20:44:55 +0530315 cmd - Command No. to execute
316 arg1 - argument 1 to cmd
317 arg2 - argument 2 to cmd
318 arg3 - argument 3 to cmd
319 arg4 - argument 4 to cmd
320 async - asynchronous event. Don't wait for completion.
Madan Mohan Koyyalamudi62080282013-08-05 12:51:17 +0530321 @return
322 NONE
323*/
324v_VOID_t vos_fwDumpReq(tANI_U32 cmd, tANI_U32 arg1, tANI_U32 arg2,
Siddharth Bhal68115602015-01-18 20:44:55 +0530325 tANI_U32 arg3, tANI_U32 arg4, tANI_U8 async);
Dino Mycle3f783bc2014-08-08 17:40:22 +0530326
327v_U64_t vos_get_monotonic_boottime(void);
328
Siddharth Bhala3a5cb42014-09-29 21:13:13 +0530329VOS_STATUS vos_randomize_n_bytes(void *mac_addr, tANI_U32 n);
330
c_hpothu8adb97b2014-12-08 19:38:20 +0530331v_BOOL_t vos_is_wlan_in_badState(VOS_MODULE_ID moduleId,
332 v_VOID_t *moduleContext);
Girish Gowlia33f0372015-01-19 15:39:04 +0530333v_VOID_t vos_set_roam_delay_stats_enabled(v_U8_t value);
334v_U8_t vos_get_roam_delay_stats_enabled(v_VOID_t);
Katya Nigama6fbf662015-03-17 18:35:47 +0530335v_U32_t vos_get_dxeReplenishRXTimerVal(void);
336v_BOOL_t vos_get_dxeSSREnable(void);
Jeff Johnson295189b2012-06-20 16:38:30 -0700337#endif // if !defined __VOS_NVITEM_H