blob: 9c2eb8f337de948998c55ba24632eaf2554ae820 [file] [log] [blame]
Jeff Johnson295189b2012-06-20 16:38:30 -07001/*
Sravan Kumar Kairam84e995f2016-05-27 16:16:21 +05302 * Copyright (c) 2012-2016 The Linux Foundation. All rights reserved.
Kiet Lam842dad02014-02-18 18:44:02 -08003 *
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 Lam842dad02014-02-18 18:44:02 -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#ifndef WLAN_QCT_DXE_I_H
29#define WLAN_QCT_DXE_I_H
30
31/**=========================================================================
32
33 @file wlan_qct_dxe_i.h
34
35 @brief
36
37 This file contains the external API exposed by the wlan data transfer abstraction layer module.
Jeff Johnson295189b2012-06-20 16:38:30 -070038========================================================================*/
39
40/*===========================================================================
41
42 EDIT HISTORY FOR FILE
43
44
45 This section contains comments describing changes made to the module.
46 Notice that changes are listed in reverse chronological order.
47
48
49 $Header:$ $DateTime: $ $Author: $
50
51
52when who what, where, why
53-------- --- ----------------------------------------------------------
5408/03/10 schang Created module.
55
56===========================================================================*/
57
58/*===========================================================================
59
60 INCLUDE FILES FOR MODULE
61
62===========================================================================*/
63
64/*----------------------------------------------------------------------------
65 * Include Files
66 * -------------------------------------------------------------------------*/
67#include "wlan_qct_dxe.h"
68#include "wlan_qct_pal_trace.h"
Madan Mohan Koyyalamudiea777012012-10-31 14:22:34 -070069#include "wlan_qct_pal_timer.h"
Jeff Johnson295189b2012-06-20 16:38:30 -070070#include "vos_trace.h"
71/*----------------------------------------------------------------------------
72 * Preprocessor Definitions and Constants
73 * -------------------------------------------------------------------------*/
74#define WLANDXE_CTXT_COOKIE 0xC00CC111
75
Sravan Kumar Kairama8269e72015-11-06 12:13:24 +053076#ifdef DXE_TRACE
77#define DXTRACE(p) p
78#else
79#define DXTRACE(p) { }
80#endif
81
Mihir Shetee6618162015-03-16 14:48:42 +053082#define foreach_valid_channel(idx) \
83 for (idx = 0; idx < WDTS_CHANNEL_MAX; idx++) \
84 if (!(dxeGetEnabledChannels() & 1<<idx)) \
85 continue; \
86 else
87
88#define WLANDXE_IS_VALID_CHANNEL(idx) \
89 (dxeGetEnabledChannels() & 1<<idx)
Jeff Johnson295189b2012-06-20 16:38:30 -070090
Jeff Johnsone7245742012-09-05 17:12:55 -070091/* From here WCNSS DXE register information
Jeff Johnson295189b2012-06-20 16:38:30 -070092 * This is temporary definition location to make compile and unit test
93 * If official msmreg.h integrated, this part will be eliminated */
94/* Start with base address */
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070095
Jeff Johnsone7245742012-09-05 17:12:55 -070096#ifdef WCN_PRONTO
Hardik Kantilal Patel7d143922014-03-06 10:07:52 +053097#define WLANDXE_CCU_DXE_INT_SELECT 0x2050dc
98#define WLANDXE_CCU_DXE_INT_SELECT_STAT 0x2050e0
99#define WLANDXE_CCU_ASIC_INT_ENABLE 0x2050e4
100#define WLANDXE_CCU_SOFT_RESET 0x204010
Mihir Shete41c41bb2014-08-18 17:37:12 +0530101#define WLANDXE_BMU_AVAILABLE_BD_PDU_LOCAL 0x80260
Jeff Johnsone7245742012-09-05 17:12:55 -0700102#else
Hardik Kantilal Patel7d143922014-03-06 10:07:52 +0530103#define WLANDXE_CCU_DXE_INT_SELECT 0x200b10
104#define WLANDXE_CCU_DXE_INT_SELECT_STAT 0x200b14
105#define WLANDXE_CCU_ASIC_INT_ENABLE 0x200b18
Jeff Johnsone7245742012-09-05 17:12:55 -0700106#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700107
Hardik Kantilal Patel7d143922014-03-06 10:07:52 +0530108#define WLANDXE_BMU_AVAILABLE_BD_PDU 0x80084
Mihir Shetedfc33ec2014-10-15 13:14:38 +0530109#define WLANDXE_BMU_ERROR_INTR_STATUS 0x80004
Jeff Johnson295189b2012-06-20 16:38:30 -0700110
Hardik Kantilal Patel7d143922014-03-06 10:07:52 +0530111#define WLANDXE_REGISTER_BASE_ADDRESS 0x202000
Jeff Johnson295189b2012-06-20 16:38:30 -0700112
Karthick S09d5dd02015-05-27 16:58:32 +0530113#define WLAN_PMU_SPARE_OUT_ADDRESS 0x21c088
114#define WLAN_PMU_POWER_DOWN_MASK 0x04000000
115
Jeff Johnson295189b2012-06-20 16:38:30 -0700116/* Common over the channels register addresses */
Madan Mohan Koyyalamudia53c4dc2012-11-13 10:35:42 -0800117#define WALNDEX_DMA_CSR_ADDRESS (WLANDXE_REGISTER_BASE_ADDRESS + 0x00)
118#define WALNDEX_DMA_ENCH_ADDRESS (WLANDXE_REGISTER_BASE_ADDRESS + 0x04)
119#define WALNDEX_DMA_CH_EN_ADDRESS (WLANDXE_REGISTER_BASE_ADDRESS + 0x08)
120#define WALNDEX_DMA_CH_DONE_ADDRESS (WLANDXE_REGISTER_BASE_ADDRESS + 0x0C)
121#define WALNDEX_DMA_CH_ERR_ADDRESS (WLANDXE_REGISTER_BASE_ADDRESS + 0x10)
122#define WALNDEX_DMA_CH_STOP_ADDRESS (WLANDXE_REGISTER_BASE_ADDRESS + 0x14)
Jeff Johnson295189b2012-06-20 16:38:30 -0700123
124/* Interrupt Control register address */
Madan Mohan Koyyalamudia53c4dc2012-11-13 10:35:42 -0800125#define WLANDXE_INT_MASK_REG_ADDRESS (WLANDXE_REGISTER_BASE_ADDRESS + 0x18)
126#define WLANDXE_INT_SRC_MSKD_ADDRESS (WLANDXE_REGISTER_BASE_ADDRESS + 0x1C)
127#define WLANDXE_INT_SRC_RAW_ADDRESS (WLANDXE_REGISTER_BASE_ADDRESS + 0x20)
128#define WLANDXE_INT_ED_SRC_ADDRESS (WLANDXE_REGISTER_BASE_ADDRESS + 0x24)
129#define WLANDXE_INT_DONE_SRC_ADDRESS (WLANDXE_REGISTER_BASE_ADDRESS + 0x28)
130#define WLANDXE_INT_ERR_SRC_ADDRESS (WLANDXE_REGISTER_BASE_ADDRESS + 0x2C)
131#define WLANDXE_INT_CLR_ADDRESS (WLANDXE_REGISTER_BASE_ADDRESS + 0x30)
132#define WLANDXE_INT_ED_CLR_ADDRESS (WLANDXE_REGISTER_BASE_ADDRESS + 0x34)
133#define WLANDXE_INT_DONE_CLR_ADDRESS (WLANDXE_REGISTER_BASE_ADDRESS + 0x38)
134#define WLANDXE_INT_ERR_CLR_ADDRESS (WLANDXE_REGISTER_BASE_ADDRESS + 0x3C)
Jeff Johnson295189b2012-06-20 16:38:30 -0700135
Madan Mohan Koyyalamudia53c4dc2012-11-13 10:35:42 -0800136#define WLANDXE_DMA_CH_PRES_ADDRESS (WLANDXE_REGISTER_BASE_ADDRESS + 0x40)
137#define WLANDXE_ARB_CH_MSK_CLR_ADDRRESS (WLANDXE_REGISTER_BASE_ADDRESS + 0x74)
Jeff Johnson295189b2012-06-20 16:38:30 -0700138
139/* Channel Counter register */
Madan Mohan Koyyalamudia53c4dc2012-11-13 10:35:42 -0800140#define WLANDXE_DMA_COUNTER_0 (WLANDXE_REGISTER_BASE_ADDRESS + 0x200)
141#define WLANDXE_DMA_COUNTER_1 (WLANDXE_REGISTER_BASE_ADDRESS + 0x204)
142#define WLANDXE_DMA_COUNTER_2 (WLANDXE_REGISTER_BASE_ADDRESS + 0x208)
143#define WLANDXE_DMA_COUNTER_3 (WLANDXE_REGISTER_BASE_ADDRESS + 0x20C)
144#define WLANDXE_DMA_COUNTER_4 (WLANDXE_REGISTER_BASE_ADDRESS + 0x210)
145#define WLANDXE_DMA_COUNTER_5 (WLANDXE_REGISTER_BASE_ADDRESS + 0x214)
146#define WLANDXE_DMA_COUNTER_6 (WLANDXE_REGISTER_BASE_ADDRESS + 0x218)
Jeff Johnson295189b2012-06-20 16:38:30 -0700147
Madan Mohan Koyyalamudia53c4dc2012-11-13 10:35:42 -0800148#define WLANDXE_ENGINE_STAT_ADDRESS (WLANDXE_REGISTER_BASE_ADDRESS + 0x64)
149#define WLANDXE_BMU_SB_QDAT_AV_ADDRESS (WLANDXE_REGISTER_BASE_ADDRESS + 0x5c)
Jeff Johnson295189b2012-06-20 16:38:30 -0700150
151/* Channel Base address */
Madan Mohan Koyyalamudia53c4dc2012-11-13 10:35:42 -0800152#define WLANDXE_DMA_CHAN0_BASE_ADDRESS (WLANDXE_REGISTER_BASE_ADDRESS + 0x400)
153#define WLANDXE_DMA_CHAN1_BASE_ADDRESS (WLANDXE_REGISTER_BASE_ADDRESS + 0x440)
154#define WLANDXE_DMA_CHAN2_BASE_ADDRESS (WLANDXE_REGISTER_BASE_ADDRESS + 0x480)
155#define WLANDXE_DMA_CHAN3_BASE_ADDRESS (WLANDXE_REGISTER_BASE_ADDRESS + 0x4C0)
156#define WLANDXE_DMA_CHAN4_BASE_ADDRESS (WLANDXE_REGISTER_BASE_ADDRESS + 0x500)
157#define WLANDXE_DMA_CHAN5_BASE_ADDRESS (WLANDXE_REGISTER_BASE_ADDRESS + 0x540)
158#define WLANDXE_DMA_CHAN6_BASE_ADDRESS (WLANDXE_REGISTER_BASE_ADDRESS + 0x580)
Mihir Shetebe94ebb2015-05-26 12:07:14 +0530159#define WLANDXE_DMA_CHAN7_BASE_ADDRESS (WLANDXE_REGISTER_BASE_ADDRESS + 0x5c0)
Jeff Johnson295189b2012-06-20 16:38:30 -0700160
161/* Channel specific register offset */
162#define WLANDXE_DMA_CH_CTRL_REG 0x0000
163#define WLANDXE_DMA_CH_STATUS_REG 0x0004
164#define WLANDXE_DMA_CH_SZ_REG 0x0008
165#define WLANDXE_DMA_CH_SADRL_REG 0x000C
166#define WLANDXE_DMA_CH_SADRH_REG 0x0010
167#define WLANDXE_DMA_CH_DADRL_REG 0x0014
168#define WLANDXE_DMA_CH_DADRH_REG 0x0018
169#define WLANDXE_DMA_CH_DESCL_REG 0x001C
170#define WLANDXE_DMA_CH_DESCH_REG 0x0020
171#define WLANDXE_DMA_CH_LST_DESCL_REG 0x0024
172#define WLANDXE_DMA_CH_LST_DESCH_REG 0x0028
173#define WLANDXE_DMA_CH_BD_REG 0x002C
174#define WLANDXE_DMA_CH_HEAD_REG 0x0030
175#define WLANDXE_DMA_CH_TAIL_REG 0x0034
176#define WLANDXE_DMA_CH_PDU_REG 0x0038
177#define WLANDXE_DMA_CH_TSTMP_REG 0x003C
178
179/* Common CSR Register Contorol mask and offset */
Leo Chang00708f62013-12-03 20:21:51 -0800180#ifdef WCN_PRONTO
181#define WLANDXE_DMA_CSR_RESERVED_MASK 0xFFFF0000
182#define WLANDXE_DMA_CSR_RESERVED_OFFSET 0x10
183#define WLANDXE_DMA_CSR_RESERVED_DEFAULT 0x0
184
Mihir Shetedfc33ec2014-10-15 13:14:38 +0530185#define WLANDXE_DMA_CSR_FW_BMU_RECOVERY 0x400000
186#define WLANDXE_DMA_CSR_RECOVERY_DONE 0x200000
187#define WLANDXE_DMA_CSR_HOST_RECOVERY_DONE 0x800000
Mihir Sheted6274602015-04-28 16:13:21 +0530188
Leo Chang00708f62013-12-03 20:21:51 -0800189#define WLANDXE_DMA_CSR_H2H_SYNC_EN_MASK 0x8000
190#define WLANDXE_DMA_CSR_H2H_SYNC_EN_OFFSET 0x0F
191#define WLANDXE_DMA_CSR_H2H_SYNC_EN_DEFAULT 0x0
192
193#define WLANDXE_DMA_CSR_PAUSED_MASK 0x4000
194#define WLANDXE_DMA_CSR_PAUSED_OFFSET 0x0E
195#define WLANDXE_DMA_CSR_PAUSED_DEFAULT 0x0
196
197#define WLANDXE_DMA_CSR_ECTR_EN_MASK 0x2000
198#define WLANDXE_DMA_CSR_ECTR_EN_OFFSET 0x0D
199#define WLANDXE_DMA_CSR_ECTR_EN_DEFAULT 0x2000
200
201#define WLANDXE_DMA_CSR_B2H_TSTMP_OFF_MASK 0x1F00
202#define WLANDXE_DMA_CSR_B2H_TSTMP_OFF_OFFSET 0x08
203#define WLANDXE_DMA_CSR_B2H_TSTMP_OFF_DEFAULT 0x0F00
204
205#define WLANDXE_DMA_CSR_H2B_TSTMP_OFF_MASK 0xF8
206#define WLANDXE_DMA_CSR_H2B_TSTMP_OFF_OFFSET 0x03
207#define WLANDXE_DMA_CSR_H2B_TSTMP_OFF_DEFAULT 0x28
208
209#define WLANDXE_DMA_CSR_TSTMP_EN_MASK 0x04
210#define WLANDXE_DMA_CSR_TSTMP_EN_OFFSET 0x02
211#define WLANDXE_DMA_CSR_TSTMP_EN_DEFAULT 0x0
212
213#define WLANDXE_DMA_CCU_DXE_RESET_MASK 0x4
214#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700215#define WLANDXE_DMA_CSR_RESERVED_MASK 0xFFFE0000
216#define WLANDXE_DMA_CSR_RESERVED_OFFSET 0x11
217#define WLANDXE_DMA_CSR_RESERVED_DEFAULT 0x0
218
219#define WLANDXE_DMA_CSR_H2H_SYNC_EN_MASK 0x10000
220#define WLANDXE_DMA_CSR_H2H_SYNC_EN_OFFSET 0x10
221#define WLANDXE_DMA_CSR_H2H_SYNC_EN_DEFAULT 0x0
222
223#define WLANDXE_DMA_CSR_PAUSED_MASK 0x8000
224#define WLANDXE_DMA_CSR_PAUSED_OFFSET 0xF
225#define WLANDXE_DMA_CSR_PAUSED_DEFAULT 0x0
226
227#define WLANDXE_DMA_CSR_ECTR_EN_MASK 0x4000
228#define WLANDXE_DMA_CSR_ECTR_EN_OFFSET 0xE
229#define WLANDXE_DMA_CSR_ECTR_EN_DEFAULT 0x4000
230
231#define WLANDXE_DMA_CSR_B2H_TSTMP_OFF_MASK 0x3E00
232#define WLANDXE_DMA_CSR_B2H_TSTMP_OFF_OFFSET 0x9
233#define WLANDXE_DMA_CSR_B2H_TSTMP_OFF_DEFAULT 0xE00
234
235#define WLANDXE_DMA_CSR_H2B_TSTMP_OFF_MASK 0x1F0
236#define WLANDXE_DMA_CSR_H2B_TSTMP_OFF_OFFSET 0x4
237#define WLANDXE_DMA_CSR_H2B_TSTMP_OFF_DEFAULT 0x50
238
239#define WLANDXE_DMA_CSR_TSTMP_EN_MASK 0x8
240#define WLANDXE_DMA_CSR_TSTMP_EN_OFFSET 0x3
241#define WLANDXE_DMA_CSR_TSTMP_EN_DEFAULT 0x0
242
243#define WLANDXE_DMA_CSR_RESET_MASK 0x4
244#define WLANDXE_DMA_CSR_RESET_OFFSET 0x2
245#define WLANDXE_DMA_CSR_RESET_DEFAULT 0x0
Leo Chang00708f62013-12-03 20:21:51 -0800246#endif /* WCN_PRONTO */
Jeff Johnson295189b2012-06-20 16:38:30 -0700247
248#define WLANDXE_DMA_CSR_PAUSE_MASK 0x2
249#define WLANDXE_DMA_CSR_PAUSE_OFFSET 0x1
250#define WLANDXE_DMA_CSR_PAUSE_DEFAULT 0x0
251
252#define WLANDXE_DMA_CSR_EN_MASK 0x1
253#define WLANDXE_DMA_CSR_EN_OFFSET 0x0
254#define WLANDXE_DMA_CSR_EN_DEFAULT 0x0
Leo Chang00708f62013-12-03 20:21:51 -0800255
256/* DXE CSR Master enable register value */
257#define WLANDXE_CSR_DEFAULT_ENABLE (WLANDXE_DMA_CSR_H2H_SYNC_EN_MASK | \
258 WLANDXE_DMA_CSR_ECTR_EN_MASK | \
259 WLANDXE_DMA_CSR_EN_MASK)
Jeff Johnson295189b2012-06-20 16:38:30 -0700260
261/* Channel CTRL Register Control mask and offset */
262#define WLANDXE_CH_CTRL_RSVD_MASK 0x80000000
263#define WLANDXE_CH_CTRL_RSVD_OFFSET 0x1F
264#define WLANDXE_CH_CTRL_RSVD_DEFAULT 0x0
265
266#define WLANDXE_CH_CTRL_SWAP_MASK 0x80000000
267
268#define WLANDXE_CH_CTRL_BDT_IDX_MASK 0x60000000
269#define WLANDXE_CH_CTRL_BDT_IDX_OFFSET 0x1D
270#define WLANDXE_CH_CTRL_BDT_IDX_DEFAULT 0x0
271
272#define WLANDXE_CH_CTRL_DFMT_MASK 0x10000000
273#define WLANDXE_CH_CTRL_DFMT_OFFSET 0x1C
274#define WLANDXE_CH_CTRL_DFMT_DEFAULT 0x10000000
275#define WLANDXE_CH_CTRL_DFMT_ESHORT 0x0
276#define WLANDXE_CH_CTRL_DFMT_ELONG 0x1
277
278#define WLANDXE_CH_CTRL_ABORT_MASK 0x8000000
279#define WLANDXE_CH_CTRL_ABORT_OFFSET 0x1B
280#define WLANDXE_CH_CTRL_ABORT_DEFAULT 0x0
281
282#define WLANDXE_CH_CTRL_ENDIAN_MASK 0x4000000
283
284#define WLANDXE_CH_CTRL_CTR_SEL_MASK 0x3C00000
285#define WLANDXE_CH_CTRL_CTR_SEL_OFFSET 0x16
286#define WLANDXE_CH_CTRL_CTR_SEL_DEFAULT 0x0
287
288#define WLANDXE_CH_CTRL_EDVEN_MASK 0x200000
289#define WLANDXE_CH_CTRL_EDVEN_OFFSET 0x15
290#define WLANDXE_CH_CTRL_EDVEN_DEFAULT 0x0
291
292#define WLANDXE_CH_CTRL_EDEN_MASK 0x100000
293#define WLANDXE_CH_CTRL_EDEN_OFFSET 0x14
294#define WLANDXE_CH_CTRL_EDEN_DEFAULT 0x0
295
296#define WLANDXE_CH_CTRL_INE_DONE_MASK 0x80000
297#define WLANDXE_CH_CTRL_INE_DONE_OFFSET 0x13
298#define WLANDXE_CH_CTRL_INE_DONE_DEFAULT 0x0
299
300#define WLANDXE_CH_CTRL_INE_ERR_MASK 0x40000
301#define WLANDXE_CH_CTRL_INE_ERR_OFFSET 0x12
302#define WLANDXE_CH_CTRL_INE_ERR_DEFAULT 0x0
303
304#define WLANDXE_CH_CTRL_INE_ED_MASK 0x20000
305#define WLANDXE_CH_CTRL_INE_ED_OFFSET 0x11
306#define WLANDXE_CH_CTRL_INE_ED_DEFAULT 0x0
307
308#define WLANDXE_CH_CTRL_STOP_MASK 0x10000
309#define WLANDXE_CH_CTRL_STOP_OFFSET 0x10
310#define WLANDXE_CH_CTRL_STOP_DEFAULT 0x0
311
312#define WLANDXE_CH_CTRL_PRIO_MASK 0xE000
313#define WLANDXE_CH_CTRL_PRIO_OFFSET 0xD
314#define WLANDXE_CH_CTRL_PRIO_DEFAULT 0x0
315
316#define WLANDXE_CH_CTRL_BTHLD_SEL_MASK 0x1E00
317#define WLANDXE_CH_CTRL_BTHLD_SEL_OFFSET 0x9
318#define WLANDXE_CH_CTRL_BTHLD_SEL_DEFAULT 0x600
319#define WLANDXE_CH_CTRL_BTHLD_SEL_ERSVD0 0x0
320#define WLANDXE_CH_CTRL_BTHLD_SEL_ERSVD1 0x1
321#define WLANDXE_CH_CTRL_BTHLD_SEL_ETHLD2 0x2
322#define WLANDXE_CH_CTRL_BTHLD_SEL_ETHLD3 0x3
323#define WLANDXE_CH_CTRL_BTHLD_SEL_ETHLD4 0x4
324#define WLANDXE_CH_CTRL_BTHLD_SEL_ETHLD5 0x5
325#define WLANDXE_CH_CTRL_BTHLD_SEL_ETHLD6 0x6
326#define WLANDXE_CH_CTRL_BTHLD_SEL_ETHLD7 0x7
327#define WLANDXE_CH_CTRL_BTHLD_SEL_ETHLD8 0x8
328#define WLANDXE_CH_CTRL_BTHLD_SEL_ETHLD9 0x9
329#define WLANDXE_CH_CTRL_BTHLD_SEL_ETHLD10 0xA
330#define WLANDXE_CH_CTRL_BTHLD_SEL_ERSVD11 0xB
331#define WLANDXE_CH_CTRL_BTHLD_SEL_ERSVD12 0xC
332#define WLANDXE_CH_CTRL_BTHLD_SEL_ERSVD13 0xD
333#define WLANDXE_CH_CTRL_BTHLD_SEL_ERSVD14 0xE
334#define WLANDXE_CH_CTRL_BTHLD_SEL_ERSVD15 0xF
335
336#define WLANDXE_CH_CTRL_PDU_REL_MASK 0x100
337#define WLANDXE_CH_CTRL_PDU_REL_OFFSET 0x8
338#define WLANDXE_CH_CTRL_PDU_REL_DEFAULT 0x100
339#define WLANDXE_CH_CTRL_PDU_REL_EKEEP 0x0
340#define WLANDXE_CH_CTRL_PDU_REL_ERELEASE 0x1
341
342#define WLANDXE_CH_CTRL_PIQ_MASK 0x80
343#define WLANDXE_CH_CTRL_PIQ_OFFSET 0x7
344#define WLANDXE_CH_CTRL_PIQ_DEFAULT 0x0
345#define WLANDXE_CH_CTRL_PIQ_EFLAT 0x0
346#define WLANDXE_CH_CTRL_PIQ_EQUEUE 0x1
347
348#define WLANDXE_CH_CTRL_DIQ_MASK 0x40
349#define WLANDXE_CH_CTRL_DIQ_OFFSET 0x6
350#define WLANDXE_CH_CTRL_DIQ_DEFAULT 0x0
351#define WLANDXE_CH_CTRL_DIQ_EFLAT 0x0
352#define WLANDXE_CH_CTRL_DIQ_EQUEUE 0x1
353
354#define WLANDXE_CH_CTRL_SIQ_MASK 0x20
355#define WLANDXE_CH_CTRL_SIQ_OFFSET 0x5
356#define WLANDXE_CH_CTRL_SIQ_DEFAULT 0x0
357#define WLANDXE_CH_CTRL_SIQ_EFLAT 0x0
358#define WLANDXE_CH_CTRL_SIQ_EQUEUE 0x1
359
360#define WLANDXE_CH_CTRL_BDH_MASK 0x10
361#define WLANDXE_CH_CTRL_BDH_OFFSET 0x4
362#define WLANDXE_CH_CTRL_BDH_DEFAULT 0x0
363
364#define WLANDXE_CH_CTRL_EOP_MASK 0x8
365#define WLANDXE_CH_CTRL_EOP_OFFSET 0x3
366#define WLANDXE_CH_CTRL_EOP_DEFAULT 0x8
367
368#define WLANDXE_CH_CTRL_XTYPE_MASK 0x6
369#define WLANDXE_CH_CTRL_XTYPE_OFFSET 0x1
370#define WLANDXE_CH_CTRL_XTYPE_DEFAULT 0x0
371#define WLANDXE_CH_CTRL_XTYPE_EH2H 0x0
372#define WLANDXE_CH_CTRL_XTYPE_EB2B 0x1
373#define WLANDXE_CH_CTRL_XTYPE_EH2B 0x2
374#define WLANDXE_CH_CTRL_XTYPE_EB2H 0x3
375
376#define WLANDXE_CH_CTRL_DONE_MASK 0x4
377
378#define WLANDXE_CH_CTRL_ERR_MASK 0x20
379
380#define WLANDXE_CH_CTRL_MASKED_MASK 0x8
381
382#define WLANDXE_CH_CTRL_EN_MASK 0x1
383#define WLANDXE_CH_CTRL_EN_OFFSET 0x0
384#define WLANDXE_CH_CTRL_EN_DEFAULT 0x0
385#define WLANDXE_CH_CTRL_DEFAULT 0x10000708
386
387
388#define WLANDXE_DESC_CTRL_VALID 0x00000001
389#define WLANDXE_DESC_CTRL_XTYPE_MASK 0x00000006
390#define WLANDXE_DESC_CTRL_XTYPE_H2H 0x00000000
391#define WLANDXE_DESC_CTRL_XTYPE_B2B 0x00000002
392#define WLANDXE_DESC_CTRL_XTYPE_H2B 0x00000004
393#define WLANDXE_DESC_CTRL_XTYPE_B2H 0x00000006
394#define WLANDXE_DESC_CTRL_EOP 0x00000008
395#define WLANDXE_DESC_CTRL_BDH 0x00000010
396#define WLANDXE_DESC_CTRL_SIQ 0x00000020
397#define WLANDXE_DESC_CTRL_DIQ 0x00000040
398#define WLANDXE_DESC_CTRL_PIQ 0x00000080
399#define WLANDXE_DESC_CTRL_PDU_REL 0x00000100
400#define WLANDXE_DESC_CTRL_BTHLD_SEL 0x00001E00
401#define WLANDXE_DESC_CTRL_PRIO 0x0000E000
402#define WLANDXE_DESC_CTRL_STOP 0x00010000
403#define WLANDXE_DESC_CTRL_INT 0x00020000
404#define WLANDXE_DESC_CTRL_BDT_SWAP 0x00100000
405#define WLANDXE_DESC_CTRL_ENDIANNESS 0x00200000
406#define WLANDXE_DESC_CTRL_DFMT 0x10000000
407#define WLANDXE_DESC_CTRL_RSVD 0xfffc0000
408/* CSR Register Control mask and offset */
409
410#define WLANDXE_CH_STAT_INT_DONE_MASK 0x00008000
411#define WLANDXE_CH_STAT_INT_ERR_MASK 0x00004000
412#define WLANDXE_CH_STAT_INT_ED_MASK 0x00002000
Mihir Shete79d6b582014-03-12 17:54:07 +0530413#define WLANDXE_CH_STAT_ERR_CODE_MASK 0x000007c0
414#define WLANDXE_CH_STAT_ERR_CODE_OFFSET (6)
Jeff Johnson295189b2012-06-20 16:38:30 -0700415
416#define WLANDXE_CH_STAT_MASKED_MASK 0x00000008
Leo Chang094ece82013-04-23 17:57:41 -0700417#define WLANDXE_CH_STAT_ENABLED_MASK 0x00000001
Jeff Johnsone7245742012-09-05 17:12:55 -0700418/* Till here WCNSS DXE register information
Jeff Johnson295189b2012-06-20 16:38:30 -0700419 * This is temporary definition location to make compile and unit test
420 * If official msmreg.h integrated, this part will be eliminated */
421
422/* Interrupt control channel mask */
423#define WLANDXE_INT_MASK_CHAN_0 0x00000001
424#define WLANDXE_INT_MASK_CHAN_1 0x00000002
425#define WLANDXE_INT_MASK_CHAN_2 0x00000004
426#define WLANDXE_INT_MASK_CHAN_3 0x00000008
427#define WLANDXE_INT_MASK_CHAN_4 0x00000010
428#define WLANDXE_INT_MASK_CHAN_5 0x00000020
429#define WLANDXE_INT_MASK_CHAN_6 0x00000040
Mihir Shetebe94ebb2015-05-26 12:07:14 +0530430#define WLANDXE_INT_MASK_CHAN_7 0x00000080
Jeff Johnson295189b2012-06-20 16:38:30 -0700431
432#define WLANDXE_TX_LOW_RES_THRESHOLD (5)
433
Mihir Shete79d6b582014-03-12 17:54:07 +0530434typedef enum {
435 WLANDXE_ERROR_NONE = 0,
436 WLANDXE_ERROR_SAHB_ERR = 1,
437 WLANDXE_ERROR_H2H_RD_BUS_ERR = 2,
438 WLANDXE_ERROR_H2H_WR_BUS_ERR = 3,
439 WLANDXE_ERROR_PRG_INV_XTYPE = 4,
440 WLANDXE_ERROR_BERR_POPWQ = 5,
441 WLANDXE_ERROR_BERR_PUSHWQ = 6,
442 WLANDXE_ERROR_BERR_RLSS = 7,
443 WLANDXE_ERROR_BERR_GETPDU = 8,
444 WLANDXE_ERROR_PRG_INV_WQ = 9,
445 WLANDXE_ERROR_PRG_INV_H2H_SRC_QID = 10,
446 WLANDXE_ERROR_PRG_INV_H2H_DST_QID = 11,
447 WLANDXE_ERROR_PRG_INV_B2H_SRC_QID = 12,
448 WLANDXE_ERROR_PRG_INV_B2H_DST_QID = 13,
449 WLANDXE_ERROR_PRG_INV_B2H_SRC_IDX = 14,
450 WLANDXE_ERROR_PRG_INV_H2B_SRC_QID = 15,
451 WLANDXE_ERROR_PRG_INV_H2B_DST_QID = 16,
452 WLANDXE_ERROR_PRG_INV_H2B_DST_IDX = 17,
453 WLANDXE_ERROR_PRG_INV_H2B_SZ = 18,
454 WLANDXE_ERROR_PRG_INV_SADR = 19,
455 WLANDXE_ERROR_PRG_INV_DADR = 20,
456 WLANDXE_ERROR_PRG_INV_EDADR = 21,
457 WLANDXE_ERROR_PRG_INV_SRC_WQID = 22,
458 WLANDXE_ERROR_PRG_INV_DST_WQID = 23,
459 WLANDXE_ERROR_PRG_XTYPE_MSMTCH = 24,
460 WLANDXE_ERROR_PKT_ERR = 25,
461 WLANDXE_ERROR_ABORT = 26,
462 WLANDXE_ERROR_PDU_CNT_OVFL = 27,
463}WLANDXE_ErrorCode;
464
Jeff Johnson295189b2012-06-20 16:38:30 -0700465/* DXE Descriptor Endian swap macro */
466#ifdef WLANDXE_ENDIAN_SWAP_ENABLE
467#define WLANDXE_U32_SWAP_ENDIAN(a) (((a & 0x000000FF) << 24) | \
468 ((a & 0x0000FF00) << 8) | \
469 ((a & 0x00FF0000) >> 8) | \
470 ((a & 0xFF000000) >> 24))
471#else
472/* If DXE HW does not need endian swap, DO NOTHING */
473#define WLANDXE_U32_SWAP_ENDIAN(a) (a)
474#endif /* WLANDXE_ENDIAN_SWAP_ENABLE */
475
476/* Log Definition will be mappped with PAL MSG */
477#define HDXE_MSG WPAL_TRACE
478#define HDXE_ASSERT(a) VOS_ASSERT(a)
479
Siddharth Bhalb7e8e882014-10-10 16:27:47 +0530480#define WLANDXE_PRONTO_TX_WQ 0x6
Jeff Johnson295189b2012-06-20 16:38:30 -0700481/*----------------------------------------------------------------------------
482 * Type Declarations
483 * -------------------------------------------------------------------------*/
484/* DMA Channel Q handle Method type
485 * Linear handle or circular */
486typedef enum
487{
488 WLANDXE_CHANNEL_HANDLE_LINEAR,
489 WLANDXE_CHANNEL_HANDLE_CIRCULA
490}WLANDXE_ChannelHandleType;
491
492typedef enum
493{
494 WLANDXE_TX_COMP_INT_LR_THRESHOLD,
495 WLANDXE_TX_COMP_INT_PER_K_FRAMES,
496 WLANDXE_TX_COMP_INT_TIMER
497} WLANDXE_TXCompIntEnableType;
498
499typedef enum
500{
501 WLANDXE_SHORT_DESCRIPTOR,
502 WLANDXE_LONG_DESCRIPTOR
503} WLANDXE_DescriptorType;
504
505typedef enum
506{
507 WLANDXE_DMA_CHANNEL_0,
508 WLANDXE_DMA_CHANNEL_1,
509 WLANDXE_DMA_CHANNEL_2,
510 WLANDXE_DMA_CHANNEL_3,
511 WLANDXE_DMA_CHANNEL_4,
512 WLANDXE_DMA_CHANNEL_5,
513 WLANDXE_DMA_CHANNEL_6,
Mihir Shetebe94ebb2015-05-26 12:07:14 +0530514 WLANDXE_DMA_CHANNEL_7,
Jeff Johnson295189b2012-06-20 16:38:30 -0700515 WLANDXE_DMA_CHANNEL_MAX
516} WLANDXE_DMAChannelType;
517
Sravan Kumar Kairama8269e72015-11-06 12:13:24 +0530518enum
519{
520 TRACE_CH_ENABLE,
521 TRACE_POWER_STATE,
522 TRACE_RXINT_STATE,
523 TRACE_TXINT_STATE,
524 TRACE_SMSM_NOTIFY
525};
526
Jeff Johnson295189b2012-06-20 16:38:30 -0700527/** DXE HW Long Descriptor format */
528typedef struct
529{
530 wpt_uint32 srcMemAddrL;
531 wpt_uint32 srcMemAddrH;
532 wpt_uint32 dstMemAddrL;
533 wpt_uint32 dstMemAddrH;
534 wpt_uint32 phyNextL;
535 wpt_uint32 phyNextH;
536} WLANDXE_LongDesc;
537
538
539/** DXE HW Short Descriptor format */
540typedef struct tDXEShortDesc
541{
542 wpt_uint32 srcMemAddrL;
543 wpt_uint32 dstMemAddrL;
544 wpt_uint32 phyNextL;
545} WLANDXE_ShortDesc;
546
547
548/* DXE Descriptor Data Type
549 * Pick up from GEN5 */
550typedef struct
551{
552 union
553 {
554 wpt_uint32 ctrl;
555 wpt_uint32 valid :1; //0 = DMA stop, 1 = DMA continue with this descriptor
556 wpt_uint32 transferType :2; //0 = Host to Host space
557 wpt_uint32 eop :1; //End of Packet
558 wpt_uint32 bdHandling :1; //if transferType = Host to BMU, then 0 means first 128 bytes contain BD, and 1 means create new empty BD
559 wpt_uint32 siq :1; // SIQ
560 wpt_uint32 diq :1; // DIQ
561 wpt_uint32 pduRel :1; //0 = don't release BD and PDUs when done, 1 = release them
562 wpt_uint32 bthldSel :4; //BMU Threshold Select
563 wpt_uint32 prio :3; //Specifies the priority level to use for the transfer
564 wpt_uint32 stopChannel :1; //1 = DMA stops processing further, channel requires re-enabling after this
565 wpt_uint32 intr :1; //Interrupt on Descriptor Done
566 wpt_uint32 rsvd :1; //reserved
567 wpt_uint32 transferSize :14; //14 bits used - ignored for BMU transfers, only used for host to host transfers?
568 } descCtrl;
569 wpt_uint32 xfrSize;
570 union
571 {
572 WLANDXE_LongDesc dxe_long_desc;
573 WLANDXE_ShortDesc dxe_short_desc;
574 }dxedesc;
575} WLANDXE_DescType;
576
577typedef struct
578{
579 void *nextCtrlBlk;
580 wpt_packet *xfrFrame;
581 WLANDXE_DescType *linkedDesc;
Arun Kumar Khandavalli6119f7d2013-12-18 00:16:17 +0530582 wpt_uint32 linkedDescPhyAddr;
Jeff Johnson295189b2012-06-20 16:38:30 -0700583 wpt_uint32 ctrlBlkOrder;
Jeff Johnson295189b2012-06-20 16:38:30 -0700584} WLANDXE_DescCtrlBlkType;
585
586typedef struct
587{
588 /* Q handle method, linear or ring */
589 WLANDXE_ChannelHandleType queueMethod;
590
591 /* Number of descriptors for DXE that can be queued for transfer at one time */
592 wpt_uint32 nDescs;
593
594 /* Maximum number of receive buffers of shared memory to use for this pipe */
595 wpt_uint32 nRxBuffers;
596
597 /* Reference WQ - for H2B and B2H only */
598 wpt_uint32 refWQ;
599
600 /* for usb only, endpoint info for CH_SADR or CH_DADR */
601 wpt_uint32 refEP;
602
603 /* H2B(Tx), B2H(Rx), H2H(SRAM<->HostMem R/W) */
604 wpt_uint32 xfrType;
605
606 /* Channel Priority 7(Highest) - 0(Lowest) */
607 wpt_uint32 chPriority;
608
609 /* 1 = BD attached to frames for this pipe */
610 wpt_boolean bdPresent;
611
612 wpt_uint32 chk_size;
613
614 wpt_uint32 bmuThdSel;
615
616 /* Added in Gen5 for Prefetch */
617 wpt_boolean useLower4G;
618
619 wpt_boolean useShortDescFmt;
620 /* Till here inharited from GEN5 code */
621 /* From now on, added for PRIMA */
622} WLANDXE_ChannelConfigType;
623
624typedef struct
625{
626 wpt_uint32 chDXEBaseAddr;
627 wpt_uint32 chDXEStatusRegAddr;
628 wpt_uint32 chDXEDesclRegAddr;
629 wpt_uint32 chDXEDeschRegAddr;
630 wpt_uint32 chDXELstDesclRegAddr;
631 wpt_uint32 chDXECtrlRegAddr;
632 wpt_uint32 chDXESzRegAddr;
633 wpt_uint32 chDXEDadrlRegAddr;
634 wpt_uint32 chDXEDadrhRegAddr;
635 wpt_uint32 chDXESadrlRegAddr;
636 wpt_uint32 chDXESadrhRegAddr;
637} WLANDXE_ChannelRegisterType;
638
639typedef struct
640{
641 wpt_uint32 refWQ_swapped;
642 wpt_boolean chEnabled;
643 wpt_boolean chConfigured;
644 wpt_uint32 channel;
645 wpt_uint32 chk_size_mask;
646 wpt_uint32 bmuThdSel_mask;
647 wpt_uint32 cw_ctrl_read;
648 wpt_uint32 cw_ctrl_write;
649 wpt_uint32 cw_ctrl_write_valid;
650 wpt_uint32 cw_ctrl_write_eop;
651 wpt_uint32 cw_ctrl_write_eop_int;
652 wpt_uint32 chan_mask;
653 wpt_uint32 chan_mask_read_disable;
654 wpt_uint32 intMask;
655} WLANDXE_ChannelExConfigType;
656
657typedef struct
658{
659 WDTS_ChannelType channelType;
660 WLANDXE_DescCtrlBlkType *headCtrlBlk;
661 WLANDXE_DescCtrlBlkType *tailCtrlBlk;
Jeff Johnson295189b2012-06-20 16:38:30 -0700662 WLANDXE_DescType *descriptorAllocation;
Jeff Johnson295189b2012-06-20 16:38:30 -0700663 WLANDXE_DescType *DescBottomLoc;
Arun Kumar Khandavalli6119f7d2013-12-18 00:16:17 +0530664 wpt_uint32 descBottomLocPhyAddr;
Jeff Johnson295189b2012-06-20 16:38:30 -0700665 wpt_uint32 numDesc;
666 wpt_uint32 numFreeDesc;
667 wpt_uint32 numRsvdDesc;
Karthick S3254c5d2015-04-28 15:06:17 +0530668 wpt_uint32 desc_write_fail_count;
Jeff Johnson295189b2012-06-20 16:38:30 -0700669 wpt_uint32 maxFrameSize;
670 wpt_uint32 numFragmentCurrentChain;
671 wpt_uint32 numFrameBeforeInt;
672 wpt_uint32 numTotalFrame;
Mihir Sheted183cef2014-09-26 19:17:56 +0530673 wpt_uint32 doneIntDisabled;
Jeff Johnson295189b2012-06-20 16:38:30 -0700674 wpt_mutex dxeChannelLock;
675 wpt_boolean hitLowResource;
676 WLANDXE_ChannelConfigType channelConfig;
677 WLANDXE_ChannelRegisterType channelRegister;
678 WLANDXE_ChannelExConfigType extraConfig;
679 WLANDXE_DMAChannelType assignedDMAChannel;
680 wpt_uint64 rxDoneHistogram;
681} WLANDXE_ChannelCBType;
682
683typedef struct
684{
685 WLANDXE_TXCompIntEnableType txIntEnable;
686 unsigned int txLowResourceThreshold_LoPriCh;
687 unsigned int txLowResourceThreshold_HiPriCh;
688 unsigned int rxLowResourceThreshold;
689 unsigned int txInterruptEnableFrameCount;
690 unsigned int txInterruptEnablePeriod;
691} WLANDXE_TxCompIntConfigType;
692
693typedef struct
694{
695 WLANDXE_ChannelCBType dxeChannel[WDTS_CHANNEL_MAX];
696 WLANDXE_RxFrameReadyCbType rxReadyCB;
697 WLANDXE_TxCompleteCbType txCompCB;
698 WLANDXE_LowResourceCbType lowResourceCB;
Mihir Shetec4093f92015-05-28 15:21:11 +0530699 WLANDXE_MbReceiveMsgCbType receiveMbMsgCB;
Mihir Shete5affadc2015-05-29 20:54:57 +0530700 WLANDXE_RxLogDoneType receiveLogCompleteCB;
Jeff Johnson295189b2012-06-20 16:38:30 -0700701 WLANDXE_TxCompIntConfigType txCompInt;
702 void *clientCtxt;
703 wpt_uint32 interruptPath;
704 wpt_msg *rxIsrMsg;
705 wpt_msg *txIsrMsg;
Karthick Sc6ec8362015-08-12 18:18:47 +0530706 wpt_msg *rxPktAvailMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -0700707 volatile WLANDXE_PowerStateType hostPowerState;
708 wpt_boolean rxIntDisabledByIMPS;
709 wpt_boolean txIntDisabledByIMPS;
710 WLANDXE_SetPowerStateCbType setPowerStateCb;
711 volatile WLANDXE_RivaPowerStateType rivaPowerState;
Karthick Sc6ec8362015-08-12 18:18:47 +0530712 wpt_boolean ringNotEmpty;
Jeff Johnson295189b2012-06-20 16:38:30 -0700713 wpt_boolean txIntEnable;
Karthick Sc6ec8362015-08-12 18:18:47 +0530714 wpt_uint32 txCompletedFrames;
715 wpt_uint8 ucTxMsgCnt;
716 wpt_uint16 lastKickOffDxe;
717 wpt_uint32 smsmRingsEmptyHistogram;
718 wpt_uint32 smsmDxeHistogram;
Jeff Johnson295189b2012-06-20 16:38:30 -0700719 wpt_uint32 dxeCookie;
720 wpt_packet *freeRXPacket;
721 wpt_boolean rxPalPacketUnavailable;
Jeff Johnsone7245742012-09-05 17:12:55 -0700722 wpt_boolean driverReloadInProcessing;
Leo Changac1d3612013-07-01 15:15:51 -0700723 wpt_boolean smsmToggled;
Mihir Shete68ed77a2014-10-10 10:47:12 +0530724 wpt_boolean txRingsEmpty;
Mihir Shetec4093f92015-05-28 15:21:11 +0530725 wpt_boolean hostInitiatedH2H;
Mihir Shete44547fb2014-03-10 14:15:42 +0530726#ifdef WLAN_DXE_LOW_RESOURCE_TIMER
Leo Chang72cdfd32013-10-17 20:36:30 -0700727 wpt_timer rxResourceAvailableTimer;
Mihir Shete44547fb2014-03-10 14:15:42 +0530728#endif
Mihir Shetefdc9f532014-01-09 15:03:02 +0530729 wpt_timer dxeSSRTimer;
Jeff Johnson295189b2012-06-20 16:38:30 -0700730} WLANDXE_CtrlBlkType;
731
Sravan Kumar Kairam8bbda362015-10-06 11:51:14 +0530732typedef struct
733{
734 u64 *rxIntDisableReturn;
Sravan Kumar Kairam84e995f2016-05-27 16:16:21 +0530735 u64 *rxIntDisableFrame;
Sravan Kumar Kairam8bbda362015-10-06 11:51:14 +0530736 wpt_uint8 rxIntChanlSrc;
737 wpt_uint8 txCmpIntChanlSrc;
Sravan Kumar Kairam7b8c3852016-03-28 15:54:05 +0530738 wpt_uint8 rx_low_resource_timer;
Sravan Kumar Kairam84e995f2016-05-27 16:16:21 +0530739 wpt_uint8 dxe_prev_ps;
740 wpt_uint8 rx_imps_set_fp;
Sravan Kumar Kairam8bbda362015-10-06 11:51:14 +0530741} WLANDXE_EnvInformation;
Sravan Kumar Kairama8269e72015-11-06 12:13:24 +0530742
743typedef struct
744{
745 /* Records are stored in ring buffer */
746 v_U32_t head;
747 v_U32_t tail;
748 v_U32_t num;
749
750 /* Config for controlling the trace */
751 v_U8_t enable;
752}dxeTraceData;
753
754typedef struct
755{
756 v_U32_t time;
757 v_U8_t chan;
758 v_U8_t code;
759 v_U32_t data;
760}dxeTraceRecord, *pdxeTraceRecord;
761
Jeff Johnson295189b2012-06-20 16:38:30 -0700762/*==========================================================================
763 @ Function Name
764 dxeCommonDefaultConfig
765
766 @ Description
767
768 @ Parameters
769 WLANDXE_CtrlBlkType *dxeCtrlBlk,
770 DXE host driver main control block
771
772 @ Return
jagadeeshf869bba2015-04-07 20:06:21 +0530773 void
Jeff Johnson295189b2012-06-20 16:38:30 -0700774
775===========================================================================*/
jagadeeshf869bba2015-04-07 20:06:21 +0530776extern void dxeCommonDefaultConfig
Jeff Johnson295189b2012-06-20 16:38:30 -0700777(
778 WLANDXE_CtrlBlkType *dxeCtrlBlk
779);
780
781/*==========================================================================
782 @ Function Name
783 dxeChannelDefaultConfig
784
785 @ Description
786 Get defualt configuration values from pre defined structure
787 All the channels must have it's own configurations
788
789 @ Parameters
790 WLANDXE_CtrlBlkType *dxeCtrlBlk,
791 DXE host driver main control block
792 WLANDXE_ChannelCBType *channelEntry
793 Channel specific control block
794
795 @ Return
796 wpt_status
797
798===========================================================================*/
799extern wpt_status dxeChannelDefaultConfig
800(
801 WLANDXE_CtrlBlkType *dxeCtrlBlk,
802 WLANDXE_ChannelCBType *channelEntry
803);
804
Mihir Shetee6618162015-03-16 14:48:42 +0530805void dxeSetEnabledChannels
806(
807 wpt_uint8 enabledChannels
808);
809
810wpt_uint8 dxeGetEnabledChannels
811(
812 void
813);
Jeff Johnson295189b2012-06-20 16:38:30 -0700814#endif /* WLAN_QCT_DXE_I_H */