1/*
2 * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
3 * Use is subject to license terms.
4 */
5
6/*
7 * Copyright (c) 2008 Atheros Communications Inc.
8 *
9 * Permission to use, copy, modify, and/or distribute this software for any
10 * purpose with or without fee is hereby granted, provided that the above
11 * copyright notice and this permission notice appear in all copies.
12 *
13 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
14 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
15 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
16 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
17 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
18 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
19 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
20 */
21
22#ifndef _ARN_REG_H
23#define	_ARN_REG_H
24
25#ifdef __cplusplus
26extern "C" {
27#endif
28
29#define	AR_CR		0x0008
30#define	AR_CR_RXE	0x00000004
31#define	AR_CR_RXD	0x00000020
32#define	AR_CR_SWI	0x00000040
33
34#define	AR_RXDP		0x000C
35
36#define	AR_CFG				0x0014
37#define	AR_CFG_SWTD			0x00000001
38#define	AR_CFG_SWTB			0x00000002
39#define	AR_CFG_SWRD			0x00000004
40#define	AR_CFG_SWRB			0x00000008
41#define	AR_CFG_SWRG			0x00000010
42#define	AR_CFG_AP_ADHOC_INDICATION	0x00000020
43#define	AR_CFG_PHOK			0x00000100
44#define	AR_CFG_CLK_GATE_DIS		0x00000400
45#define	AR_CFG_EEBS			0x00000200
46#define	AR_CFG_PCI_MASTER_REQ_Q_THRESH	0x00060000
47#define	AR_CFG_PCI_MASTER_REQ_Q_THRESH_S	17
48
49#define	AR_MIRT			0x0020
50#define	AR_MIRT_VAL		0x0000ffff
51#define	AR_MIRT_VAL_S		16
52
53#define	AR_IER			0x0024
54#define	AR_IER_ENABLE		0x00000001
55#define	AR_IER_DISABLE		0x00000000
56
57#define	AR_TIMT			0x0028
58#define	AR_TIMT_LAST		0x0000ffff
59#define	AR_TIMT_LAST_S		0
60#define	AR_TIMT_FIRST		0xffff0000
61#define	AR_TIMT_FIRST_S		16
62
63#define	AR_RIMT			0x002C
64#define	AR_RIMT_LAST		0x0000ffff
65#define	AR_RIMT_LAST_S		0
66#define	AR_RIMT_FIRST		0xffff0000
67#define	AR_RIMT_FIRST_S		16
68
69#define	AR_DMASIZE_4B		0x00000000
70#define	AR_DMASIZE_8B		0x00000001
71#define	AR_DMASIZE_16B		0x00000002
72#define	AR_DMASIZE_32B		0x00000003
73#define	AR_DMASIZE_64B		0x00000004
74#define	AR_DMASIZE_128B		0x00000005
75#define	AR_DMASIZE_256B		0x00000006
76#define	AR_DMASIZE_512B		0x00000007
77
78#define	AR_TXCFG		0x0030
79#define	AR_TXCFG_DMASZ_MASK	0x00000003
80#define	AR_TXCFG_DMASZ_4B	0
81#define	AR_TXCFG_DMASZ_8B	1
82#define	AR_TXCFG_DMASZ_16B	2
83#define	AR_TXCFG_DMASZ_32B	3
84#define	AR_TXCFG_DMASZ_64B	4
85#define	AR_TXCFG_DMASZ_128B	5
86#define	AR_TXCFG_DMASZ_256B	6
87#define	AR_TXCFG_DMASZ_512B	7
88#define	AR_FTRIG		0x000003F0
89#define	AR_FTRIG_S		4
90#define	AR_FTRIG_IMMED		0x00000000
91#define	AR_FTRIG_64B		0x00000010
92#define	AR_FTRIG_128B		0x00000020
93#define	AR_FTRIG_192B		0x00000030
94#define	AR_FTRIG_256B		0x00000040
95#define	AR_FTRIG_512B		0x00000080
96#define	AR_TXCFG_ADHOC_BEACON_ATIM_TX_POLICY	0x00000800
97
98#define	AR_RXCFG		0x0034
99#define	AR_RXCFG_CHIRP		0x00000008
100#define	AR_RXCFG_ZLFDMA		0x00000010
101#define	AR_RXCFG_DMASZ_MASK	0x00000007
102#define	AR_RXCFG_DMASZ_4B	0
103#define	AR_RXCFG_DMASZ_8B	1
104#define	AR_RXCFG_DMASZ_16B	2
105#define	AR_RXCFG_DMASZ_32B	3
106#define	AR_RXCFG_DMASZ_64B	4
107#define	AR_RXCFG_DMASZ_128B	5
108#define	AR_RXCFG_DMASZ_256B	6
109#define	AR_RXCFG_DMASZ_512B	7
110
111#define	AR_MIBC			0x0040
112#define	AR_MIBC_COW		0x00000001
113#define	AR_MIBC_FMC		0x00000002
114#define	AR_MIBC_CMC		0x00000004
115#define	AR_MIBC_MCS		0x00000008
116
117#define	AR_TOPS			0x0044
118#define	AR_TOPS_MASK		0x0000FFFF
119
120#define	AR_RXNPTO		0x0048
121#define	AR_RXNPTO_MASK		0x000003FF
122
123#define	AR_TXNPTO		0x004C
124#define	AR_TXNPTO_MASK		0x000003FF
125#define	AR_TXNPTO_QCU_MASK	0x000FFC00
126
127#define	AR_RPGTO		0x0050
128#define	AR_RPGTO_MASK		0x000003FF
129
130#define	AR_RPCNT		0x0054
131#define	AR_RPCNT_MASK		0x0000001F
132
133#define	AR_MACMISC			0x0058
134#define	AR_MACMISC_PCI_EXT_FORCE	0x00000010
135#define	AR_MACMISC_DMA_OBS		0x000001E0
136#define	AR_MACMISC_DMA_OBS_S		5
137#define	AR_MACMISC_DMA_OBS_LINE_0	0
138#define	AR_MACMISC_DMA_OBS_LINE_1	1
139#define	AR_MACMISC_DMA_OBS_LINE_2	2
140#define	AR_MACMISC_DMA_OBS_LINE_3	3
141#define	AR_MACMISC_DMA_OBS_LINE_4	4
142#define	AR_MACMISC_DMA_OBS_LINE_5	5
143#define	AR_MACMISC_DMA_OBS_LINE_6	6
144#define	AR_MACMISC_DMA_OBS_LINE_7	7
145#define	AR_MACMISC_DMA_OBS_LINE_8	8
146#define	AR_MACMISC_MISC_OBS		0x00000E00
147#define	AR_MACMISC_MISC_OBS_S		9
148#define	AR_MACMISC_MISC_OBS_BUS_LSB	0x00007000
149#define	AR_MACMISC_MISC_OBS_BUS_LSB_S	12
150#define	AR_MACMISC_MISC_OBS_BUS_MSB	0x00038000
151#define	AR_MACMISC_MISC_OBS_BUS_MSB_S	15
152#define	AR_MACMISC_MISC_OBS_BUS_1	1
153
154#define	AR_GTXTO			0x0064
155#define	AR_GTXTO_TIMEOUT_COUNTER	0x0000FFFF
156#define	AR_GTXTO_TIMEOUT_LIMIT		0xFFFF0000
157#define	AR_GTXTO_TIMEOUT_LIMIT_S	16
158
159#define	AR_GTTM				0x0068
160#define	AR_GTTM_USEC			0x00000001
161#define	AR_GTTM_IGNORE_IDLE		0x00000002
162#define	AR_GTTM_RESET_IDLE		0x00000004
163#define	AR_GTTM_CST_USEC		0x00000008
164
165#define	AR_CST				0x006C
166#define	AR_CST_TIMEOUT_COUNTER		0x0000FFFF
167#define	AR_CST_TIMEOUT_LIMIT		0xFFFF0000
168#define	AR_CST_TIMEOUT_LIMIT_S		16
169
170#define	AR_SREV_VERSION_9100		0x014
171
172#define	AR_SREV_5416_V20_OR_LATER(_ah) \
173	(AR_SREV_9100((_ah)) || AR_SREV_5416_20_OR_LATER(_ah))
174#define	AR_SREV_5416_V22_OR_LATER(_ah) \
175	(AR_SREV_9100((_ah)) || AR_SREV_5416_22_OR_LATER(_ah))
176
177#define	AR_ISR			0x0080
178#define	AR_ISR_RXOK		0x00000001
179#define	AR_ISR_RXDESC		0x00000002
180#define	AR_ISR_RXERR		0x00000004
181#define	AR_ISR_RXNOPKT		0x00000008
182#define	AR_ISR_RXEOL		0x00000010
183#define	AR_ISR_RXORN		0x00000020
184#define	AR_ISR_TXOK		0x00000040
185#define	AR_ISR_TXDESC		0x00000080
186#define	AR_ISR_TXERR		0x00000100
187#define	AR_ISR_TXNOPKT		0x00000200
188#define	AR_ISR_TXEOL		0x00000400
189#define	AR_ISR_TXURN		0x00000800
190#define	AR_ISR_MIB		0x00001000
191#define	AR_ISR_SWI		0x00002000
192#define	AR_ISR_RXPHY		0x00004000
193#define	AR_ISR_RXKCM		0x00008000
194#define	AR_ISR_SWBA		0x00010000
195#define	AR_ISR_BRSSI		0x00020000
196#define	AR_ISR_BMISS		0x00040000
197#define	AR_ISR_BNR		0x00100000
198#define	AR_ISR_RXCHIRP		0x00200000
199#define	AR_ISR_BCNMISC		0x00800000
200#define	AR_ISR_TIM		0x00800000
201#define	AR_ISR_QCBROVF		0x02000000
202#define	AR_ISR_QCBRURN		0x04000000
203#define	AR_ISR_QTRIG		0x08000000
204#define	AR_ISR_GENTMR		0x10000000
205
206#define	AR_ISR_TXMINTR		0x00080000
207#define	AR_ISR_RXMINTR		0x01000000
208#define	AR_ISR_TXINTM		0x40000000
209#define	AR_ISR_RXINTM		0x80000000
210
211#define	AR_ISR_S0		0x0084
212#define	AR_ISR_S0_QCU_TXOK	0x000003FF
213#define	AR_ISR_S0_QCU_TXOK_S	0
214#define	AR_ISR_S0_QCU_TXDESC	0x03FF0000
215#define	AR_ISR_S0_QCU_TXDESC_S	16
216
217#define	AR_ISR_S1		0x0088
218#define	AR_ISR_S1_QCU_TXERR	0x000003FF
219#define	AR_ISR_S1_QCU_TXERR_S	0
220#define	AR_ISR_S1_QCU_TXEOL	0x03FF0000
221#define	AR_ISR_S1_QCU_TXEOL_S	16
222
223#define	AR_ISR_S2		0x008c
224#define	AR_ISR_S2_QCU_TXURN	0x000003FF
225#define	AR_ISR_S2_CST		0x00400000
226#define	AR_ISR_S2_GTT		0x00800000
227#define	AR_ISR_S2_TIM		0x01000000
228#define	AR_ISR_S2_CABEND	0x02000000
229#define	AR_ISR_S2_DTIMSYNC	0x04000000
230#define	AR_ISR_S2_BCNTO		0x08000000
231#define	AR_ISR_S2_CABTO		0x10000000
232#define	AR_ISR_S2_DTIM		0x20000000
233#define	AR_ISR_S2_TSFOOR	0x40000000
234#define	AR_ISR_S2_TBTT_TIME	0x80000000
235
236#define	AR_ISR_S3		0x0090
237#define	AR_ISR_S3_QCU_QCBROVF	0x000003FF
238#define	AR_ISR_S3_QCU_QCBRURN	0x03FF0000
239
240#define	AR_ISR_S4		0x0094
241#define	AR_ISR_S4_QCU_QTRIG	0x000003FF
242#define	AR_ISR_S4_RESV0		0xFFFFFC00
243
244#define	AR_ISR_S5		0x0098
245#define	AR_ISR_S5_TIMER_TRIG	0x000000FF
246#define	AR_ISR_S5_TIMER_THRESH	0x0007FE00
247#define	AR_ISR_S5_TIM_TIMER	0x00000010
248#define	AR_ISR_S5_DTIM_TIMER	0x00000020
249#define	AR_ISR_S5_S		0x00d8
250#define	AR_IMR_S5		0x00b8
251#define	AR_IMR_S5_TIM_TIMER	0x00000010
252#define	AR_IMR_S5_DTIM_TIMER	0x00000020
253
254
255#define	AR_IMR			0x00a0
256#define	AR_IMR_RXOK		0x00000001
257#define	AR_IMR_RXDESC		0x00000002
258#define	AR_IMR_RXERR		0x00000004
259#define	AR_IMR_RXNOPKT		0x00000008
260#define	AR_IMR_RXEOL		0x00000010
261#define	AR_IMR_RXORN		0x00000020
262#define	AR_IMR_TXOK		0x00000040
263#define	AR_IMR_TXDESC		0x00000080
264#define	AR_IMR_TXERR		0x00000100
265#define	AR_IMR_TXNOPKT		0x00000200
266#define	AR_IMR_TXEOL		0x00000400
267#define	AR_IMR_TXURN		0x00000800
268#define	AR_IMR_MIB		0x00001000
269#define	AR_IMR_SWI		0x00002000
270#define	AR_IMR_RXPHY		0x00004000
271#define	AR_IMR_RXKCM		0x00008000
272#define	AR_IMR_SWBA		0x00010000
273#define	AR_IMR_BRSSI		0x00020000
274#define	AR_IMR_BMISS		0x00040000
275#define	AR_IMR_BNR		0x00100000
276#define	AR_IMR_RXCHIRP		0x00200000
277#define	AR_IMR_BCNMISC		0x00800000
278#define	AR_IMR_TIM		0x00800000
279#define	AR_IMR_QCBROVF		0x02000000
280#define	AR_IMR_QCBRURN		0x04000000
281#define	AR_IMR_QTRIG		0x08000000
282#define	AR_IMR_GENTMR		0x10000000
283
284#define	AR_IMR_TXMINTR		0x00080000
285#define	AR_IMR_RXMINTR		0x01000000
286#define	AR_IMR_TXINTM		0x40000000
287#define	AR_IMR_RXINTM		0x80000000
288
289#define	AR_IMR_S0		0x00a4
290#define	AR_IMR_S0_QCU_TXOK	0x000003FF
291#define	AR_IMR_S0_QCU_TXOK_S	0
292#define	AR_IMR_S0_QCU_TXDESC	0x03FF0000
293#define	AR_IMR_S0_QCU_TXDESC_S	16
294
295#define	AR_IMR_S1		0x00a8
296#define	AR_IMR_S1_QCU_TXERR	0x000003FF
297#define	AR_IMR_S1_QCU_TXERR_S	0
298#define	AR_IMR_S1_QCU_TXEOL	0x03FF0000
299#define	AR_IMR_S1_QCU_TXEOL_S	16
300
301#define	AR_IMR_S2		0x00ac
302#define	AR_IMR_S2_QCU_TXURN	0x000003FF
303#define	AR_IMR_S2_QCU_TXURN_S	0
304#define	AR_IMR_S2_CST		0x00400000
305#define	AR_IMR_S2_GTT		0x00800000
306#define	AR_IMR_S2_TIM		0x01000000
307#define	AR_IMR_S2_CABEND	0x02000000
308#define	AR_IMR_S2_DTIMSYNC	0x04000000
309#define	AR_IMR_S2_BCNTO		0x08000000
310#define	AR_IMR_S2_CABTO		0x10000000
311#define	AR_IMR_S2_DTIM		0x20000000
312#define	AR_IMR_S2_TSFOOR	0x40000000
313
314#define	AR_IMR_S3		0x00b0
315#define	AR_IMR_S3_QCU_QCBROVF	0x000003FF
316#define	AR_IMR_S3_QCU_QCBRURN	0x03FF0000
317#define	AR_IMR_S3_QCU_QCBRURN_S	16
318
319#define	AR_IMR_S4		0x00b4
320#define	AR_IMR_S4_QCU_QTRIG	0x000003FF
321#define	AR_IMR_S4_RESV0		0xFFFFFC00
322
323#define	AR_IMR_S5		0x00b8
324#define	AR_IMR_S5_TIMER_TRIG	0x000000FF
325#define	AR_IMR_S5_TIMER_THRESH	0x0000FF00
326
327
328#define	AR_ISR_RAC		0x00c0
329#define	AR_ISR_S0_S		0x00c4
330#define	AR_ISR_S0_QCU_TXOK	0x000003FF
331#define	AR_ISR_S0_QCU_TXOK_S	0
332#define	AR_ISR_S0_QCU_TXDESC	0x03FF0000
333#define	AR_ISR_S0_QCU_TXDESC_S	16
334
335#define	AR_ISR_S1_S		0x00c8
336#define	AR_ISR_S1_QCU_TXERR	0x000003FF
337#define	AR_ISR_S1_QCU_TXERR_S	0
338#define	AR_ISR_S1_QCU_TXEOL	0x03FF0000
339#define	AR_ISR_S1_QCU_TXEOL_S	16
340
341#define	AR_ISR_S2_S	0x00cc
342#define	AR_ISR_S3_S	0x00d0
343#define	AR_ISR_S4_S	0x00d4
344#define	AR_ISR_S5_S	0x00d8
345#define	AR_DMADBG_0	0x00e0
346#define	AR_DMADBG_1	0x00e4
347#define	AR_DMADBG_2	0x00e8
348#define	AR_DMADBG_3	0x00ec
349#define	AR_DMADBG_4	0x00f0
350#define	AR_DMADBG_5	0x00f4
351#define	AR_DMADBG_6	0x00f8
352#define	AR_DMADBG_7	0x00fc
353
354#define	AR_NUM_QCU	10
355#define	AR_QCU_0	0x0001
356#define	AR_QCU_1	0x0002
357#define	AR_QCU_2	0x0004
358#define	AR_QCU_3	0x0008
359#define	AR_QCU_4	0x0010
360#define	AR_QCU_5	0x0020
361#define	AR_QCU_6	0x0040
362#define	AR_QCU_7	0x0080
363#define	AR_QCU_8	0x0100
364#define	AR_QCU_9	0x0200
365
366#define	AR_Q0_TXDP	0x0800
367#define	AR_Q1_TXDP	0x0804
368#define	AR_Q2_TXDP	0x0808
369#define	AR_Q3_TXDP	0x080c
370#define	AR_Q4_TXDP	0x0810
371#define	AR_Q5_TXDP	0x0814
372#define	AR_Q6_TXDP	0x0818
373#define	AR_Q7_TXDP	0x081c
374#define	AR_Q8_TXDP	0x0820
375#define	AR_Q9_TXDP	0x0824
376#define	AR_QTXDP(_i)	(AR_Q0_TXDP + ((_i)<<2))
377
378#define	AR_Q_TXE	0x0840
379#define	AR_Q_TXE_M	0x000003FF
380
381#define	AR_Q_TXD	0x0880
382#define	AR_Q_TXD_M	0x000003FF
383
384#define	AR_Q0_CBRCFG	0x08c0
385#define	AR_Q1_CBRCFG	0x08c4
386#define	AR_Q2_CBRCFG	0x08c8
387#define	AR_Q3_CBRCFG	0x08cc
388#define	AR_Q4_CBRCFG	0x08d0
389#define	AR_Q5_CBRCFG	0x08d4
390#define	AR_Q6_CBRCFG	0x08d8
391#define	AR_Q7_CBRCFG	0x08dc
392#define	AR_Q8_CBRCFG	0x08e0
393#define	AR_Q9_CBRCFG	0x08e4
394#define	AR_QCBRCFG(_i)	(AR_Q0_CBRCFG + ((_i)<<2))
395#define	AR_Q_CBRCFG_INTERVAL		0x00FFFFFF
396#define	AR_Q_CBRCFG_INTERVAL_S		0
397#define	AR_Q_CBRCFG_OVF_THRESH		0xFF000000
398#define	AR_Q_CBRCFG_OVF_THRESH_S	24
399
400#define	AR_Q0_RDYTIMECFG		0x0900
401#define	AR_Q1_RDYTIMECFG		0x0904
402#define	AR_Q2_RDYTIMECFG		0x0908
403#define	AR_Q3_RDYTIMECFG		0x090c
404#define	AR_Q4_RDYTIMECFG		0x0910
405#define	AR_Q5_RDYTIMECFG		0x0914
406#define	AR_Q6_RDYTIMECFG		0x0918
407#define	AR_Q7_RDYTIMECFG		0x091c
408#define	AR_Q8_RDYTIMECFG		0x0920
409#define	AR_Q9_RDYTIMECFG		0x0924
410#define	AR_QRDYTIMECFG(_i)		(AR_Q0_RDYTIMECFG + ((_i)<<2))
411#define	AR_Q_RDYTIMECFG_DURATION	0x00FFFFFF
412#define	AR_Q_RDYTIMECFG_DURATION_S	0
413#define	AR_Q_RDYTIMECFG_EN		0x01000000
414
415#define	AR_Q_ONESHOTARM_SC		0x0940
416#define	AR_Q_ONESHOTARM_SC_M		0x000003FF
417#define	AR_Q_ONESHOTARM_SC_RESV0	0xFFFFFC00
418
419#define	AR_Q_ONESHOTARM_CC		0x0980
420#define	AR_Q_ONESHOTARM_CC_M		0x000003FF
421#define	AR_Q_ONESHOTARM_CC_RESV0	0xFFFFFC00
422
423#define	AR_Q0_MISC			0x09c0
424#define	AR_Q1_MISC			0x09c4
425#define	AR_Q2_MISC			0x09c8
426#define	AR_Q3_MISC			0x09cc
427#define	AR_Q4_MISC			0x09d0
428#define	AR_Q5_MISC			0x09d4
429#define	AR_Q6_MISC			0x09d8
430#define	AR_Q7_MISC			0x09dc
431#define	AR_Q8_MISC			0x09e0
432#define	AR_Q9_MISC			0x09e4
433#define	AR_QMISC(_i)			(AR_Q0_MISC + ((_i)<<2))
434#define	AR_Q_MISC_FSP			0x0000000F
435#define	AR_Q_MISC_FSP_ASAP		0
436#define	AR_Q_MISC_FSP_CBR		1
437#define	AR_Q_MISC_FSP_DBA_GATED		2
438#define	AR_Q_MISC_FSP_TIM_GATED		3
439#define	AR_Q_MISC_FSP_BEACON_SENT_GATED	4
440#define	AR_Q_MISC_FSP_BEACON_RCVD_GATED	5
441#define	AR_Q_MISC_ONE_SHOT_EN		0x00000010
442#define	AR_Q_MISC_CBR_INCR_DIS1		0x00000020
443#define	AR_Q_MISC_CBR_INCR_DIS0		0x00000040
444#define	AR_Q_MISC_BEACON_USE		0x00000080
445#define	AR_Q_MISC_CBR_EXP_CNTR_LIMIT_EN	0x00000100
446#define	AR_Q_MISC_RDYTIME_EXP_POLICY	0x00000200
447#define	AR_Q_MISC_RESET_CBR_EXP_CTR	0x00000400
448#define	AR_Q_MISC_DCU_EARLY_TERM_REQ	0x00000800
449#define	AR_Q_MISC_RESV0			0xFFFFF000
450
451#define	AR_Q0_STS		0x0a00
452#define	AR_Q1_STS		0x0a04
453#define	AR_Q2_STS		0x0a08
454#define	AR_Q3_STS		0x0a0c
455#define	AR_Q4_STS		0x0a10
456#define	AR_Q5_STS		0x0a14
457#define	AR_Q6_STS		0x0a18
458#define	AR_Q7_STS		0x0a1c
459#define	AR_Q8_STS		0x0a20
460#define	AR_Q9_STS		0x0a24
461#define	AR_QSTS(_i)		(AR_Q0_STS + ((_i)<<2))
462#define	AR_Q_STS_PEND_FR_CNT	0x00000003
463#define	AR_Q_STS_RESV0		0x000000FC
464#define	AR_Q_STS_CBR_EXP_CNT	0x0000FF00
465#define	AR_Q_STS_RESV1		0xFFFF0000
466
467#define	AR_Q_RDYTIMESHDN	0x0a40
468#define	AR_Q_RDYTIMESHDN_M	0x000003FF
469
470
471#define	AR_NUM_DCU	10
472#define	AR_DCU_0	0x0001
473#define	AR_DCU_1	0x0002
474#define	AR_DCU_2	0x0004
475#define	AR_DCU_3	0x0008
476#define	AR_DCU_4	0x0010
477#define	AR_DCU_5	0x0020
478#define	AR_DCU_6	0x0040
479#define	AR_DCU_7	0x0080
480#define	AR_DCU_8	0x0100
481#define	AR_DCU_9	0x0200
482
483#define	AR_D0_QCUMASK		0x1000
484#define	AR_D1_QCUMASK		0x1004
485#define	AR_D2_QCUMASK		0x1008
486#define	AR_D3_QCUMASK		0x100c
487#define	AR_D4_QCUMASK		0x1010
488#define	AR_D5_QCUMASK		0x1014
489#define	AR_D6_QCUMASK		0x1018
490#define	AR_D7_QCUMASK		0x101c
491#define	AR_D8_QCUMASK		0x1020
492#define	AR_D9_QCUMASK		0x1024
493#define	AR_DQCUMASK(_i)		(AR_D0_QCUMASK + ((_i)<<2))
494#define	AR_D_QCUMASK		0x000003FF
495#define	AR_D_QCUMASK_RESV0	0xFFFFFC00
496
497#define	AR_D_TXBLK_CMD		0x1038
498#define	AR_D_TXBLK_DATA(i)	(AR_D_TXBLK_CMD+(i))
499
500#define	AR_D0_LCL_IFS		0x1040
501#define	AR_D1_LCL_IFS		0x1044
502#define	AR_D2_LCL_IFS		0x1048
503#define	AR_D3_LCL_IFS		0x104c
504#define	AR_D4_LCL_IFS		0x1050
505#define	AR_D5_LCL_IFS		0x1054
506#define	AR_D6_LCL_IFS		0x1058
507#define	AR_D7_LCL_IFS		0x105c
508#define	AR_D8_LCL_IFS		0x1060
509#define	AR_D9_LCL_IFS		0x1064
510#define	AR_DLCL_IFS(_i)		(AR_D0_LCL_IFS + ((_i)<<2))
511#define	AR_D_LCL_IFS_CWMIN	0x000003FF
512#define	AR_D_LCL_IFS_CWMIN_S	0
513#define	AR_D_LCL_IFS_CWMAX	0x000FFC00
514#define	AR_D_LCL_IFS_CWMAX_S	10
515#define	AR_D_LCL_IFS_AIFS	0x0FF00000
516#define	AR_D_LCL_IFS_AIFS_S	20
517
518#define	AR_D_LCL_IFS_RESV0	0xF0000000
519
520#define	AR_D0_RETRY_LIMIT		0x1080
521#define	AR_D1_RETRY_LIMIT		0x1084
522#define	AR_D2_RETRY_LIMIT		0x1088
523#define	AR_D3_RETRY_LIMIT		0x108c
524#define	AR_D4_RETRY_LIMIT		0x1090
525#define	AR_D5_RETRY_LIMIT		0x1094
526#define	AR_D6_RETRY_LIMIT		0x1098
527#define	AR_D7_RETRY_LIMIT		0x109c
528#define	AR_D8_RETRY_LIMIT		0x10a0
529#define	AR_D9_RETRY_LIMIT		0x10a4
530#define	AR_DRETRY_LIMIT(_i)		(AR_D0_RETRY_LIMIT + ((_i)<<2))
531#define	AR_D_RETRY_LIMIT_FR_SH		0x0000000F
532#define	AR_D_RETRY_LIMIT_FR_SH_S	0
533#define	AR_D_RETRY_LIMIT_STA_SH		0x00003F00
534#define	AR_D_RETRY_LIMIT_STA_SH_S	8
535#define	AR_D_RETRY_LIMIT_STA_LG		0x000FC000
536#define	AR_D_RETRY_LIMIT_STA_LG_S	14
537#define	AR_D_RETRY_LIMIT_RESV0		0xFFF00000
538
539#define	AR_D0_CHNTIME		0x10c0
540#define	AR_D1_CHNTIME		0x10c4
541#define	AR_D2_CHNTIME		0x10c8
542#define	AR_D3_CHNTIME		0x10cc
543#define	AR_D4_CHNTIME		0x10d0
544#define	AR_D5_CHNTIME		0x10d4
545#define	AR_D6_CHNTIME		0x10d8
546#define	AR_D7_CHNTIME		0x10dc
547#define	AR_D8_CHNTIME		0x10e0
548#define	AR_D9_CHNTIME		0x10e4
549#define	AR_DCHNTIME(_i)		(AR_D0_CHNTIME + ((_i)<<2))
550#define	AR_D_CHNTIME_DUR	0x000FFFFF
551#define	AR_D_CHNTIME_DUR_S	0
552#define	AR_D_CHNTIME_EN		0x00100000
553#define	AR_D_CHNTIME_RESV0	0xFFE00000
554
555#define	AR_D0_MISC	0x1100
556#define	AR_D1_MISC	0x1104
557#define	AR_D2_MISC	0x1108
558#define	AR_D3_MISC	0x110c
559#define	AR_D4_MISC	0x1110
560#define	AR_D5_MISC	0x1114
561#define	AR_D6_MISC	0x1118
562#define	AR_D7_MISC	0x111c
563#define	AR_D8_MISC	0x1120
564#define	AR_D9_MISC	0x1124
565#define	AR_DMISC(_i)	(AR_D0_MISC + ((_i)<<2))
566#define	AR_D_MISC_BKOFF_THRESH		0x0000003F
567#define	AR_D_MISC_RETRY_CNT_RESET_EN	0x00000040
568#define	AR_D_MISC_CW_RESET_EN		0x00000080
569#define	AR_D_MISC_FRAG_WAIT_EN		0x00000100
570#define	AR_D_MISC_FRAG_BKOFF_EN		0x00000200
571#define	AR_D_MISC_CW_BKOFF_EN		0x00001000
572#define	AR_D_MISC_VIR_COL_HANDLING	0x0000C000
573#define	AR_D_MISC_VIR_COL_HANDLING_S	14
574#define	AR_D_MISC_VIR_COL_HANDLING_DEFAULT	0
575#define	AR_D_MISC_VIR_COL_HANDLING_IGNORE	1
576#define	AR_D_MISC_BEACON_USE		0x00010000
577#define	AR_D_MISC_ARB_LOCKOUT_CNTRL	0x00060000
578#define	AR_D_MISC_ARB_LOCKOUT_CNTRL_S	17
579#define	AR_D_MISC_ARB_LOCKOUT_CNTRL_NONE	0
580#define	AR_D_MISC_ARB_LOCKOUT_CNTRL_INTRA_FR	1
581#define	AR_D_MISC_ARB_LOCKOUT_CNTRL_GLOBAL	2
582#define	AR_D_MISC_ARB_LOCKOUT_IGNORE	0x00080000
583#define	AR_D_MISC_SEQ_NUM_INCR_DIS	0x00100000
584#define	AR_D_MISC_POST_FR_BKOFF_DIS	0x00200000
585#define	AR_D_MISC_VIT_COL_CW_BKOFF_EN	0x00400000
586#define	AR_D_MISC_BLOWN_IFS_RETRY_EN	0x00800000
587#define	AR_D_MISC_RESV0			0xFF000000
588
589#define	AR_D_SEQNUM	0x1140
590
591#define	AR_D_GBL_IFS_SIFS		0x1030
592#define	AR_D_GBL_IFS_SIFS_M		0x0000FFFF
593#define	AR_D_GBL_IFS_SIFS_RESV0		0xFFFFFFFF
594
595#define	AR_D_TXBLK_BASE			0x1038
596#define	AR_D_TXBLK_WRITE_BITMASK	0x0000FFFF
597#define	AR_D_TXBLK_WRITE_BITMASK_S	0
598#define	AR_D_TXBLK_WRITE_SLICE		0x000F0000
599#define	AR_D_TXBLK_WRITE_SLICE_S	16
600#define	AR_D_TXBLK_WRITE_DCU		0x00F00000
601#define	AR_D_TXBLK_WRITE_DCU_S		20
602#define	AR_D_TXBLK_WRITE_COMMAND	0x0F000000
603#define	AR_D_TXBLK_WRITE_COMMAND_S	24
604
605#define	AR_D_GBL_IFS_SLOT	0x1070
606#define	AR_D_GBL_IFS_SLOT_M	0x0000FFFF
607#define	AR_D_GBL_IFS_SLOT_RESV0	0xFFFF0000
608
609#define	AR_D_GBL_IFS_EIFS	0x10b0
610#define	AR_D_GBL_IFS_EIFS_M	0x0000FFFF
611#define	AR_D_GBL_IFS_EIFS_RESV0	0xFFFF0000
612
613#define	AR_D_GBL_IFS_MISC			0x10f0
614#define	AR_D_GBL_IFS_MISC_LFSR_SLICE_SEL	0x00000007
615#define	AR_D_GBL_IFS_MISC_TURBO_MODE		0x00000008
616#define	AR_D_GBL_IFS_MISC_USEC_DURATION		0x000FFC00
617#define	AR_D_GBL_IFS_MISC_DCU_ARBITER_DLY	0x00300000
618#define	AR_D_GBL_IFS_MISC_RANDOM_LFSR_SLICE_DIS	0x01000000
619#define	AR_D_GBL_IFS_MISC_SLOT_XMIT_WIND_LEN	0x06000000
620#define	AR_D_GBL_IFS_MISC_FORCE_XMIT_SLOT_BOUND	0x08000000
621#define	AR_D_GBL_IFS_MISC_IGNORE_BACKOFF	0x10000000
622
623#define	AR_D_FPCTL			0x1230
624#define	AR_D_FPCTL_DCU			0x0000000F
625#define	AR_D_FPCTL_DCU_S		0
626#define	AR_D_FPCTL_PREFETCH_EN		0x00000010
627#define	AR_D_FPCTL_BURST_PREFETCH	0x00007FE0
628#define	AR_D_FPCTL_BURST_PREFETCH_S	5
629
630#define	AR_D_TXPSE			0x1270
631#define	AR_D_TXPSE_CTRL			0x000003FF
632#define	AR_D_TXPSE_RESV0		0x0000FC00
633#define	AR_D_TXPSE_STATUS		0x00010000
634#define	AR_D_TXPSE_RESV1		0xFFFE0000
635
636#define	AR_D_TXSLOTMASK			0x12f0
637#define	AR_D_TXSLOTMASK_NUM		0x0000000F
638
639#define	AR_CFG_LED			0x1f04
640#define	AR_CFG_SCLK_RATE_IND		0x00000003
641#define	AR_CFG_SCLK_RATE_IND_S		0
642#define	AR_CFG_SCLK_32MHZ		0x00000000
643#define	AR_CFG_SCLK_4MHZ		0x00000001
644#define	AR_CFG_SCLK_1MHZ		0x00000002
645#define	AR_CFG_SCLK_32KHZ		0x00000003
646#define	AR_CFG_LED_BLINK_SLOW		0x00000008
647#define	AR_CFG_LED_BLINK_THRESH_SEL	0x00000070
648#define	AR_CFG_LED_MODE_SEL		0x00000380
649#define	AR_CFG_LED_MODE_SEL_S		7
650#define	AR_CFG_LED_POWER		0x00000280
651#define	AR_CFG_LED_POWER_S		7
652#define	AR_CFG_LED_NETWORK		0x00000300
653#define	AR_CFG_LED_NETWORK_S		7
654#define	AR_CFG_LED_MODE_PROP		0x0
655#define	AR_CFG_LED_MODE_RPROP		0x1
656#define	AR_CFG_LED_MODE_SPLIT		0x2
657#define	AR_CFG_LED_MODE_RAND		0x3
658#define	AR_CFG_LED_MODE_POWER_OFF	0x4
659#define	AR_CFG_LED_MODE_POWER_ON	0x5
660#define	AR_CFG_LED_MODE_NETWORK_OFF	0x4
661#define	AR_CFG_LED_MODE_NETWORK_ON	0x6
662#define	AR_CFG_LED_ASSOC_CTL		0x00000c00
663#define	AR_CFG_LED_ASSOC_CTL_S		10
664#define	AR_CFG_LED_ASSOC_NONE		0x0
665#define	AR_CFG_LED_ASSOC_ACTIVE		0x1
666#define	AR_CFG_LED_ASSOC_PENDING	0x2
667
668#define	AR_CFG_LED_BLINK_SLOW		0x00000008
669#define	AR_CFG_LED_BLINK_SLOW_S		3
670
671#define	AR_CFG_LED_BLINK_THRESH_SEL	0x00000070
672#define	AR_CFG_LED_BLINK_THRESH_SEL_S	4
673
674#define	AR_MAC_SLEEP			0x1f00
675#define	AR_MAC_SLEEP_MAC_AWAKE		0x00000000
676#define	AR_MAC_SLEEP_MAC_ASLEEP		0x00000001
677
678#define	AR_RC		0x4000
679#define	AR_RC_AHB	0x00000001
680#define	AR_RC_APB	0x00000002
681#define	AR_RC_HOSTIF	0x00000100
682
683#define	AR_WA		0x4004
684#define	AR9285_WA_DEFAULT		0x004a05cb
685#define	AR9280_WA_DEFAULT		0x0040073f
686#define	AR_WA_DEFAULT			0x0000073f
687
688#define	AR_PM_STATE			0x4008
689#define	AR_PM_STATE_PME_D3COLD_VAUX	0x00100000
690
691#define	AR_HOST_TIMEOUT			0x4018
692#define	AR_HOST_TIMEOUT_APB_CNTR	0x0000FFFF
693#define	AR_HOST_TIMEOUT_APB_CNTR_S	0
694#define	AR_HOST_TIMEOUT_LCL_CNTR	0xFFFF0000
695#define	AR_HOST_TIMEOUT_LCL_CNTR_S	16
696
697#define	AR_EEPROM			0x401c
698#define	AR_EEPROM_ABSENT		0x00000100
699#define	AR_EEPROM_CORRUPT		0x00000200
700#define	AR_EEPROM_PROT_MASK		0x03FFFC00
701#define	AR_EEPROM_PROT_MASK_S		10
702
703#define	EEPROM_PROTECT_RP_0_31		0x0001
704#define	EEPROM_PROTECT_WP_0_31		0x0002
705#define	EEPROM_PROTECT_RP_32_63		0x0004
706#define	EEPROM_PROTECT_WP_32_63		0x0008
707#define	EEPROM_PROTECT_RP_64_127	0x0010
708#define	EEPROM_PROTECT_WP_64_127	0x0020
709#define	EEPROM_PROTECT_RP_128_191	0x0040
710#define	EEPROM_PROTECT_WP_128_191	0x0080
711#define	EEPROM_PROTECT_RP_192_255	0x0100
712#define	EEPROM_PROTECT_WP_192_255	0x0200
713#define	EEPROM_PROTECT_RP_256_511	0x0400
714#define	EEPROM_PROTECT_WP_256_511	0x0800
715#define	EEPROM_PROTECT_RP_512_1023	0x1000
716#define	EEPROM_PROTECT_WP_512_1023	0x2000
717#define	EEPROM_PROTECT_RP_1024_2047	0x4000
718#define	EEPROM_PROTECT_WP_1024_2047	0x8000
719
720#define	AR_SREV \
721	((AR_SREV_9100(ah)) ? 0x0600 : 0x4020)
722
723#define	AR_SREV_ID \
724	((AR_SREV_9100(ah)) ? 0x00000FFF : 0x000000FF)
725#define	AR_SREV_VERSION			0x000000F0
726#define	AR_SREV_VERSION_S		4
727#define	AR_SREV_REVISION		0x00000007
728
729#define	AR_SREV_ID2			0xFFFFFFFF
730#define	AR_SREV_VERSION2		0xFFFC0000
731#define	AR_SREV_VERSION2_S		18
732#define	AR_SREV_TYPE2			0x0003F000
733#define	AR_SREV_TYPE2_S			12
734#define	AR_SREV_TYPE2_CHAIN		0x00001000
735#define	AR_SREV_TYPE2_HOST_MODE		0x00002000
736#define	AR_SREV_REVISION2		0x00000F00
737#define	AR_SREV_REVISION2_S		8
738
739#define	AR_SREV_VERSION_5416_PCI	0xD
740#define	AR_SREV_VERSION_5416_PCIE	0xC
741#define	AR_SREV_REVISION_5416_10	0
742#define	AR_SREV_REVISION_5416_20	1
743#define	AR_SREV_REVISION_5416_22	2
744#define	AR_SREV_VERSION_9160		0x40
745#define	AR_SREV_REVISION_9160_10	0
746#define	AR_SREV_REVISION_9160_11	1
747#define	AR_SREV_VERSION_9280		0x80
748#define	AR_SREV_REVISION_9280_10	0
749#define	AR_SREV_REVISION_9280_20	1
750#define	AR_SREV_REVISION_9280_21	2
751#define	AR_SREV_VERSION_9285		0xC0
752#define	AR_SREV_REVISION_9285_10	0
753#define	AR_SREV_REVISION_9285_11	1
754#define	AR_SREV_REVISION_9285_12	2
755
756#define	AR_SREV_9100_OR_LATER(_ah) \
757	(((_ah)->ah_macVersion >= AR_SREV_VERSION_5416_PCIE))
758#define	AR_SREV_5416_20_OR_LATER(_ah) \
759	(((_ah)->ah_macVersion >= AR_SREV_VERSION_9160) || \
760		((_ah)->ah_macRev >= AR_SREV_REVISION_5416_20))
761#define	AR_SREV_5416_22_OR_LATER(_ah) \
762	(((_ah)->ah_macVersion >= AR_SREV_VERSION_9160) || \
763		((_ah)->ah_macRev >= AR_SREV_REVISION_5416_22))
764#define	AR_SREV_9160(_ah) \
765	(((_ah)->ah_macVersion == AR_SREV_VERSION_9160))
766#define	AR_SREV_9160_10_OR_LATER(_ah) \
767	(((_ah)->ah_macVersion >= AR_SREV_VERSION_9160))
768#define	AR_SREV_9160_11(_ah) \
769	(AR_SREV_9160(_ah) && ((_ah)->ah_macRev == AR_SREV_REVISION_9160_11))
770#define	AR_SREV_9280(_ah) \
771	(((_ah)->ah_macVersion == AR_SREV_VERSION_9280))
772#define	AR_SREV_9280_10_OR_LATER(_ah) \
773	(((_ah)->ah_macVersion >= AR_SREV_VERSION_9280))
774#define	AR_SREV_9280_20(_ah) \
775	(((_ah)->ah_macVersion == AR_SREV_VERSION_9280) && \
776		((_ah)->ah_macRev >= AR_SREV_REVISION_9280_20))
777#define	AR_SREV_9280_20_OR_LATER(_ah) \
778	(((_ah)->ah_macVersion > AR_SREV_VERSION_9280) || \
779	(((_ah)->ah_macVersion == AR_SREV_VERSION_9280) && \
780	((_ah)->ah_macRev >= AR_SREV_REVISION_9280_20)))
781
782#define	AR_SREV_9285(_ah)	(((_ah)->ah_macVersion == AR_SREV_VERSION_9285))
783#define	AR_SREV_9285_10_OR_LATER(_ah)	\
784	(((_ah)->ah_macVersion >= AR_SREV_VERSION_9285))
785#define	AR_SREV_9285_11(_ah) \
786	(AR_SREV_9280(ah) && ((_ah)->ah_macRev == AR_SREV_REVISION_9285_11))
787#define	AR_SREV_9285_11_OR_LATER(_ah)	\
788	(((_ah)->ah_macVersion > AR_SREV_VERSION_9285) || \
789	(AR_SREV_9285(ah) && ((_ah)->ah_macRev >= AR_SREV_REVISION_9285_11)))
790#define	AR_SREV_9285_12(_ah)	\
791	(AR_SREV_9280(ah) && ((_ah)->ah_macRev == AR_SREV_REVISION_9285_12))
792#define	AR_SREV_9285_12_OR_LATER(_ah)	\
793	(((_ah)->ah_macVersion > AR_SREV_VERSION_9285) || \
794	(AR_SREV_9285(ah) && ((_ah)->ah_macRev >= AR_SREV_REVISION_9285_12)))
795
796#define	AR_RADIO_SREV_MAJOR		0xf0
797#define	AR_RAD5133_SREV_MAJOR		0xc0
798#define	AR_RAD2133_SREV_MAJOR		0xd0
799#define	AR_RAD5122_SREV_MAJOR		0xe0
800#define	AR_RAD2122_SREV_MAJOR		0xf0
801
802#define	AR_AHB_MODE			0x4024
803#define	AR_AHB_EXACT_WR_EN		0x00000000
804#define	AR_AHB_BUF_WR_EN		0x00000001
805#define	AR_AHB_EXACT_RD_EN		0x00000000
806#define	AR_AHB_CACHELINE_RD_EN		0x00000002
807#define	AR_AHB_PREFETCH_RD_EN		0x00000004
808#define	AR_AHB_PAGE_SIZE_1K		0x00000000
809#define	AR_AHB_PAGE_SIZE_2K		0x00000008
810#define	AR_AHB_PAGE_SIZE_4K		0x00000010
811
812#define	AR_INTR_RTC_IRQ			0x00000001
813#define	AR_INTR_MAC_IRQ			0x00000002
814#define	AR_INTR_EEP_PROT_ACCESS		0x00000004
815#define	AR_INTR_MAC_AWAKE		0x00020000
816#define	AR_INTR_MAC_ASLEEP		0x00040000
817#define	AR_INTR_SPURIOUS		0xFFFFFFFF
818
819
820#define	AR_INTR_SYNC_CAUSE_CLR		0x4028
821
822#define	AR_INTR_SYNC_CAUSE		0x4028
823
824#define	AR_INTR_SYNC_ENABLE		0x402c
825#define	AR_INTR_SYNC_ENABLE_GPIO	0xFFFC0000
826#define	AR_INTR_SYNC_ENABLE_GPIO_S	18
827
828enum {
829	AR_INTR_SYNC_RTC_IRQ = 0x00000001,
830	AR_INTR_SYNC_MAC_IRQ = 0x00000002,
831	AR_INTR_SYNC_EEPROM_ILLEGAL_ACCESS = 0x00000004,
832	AR_INTR_SYNC_APB_TIMEOUT = 0x00000008,
833	AR_INTR_SYNC_PCI_MODE_CONFLICT = 0x00000010,
834	AR_INTR_SYNC_HOST1_FATAL = 0x00000020,
835	AR_INTR_SYNC_HOST1_PERR = 0x00000040,
836	AR_INTR_SYNC_TRCV_FIFO_PERR = 0x00000080,
837	AR_INTR_SYNC_RADM_CPL_EP = 0x00000100,
838	AR_INTR_SYNC_RADM_CPL_DLLP_ABORT = 0x00000200,
839	AR_INTR_SYNC_RADM_CPL_TLP_ABORT = 0x00000400,
840	AR_INTR_SYNC_RADM_CPL_ECRC_ERR = 0x00000800,
841	AR_INTR_SYNC_RADM_CPL_TIMEOUT = 0x00001000,
842	AR_INTR_SYNC_LOCAL_TIMEOUT = 0x00002000,
843	AR_INTR_SYNC_PM_ACCESS = 0x00004000,
844	AR_INTR_SYNC_MAC_AWAKE = 0x00008000,
845	AR_INTR_SYNC_MAC_ASLEEP = 0x00010000,
846	AR_INTR_SYNC_MAC_SLEEP_ACCESS = 0x00020000,
847	AR_INTR_SYNC_ALL = 0x0003FFFF,
848
849
850	AR_INTR_SYNC_DEFAULT = (AR_INTR_SYNC_HOST1_FATAL |
851	    AR_INTR_SYNC_HOST1_PERR |
852	    AR_INTR_SYNC_RADM_CPL_EP |
853	    AR_INTR_SYNC_RADM_CPL_DLLP_ABORT |
854	    AR_INTR_SYNC_RADM_CPL_TLP_ABORT |
855	    AR_INTR_SYNC_RADM_CPL_ECRC_ERR |
856	    AR_INTR_SYNC_RADM_CPL_TIMEOUT |
857	    AR_INTR_SYNC_LOCAL_TIMEOUT |
858	    AR_INTR_SYNC_MAC_SLEEP_ACCESS),
859
860	/* AR_INTR_SYNC_SPURIOUS = 0xFFFFFFFF, */
861	AR_INTR_SYNC_SPURIOUS = -1,
862
863};
864
865#define	AR_INTR_ASYNC_MASK		0x4030
866#define	AR_INTR_ASYNC_MASK_GPIO		0xFFFC0000
867#define	AR_INTR_ASYNC_MASK_GPIO_S	18
868
869#define	AR_INTR_SYNC_MASK		0x4034
870#define	AR_INTR_SYNC_MASK_GPIO		0xFFFC0000
871#define	AR_INTR_SYNC_MASK_GPIO_S	18
872
873#define	AR_INTR_ASYNC_CAUSE_CLR		0x4038
874#define	AR_INTR_ASYNC_CAUSE		0x4038
875
876#define	AR_INTR_ASYNC_ENABLE		0x403c
877#define	AR_INTR_ASYNC_ENABLE_GPIO	0xFFFC0000
878#define	AR_INTR_ASYNC_ENABLE_GPIO_S	18
879
880#define	AR_PCIE_SERDES		0x4040
881#define	AR_PCIE_SERDES2		0x4044
882#define	AR_PCIE_PM_CTRL		0x4014
883#define	AR_PCIE_PM_CTRL_ENA	0x00080000
884
885#define	AR_NUM_GPIO	14
886#define	AR928X_NUM_GPIO	10
887
888#define	AR_GPIO_IN_OUT		0x4048
889#define	AR_GPIO_IN_VAL		0x0FFFC000
890#define	AR_GPIO_IN_VAL_S	14
891#define	AR928X_GPIO_IN_VAL	0x000FFC00
892#define	AR928X_GPIO_IN_VAL_S	10
893
894#define	AR_GPIO_OE_OUT		0x404c
895#define	AR_GPIO_OE_OUT_DRV	0x3
896#define	AR_GPIO_OE_OUT_DRV_NO	0x0
897#define	AR_GPIO_OE_OUT_DRV_LOW	0x1
898#define	AR_GPIO_OE_OUT_DRV_HI	0x2
899#define	AR_GPIO_OE_OUT_DRV_ALL	0x3
900
901#define	AR_GPIO_INTR_POL	0x4050
902#define	AR_GPIO_INTR_POL_VAL	0x00001FFF
903#define	AR_GPIO_INTR_POL_VAL_S	0
904
905#define	AR_GPIO_INPUT_EN_VAL			0x4054
906#define	AR_GPIO_INPUT_EN_VAL_RFSILENT_DEF	0x00000080
907#define	AR_GPIO_INPUT_EN_VAL_RFSILENT_DEF_S	7
908#define	AR_GPIO_INPUT_EN_VAL_RFSILENT_BB	0x00008000
909#define	AR_GPIO_INPUT_EN_VAL_RFSILENT_BB_S	15
910#define	AR_GPIO_RTC_RESET_OVERRIDE_ENABLE	0x00010000
911#define	AR_GPIO_JTAG_DISABLE			0x00020000
912
913#define	AR_GPIO_INPUT_MUX1	0x4058
914
915#define	AR_GPIO_INPUT_MUX2		0x405c
916#define	AR_GPIO_INPUT_MUX2_CLK25	0x0000000f
917#define	AR_GPIO_INPUT_MUX2_CLK25_S	0
918#define	AR_GPIO_INPUT_MUX2_RFSILENT	0x000000f0
919#define	AR_GPIO_INPUT_MUX2_RFSILENT_S	4
920#define	AR_GPIO_INPUT_MUX2_RTC_RESET	0x00000f00
921#define	AR_GPIO_INPUT_MUX2_RTC_RESET_S	8
922
923#define	AR_GPIO_OUTPUT_MUX1	0x4060
924#define	AR_GPIO_OUTPUT_MUX2	0x4064
925#define	AR_GPIO_OUTPUT_MUX3	0x4068
926
927#define	AR_INPUT_STATE		0x406c
928
929#define	AR_EEPROM_STATUS_DATA			0x407c
930#define	AR_EEPROM_STATUS_DATA_VAL		0x0000ffff
931#define	AR_EEPROM_STATUS_DATA_VAL_S		0
932#define	AR_EEPROM_STATUS_DATA_BUSY		0x00010000
933#define	AR_EEPROM_STATUS_DATA_BUSY_ACCESS	0x00020000
934#define	AR_EEPROM_STATUS_DATA_PROT_ACCESS	0x00040000
935#define	AR_EEPROM_STATUS_DATA_ABSENT_ACCESS	0x00080000
936
937#define	AR_OBS	0x4080
938
939#define	AR_PCIE_MSI		0x4094
940#define	AR_PCIE_MSI_ENABLE	0x00000001
941
942
943#define	AR_RTC_9160_PLL_DIV		0x000003ff
944#define	AR_RTC_9160_PLL_DIV_S		0
945#define	AR_RTC_9160_PLL_REFDIV		0x00003C00
946#define	AR_RTC_9160_PLL_REFDIV_S	10
947#define	AR_RTC_9160_PLL_CLKSEL		0x0000C000
948#define	AR_RTC_9160_PLL_CLKSEL_S	14
949
950#define	AR_RTC_BASE	0x00020000
951#define	AR_RTC_RC \
952	(AR_SREV_9100(ah)) ? (AR_RTC_BASE + 0x0000) : 0x7000
953#define	AR_RTC_RC_M		0x00000003
954#define	AR_RTC_RC_MAC_WARM	0x00000001
955#define	AR_RTC_RC_MAC_COLD	0x00000002
956#define	AR_RTC_RC_COLD_RESET	0x00000004
957#define	AR_RTC_RC_WARM_RESET	0x00000008
958
959#define	AR_RTC_PLL_CONTROL \
960	(AR_SREV_9100(ah)) ? (AR_RTC_BASE + 0x0014) : 0x7014
961
962#define	AR_RTC_PLL_DIV		0x0000001f
963#define	AR_RTC_PLL_DIV_S	0
964#define	AR_RTC_PLL_DIV2		0x00000020
965#define	AR_RTC_PLL_REFDIV_5	0x000000c0
966#define	AR_RTC_PLL_CLKSEL	0x00000300
967#define	AR_RTC_PLL_CLKSEL_S	8
968
969
970
971#define	AR_RTC_RESET \
972	((AR_SREV_9100(ah)) ? (AR_RTC_BASE + 0x0040) : 0x7040)
973#define	AR_RTC_RESET_EN		(0x00000001)
974
975#define	AR_RTC_STATUS \
976	((AR_SREV_9100(ah)) ? (AR_RTC_BASE + 0x0044) : 0x7044)
977
978#define	AR_RTC_STATUS_M \
979	((AR_SREV_9100(ah)) ? 0x0000003f : 0x0000000f)
980
981#define	AR_RTC_PM_STATUS_M	0x0000000f
982
983#define	AR_RTC_STATUS_SHUTDOWN	0x00000001
984#define	AR_RTC_STATUS_ON	0x00000002
985#define	AR_RTC_STATUS_SLEEP	0x00000004
986#define	AR_RTC_STATUS_WAKEUP	0x00000008
987
988#define	AR_RTC_SLEEP_CLK \
989	((AR_SREV_9100(ah)) ? (AR_RTC_BASE + 0x0048) : 0x7048)
990#define	AR_RTC_FORCE_DERIVED_CLK    0x2
991
992#define	AR_RTC_FORCE_WAKE \
993	((AR_SREV_9100(ah)) ? (AR_RTC_BASE + 0x004c) : 0x704c)
994#define	AR_RTC_FORCE_WAKE_EN		0x00000001
995#define	AR_RTC_FORCE_WAKE_ON_INT	0x00000002
996
997
998#define	AR_RTC_INTR_CAUSE \
999	((AR_SREV_9100(ah)) ? (AR_RTC_BASE + 0x0050) : 0x7050)
1000
1001#define	AR_RTC_INTR_ENABLE \
1002	((AR_SREV_9100(ah)) ? (AR_RTC_BASE + 0x0054) : 0x7054)
1003
1004#define	AR_RTC_INTR_MASK \
1005	((AR_SREV_9100(ah)) ? (AR_RTC_BASE + 0x0058) : 0x7058)
1006
1007#define	AR_SEQ_MASK		0x8060
1008
1009#define	AR_AN_RF2G1_CH0		0x7810
1010#define	AR_AN_RF2G1_CH0_OB	0x03800000
1011#define	AR_AN_RF2G1_CH0_OB_S	23
1012#define	AR_AN_RF2G1_CH0_DB	0x1C000000
1013#define	AR_AN_RF2G1_CH0_DB_S	26
1014
1015#define	AR_AN_RF5G1_CH0		0x7818
1016#define	AR_AN_RF5G1_CH0_OB5	0x00070000
1017#define	AR_AN_RF5G1_CH0_OB5_S	16
1018#define	AR_AN_RF5G1_CH0_DB5	0x00380000
1019#define	AR_AN_RF5G1_CH0_DB5_S	19
1020
1021#define	AR_AN_RF2G1_CH1		0x7834
1022#define	AR_AN_RF2G1_CH1_OB	0x03800000
1023#define	AR_AN_RF2G1_CH1_OB_S	23
1024#define	AR_AN_RF2G1_CH1_DB	0x1C000000
1025#define	AR_AN_RF2G1_CH1_DB_S	26
1026
1027#define	AR_AN_RF5G1_CH1		0x783C
1028#define	AR_AN_RF5G1_CH1_OB5	0x00070000
1029#define	AR_AN_RF5G1_CH1_OB5_S	16
1030#define	AR_AN_RF5G1_CH1_DB5	0x00380000
1031#define	AR_AN_RF5G1_CH1_DB5_S	19
1032
1033#define	AR_AN_TOP2			0x7894
1034#define	AR_AN_TOP2_XPABIAS_LVL		0xC0000000
1035#define	AR_AN_TOP2_XPABIAS_LVL_S	30
1036#define	AR_AN_TOP2_LOCALBIAS		0x00200000
1037#define	AR_AN_TOP2_LOCALBIAS_S		21
1038#define	AR_AN_TOP2_PWDCLKIND		0x00400000
1039#define	AR_AN_TOP2_PWDCLKIND_S		22
1040
1041#define	AR_AN_SYNTH9		0x7868
1042#define	AR_AN_SYNTH9_REFDIVA	0xf8000000
1043#define	AR_AN_SYNTH9_REFDIVA_S	27
1044
1045#define	AR9285_AN_RF2G1			0x7820
1046#define	AR9285_AN_RF2G1_ENPACAL		0x00000800
1047#define	AR9285_AN_RF2G1_ENPACAL_S	11
1048#define	AR9285_AN_RF2G1_PDPADRV1	0x02000000
1049#define	AR9285_AN_RF2G1_PDPADRV1_S	25
1050#define	AR9285_AN_RF2G1_PDPADRV2	0x01000000
1051#define	AR9285_AN_RF2G1_PDPADRV2_S	24
1052#define	AR9285_AN_RF2G1_PDPAOUT		0x00800000
1053#define	AR9285_AN_RF2G1_PDPAOUT_S	23
1054#define	AR9285_AN_RF2G2			0x7824
1055#define	AR9285_AN_RF2G2_OFFCAL		0x00001000
1056#define	AR9285_AN_RF2G2_OFFCAL_S	12
1057#define	AR9285_AN_RF2G3			0x7828
1058#define	AR9285_AN_RF2G3_PDVCCOMP	0x02000000
1059#define	AR9285_AN_RF2G3_PDVCCOMP_S	25
1060#define	AR9285_AN_RF2G3_OB_0		0x00E00000
1061#define	AR9285_AN_RF2G3_OB_0_S		21
1062#define	AR9285_AN_RF2G3_OB_1		0x001C0000
1063#define	AR9285_AN_RF2G3_OB_1_S		18
1064#define	AR9285_AN_RF2G3_OB_2		0x00038000
1065#define	AR9285_AN_RF2G3_OB_2_S		15
1066#define	AR9285_AN_RF2G3_OB_3		0x00007000
1067#define	AR9285_AN_RF2G3_OB_3_S		12
1068#define	AR9285_AN_RF2G3_OB_4		0x00000E00
1069#define	AR9285_AN_RF2G3_OB_4_S		9
1070#define	AR9285_AN_RF2G3_DB1_0		0x000001C0
1071#define	AR9285_AN_RF2G3_DB1_0_S		6
1072#define	AR9285_AN_RF2G3_DB1_1		0x00000038
1073#define	AR9285_AN_RF2G3_DB1_1_S		3
1074#define	AR9285_AN_RF2G3_DB1_2		0x00000007
1075#define	AR9285_AN_RF2G3_DB1_2_S		0
1076#define	AR9285_AN_RF2G4			0x782C
1077#define	AR9285_AN_RF2G4_DB1_3		0xE0000000
1078#define	AR9285_AN_RF2G4_DB1_3_S		29
1079#define	AR9285_AN_RF2G4_DB1_4		0x1C000000
1080#define	AR9285_AN_RF2G4_DB1_4_S		26
1081#define	AR9285_AN_RF2G4_DB2_0		0x03800000
1082#define	AR9285_AN_RF2G4_DB2_0_S		23
1083#define	AR9285_AN_RF2G4_DB2_1		0x00700000
1084#define	AR9285_AN_RF2G4_DB2_1_S		20
1085#define	AR9285_AN_RF2G4_DB2_2		0x000E0000
1086#define	AR9285_AN_RF2G4_DB2_2_S		17
1087#define	AR9285_AN_RF2G4_DB2_3		0x0001C000
1088#define	AR9285_AN_RF2G4_DB2_3_S		14
1089#define	AR9285_AN_RF2G4_DB2_4		0x00003800
1090#define	AR9285_AN_RF2G4_DB2_4_S		11
1091#define	AR9285_AN_RF2G6			0x7834
1092#define	AR9285_AN_RF2G6_CCOMP		0x00007800
1093#define	AR9285_AN_RF2G6_CCOMP_S		11
1094#define	AR9285_AN_RF2G6_OFFS		0x03f00000
1095#define	AR9285_AN_RF2G6_OFFS_S		20
1096#define	AR9285_AN_RF2G7			0x7838
1097#define	AR9285_AN_RF2G7_PWDDB		0x00000002
1098#define	AR9285_AN_RF2G7_PWDDB_S		1
1099#define	AR9285_AN_RF2G7_PADRVGN2TAB0	0xE0000000
1100#define	AR9285_AN_RF2G7_PADRVGN2TAB0_S	29
1101#define	AR9285_AN_RF2G8			0x783C
1102#define	AR9285_AN_RF2G8_PADRVGN2TAB0	0x0001C000
1103#define	AR9285_AN_RF2G8_PADRVGN2TAB0_S	14
1104#define	AR9285_AN_RF2G9		0x7840
1105#define	AR9285_AN_RXTXBB1	0x7854
1106#define	AR9285_AN_RXTXBB1_PDRXTXBB1	0x00000020
1107#define	AR9285_AN_RXTXBB1_PDRXTXBB1_S	5
1108#define	AR9285_AN_RXTXBB1_PDV2I	0x00000080
1109#define	AR9285_AN_RXTXBB1_PDV2I_S	7
1110#define	AR9285_AN_RXTXBB1_PDDACIF	0x00000100
1111#define	AR9285_AN_RXTXBB1_PDDACIF_S	8
1112#define	AR9285_AN_RXTXBB1_SPARE9	0x00000001
1113#define	AR9285_AN_RXTXBB1_SPARE9_S	0
1114#define	AR9285_AN_TOP2	0x7868
1115#define	AR9285_AN_TOP3	0x786c
1116#define	AR9285_AN_TOP3_XPABIAS_LVL	0x0000000C
1117#define	AR9285_AN_TOP3_XPABIAS_LVL_S	2
1118#define	AR9285_AN_TOP3_PWDDAC	0x00800000
1119#define	AR9285_AN_TOP3_PWDDAC_S	23
1120#define	AR9285_AN_TOP4	0x7870
1121#define	AR9285_AN_TOP4_DEFAULT	0x10142c00
1122#define	AR_STA_ID0			0x8000
1123#define	AR_STA_ID1			0x8004
1124#define	AR_STA_ID1_SADH_MASK		0x0000FFFF
1125#define	AR_STA_ID1_STA_AP		0x00010000
1126#define	AR_STA_ID1_ADHOC		0x00020000
1127#define	AR_STA_ID1_PWR_SAV		0x00040000
1128#define	AR_STA_ID1_KSRCHDIS		0x00080000
1129#define	AR_STA_ID1_PCF			0x00100000
1130#define	AR_STA_ID1_USE_DEFANT		0x00200000
1131#define	AR_STA_ID1_DEFANT_UPDATE	0x00400000
1132#define	AR_STA_ID1_RTS_USE_DEF		0x00800000
1133#define	AR_STA_ID1_ACKCTS_6MB		0x01000000
1134#define	AR_STA_ID1_BASE_RATE_11B	0x02000000
1135#define	AR_STA_ID1_SECTOR_SELF_GEN	0x04000000
1136#define	AR_STA_ID1_CRPT_MIC_ENABLE	0x08000000
1137#define	AR_STA_ID1_KSRCH_MODE		0x10000000
1138#define	AR_STA_ID1_PRESERVE_SEQNUM	0x20000000
1139#define	AR_STA_ID1_CBCIV_ENDIAN		0x40000000
1140#define	AR_STA_ID1_MCAST_KSRCH		0x80000000
1141
1142#define	AR_BSS_ID0		0x8008
1143#define	AR_BSS_ID1		0x800C
1144#define	AR_BSS_ID1_U16	0x0000FFFF
1145#define	AR_BSS_ID1_AID		0x07FF0000
1146#define	AR_BSS_ID1_AID_S	16
1147
1148#define	AR_BCN_RSSI_AVE		0x8010
1149#define	AR_BCN_RSSI_AVE_MASK	0x00000FFF
1150
1151#define	AR_TIME_OUT		0x8014
1152#define	AR_TIME_OUT_ACK		0x00003FFF
1153#define	AR_TIME_OUT_ACK_S	0
1154#define	AR_TIME_OUT_CTS		0x3FFF0000
1155#define	AR_TIME_OUT_CTS_S	16
1156
1157#define	AR_RSSI_THR		0x8018
1158#define	AR_RSSI_THR_MASK	0x000000FF
1159#define	AR_RSSI_THR_BM_THR	0x0000FF00
1160#define	AR_RSSI_THR_BM_THR_S	8
1161#define	AR_RSSI_BCN_WEIGHT	0x1F000000
1162#define	AR_RSSI_BCN_WEIGHT_S	24
1163#define	AR_RSSI_BCN_RSSI_RST	0x20000000
1164
1165#define	AR_USEC			0x801c
1166#define	AR_USEC_USEC		0x0000007F
1167#define	AR_USEC_TX_LAT		0x007FC000
1168#define	AR_USEC_TX_LAT_S	14
1169#define	AR_USEC_RX_LAT		0x1F800000
1170#define	AR_USEC_RX_LAT_S	23
1171
1172#define	AR_RESET_TSF		0x8020
1173#define	AR_RESET_TSF_ONCE	0x01000000
1174
1175#define	AR_MAX_CFP_DUR		0x8038
1176#define	AR_CFP_VAL		0x0000FFFF
1177
1178#define	AR_RX_FILTER		0x803C
1179#define	AR_RX_FILTER_ALL	0x00000000
1180#define	AR_RX_UCAST		0x00000001
1181#define	AR_RX_MCAST		0x00000002
1182#define	AR_RX_BCAST		0x00000004
1183#define	AR_RX_CONTROL		0x00000008
1184#define	AR_RX_BEACON		0x00000010
1185#define	AR_RX_PROM		0x00000020
1186#define	AR_RX_PROBE_REQ		0x00000080
1187#define	AR_RX_MY_BEACON		0x00000200
1188#define	AR_RX_COMPR_BAR		0x00000400
1189#define	AR_RX_COMPR_BA		0x00000800
1190#define	AR_RX_UNCOM_BA_BAR	0x00001000
1191
1192#define	AR_MCAST_FIL0		0x8040
1193#define	AR_MCAST_FIL1		0x8044
1194
1195#define	AR_DIAG_SW			0x8048
1196#define	AR_DIAG_CACHE_ACK		0x00000001
1197#define	AR_DIAG_ACK_DIS			0x00000002
1198#define	AR_DIAG_CTS_DIS			0x00000004
1199#define	AR_DIAG_ENCRYPT_DIS		0x00000008
1200#define	AR_DIAG_DECRYPT_DIS		0x00000010
1201#define	AR_DIAG_RX_DIS			0x00000020
1202#define	AR_DIAG_LOOP_BACK		0x00000040
1203#define	AR_DIAG_CORR_FCS		0x00000080
1204#define	AR_DIAG_CHAN_INFO		0x00000100
1205#define	AR_DIAG_SCRAM_SEED		0x0001FE00
1206#define	AR_DIAG_SCRAM_SEED_S		8
1207#define	AR_DIAG_FRAME_NV0		0x00020000
1208#define	AR_DIAG_OBS_PT_SEL1		0x000C0000
1209#define	AR_DIAG_OBS_PT_SEL1_S		18
1210#define	AR_DIAG_FORCE_RX_CLEAR		0x00100000
1211#define	AR_DIAG_IGNORE_VIRT_CS		0x00200000
1212#define	AR_DIAG_FORCE_CH_IDLE_HIGH	0x00400000
1213#define	AR_DIAG_EIFS_CTRL_ENA		0x00800000
1214#define	AR_DIAG_DUAL_CHAIN_INFO		0x01000000
1215#define	AR_DIAG_RX_ABORT		0x02000000
1216#define	AR_DIAG_SATURATE_CYCLE_CNT	0x04000000
1217#define	AR_DIAG_OBS_PT_SEL2		0x08000000
1218#define	AR_DIAG_RX_CLEAR_CTL_LOW	0x10000000
1219#define	AR_DIAG_RX_CLEAR_EXT_LOW	0x20000000
1220
1221#define	AR_TSF_L32	0x804c
1222#define	AR_TSF_U32	0x8050
1223
1224#define	AR_TST_ADDAC	0x8054
1225#define	AR_DEF_ANTENNA	0x8058
1226
1227#define	AR_AES_MUTE_MASK0	0x805c
1228#define	AR_AES_MUTE_MASK0_FC	0x0000FFFF
1229#define	AR_AES_MUTE_MASK0_QOS	0xFFFF0000
1230#define	AR_AES_MUTE_MASK0_QOS_S	16
1231
1232#define	AR_AES_MUTE_MASK1	0x8060
1233#define	AR_AES_MUTE_MASK1_SEQ	0x0000FFFF
1234
1235#define	AR_GATED_CLKS		0x8064
1236#define	AR_GATED_CLKS_TX	0x00000002
1237#define	AR_GATED_CLKS_RX	0x00000004
1238#define	AR_GATED_CLKS_REG	0x00000008
1239
1240#define	AR_OBS_BUS_CTRL		0x8068
1241#define	AR_OBS_BUS_SEL_1	0x00040000
1242#define	AR_OBS_BUS_SEL_2	0x00080000
1243#define	AR_OBS_BUS_SEL_3	0x000C0000
1244#define	AR_OBS_BUS_SEL_4	0x08040000
1245#define	AR_OBS_BUS_SEL_5	0x08080000
1246
1247#define	AR_OBS_BUS_1			0x806c
1248#define	AR_OBS_BUS_1_PCU		0x00000001
1249#define	AR_OBS_BUS_1_RX_END		0x00000002
1250#define	AR_OBS_BUS_1_RX_WEP		0x00000004
1251#define	AR_OBS_BUS_1_RX_BEACON		0x00000008
1252#define	AR_OBS_BUS_1_RX_FILTER		0x00000010
1253#define	AR_OBS_BUS_1_TX_HCF		0x00000020
1254#define	AR_OBS_BUS_1_QUIET_TIME		0x00000040
1255#define	AR_OBS_BUS_1_CHAN_IDLE		0x00000080
1256#define	AR_OBS_BUS_1_TX_HOLD 		0x00000100
1257#define	AR_OBS_BUS_1_TX_FRAME		0x00000200
1258#define	AR_OBS_BUS_1_RX_FRAME		0x00000400
1259#define	AR_OBS_BUS_1_RX_CLEAR		0x00000800
1260#define	AR_OBS_BUS_1_WEP_STATE		0x0003F000
1261#define	AR_OBS_BUS_1_WEP_STATE_S	12
1262#define	AR_OBS_BUS_1_RX_STATE		0x01F00000
1263#define	AR_OBS_BUS_1_RX_STATE_S		20
1264#define	AR_OBS_BUS_1_TX_STATE		0x7E000000
1265#define	AR_OBS_BUS_1_TX_STATE_S		25
1266
1267#define	AR_LAST_TSTP	0x8080
1268#define	AR_NAV		0x8084
1269#define	AR_RTS_OK	0x8088
1270#define	AR_RTS_FAIL	0x808c
1271#define	AR_ACK_FAIL	0x8090
1272#define	AR_FCS_FAIL	0x8094
1273#define	AR_BEACON_CNT	0x8098
1274
1275#define	AR_SLEEP1		0x80d4
1276#define	AR_SLEEP1_ASSUME_DTIM	0x00080000
1277#define	AR_SLEEP1_CAB_TIMEOUT	0xFFE00000
1278#define	AR_SLEEP1_CAB_TIMEOUT_S	21
1279
1280#define	AR_SLEEP2			0x80d8
1281#define	AR_SLEEP2_BEACON_TIMEOUT	0xFFE00000
1282#define	AR_SLEEP2_BEACON_TIMEOUT_S	21
1283
1284#define	AR_BSSMSKL	0x80e0
1285#define	AR_BSSMSKU	0x80e4
1286
1287#define	AR_TPC		0x80e8
1288#define	AR_TPC_ACK	0x0000003f
1289#define	AR_TPC_ACK_S	0x00
1290#define	AR_TPC_CTS	0x00003f00
1291#define	AR_TPC_CTS_S	0x08
1292#define	AR_TPC_CHIRP	0x003f0000
1293#define	AR_TPC_CHIRP_S	0x16
1294
1295#define	AR_TFCNT	0x80ec
1296#define	AR_RFCNT	0x80f0
1297#define	AR_RCCNT	0x80f4
1298#define	AR_CCCNT	0x80f8
1299
1300#define	AR_QUIET1			0x80fc
1301#define	AR_QUIET1_NEXT_QUIET_S		0
1302#define	AR_QUIET1_NEXT_QUIET_M		0x0000ffff
1303#define	AR_QUIET1_QUIET_ENABLE		0x00010000
1304#define	AR_QUIET1_QUIET_ACK_CTS_ENABLE	0x00020000
1305#define	AR_QUIET2			0x8100
1306#define	AR_QUIET2_QUIET_PERIOD_S	0
1307#define	AR_QUIET2_QUIET_PERIOD_M	0x0000ffff
1308#define	AR_QUIET2_QUIET_DUR_S		16
1309#define	AR_QUIET2_QUIET_DUR		0xffff0000
1310
1311#define	AR_TSF_PARM		0x8104
1312#define	AR_TSF_INCREMENT_M	0x000000ff
1313#define	AR_TSF_INCREMENT_S	0x00
1314
1315#define	AR_QOS_NO_ACK			0x8108
1316#define	AR_QOS_NO_ACK_TWO_BIT		0x0000000f
1317#define	AR_QOS_NO_ACK_TWO_BIT_S		0
1318#define	AR_QOS_NO_ACK_BIT_OFF		0x00000070
1319#define	AR_QOS_NO_ACK_BIT_OFF_S		4
1320#define	AR_QOS_NO_ACK_BYTE_OFF		0x00000180
1321#define	AR_QOS_NO_ACK_BYTE_OFF_S	7
1322
1323#define	AR_PHY_ERR	0x810c
1324
1325#define	AR_PHY_ERR_DCHIRP	0x00000008
1326#define	AR_PHY_ERR_RADAR	0x00000020
1327#define	AR_PHY_ERR_OFDM_TIMING	0x00020000
1328#define	AR_PHY_ERR_CCK_TIMING	0x02000000
1329
1330#define	AR_RXFIFO_CFG	0x8114
1331
1332
1333#define	AR_MIC_QOS_CONTROL	0x8118
1334#define	AR_MIC_QOS_SELECT	0x811c
1335
1336#define	AR_PCU_MISC			0x8120
1337#define	AR_PCU_FORCE_BSSID_MATCH	0x00000001
1338#define	AR_PCU_MIC_NEW_LOC_ENA		0x00000004
1339#define	AR_PCU_TX_ADD_TSF		0x00000008
1340#define	AR_PCU_CCK_SIFS_MODE		0x00000010
1341#define	AR_PCU_RX_ANT_UPDT		0x00000800
1342#define	AR_PCU_TXOP_TBTT_LIMIT_ENA	0x00001000
1343#define	AR_PCU_MISS_BCN_IN_SLEEP	0x00004000
1344#define	AR_PCU_BUG_12306_FIX_ENA	0x00020000
1345#define	AR_PCU_FORCE_QUIET_COLL		0x00040000
1346#define	AR_PCU_TBTT_PROTECT		0x00200000
1347#define	AR_PCU_CLEAR_VMF		0x01000000
1348#define	AR_PCU_CLEAR_BA_VALID		0x04000000
1349
1350
1351#define	AR_FILT_OFDM		0x8124
1352#define	AR_FILT_OFDM_COUNT	0x00FFFFFF
1353
1354#define	AR_FILT_CCK		0x8128
1355#define	AR_FILT_CCK_COUNT	0x00FFFFFF
1356
1357#define	AR_PHY_ERR_1		0x812c
1358#define	AR_PHY_ERR_1_COUNT	0x00FFFFFF
1359#define	AR_PHY_ERR_MASK_1	0x8130
1360
1361#define	AR_PHY_ERR_2		0x8134
1362#define	AR_PHY_ERR_2_COUNT	0x00FFFFFF
1363#define	AR_PHY_ERR_MASK_2	0x8138
1364
1365#define	AR_PHY_COUNTMAX		(3 << 22)
1366#define	AR_MIBCNT_INTRMASK	(3 << 22)
1367
1368#define	AR_TSFOOR_THRESHOLD	0x813c
1369#define	AR_TSFOOR_THRESHOLD_VAL	0x0000FFFF
1370
1371#define	AR_PHY_ERR_EIFS_MASK	8144
1372
1373#define	AR_PHY_ERR_3		0x8168
1374#define	AR_PHY_ERR_3_COUNT	0x00FFFFFF
1375#define	AR_PHY_ERR_MASK_3	0x816c
1376
1377#define	AR_TXSIFS		0x81d0
1378#define	AR_TXSIFS_TIME		0x000000FF
1379#define	AR_TXSIFS_TX_LATENCY	0x00000F00
1380#define	AR_TXSIFS_TX_LATENCY_S	8
1381#define	AR_TXSIFS_ACK_SHIFT	0x00007000
1382#define	AR_TXSIFS_ACK_SHIFT_S	12
1383
1384#define	AR_TXOP_X		0x81ec
1385#define	AR_TXOP_X_VAL		0x000000FF
1386
1387
1388#define	AR_TXOP_0_3	0x81f0
1389#define	AR_TXOP_4_7	0x81f4
1390#define	AR_TXOP_8_11	0x81f8
1391#define	AR_TXOP_12_15	0x81fc
1392
1393
1394#define	AR_NEXT_TBTT_TIMER		0x8200
1395#define	AR_NEXT_DMA_BEACON_ALERT	0x8204
1396#define	AR_NEXT_SWBA			0x8208
1397#define	AR_NEXT_CFP			0x8208
1398#define	AR_NEXT_HCF			0x820C
1399#define	AR_NEXT_TIM			0x8210
1400#define	AR_NEXT_DTIM			0x8214
1401#define	AR_NEXT_QUIET_TIMER		0x8218
1402#define	AR_NEXT_NDP_TIMER		0x821C
1403
1404#define	AR_BEACON_PERIOD		0x8220
1405#define	AR_DMA_BEACON_PERIOD		0x8224
1406#define	AR_SWBA_PERIOD			0x8228
1407#define	AR_HCF_PERIOD			0x822C
1408#define	AR_TIM_PERIOD			0x8230
1409#define	AR_DTIM_PERIOD			0x8234
1410#define	AR_QUIET_PERIOD			0x8238
1411#define	AR_NDP_PERIOD			0x823C
1412
1413#define	AR_TIMER_MODE			0x8240
1414#define	AR_TBTT_TIMER_EN		0x00000001
1415#define	AR_DBA_TIMER_EN			0x00000002
1416#define	AR_SWBA_TIMER_EN		0x00000004
1417#define	AR_HCF_TIMER_EN			0x00000008
1418#define	AR_TIM_TIMER_EN			0x00000010
1419#define	AR_DTIM_TIMER_EN		0x00000020
1420#define	AR_QUIET_TIMER_EN		0x00000040
1421#define	AR_NDP_TIMER_EN			0x00000080
1422#define	AR_TIMER_OVERFLOW_INDEX		0x00000700
1423#define	AR_TIMER_OVERFLOW_INDEX_S	8
1424#define	AR_TIMER_THRESH			0xFFFFF000
1425#define	AR_TIMER_THRESH_S		12
1426
1427#define	AR_SLP32_MODE			0x8244
1428#define	AR_SLP32_HALF_CLK_LATENCY	0x000FFFFF
1429#define	AR_SLP32_ENA			0x00100000
1430#define	AR_SLP32_TSF_WRITE_STATUS	0x00200000
1431
1432#define	AR_SLP32_WAKE			0x8248
1433#define	AR_SLP32_WAKE_XTL_TIME		0x0000FFFF
1434
1435#define	AR_SLP32_INC		0x824c
1436#define	AR_SLP32_TST_INC	0x000FFFFF
1437
1438#define	AR_SLP_CNT		0x8250
1439#define	AR_SLP_CYCLE_CNT	0x8254
1440
1441#define	AR_SLP_MIB_CTRL		0x8258
1442#define	AR_SLP_MIB_CLEAR	0x00000001
1443#define	AR_SLP_MIB_PENDING	0x00000002
1444
1445#define	AR_2040_MODE		0x8318
1446#define	AR_2040_JOINED_RX_CLEAR	0x00000001
1447
1448
1449#define	AR_EXTRCCNT		0x8328
1450
1451#define	AR_SELFGEN_MASK		0x832c
1452
1453#define	AR_PCU_TXBUF_CTRL		0x8340
1454#define	AR_PCU_TXBUF_CTRL_SIZE_MASK	0x7FF
1455#define	AR_PCU_TXBUF_CTRL_USABLE_SIZE   0x700
1456#define	AR_9285_PCU_TXBUF_CTRL_USABLE_SIZE   0x380
1457
1458#define	AR_KEYTABLE_0		0x8800
1459#define	AR_KEYTABLE(_n)		(AR_KEYTABLE_0 + ((_n)*32))
1460#define	AR_KEY_CACHE_SIZE	128
1461#define	AR_RSVD_KEYTABLE_ENTRIES	4
1462#define	AR_KEY_TYPE		0x00000007
1463#define	AR_KEYTABLE_TYPE_40	0x00000000
1464#define	AR_KEYTABLE_TYPE_104	0x00000001
1465#define	AR_KEYTABLE_TYPE_128	0x00000003
1466#define	AR_KEYTABLE_TYPE_TKIP	0x00000004
1467#define	AR_KEYTABLE_TYPE_AES	0x00000005
1468#define	AR_KEYTABLE_TYPE_CCM	0x00000006
1469#define	AR_KEYTABLE_TYPE_CLR	0x00000007
1470#define	AR_KEYTABLE_ANT		0x00000008
1471#define	AR_KEYTABLE_VALID	0x00008000
1472#define	AR_KEYTABLE_KEY0(_n)	(AR_KEYTABLE(_n) + 0)
1473#define	AR_KEYTABLE_KEY1(_n)	(AR_KEYTABLE(_n) + 4)
1474#define	AR_KEYTABLE_KEY2(_n)	(AR_KEYTABLE(_n) + 8)
1475#define	AR_KEYTABLE_KEY3(_n)	(AR_KEYTABLE(_n) + 12)
1476#define	AR_KEYTABLE_KEY4(_n)	(AR_KEYTABLE(_n) + 16)
1477#define	AR_KEYTABLE_TYPE(_n)	(AR_KEYTABLE(_n) + 20)
1478#define	AR_KEYTABLE_MAC0(_n)	(AR_KEYTABLE(_n) + 24)
1479#define	AR_KEYTABLE_MAC1(_n)	(AR_KEYTABLE(_n) + 28)
1480
1481#ifdef __cplusplus
1482}
1483#endif
1484
1485#endif /* _ARN_REG_H */
1486