blob: 1f2e55304dada1da37fed255d92c77b9b9b9fdb3 [file] [log] [blame]
Jeff Johnson295189b2012-06-20 16:38:30 -07001/*
Prakash Dhavali55d45772014-02-12 13:19:04 -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.
Kiet Lam26cd6472014-02-11 23:30:06 -080020 */
Prakash Dhavali55d45772014-02-12 13:19:04 -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/**
29 *
30 * @file: wlan_qct_dev_defs.h
31 *
32 * @brief: This file contains the hardware related definitions.
33 *
Jeff Johnson295189b2012-06-20 16:38:30 -070034 */
35
36#ifndef __WLAN_QCT_DEV_DEFS_H
37#define __WLAN_QCT_DEV_DEFS_H
38
39
40/* --------------------------------------------------------------------
41 * HW definitions for WLAN Chip
42 * --------------------------------------------------------------------
43 */
44
Jeff Johnsone7245742012-09-05 17:12:55 -070045#ifdef WCN_PRONTO
Gopichand Nakkalaba261272013-01-03 15:45:56 -080046
47#ifdef WLAN_SOFTAP_VSTA_FEATURE
Madan Mohan Koyyalamudi20da9932013-03-21 16:12:18 -070048//supports both V1 and V2
49#define HAL_NUM_ASSOC_STA 32 // HAL_NUM_STA - No of GP STAs - 2 (1 self Sta + 1 Bcast Sta)
50#define HAL_NUM_STA 41
51#define HAL_NUM_HW_STA 16
52
53#define HAL_NUM_GPSTA 4
Gopichand Nakkalaba261272013-01-03 15:45:56 -080054#define HAL_NUM_UMA_DESC_ENTRIES HAL_NUM_HW_STA // or HAL_NUM_STA
55
Gopichand Nakkalaba261272013-01-03 15:45:56 -080056#define HAL_NUM_BSSID 2
Madan Mohan Koyyalamudi20da9932013-03-21 16:12:18 -070057#define HAL_NUM_STA_WITHOUT_VSTA 12
58#define HAL_NUM_STA_INCLUDING_VSTA 32
Gopichand Nakkalaba261272013-01-03 15:45:56 -080059
60#define HAL_NUM_VSTA (HAL_NUM_STA - HAL_NUM_HW_STA)
61#define QWLANFW_MAX_NUM_VSTA (HAL_NUM_VSTA)
62#define QWLANFW_VSTA_INVALID_IDX (HAL_NUM_STA+1)
63#define QWLAN_VSTA_MIN_IDX (HAL_NUM_HW_STA)
64#define QWLANFW_NUM_GPSTA (HAL_NUM_GPSTA)
65
Madan Mohan Koyyalamudi20da9932013-03-21 16:12:18 -070066// For Pronto
67#define HAL_NUM_STA_WITHOUT_VSTA_PRONTO_V1 9
Shailender Karmuchi3e7202f2013-06-25 01:14:09 -070068#define HAL_NUM_STA_WITHOUT_VSTA_PRONTO_V2 (HAL_NUM_STA_WITHOUT_VSTA)
Gopichand Nakkalaba261272013-01-03 15:45:56 -080069
70#define IS_VSTA_VALID_IDX(__x) \
71 ((__x) != QWLANFW_VSTA_INVALID_IDX)
72
73#define IS_VSTA_IDX(__x) \
74 (((__x) >= QWLAN_VSTA_MIN_IDX) && ((__x) < HAL_NUM_STA))
75
76#define GET_VSTA_INDEX_FOR_STA_INDEX(__idx) ((__idx) - QWLAN_VSTA_MIN_IDX)
77
78// is the STA a General Purpose STA?
79#define IS_GPSTA_IDX(__x) \
80 (((__x) >= (HAL_NUM_HW_STA-HAL_NUM_GPSTA)) && \
81 ((__x) < HAL_NUM_HW_STA))
82
83// is the STA a HW STA (excluding GP STAs)
84#define IS_HWSTA_IDX(__x) \
85 ((__x) < (HAL_NUM_HW_STA-HAL_NUM_GPSTA))
86
87#define HAL_NUM_STA_INCLUDING_VSTA 32
88
89#elif WCN_PRONTO_V1
Jeff Johnsone7245742012-09-05 17:12:55 -070090
91/* In Pronto 1.0 TPE descriptor size is increased to 1K per station
92 * but not the cMEM allocated for hardware descriptors. Due to this
93 * memory limitation the number of stations are limited to 9 and BSS
94 * to 2 respectively.
95 *
96 * In Pronto 2.0, TPE descriptor size is reverted
97 * back to 512 bytes and hence more stations and BSSs can be supported
98 * from Pronto 2.0
99 *
100 * In Pronto 1.0, 9 HW stations are supported including BCAST STA(staId 0)
101 * and SELF STA(staId 1). So total ASSOC stations which can connect to
102 * Pronto 1.0 Softap = 9 - 1(self sta) - 1(Bcast sta) = 7 stations
103 */
Gopichand Nakkalaba261272013-01-03 15:45:56 -0800104#define HAL_NUM_HW_STA 9
105#define HAL_NUM_STA (HAL_NUM_HW_STA)
Jeff Johnsone7245742012-09-05 17:12:55 -0700106#define HAL_NUM_BSSID 2
107#define HAL_NUM_UMA_DESC_ENTRIES 9
Gopichand Nakkalaba261272013-01-03 15:45:56 -0800108#define HAL_NUM_ASSOC_STA 7
109
Jeff Johnsone7245742012-09-05 17:12:55 -0700110
111#else /* WCN_PRONTO_V1 */
112
Gopichand Nakkalaba261272013-01-03 15:45:56 -0800113#define HAL_NUM_HW_STA 14
114#define HAL_NUM_STA (HAL_NUM_HW_STA)
Jeff Johnsone7245742012-09-05 17:12:55 -0700115#define HAL_NUM_BSSID 4
116#define HAL_NUM_UMA_DESC_ENTRIES 14
Gopichand Nakkalaba261272013-01-03 15:45:56 -0800117#define HAL_NUM_ASSOC_STA 12
Jeff Johnsone7245742012-09-05 17:12:55 -0700118
Gopichand Nakkalaba261272013-01-03 15:45:56 -0800119
120#endif /* WCN_PRONTO_V1 and WLAN_SOFTAP_VSTA_FEATURE*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700121#else /* WCN_PRONTO */
122
Gopichand Nakkalaba261272013-01-03 15:45:56 -0800123/*
124 * Riva supports 16 stations in hardware
125 *
126 * Riva without Virtual STA feature can only support 12 stations:
127 * 1 Broadcast STA (hard)
128 * 1 "Self" STA (hard)
129 * 10 Soft AP Stations (hard)
130 *
131 * Riva with Virtual STA feature supports 38 stations:
132 * 1 Broadcast STA (hard)
133 * 1 "Self" STA (hard)
134 * 4 General Purpose Stations to support Virtual STAs (hard)
135 * 32 Soft AP Stations (10 hard/22 virtual)
Madan Mohan Koyyalamudi20da9932013-03-21 16:12:18 -0700136 *
137 * To support concurrency with Vsta, number of stations are increased to 41 (from 38).
138 * 1 for the second interface.
139 * 1 for reserving an infra peer STA index (hard) for the other interface.
140 * 1 for P2P device role.
Gopichand Nakkalaba261272013-01-03 15:45:56 -0800141 */
142#ifdef WLAN_SOFTAP_VSTA_FEATURE
143#define HAL_NUM_ASSOC_STA 32
Madan Mohan Koyyalamudi20da9932013-03-21 16:12:18 -0700144#define HAL_NUM_STA 41
Gopichand Nakkalaba261272013-01-03 15:45:56 -0800145#define HAL_NUM_HW_STA 16
146#define HAL_NUM_GPSTA 4
147#define HAL_NUM_VSTA (HAL_NUM_STA - HAL_NUM_HW_STA)
148
149#define QWLANFW_MAX_NUM_VSTA HAL_NUM_VSTA
150#define QWLANFW_VSTA_INVALID_IDX (HAL_NUM_STA+1)
151#define QWLAN_VSTA_MIN_IDX HAL_NUM_HW_STA
152#define QWLANFW_NUM_GPSTA HAL_NUM_GPSTA
153
154
155#define IS_VSTA_VALID_IDX(__x) \
156 ((__x) != QWLANFW_VSTA_INVALID_IDX)
157
158#define IS_VSTA_IDX(__x) \
159 (((__x) >= QWLAN_VSTA_MIN_IDX) && ((__x) < HAL_NUM_STA))
160
161#define GET_VSTA_INDEX_FOR_STA_INDEX(__idx) ((__idx) - QWLAN_VSTA_MIN_IDX)
162
163// is the STA a General Purpose STA?
164#define IS_GPSTA_IDX(__x) \
165 (((__x) >= (HAL_NUM_HW_STA-HAL_NUM_GPSTA)) && \
166 ((__x) < HAL_NUM_HW_STA))
167
168// is the STA a HW STA (excluding GP STAs)
169#define IS_HWSTA_IDX(__x) \
170 ((__x) < (HAL_NUM_HW_STA-HAL_NUM_GPSTA))
171
172#define HAL_NUM_STA_INCLUDING_VSTA 32
173#define HAL_NUM_STA_WITHOUT_VSTA 12
174
175#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700176#define HAL_NUM_STA 12
Gopichand Nakkalaba261272013-01-03 15:45:56 -0800177#define HAL_NUM_ASSOC_STA 10
178#define HAL_NUM_HW_STA 12
179#endif
180
Jeff Johnson295189b2012-06-20 16:38:30 -0700181#define HAL_NUM_BSSID 2
Gopichand Nakkalaba261272013-01-03 15:45:56 -0800182#define HAL_NUM_UMA_DESC_ENTRIES HAL_NUM_HW_STA
Jeff Johnson295189b2012-06-20 16:38:30 -0700183
Jeff Johnsone7245742012-09-05 17:12:55 -0700184#endif /* WCN_PRONTO */
185
Shailender Karmuchi3e7202f2013-06-25 01:14:09 -0700186#ifdef FEATURE_WLAN_TDLS
187#define CXM_TDLS_MAX_NUM_STA 32
188#endif
189
Jeff Johnson295189b2012-06-20 16:38:30 -0700190#define HAL_INVALID_BSSIDX HAL_NUM_BSSID
191
192#define MAX_NUM_OF_BACKOFFS 8
193#define HAL_MAX_ASSOC_ID HAL_NUM_STA
194
195#define WLANHAL_TX_BD_HEADER_SIZE 40 //FIXME_PRIMA - Revisit
196#define WLANHAL_RX_BD_HEADER_SIZE 76
197
198/*
199 * From NOVA Mac Arch document
200 * Encryp. mode The encryption mode
201 * 000: Encryption functionality is not enabled
202 * 001: Encryption is set to WEP
203 * 010: Encryption is set to WEP 104
204 * 011: Encryption is set to TKIP
205 * 100: Encryption is set to AES
206 * 101 - 111: Reserved for future
207 */
208
209#define HAL_ENC_POLICY_NULL 0
210#define HAL_ENC_POLICY_WEP40 1
211#define HAL_ENC_POLICY_WEP104 2
212#define HAL_ENC_POLICY_TKIP 3
213#define HAL_ENC_POLICY_AES_CCM 4
214
215/* --------------------------------------------------------------------- */
216/* BMU */
217/* --------------------------------------------------------------------- */
218
219/*
220 * BMU WQ assignment, as per Prima Programmer's Guide - FIXME_PRIMA: Revisit
221 *
222 */
223
224typedef enum sBmuWqId {
225
226 /* ====== In use WQs ====== */
227
228 /* BMU */
229 BMUWQ_BMU_IDLE_BD = 0,
230 BMUWQ_BMU_IDLE_PDU = 1,
231
232 /* RxP */
233 BMUWQ_RXP_UNKNWON_ADDR = 2, /* currently unhandled by HAL */
234
235 /* DPU RX */
236 BMUWQ_DPU_RX = 3,
237
238 /* DPU TX */
239 BMUWQ_DPU_TX = 6,
240
241 /* Firmware */
242 BMUWQ_FW_TRANSMIT = 12, /* DPU Tx->FW Tx */
243 BMUWQ_FW_RECV = 7, /* DPU Rx->FW Rx */
244
245 BMUWQ_FW_RPE_RECV = 16, /* RXP/RPE Rx->FW Rx */
246 FW_SCO_WQ = BMUWQ_FW_RPE_RECV,
247
248 /* DPU Error */
249 BMUWQ_DPU_ERROR_WQ = 8,
250
251 /* DXE RX */
252 BMUWQ_DXE_RX = 11,
253
254 BMUWQ_DXE_RX_HI = 4,
255
256 /* ADU/UMA */
257 BMUWQ_ADU_UMA_TX = 23,
258 BMUWQ_ADU_UMA_RX = 24,
259
260 /* BMU BTQM */
261 BMUWQ_BTQM = 25,
262
263 /* Special WQ for BMU to dropping all frames coming to this WQ ID */
264 BMUWQ_SINK = 255,
265
Jeff Johnsone7245742012-09-05 17:12:55 -0700266#ifdef WCN_PRONTO
267 BMUWQ_BMU_CMEM_IDLE_BD = 27,
268 /* Total BMU WQ count in Pronto */
269 BMUWQ_NUM = 28,
270
271 //WQs 17 through 22 are enabled in Pronto. So, set not supported mask to 0.
272 BMUWQ_NOT_SUPPORTED_MASK = 0x0,
273#else
274 /* Total BMU WQ count in Prima */
Jeff Johnson295189b2012-06-20 16:38:30 -0700275 BMUWQ_NUM = 27,
276
Jeff Johnsone7245742012-09-05 17:12:55 -0700277 //Prima has excluded support for WQs 17 through 22.
Jeff Johnson295189b2012-06-20 16:38:30 -0700278 BMUWQ_NOT_SUPPORTED_MASK = 0x7e0000,
Jeff Johnsone7245742012-09-05 17:12:55 -0700279#endif //WCN_PRONTO
280
Jeff Johnson295189b2012-06-20 16:38:30 -0700281
282 /* Aliases */
283 BMUWQ_BTQM_TX_MGMT = BMUWQ_BTQM,
284 BMUWQ_BTQM_TX_DATA = BMUWQ_BTQM,
285 BMUWQ_BMU_WQ2 = BMUWQ_RXP_UNKNWON_ADDR,
286 BMUWQ_FW_DPU_TX = 5,
287
288 //WQ where all the frames with addr1/addr2/addr3 with value 254/255 go to.
289 BMUWQ_FW_RECV_EXCEPTION = 14, //using BMUWQ_FW_MESSAGE WQ for this purpose.
290
291 //WQ where all frames with unknown Addr2 filter exception cases frames will pushed if FW wants host to
292 //send deauth to the sender.
293 BMUWQ_HOST_RX_UNKNOWN_ADDR2_FRAMES = 15, //using BMUWQ_FW_DXECH2_0 for this purpose.
294
295 /* ====== Unused/Reserved WQ ====== */
296
297 /* ADU/UMA Error WQ */
298 BMUWQ_ADU_UMA_TX_ERROR_WQ = 13, /* Not in use by HAL */
299 BMUWQ_ADU_UMA_RX_ERROR_WQ = 10, /* Not in use by HAL */
300
301 /* DPU Error WQ2 */
302 BMUWQ_DPU_ERROR_WQ2 = 9, /* Not in use by HAL */
303
304 /* FW WQs */
305 //This WQ is being used for RXP to push in frames in exception cases ( addr1/add2/addr3 254/255)
306 //BMUWQ_FW_MESG = 14, /* DxE Tx->FW, Not in use by FW */
307 //BMUWQ_FW_DXECH2_0 = 15, /* BD/PDU<->MEM conversion using DxE CH2. Not in use by FW */
308 BMUWQ_FW_DXECH2_1 = 16, /* BD/PDU<->MEM conversion using DxE CH2. Not in use by FW */
309
Madan Mohan Koyyalamudi20da9932013-03-21 16:12:18 -0700310 /* NDPA Addr3 workaround */
311 BMUWQ_RXP_DEFAULT_PUSH_WQ = 17,
Jeff Johnson295189b2012-06-20 16:38:30 -0700312/* These WQs are not supported in Volans
313 BMUWQ_BMU_WQ17 = 17,
314 BMUWQ_BMU_WQ18 = 18,
315 BMUWQ_BMU_WQ19 = 19,
316 BMUWQ_BMU_WQ20 = 20,
317 BMUWQ_BMU_WQ21 = 21,
318 BMUWQ_BMU_WQ22 = 22
319*/
320} tBmuWqId;
321
322typedef enum
323{
324 BTQM_QID0 = 0,
325 BTQM_QID1,
326 BTQM_QID2,
327 BTQM_QID3,
328 BTQM_QID4,
329 BTQM_QID5,
330 BTQM_QID6,
331 BTQM_QID7,
332 BTQM_QID8,
333 BTQM_QID9,
334 BTQM_QID10,
335
336 BTQM_QUEUE_TX_TID_0 = BTQM_QID0,
337 BTQM_QUEUE_TX_TID_1,
338 BTQM_QUEUE_TX_TID_2,
339 BTQM_QUEUE_TX_TID_3,
340 BTQM_QUEUE_TX_TID_4,
341 BTQM_QUEUE_TX_TID_5,
342 BTQM_QUEUE_TX_TID_6,
343 BTQM_QUEUE_TX_TID_7,
344
345
346 /* Queue Id <-> BO
347 */
348 BTQM_QUEUE_TX_nQOS = BTQM_QID8,
349 BTQM_QUEUE_SELF_STA_BCAST_MGMT = BTQM_QID10,
350 BTQM_QUEUE_SELF_STA_UCAST_MGMT = BTQM_QID9,
351 BTQM_QUEUE_SELF_STA_UCAST_DATA = BTQM_QID9,
352 BTQM_QUEUE_NULL_FRAME = BTQM_QID9,
353 BTQM_QUEUE_SELF_STA_PROBE_RSP = BTQM_QID9,
354 BTQM_QUEUE_TX_AC_BE = BTQM_QUEUE_TX_TID_0,
355 BTQM_QUEUE_TX_AC_BK = BTQM_QUEUE_TX_TID_2,
356 BTQM_QUEUE_TX_AC_VI = BTQM_QUEUE_TX_TID_4,
357 BTQM_QUEUE_TX_AC_VO = BTQM_QUEUE_TX_TID_6
358}tBtqmQId;
359
360#define STACFG_MAX_TC 8
361
362/* --------------------------------------------------------------------- */
363/* BD type*/
364/* --------------------------------------------------------------------- */
365#define HWBD_TYPE_GENERIC 0 /* generic BD format */
366#define HWBD_TYPE_FRAG 1 /* fragmentation BD format*/
367
Anand Kumard0b17e42013-01-11 17:00:00 -0800368/*---------------------------------------------------------------------- */
369/* HW Tx power */
370/*---------------------------------------------------------------------- */
371#ifdef WLAN_HAL_PRIMA
372 #define WLAN_SOC_PRIMA_MAX_TX_POWER 22
373 #define WLAN_SOC_PRIMA_MIN_TX_POWER 6
374#else
375 /* add more platforms here */
376 #define WLAN_SOC_PRIMA_MAX_TX_POWER 22
377 #define WLAN_SOC_PRIMA_MIN_TX_POWER 6
378#endif //#ifdef WCN_PRIMA
379
Jeff Johnson295189b2012-06-20 16:38:30 -0700380#endif /* __WLAN_QCT_DEV_DEFS_H */