blob: 6959bc5da031fd7e103fcc9e6bcb0fb0f7a2b203 [file] [log] [blame]
Jeff Johnson295189b2012-06-20 16:38:30 -07001/*
Kiet Lamaa8e15a2014-02-11 23:30:06 -08002 * Copyright (c) 2012-2013 Qualcomm Atheros, Inc.
3 * All Rights Reserved.
4 * Qualcomm Atheros Confidential and Proprietary.
5 */
Jeff Johnson295189b2012-06-20 16:38:30 -07006/**
7 *
8 * @file: wlan_qct_dev_defs.h
9 *
10 * @brief: This file contains the hardware related definitions.
11 *
Shailender Karmuchi07f514b2013-06-25 01:14:09 -070012 * Copyright (C) 2008, Qualcomm Technologies, Inc. All rights reserved.
Jeff Johnson295189b2012-06-20 16:38:30 -070013 */
14
15#ifndef __WLAN_QCT_DEV_DEFS_H
16#define __WLAN_QCT_DEV_DEFS_H
17
18
19/* --------------------------------------------------------------------
20 * HW definitions for WLAN Chip
21 * --------------------------------------------------------------------
22 */
23
Jeff Johnsone7245742012-09-05 17:12:55 -070024#ifdef WCN_PRONTO
Gopichand Nakkala976e3252013-01-03 15:45:56 -080025
26#ifdef WLAN_SOFTAP_VSTA_FEATURE
Madan Mohan Koyyalamudi5a244b22013-03-21 16:12:18 -070027//supports both V1 and V2
28#define HAL_NUM_ASSOC_STA 32 // HAL_NUM_STA - No of GP STAs - 2 (1 self Sta + 1 Bcast Sta)
29#define HAL_NUM_STA 41
30#define HAL_NUM_HW_STA 16
31
32#define HAL_NUM_GPSTA 4
Gopichand Nakkala976e3252013-01-03 15:45:56 -080033#define HAL_NUM_UMA_DESC_ENTRIES HAL_NUM_HW_STA // or HAL_NUM_STA
34
Gopichand Nakkala976e3252013-01-03 15:45:56 -080035#define HAL_NUM_BSSID 2
Madan Mohan Koyyalamudi5a244b22013-03-21 16:12:18 -070036#define HAL_NUM_STA_WITHOUT_VSTA 12
37#define HAL_NUM_STA_INCLUDING_VSTA 32
Gopichand Nakkala976e3252013-01-03 15:45:56 -080038
39#define HAL_NUM_VSTA (HAL_NUM_STA - HAL_NUM_HW_STA)
40#define QWLANFW_MAX_NUM_VSTA (HAL_NUM_VSTA)
41#define QWLANFW_VSTA_INVALID_IDX (HAL_NUM_STA+1)
42#define QWLAN_VSTA_MIN_IDX (HAL_NUM_HW_STA)
43#define QWLANFW_NUM_GPSTA (HAL_NUM_GPSTA)
44
Madan Mohan Koyyalamudi5a244b22013-03-21 16:12:18 -070045// For Pronto
46#define HAL_NUM_STA_WITHOUT_VSTA_PRONTO_V1 9
Shailender Karmuchi07f514b2013-06-25 01:14:09 -070047#define HAL_NUM_STA_WITHOUT_VSTA_PRONTO_V2 (HAL_NUM_STA_WITHOUT_VSTA)
Gopichand Nakkala976e3252013-01-03 15:45:56 -080048
49#define IS_VSTA_VALID_IDX(__x) \
50 ((__x) != QWLANFW_VSTA_INVALID_IDX)
51
52#define IS_VSTA_IDX(__x) \
53 (((__x) >= QWLAN_VSTA_MIN_IDX) && ((__x) < HAL_NUM_STA))
54
55#define GET_VSTA_INDEX_FOR_STA_INDEX(__idx) ((__idx) - QWLAN_VSTA_MIN_IDX)
56
57// is the STA a General Purpose STA?
58#define IS_GPSTA_IDX(__x) \
59 (((__x) >= (HAL_NUM_HW_STA-HAL_NUM_GPSTA)) && \
60 ((__x) < HAL_NUM_HW_STA))
61
62// is the STA a HW STA (excluding GP STAs)
63#define IS_HWSTA_IDX(__x) \
64 ((__x) < (HAL_NUM_HW_STA-HAL_NUM_GPSTA))
65
66#define HAL_NUM_STA_INCLUDING_VSTA 32
67
68#elif WCN_PRONTO_V1
Jeff Johnsone7245742012-09-05 17:12:55 -070069
70/* In Pronto 1.0 TPE descriptor size is increased to 1K per station
71 * but not the cMEM allocated for hardware descriptors. Due to this
72 * memory limitation the number of stations are limited to 9 and BSS
73 * to 2 respectively.
74 *
75 * In Pronto 2.0, TPE descriptor size is reverted
76 * back to 512 bytes and hence more stations and BSSs can be supported
77 * from Pronto 2.0
78 *
79 * In Pronto 1.0, 9 HW stations are supported including BCAST STA(staId 0)
80 * and SELF STA(staId 1). So total ASSOC stations which can connect to
81 * Pronto 1.0 Softap = 9 - 1(self sta) - 1(Bcast sta) = 7 stations
82 */
Gopichand Nakkala976e3252013-01-03 15:45:56 -080083#define HAL_NUM_HW_STA 9
84#define HAL_NUM_STA (HAL_NUM_HW_STA)
Jeff Johnsone7245742012-09-05 17:12:55 -070085#define HAL_NUM_BSSID 2
86#define HAL_NUM_UMA_DESC_ENTRIES 9
Gopichand Nakkala976e3252013-01-03 15:45:56 -080087#define HAL_NUM_ASSOC_STA 7
88
Jeff Johnsone7245742012-09-05 17:12:55 -070089
90#else /* WCN_PRONTO_V1 */
91
Gopichand Nakkala976e3252013-01-03 15:45:56 -080092#define HAL_NUM_HW_STA 14
93#define HAL_NUM_STA (HAL_NUM_HW_STA)
Jeff Johnsone7245742012-09-05 17:12:55 -070094#define HAL_NUM_BSSID 4
95#define HAL_NUM_UMA_DESC_ENTRIES 14
Gopichand Nakkala976e3252013-01-03 15:45:56 -080096#define HAL_NUM_ASSOC_STA 12
Jeff Johnsone7245742012-09-05 17:12:55 -070097
Gopichand Nakkala976e3252013-01-03 15:45:56 -080098
99#endif /* WCN_PRONTO_V1 and WLAN_SOFTAP_VSTA_FEATURE*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700100#else /* WCN_PRONTO */
101
Gopichand Nakkala976e3252013-01-03 15:45:56 -0800102/*
103 * Riva supports 16 stations in hardware
104 *
105 * Riva without Virtual STA feature can only support 12 stations:
106 * 1 Broadcast STA (hard)
107 * 1 "Self" STA (hard)
108 * 10 Soft AP Stations (hard)
109 *
110 * Riva with Virtual STA feature supports 38 stations:
111 * 1 Broadcast STA (hard)
112 * 1 "Self" STA (hard)
113 * 4 General Purpose Stations to support Virtual STAs (hard)
114 * 32 Soft AP Stations (10 hard/22 virtual)
Madan Mohan Koyyalamudi5a244b22013-03-21 16:12:18 -0700115 *
116 * To support concurrency with Vsta, number of stations are increased to 41 (from 38).
117 * 1 for the second interface.
118 * 1 for reserving an infra peer STA index (hard) for the other interface.
119 * 1 for P2P device role.
Gopichand Nakkala976e3252013-01-03 15:45:56 -0800120 */
121#ifdef WLAN_SOFTAP_VSTA_FEATURE
122#define HAL_NUM_ASSOC_STA 32
Madan Mohan Koyyalamudi5a244b22013-03-21 16:12:18 -0700123#define HAL_NUM_STA 41
Gopichand Nakkala976e3252013-01-03 15:45:56 -0800124#define HAL_NUM_HW_STA 16
125#define HAL_NUM_GPSTA 4
126#define HAL_NUM_VSTA (HAL_NUM_STA - HAL_NUM_HW_STA)
127
128#define QWLANFW_MAX_NUM_VSTA HAL_NUM_VSTA
129#define QWLANFW_VSTA_INVALID_IDX (HAL_NUM_STA+1)
130#define QWLAN_VSTA_MIN_IDX HAL_NUM_HW_STA
131#define QWLANFW_NUM_GPSTA HAL_NUM_GPSTA
132
133
134#define IS_VSTA_VALID_IDX(__x) \
135 ((__x) != QWLANFW_VSTA_INVALID_IDX)
136
137#define IS_VSTA_IDX(__x) \
138 (((__x) >= QWLAN_VSTA_MIN_IDX) && ((__x) < HAL_NUM_STA))
139
140#define GET_VSTA_INDEX_FOR_STA_INDEX(__idx) ((__idx) - QWLAN_VSTA_MIN_IDX)
141
142// is the STA a General Purpose STA?
143#define IS_GPSTA_IDX(__x) \
144 (((__x) >= (HAL_NUM_HW_STA-HAL_NUM_GPSTA)) && \
145 ((__x) < HAL_NUM_HW_STA))
146
147// is the STA a HW STA (excluding GP STAs)
148#define IS_HWSTA_IDX(__x) \
149 ((__x) < (HAL_NUM_HW_STA-HAL_NUM_GPSTA))
150
151#define HAL_NUM_STA_INCLUDING_VSTA 32
152#define HAL_NUM_STA_WITHOUT_VSTA 12
153
154#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700155#define HAL_NUM_STA 12
Gopichand Nakkala976e3252013-01-03 15:45:56 -0800156#define HAL_NUM_ASSOC_STA 10
157#define HAL_NUM_HW_STA 12
158#endif
159
Jeff Johnson295189b2012-06-20 16:38:30 -0700160#define HAL_NUM_BSSID 2
Gopichand Nakkala976e3252013-01-03 15:45:56 -0800161#define HAL_NUM_UMA_DESC_ENTRIES HAL_NUM_HW_STA
Jeff Johnson295189b2012-06-20 16:38:30 -0700162
Jeff Johnsone7245742012-09-05 17:12:55 -0700163#endif /* WCN_PRONTO */
164
Shailender Karmuchi07f514b2013-06-25 01:14:09 -0700165#ifdef FEATURE_WLAN_TDLS
166#define CXM_TDLS_MAX_NUM_STA 32
167#endif
168
Jeff Johnson295189b2012-06-20 16:38:30 -0700169#define HAL_INVALID_BSSIDX HAL_NUM_BSSID
170
171#define MAX_NUM_OF_BACKOFFS 8
172#define HAL_MAX_ASSOC_ID HAL_NUM_STA
173
174#define WLANHAL_TX_BD_HEADER_SIZE 40 //FIXME_PRIMA - Revisit
175#define WLANHAL_RX_BD_HEADER_SIZE 76
176
177/*
178 * From NOVA Mac Arch document
179 * Encryp. mode The encryption mode
180 * 000: Encryption functionality is not enabled
181 * 001: Encryption is set to WEP
182 * 010: Encryption is set to WEP 104
183 * 011: Encryption is set to TKIP
184 * 100: Encryption is set to AES
185 * 101 - 111: Reserved for future
186 */
187
188#define HAL_ENC_POLICY_NULL 0
189#define HAL_ENC_POLICY_WEP40 1
190#define HAL_ENC_POLICY_WEP104 2
191#define HAL_ENC_POLICY_TKIP 3
192#define HAL_ENC_POLICY_AES_CCM 4
193
194/* --------------------------------------------------------------------- */
195/* BMU */
196/* --------------------------------------------------------------------- */
197
198/*
199 * BMU WQ assignment, as per Prima Programmer's Guide - FIXME_PRIMA: Revisit
200 *
201 */
202
203typedef enum sBmuWqId {
204
205 /* ====== In use WQs ====== */
206
207 /* BMU */
208 BMUWQ_BMU_IDLE_BD = 0,
209 BMUWQ_BMU_IDLE_PDU = 1,
210
211 /* RxP */
212 BMUWQ_RXP_UNKNWON_ADDR = 2, /* currently unhandled by HAL */
213
214 /* DPU RX */
215 BMUWQ_DPU_RX = 3,
216
217 /* DPU TX */
218 BMUWQ_DPU_TX = 6,
219
220 /* Firmware */
221 BMUWQ_FW_TRANSMIT = 12, /* DPU Tx->FW Tx */
222 BMUWQ_FW_RECV = 7, /* DPU Rx->FW Rx */
223
224 BMUWQ_FW_RPE_RECV = 16, /* RXP/RPE Rx->FW Rx */
225 FW_SCO_WQ = BMUWQ_FW_RPE_RECV,
226
227 /* DPU Error */
228 BMUWQ_DPU_ERROR_WQ = 8,
229
230 /* DXE RX */
231 BMUWQ_DXE_RX = 11,
232
233 BMUWQ_DXE_RX_HI = 4,
234
235 /* ADU/UMA */
236 BMUWQ_ADU_UMA_TX = 23,
237 BMUWQ_ADU_UMA_RX = 24,
238
239 /* BMU BTQM */
240 BMUWQ_BTQM = 25,
241
242 /* Special WQ for BMU to dropping all frames coming to this WQ ID */
243 BMUWQ_SINK = 255,
244
Jeff Johnsone7245742012-09-05 17:12:55 -0700245#ifdef WCN_PRONTO
246 BMUWQ_BMU_CMEM_IDLE_BD = 27,
247 /* Total BMU WQ count in Pronto */
248 BMUWQ_NUM = 28,
249
250 //WQs 17 through 22 are enabled in Pronto. So, set not supported mask to 0.
251 BMUWQ_NOT_SUPPORTED_MASK = 0x0,
252#else
253 /* Total BMU WQ count in Prima */
Jeff Johnson295189b2012-06-20 16:38:30 -0700254 BMUWQ_NUM = 27,
255
Jeff Johnsone7245742012-09-05 17:12:55 -0700256 //Prima has excluded support for WQs 17 through 22.
Jeff Johnson295189b2012-06-20 16:38:30 -0700257 BMUWQ_NOT_SUPPORTED_MASK = 0x7e0000,
Jeff Johnsone7245742012-09-05 17:12:55 -0700258#endif //WCN_PRONTO
259
Jeff Johnson295189b2012-06-20 16:38:30 -0700260
261 /* Aliases */
262 BMUWQ_BTQM_TX_MGMT = BMUWQ_BTQM,
263 BMUWQ_BTQM_TX_DATA = BMUWQ_BTQM,
264 BMUWQ_BMU_WQ2 = BMUWQ_RXP_UNKNWON_ADDR,
265 BMUWQ_FW_DPU_TX = 5,
266
267 //WQ where all the frames with addr1/addr2/addr3 with value 254/255 go to.
268 BMUWQ_FW_RECV_EXCEPTION = 14, //using BMUWQ_FW_MESSAGE WQ for this purpose.
269
270 //WQ where all frames with unknown Addr2 filter exception cases frames will pushed if FW wants host to
271 //send deauth to the sender.
272 BMUWQ_HOST_RX_UNKNOWN_ADDR2_FRAMES = 15, //using BMUWQ_FW_DXECH2_0 for this purpose.
273
274 /* ====== Unused/Reserved WQ ====== */
275
276 /* ADU/UMA Error WQ */
277 BMUWQ_ADU_UMA_TX_ERROR_WQ = 13, /* Not in use by HAL */
278 BMUWQ_ADU_UMA_RX_ERROR_WQ = 10, /* Not in use by HAL */
279
280 /* DPU Error WQ2 */
281 BMUWQ_DPU_ERROR_WQ2 = 9, /* Not in use by HAL */
282
283 /* FW WQs */
284 //This WQ is being used for RXP to push in frames in exception cases ( addr1/add2/addr3 254/255)
285 //BMUWQ_FW_MESG = 14, /* DxE Tx->FW, Not in use by FW */
286 //BMUWQ_FW_DXECH2_0 = 15, /* BD/PDU<->MEM conversion using DxE CH2. Not in use by FW */
287 BMUWQ_FW_DXECH2_1 = 16, /* BD/PDU<->MEM conversion using DxE CH2. Not in use by FW */
288
Madan Mohan Koyyalamudi5a244b22013-03-21 16:12:18 -0700289 /* NDPA Addr3 workaround */
290 BMUWQ_RXP_DEFAULT_PUSH_WQ = 17,
Jeff Johnson295189b2012-06-20 16:38:30 -0700291/* These WQs are not supported in Volans
292 BMUWQ_BMU_WQ17 = 17,
293 BMUWQ_BMU_WQ18 = 18,
294 BMUWQ_BMU_WQ19 = 19,
295 BMUWQ_BMU_WQ20 = 20,
296 BMUWQ_BMU_WQ21 = 21,
297 BMUWQ_BMU_WQ22 = 22
298*/
299} tBmuWqId;
300
301typedef enum
302{
303 BTQM_QID0 = 0,
304 BTQM_QID1,
305 BTQM_QID2,
306 BTQM_QID3,
307 BTQM_QID4,
308 BTQM_QID5,
309 BTQM_QID6,
310 BTQM_QID7,
311 BTQM_QID8,
312 BTQM_QID9,
313 BTQM_QID10,
314
315 BTQM_QUEUE_TX_TID_0 = BTQM_QID0,
316 BTQM_QUEUE_TX_TID_1,
317 BTQM_QUEUE_TX_TID_2,
318 BTQM_QUEUE_TX_TID_3,
319 BTQM_QUEUE_TX_TID_4,
320 BTQM_QUEUE_TX_TID_5,
321 BTQM_QUEUE_TX_TID_6,
322 BTQM_QUEUE_TX_TID_7,
323
324
325 /* Queue Id <-> BO
326 */
327 BTQM_QUEUE_TX_nQOS = BTQM_QID8,
328 BTQM_QUEUE_SELF_STA_BCAST_MGMT = BTQM_QID10,
329 BTQM_QUEUE_SELF_STA_UCAST_MGMT = BTQM_QID9,
330 BTQM_QUEUE_SELF_STA_UCAST_DATA = BTQM_QID9,
331 BTQM_QUEUE_NULL_FRAME = BTQM_QID9,
332 BTQM_QUEUE_SELF_STA_PROBE_RSP = BTQM_QID9,
333 BTQM_QUEUE_TX_AC_BE = BTQM_QUEUE_TX_TID_0,
334 BTQM_QUEUE_TX_AC_BK = BTQM_QUEUE_TX_TID_2,
335 BTQM_QUEUE_TX_AC_VI = BTQM_QUEUE_TX_TID_4,
336 BTQM_QUEUE_TX_AC_VO = BTQM_QUEUE_TX_TID_6
337}tBtqmQId;
338
339#define STACFG_MAX_TC 8
340
341/* --------------------------------------------------------------------- */
342/* BD type*/
343/* --------------------------------------------------------------------- */
344#define HWBD_TYPE_GENERIC 0 /* generic BD format */
345#define HWBD_TYPE_FRAG 1 /* fragmentation BD format*/
346
Anand Kumar012623a2013-01-11 17:00:00 -0800347/*---------------------------------------------------------------------- */
348/* HW Tx power */
349/*---------------------------------------------------------------------- */
350#ifdef WLAN_HAL_PRIMA
351 #define WLAN_SOC_PRIMA_MAX_TX_POWER 22
352 #define WLAN_SOC_PRIMA_MIN_TX_POWER 6
353#else
354 /* add more platforms here */
355 #define WLAN_SOC_PRIMA_MAX_TX_POWER 22
356 #define WLAN_SOC_PRIMA_MIN_TX_POWER 6
357#endif //#ifdef WCN_PRIMA
358
Jeff Johnson295189b2012-06-20 16:38:30 -0700359#endif /* __WLAN_QCT_DEV_DEFS_H */