blob: 918972f18b358057e4db28a71e8e1857ce3b70f2 [file] [log] [blame]
Jeff Johnson295189b2012-06-20 16:38:30 -07001/*
Gopichand Nakkala92f07d82013-01-08 21:16:34 -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.
20 */
21/*
Jeff Johnson32d95a32012-09-10 13:15:23 -070022 * Copyright (c) 2012, The Linux Foundation. All rights reserved.
Jeff Johnson295189b2012-06-20 16:38:30 -070023 *
24 * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
25 *
26 *
27 * Permission to use, copy, modify, and/or distribute this software for
28 * any purpose with or without fee is hereby granted, provided that the
29 * above copyright notice and this permission notice appear in all
30 * copies.
31 *
32 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
33 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
34 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
35 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
36 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
37 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
38 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
39 * PERFORMANCE OF THIS SOFTWARE.
40 */
41
42/**
43 *
44 * @file: wlan_qct_dev_defs.h
45 *
46 * @brief: This file contains the hardware related definitions.
47 *
48 * Copyright (C) 2008, Qualcomm, Inc. All rights reserved.
49 */
50
51#ifndef __WLAN_QCT_DEV_DEFS_H
52#define __WLAN_QCT_DEV_DEFS_H
53
54
55/* --------------------------------------------------------------------
56 * HW definitions for WLAN Chip
57 * --------------------------------------------------------------------
58 */
59
Jeff Johnsone7245742012-09-05 17:12:55 -070060#ifdef WCN_PRONTO
Gopichand Nakkala976e3252013-01-03 15:45:56 -080061
62#ifdef WLAN_SOFTAP_VSTA_FEATURE
Madan Mohan Koyyalamudi5a244b22013-03-21 16:12:18 -070063//supports both V1 and V2
64#define HAL_NUM_ASSOC_STA 32 // HAL_NUM_STA - No of GP STAs - 2 (1 self Sta + 1 Bcast Sta)
65#define HAL_NUM_STA 41
66#define HAL_NUM_HW_STA 16
67
68#define HAL_NUM_GPSTA 4
Gopichand Nakkala976e3252013-01-03 15:45:56 -080069#define HAL_NUM_UMA_DESC_ENTRIES HAL_NUM_HW_STA // or HAL_NUM_STA
70
Gopichand Nakkala976e3252013-01-03 15:45:56 -080071#define HAL_NUM_BSSID 2
Madan Mohan Koyyalamudi5a244b22013-03-21 16:12:18 -070072#define HAL_NUM_STA_WITHOUT_VSTA 12
73#define HAL_NUM_STA_INCLUDING_VSTA 32
Gopichand Nakkala976e3252013-01-03 15:45:56 -080074
75#define HAL_NUM_VSTA (HAL_NUM_STA - HAL_NUM_HW_STA)
76#define QWLANFW_MAX_NUM_VSTA (HAL_NUM_VSTA)
77#define QWLANFW_VSTA_INVALID_IDX (HAL_NUM_STA+1)
78#define QWLAN_VSTA_MIN_IDX (HAL_NUM_HW_STA)
79#define QWLANFW_NUM_GPSTA (HAL_NUM_GPSTA)
80
Madan Mohan Koyyalamudi5a244b22013-03-21 16:12:18 -070081// For Pronto
82#define HAL_NUM_STA_WITHOUT_VSTA_PRONTO_V1 9
83#define HAL_NUM_STA_WITHOUT_VSTA_PRONTO_V2 (HAL_NUM_STA_WITHOUT_VSTA
Gopichand Nakkala976e3252013-01-03 15:45:56 -080084
85#define IS_VSTA_VALID_IDX(__x) \
86 ((__x) != QWLANFW_VSTA_INVALID_IDX)
87
88#define IS_VSTA_IDX(__x) \
89 (((__x) >= QWLAN_VSTA_MIN_IDX) && ((__x) < HAL_NUM_STA))
90
91#define GET_VSTA_INDEX_FOR_STA_INDEX(__idx) ((__idx) - QWLAN_VSTA_MIN_IDX)
92
93// is the STA a General Purpose STA?
94#define IS_GPSTA_IDX(__x) \
95 (((__x) >= (HAL_NUM_HW_STA-HAL_NUM_GPSTA)) && \
96 ((__x) < HAL_NUM_HW_STA))
97
98// is the STA a HW STA (excluding GP STAs)
99#define IS_HWSTA_IDX(__x) \
100 ((__x) < (HAL_NUM_HW_STA-HAL_NUM_GPSTA))
101
102#define HAL_NUM_STA_INCLUDING_VSTA 32
103
104#elif WCN_PRONTO_V1
Jeff Johnsone7245742012-09-05 17:12:55 -0700105
106/* In Pronto 1.0 TPE descriptor size is increased to 1K per station
107 * but not the cMEM allocated for hardware descriptors. Due to this
108 * memory limitation the number of stations are limited to 9 and BSS
109 * to 2 respectively.
110 *
111 * In Pronto 2.0, TPE descriptor size is reverted
112 * back to 512 bytes and hence more stations and BSSs can be supported
113 * from Pronto 2.0
114 *
115 * In Pronto 1.0, 9 HW stations are supported including BCAST STA(staId 0)
116 * and SELF STA(staId 1). So total ASSOC stations which can connect to
117 * Pronto 1.0 Softap = 9 - 1(self sta) - 1(Bcast sta) = 7 stations
118 */
Gopichand Nakkala976e3252013-01-03 15:45:56 -0800119#define HAL_NUM_HW_STA 9
120#define HAL_NUM_STA (HAL_NUM_HW_STA)
Jeff Johnsone7245742012-09-05 17:12:55 -0700121#define HAL_NUM_BSSID 2
122#define HAL_NUM_UMA_DESC_ENTRIES 9
Gopichand Nakkala976e3252013-01-03 15:45:56 -0800123#define HAL_NUM_ASSOC_STA 7
124
Jeff Johnsone7245742012-09-05 17:12:55 -0700125
126#else /* WCN_PRONTO_V1 */
127
Gopichand Nakkala976e3252013-01-03 15:45:56 -0800128#define HAL_NUM_HW_STA 14
129#define HAL_NUM_STA (HAL_NUM_HW_STA)
Jeff Johnsone7245742012-09-05 17:12:55 -0700130#define HAL_NUM_BSSID 4
131#define HAL_NUM_UMA_DESC_ENTRIES 14
Gopichand Nakkala976e3252013-01-03 15:45:56 -0800132#define HAL_NUM_ASSOC_STA 12
Jeff Johnsone7245742012-09-05 17:12:55 -0700133
Gopichand Nakkala976e3252013-01-03 15:45:56 -0800134
135#endif /* WCN_PRONTO_V1 and WLAN_SOFTAP_VSTA_FEATURE*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700136#else /* WCN_PRONTO */
137
Gopichand Nakkala976e3252013-01-03 15:45:56 -0800138/*
139 * Riva supports 16 stations in hardware
140 *
141 * Riva without Virtual STA feature can only support 12 stations:
142 * 1 Broadcast STA (hard)
143 * 1 "Self" STA (hard)
144 * 10 Soft AP Stations (hard)
145 *
146 * Riva with Virtual STA feature supports 38 stations:
147 * 1 Broadcast STA (hard)
148 * 1 "Self" STA (hard)
149 * 4 General Purpose Stations to support Virtual STAs (hard)
150 * 32 Soft AP Stations (10 hard/22 virtual)
Madan Mohan Koyyalamudi5a244b22013-03-21 16:12:18 -0700151 *
152 * To support concurrency with Vsta, number of stations are increased to 41 (from 38).
153 * 1 for the second interface.
154 * 1 for reserving an infra peer STA index (hard) for the other interface.
155 * 1 for P2P device role.
Gopichand Nakkala976e3252013-01-03 15:45:56 -0800156 */
Madan Mohan Koyyalamudi5a244b22013-03-21 16:12:18 -0700157
Gopichand Nakkala976e3252013-01-03 15:45:56 -0800158#ifdef WLAN_SOFTAP_VSTA_FEATURE
159#define HAL_NUM_ASSOC_STA 32
Madan Mohan Koyyalamudi5a244b22013-03-21 16:12:18 -0700160#define HAL_NUM_STA 41
Gopichand Nakkala976e3252013-01-03 15:45:56 -0800161#define HAL_NUM_HW_STA 16
162#define HAL_NUM_GPSTA 4
163#define HAL_NUM_VSTA (HAL_NUM_STA - HAL_NUM_HW_STA)
164
165#define QWLANFW_MAX_NUM_VSTA HAL_NUM_VSTA
166#define QWLANFW_VSTA_INVALID_IDX (HAL_NUM_STA+1)
167#define QWLAN_VSTA_MIN_IDX HAL_NUM_HW_STA
168#define QWLANFW_NUM_GPSTA HAL_NUM_GPSTA
169
170
171#define IS_VSTA_VALID_IDX(__x) \
172 ((__x) != QWLANFW_VSTA_INVALID_IDX)
173
174#define IS_VSTA_IDX(__x) \
175 (((__x) >= QWLAN_VSTA_MIN_IDX) && ((__x) < HAL_NUM_STA))
176
177#define GET_VSTA_INDEX_FOR_STA_INDEX(__idx) ((__idx) - QWLAN_VSTA_MIN_IDX)
178
179// is the STA a General Purpose STA?
180#define IS_GPSTA_IDX(__x) \
181 (((__x) >= (HAL_NUM_HW_STA-HAL_NUM_GPSTA)) && \
182 ((__x) < HAL_NUM_HW_STA))
183
184// is the STA a HW STA (excluding GP STAs)
185#define IS_HWSTA_IDX(__x) \
186 ((__x) < (HAL_NUM_HW_STA-HAL_NUM_GPSTA))
187
188#define HAL_NUM_STA_INCLUDING_VSTA 32
189#define HAL_NUM_STA_WITHOUT_VSTA 12
190
191#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700192#define HAL_NUM_STA 12
Gopichand Nakkala976e3252013-01-03 15:45:56 -0800193#define HAL_NUM_ASSOC_STA 10
194#define HAL_NUM_HW_STA 12
195#endif
196
Jeff Johnson295189b2012-06-20 16:38:30 -0700197#define HAL_NUM_BSSID 2
Gopichand Nakkala976e3252013-01-03 15:45:56 -0800198#define HAL_NUM_UMA_DESC_ENTRIES HAL_NUM_HW_STA
Jeff Johnson295189b2012-06-20 16:38:30 -0700199
Jeff Johnsone7245742012-09-05 17:12:55 -0700200#endif /* WCN_PRONTO */
201
Jeff Johnson295189b2012-06-20 16:38:30 -0700202#define HAL_INVALID_BSSIDX HAL_NUM_BSSID
203
204#define MAX_NUM_OF_BACKOFFS 8
205#define HAL_MAX_ASSOC_ID HAL_NUM_STA
206
207#define WLANHAL_TX_BD_HEADER_SIZE 40 //FIXME_PRIMA - Revisit
208#define WLANHAL_RX_BD_HEADER_SIZE 76
209
210/*
211 * From NOVA Mac Arch document
212 * Encryp. mode The encryption mode
213 * 000: Encryption functionality is not enabled
214 * 001: Encryption is set to WEP
215 * 010: Encryption is set to WEP 104
216 * 011: Encryption is set to TKIP
217 * 100: Encryption is set to AES
218 * 101 - 111: Reserved for future
219 */
220
221#define HAL_ENC_POLICY_NULL 0
222#define HAL_ENC_POLICY_WEP40 1
223#define HAL_ENC_POLICY_WEP104 2
224#define HAL_ENC_POLICY_TKIP 3
225#define HAL_ENC_POLICY_AES_CCM 4
226
227/* --------------------------------------------------------------------- */
228/* BMU */
229/* --------------------------------------------------------------------- */
230
231/*
232 * BMU WQ assignment, as per Prima Programmer's Guide - FIXME_PRIMA: Revisit
233 *
234 */
235
236typedef enum sBmuWqId {
237
238 /* ====== In use WQs ====== */
239
240 /* BMU */
241 BMUWQ_BMU_IDLE_BD = 0,
242 BMUWQ_BMU_IDLE_PDU = 1,
243
244 /* RxP */
245 BMUWQ_RXP_UNKNWON_ADDR = 2, /* currently unhandled by HAL */
246
247 /* DPU RX */
248 BMUWQ_DPU_RX = 3,
249
250 /* DPU TX */
251 BMUWQ_DPU_TX = 6,
252
253 /* Firmware */
254 BMUWQ_FW_TRANSMIT = 12, /* DPU Tx->FW Tx */
255 BMUWQ_FW_RECV = 7, /* DPU Rx->FW Rx */
256
257 BMUWQ_FW_RPE_RECV = 16, /* RXP/RPE Rx->FW Rx */
258 FW_SCO_WQ = BMUWQ_FW_RPE_RECV,
259
260 /* DPU Error */
261 BMUWQ_DPU_ERROR_WQ = 8,
262
263 /* DXE RX */
264 BMUWQ_DXE_RX = 11,
265
266 BMUWQ_DXE_RX_HI = 4,
267
268 /* ADU/UMA */
269 BMUWQ_ADU_UMA_TX = 23,
270 BMUWQ_ADU_UMA_RX = 24,
271
272 /* BMU BTQM */
273 BMUWQ_BTQM = 25,
274
275 /* Special WQ for BMU to dropping all frames coming to this WQ ID */
276 BMUWQ_SINK = 255,
277
Jeff Johnsone7245742012-09-05 17:12:55 -0700278#ifdef WCN_PRONTO
279 BMUWQ_BMU_CMEM_IDLE_BD = 27,
280 /* Total BMU WQ count in Pronto */
281 BMUWQ_NUM = 28,
282
283 //WQs 17 through 22 are enabled in Pronto. So, set not supported mask to 0.
284 BMUWQ_NOT_SUPPORTED_MASK = 0x0,
285#else
286 /* Total BMU WQ count in Prima */
Jeff Johnson295189b2012-06-20 16:38:30 -0700287 BMUWQ_NUM = 27,
288
Jeff Johnsone7245742012-09-05 17:12:55 -0700289 //Prima has excluded support for WQs 17 through 22.
Jeff Johnson295189b2012-06-20 16:38:30 -0700290 BMUWQ_NOT_SUPPORTED_MASK = 0x7e0000,
Jeff Johnsone7245742012-09-05 17:12:55 -0700291#endif //WCN_PRONTO
292
Jeff Johnson295189b2012-06-20 16:38:30 -0700293
294 /* Aliases */
295 BMUWQ_BTQM_TX_MGMT = BMUWQ_BTQM,
296 BMUWQ_BTQM_TX_DATA = BMUWQ_BTQM,
297 BMUWQ_BMU_WQ2 = BMUWQ_RXP_UNKNWON_ADDR,
298 BMUWQ_FW_DPU_TX = 5,
299
300 //WQ where all the frames with addr1/addr2/addr3 with value 254/255 go to.
301 BMUWQ_FW_RECV_EXCEPTION = 14, //using BMUWQ_FW_MESSAGE WQ for this purpose.
302
303 //WQ where all frames with unknown Addr2 filter exception cases frames will pushed if FW wants host to
304 //send deauth to the sender.
305 BMUWQ_HOST_RX_UNKNOWN_ADDR2_FRAMES = 15, //using BMUWQ_FW_DXECH2_0 for this purpose.
306
307 /* ====== Unused/Reserved WQ ====== */
308
309 /* ADU/UMA Error WQ */
310 BMUWQ_ADU_UMA_TX_ERROR_WQ = 13, /* Not in use by HAL */
311 BMUWQ_ADU_UMA_RX_ERROR_WQ = 10, /* Not in use by HAL */
312
313 /* DPU Error WQ2 */
314 BMUWQ_DPU_ERROR_WQ2 = 9, /* Not in use by HAL */
315
316 /* FW WQs */
317 //This WQ is being used for RXP to push in frames in exception cases ( addr1/add2/addr3 254/255)
318 //BMUWQ_FW_MESG = 14, /* DxE Tx->FW, Not in use by FW */
319 //BMUWQ_FW_DXECH2_0 = 15, /* BD/PDU<->MEM conversion using DxE CH2. Not in use by FW */
320 BMUWQ_FW_DXECH2_1 = 16, /* BD/PDU<->MEM conversion using DxE CH2. Not in use by FW */
321
Madan Mohan Koyyalamudi5a244b22013-03-21 16:12:18 -0700322 /* NDPA Addr3 workaround */
323 BMUWQ_RXP_DEFAULT_PUSH_WQ = 17,
Jeff Johnson295189b2012-06-20 16:38:30 -0700324/* These WQs are not supported in Volans
325 BMUWQ_BMU_WQ17 = 17,
326 BMUWQ_BMU_WQ18 = 18,
327 BMUWQ_BMU_WQ19 = 19,
328 BMUWQ_BMU_WQ20 = 20,
329 BMUWQ_BMU_WQ21 = 21,
330 BMUWQ_BMU_WQ22 = 22
331*/
332} tBmuWqId;
333
334typedef enum
335{
336 BTQM_QID0 = 0,
337 BTQM_QID1,
338 BTQM_QID2,
339 BTQM_QID3,
340 BTQM_QID4,
341 BTQM_QID5,
342 BTQM_QID6,
343 BTQM_QID7,
344 BTQM_QID8,
345 BTQM_QID9,
346 BTQM_QID10,
347
348 BTQM_QUEUE_TX_TID_0 = BTQM_QID0,
349 BTQM_QUEUE_TX_TID_1,
350 BTQM_QUEUE_TX_TID_2,
351 BTQM_QUEUE_TX_TID_3,
352 BTQM_QUEUE_TX_TID_4,
353 BTQM_QUEUE_TX_TID_5,
354 BTQM_QUEUE_TX_TID_6,
355 BTQM_QUEUE_TX_TID_7,
356
357
358 /* Queue Id <-> BO
359 */
360 BTQM_QUEUE_TX_nQOS = BTQM_QID8,
361 BTQM_QUEUE_SELF_STA_BCAST_MGMT = BTQM_QID10,
362 BTQM_QUEUE_SELF_STA_UCAST_MGMT = BTQM_QID9,
363 BTQM_QUEUE_SELF_STA_UCAST_DATA = BTQM_QID9,
364 BTQM_QUEUE_NULL_FRAME = BTQM_QID9,
365 BTQM_QUEUE_SELF_STA_PROBE_RSP = BTQM_QID9,
366 BTQM_QUEUE_TX_AC_BE = BTQM_QUEUE_TX_TID_0,
367 BTQM_QUEUE_TX_AC_BK = BTQM_QUEUE_TX_TID_2,
368 BTQM_QUEUE_TX_AC_VI = BTQM_QUEUE_TX_TID_4,
369 BTQM_QUEUE_TX_AC_VO = BTQM_QUEUE_TX_TID_6
370}tBtqmQId;
371
372#define STACFG_MAX_TC 8
373
374/* --------------------------------------------------------------------- */
375/* BD type*/
376/* --------------------------------------------------------------------- */
377#define HWBD_TYPE_GENERIC 0 /* generic BD format */
378#define HWBD_TYPE_FRAG 1 /* fragmentation BD format*/
379
Anand Kumar012623a2013-01-11 17:00:00 -0800380/*---------------------------------------------------------------------- */
381/* HW Tx power */
382/*---------------------------------------------------------------------- */
383#ifdef WLAN_HAL_PRIMA
384 #define WLAN_SOC_PRIMA_MAX_TX_POWER 22
385 #define WLAN_SOC_PRIMA_MIN_TX_POWER 6
386#else
387 /* add more platforms here */
388 #define WLAN_SOC_PRIMA_MAX_TX_POWER 22
389 #define WLAN_SOC_PRIMA_MIN_TX_POWER 6
390#endif //#ifdef WCN_PRIMA
391
Jeff Johnson295189b2012-06-20 16:38:30 -0700392#endif /* __WLAN_QCT_DEV_DEFS_H */