FreeBSD/Linux Kernel Cross Reference
sys/dev/ic/atwreg.h
1 /* $NetBSD: atwreg.h,v 1.22 2008/09/08 23:36:54 gmcgarry Exp $ */
2
3 /*
4 * Copyright (c) 2003 The NetBSD Foundation, Inc. All rights reserved.
5 *
6 * This code is derived from software contributed to The NetBSD Foundation
7 * by David Young.
8 *
9 * Redistribution and use in source and binary forms, with or without
10 * modification, are permitted provided that the following conditions
11 * are met:
12 * 1. Redistributions of source code must retain the above copyright
13 * notice, this list of conditions and the following disclaimer.
14 * 2. Redistributions in binary form must reproduce the above copyright
15 * notice, this list of conditions and the following disclaimer in the
16 * documentation and/or other materials provided with the distribution.
17 *
18 * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
19 * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
20 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
21 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
22 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
23 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
24 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
25 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
26 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
27 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
28 * POSSIBILITY OF SUCH DAMAGE.
29 */
30
31 /* glossary */
32
33 /* DTIM Delivery Traffic Indication Map, sent by AP
34 * ATIM Ad Hoc Traffic Indication Map
35 * TU 1024 microseconds
36 * TSF time synchronization function
37 * TBTT target beacon transmission time
38 * DIFS distributed inter-frame space
39 * SIFS short inter-frame space
40 * EIFS extended inter-frame space
41 */
42
43 #include <lib/libkern/libkern.h>
44 #include <dev/ic/rf3000reg.h>
45 #include <dev/ic/hfa3861areg.h>
46
47 /* ADM8211 Host Control and Status Registers */
48
49 #define ATW_PAR 0x00 /* PCI access */
50 #define ATW_FRCTL 0x04 /* Frame control */
51 #define ATW_TDR 0x08 /* Transmit demand */
52 #define ATW_WTDP 0x0C /* Current transmit descriptor pointer */
53 #define ATW_RDR 0x10 /* Receive demand */
54 #define ATW_WRDP 0x14 /* Current receive descriptor pointer */
55 #define ATW_RDB 0x18 /* Receive descriptor base address */
56 #define ATW_CSR3A 0x1C /* Unused (on ADM8211A) */
57 #define ATW_C_TDBH 0x1C /* Transmit descriptor base address,
58 * high-priority packet
59 */
60 #define ATW_TDBD 0x20 /* Transmit descriptor base address, DCF */
61 #define ATW_TDBP 0x24 /* Transmit descriptor base address, PCF */
62 #define ATW_STSR 0x28 /* Status */
63 #define ATW_CSR5A 0x2C /* Unused */
64 #define ATW_C_TDBB 0x2C /* Transmit descriptor base address, buffered
65 * broadcast/multicast packet
66 */
67 #define ATW_NAR 0x30 /* Network access */
68 #define ATW_CSR6A 0x34 /* Unused */
69 #define ATW_IER 0x38 /* Interrupt enable */
70 #define ATW_CSR7A 0x3C
71 #define ATW_LPC 0x40 /* Lost packet counter */
72 #define ATW_TEST1 0x44 /* Test register 1 */
73 #define ATW_SPR 0x48 /* Serial port */
74 #define ATW_TEST0 0x4C /* Test register 0 */
75 #define ATW_WCSR 0x50 /* Wake-up control/status */
76 #define ATW_WPDR 0x54 /* Wake-up pattern data */
77 #define ATW_GPTMR 0x58 /* General purpose timer */
78 #define ATW_GPIO 0x5C /* GPIO[5:0] configuration and control */
79 #define ATW_BBPCTL 0x60 /* BBP control port */
80 #define ATW_SYNCTL 0x64 /* synthesizer control port */
81 #define ATW_PLCPHD 0x68 /* PLCP header setting */
82 #define ATW_MMIWADDR 0x6C /* MMI write address */
83 #define ATW_MMIRADDR1 0x70 /* MMI read address 1 */
84 #define ATW_MMIRADDR2 0x74 /* MMI read address 2 */
85 #define ATW_TXBR 0x78 /* Transmit burst counter */
86 #define ATW_CSR15A 0x7C /* Unused */
87 #define ATW_ALCSTAT 0x80 /* ALC statistics */
88 #define ATW_TOFS2 0x84 /* Timing offset parameter 2, 16b */
89 #define ATW_CMDR 0x88 /* Command */
90 #define ATW_PCIC 0x8C /* PCI bus performance counter */
91 #define ATW_PMCSR 0x90 /* Power management command and status */
92 #define ATW_PAR0 0x94 /* Local MAC address register 0, 32b */
93 #define ATW_PAR1 0x98 /* Local MAC address register 1, 16b */
94 #define ATW_MAR0 0x9C /* Multicast address hash table register 0 */
95 #define ATW_MAR1 0xA0 /* Multicast address hash table register 1 */
96 #define ATW_ATIMDA0 0xA4 /* Ad Hoc Traffic Indication Map (ATIM)
97 * frame DA, byte[3:0]
98 */
99 #define ATW_ABDA1 0xA8 /* BSSID address byte[5:4];
100 * ATIM frame DA byte[5:4]
101 */
102 #define ATW_BSSID0 0xAC /* BSSID address byte[3:0] */
103 #define ATW_TXLMT 0xB0 /* WLAN retry limit, 8b;
104 * Max TX MSDU lifetime, 16b
105 */
106 #define ATW_MIBCNT 0xB4 /* RTS/ACK/FCS MIB count, 32b */
107 #define ATW_BCNT 0xB8 /* Beacon transmission time, 32b */
108 #define ATW_TSFTH 0xBC /* TSFT[63:32], 32b */
109 #define ATW_TSC 0xC0 /* TSFT[39:32] down count value */
110 #define ATW_SYNRF 0xC4 /* SYN RF IF direct control */
111 #define ATW_BPLI 0xC8 /* Beacon interval, 16b.
112 * STA listen interval, 16b.
113 */
114 #define ATW_CAP0 0xCC /* Current channel, 4b. RCVDTIM, 1b. */
115 #define ATW_CAP1 0xD0 /* Capability information, 16b.
116 * ATIM window, 1b.
117 */
118 #define ATW_RMD 0xD4 /* RX max reception duration, 16b */
119 #define ATW_CFPP 0xD8 /* CFP parameter, 32b */
120 #define ATW_TOFS0 0xDC /* Timing offset parameter 0, 28b */
121 #define ATW_TOFS1 0xE0 /* Timing offset parameter 1, 24b */
122 #define ATW_IFST 0xE4 /* IFS timing parameter 1, 32b */
123 #define ATW_RSPT 0xE8 /* Response time, 24b */
124 #define ATW_TSFTL 0xEC /* TSFT[31:0], 32b */
125 #define ATW_WEPCTL 0xF0 /* WEP control */
126 #define ATW_WESK 0xF4 /* Write entry for shared/individual key */
127 #define ATW_WEPCNT 0xF8 /* WEP count */
128 #define ATW_MACTEST 0xFC
129
130 #define ATW_FER 0x100 /* Function event */
131 #define ATW_FEMR 0x104 /* Function event mask */
132 #define ATW_FPSR 0x108 /* Function present state */
133 #define ATW_FFER 0x10C /* Function force event */
134
135
136 #define ATW_PAR_MWIE __BIT(24) /* memory write and invalidate
137 * enable
138 */
139 #define ATW_PAR_MRLE __BIT(23) /* memory read line enable */
140 #define ATW_PAR_MRME __BIT(21) /* memory read multiple
141 * enable
142 */
143 #define ATW_PAR_RAP_MASK __BITS(17, 18) /* receive auto-polling in
144 * receive suspended state
145 */
146 #define ATW_PAR_CAL_MASK __BITS(14, 15) /* cache alignment */
147 #define ATW_PAR_CAL_PBL 0x0
148 /* min(8 DW, PBL) */
149 #define ATW_PAR_CAL_8DW __SHIFTIN(0x1, ATW_PAR_CAL_MASK)
150 /* min(16 DW, PBL) */
151 #define ATW_PAR_CAL_16DW __SHIFTIN(0x2, ATW_PAR_CAL_MASK)
152 /* min(32 DW, PBL) */
153 #define ATW_PAR_CAL_32DW __SHIFTIN(0x3, ATW_PAR_CAL_MASK)
154 #define ATW_PAR_PBL_MASK __BITS(8, 13) /* programmable burst length */
155 #define ATW_PAR_PBL_UNLIMITED 0x0
156 #define ATW_PAR_PBL_1DW __SHIFTIN(0x1, ATW_PAR_PBL_MASK)
157 #define ATW_PAR_PBL_2DW __SHIFTIN(0x2, ATW_PAR_PBL_MASK)
158 #define ATW_PAR_PBL_4DW __SHIFTIN(0x4, ATW_PAR_PBL_MASK)
159 #define ATW_PAR_PBL_8DW __SHIFTIN(0x8, ATW_PAR_PBL_MASK)
160 #define ATW_PAR_PBL_16DW __SHIFTIN(0x16, ATW_PAR_PBL_MASK)
161 #define ATW_PAR_PBL_32DW __SHIFTIN(0x32, ATW_PAR_PBL_MASK)
162 #define ATW_PAR_BLE __BIT(7) /* big/little endian selection */
163 #define ATW_PAR_DSL_MASK __BITS(2, 6) /* descriptor skip length */
164 #define ATW_PAR_BAR __BIT(1) /* bus arbitration */
165 #define ATW_PAR_SWR __BIT(0) /* software reset */
166
167 #define ATW_FRCTL_PWRMGMT __BIT(31) /* power management */
168 #define ATW_FRCTL_VER_MASK __BITS(29, 30) /* protocol version */
169 #define ATW_FRCTL_ORDER __BIT(28) /* order bit */
170 #define ATW_FRCTL_MAXPSP __BIT(27) /* maximum power saving */
171 #define ATW_C_FRCTL_PRSP __BIT(26) /* 1: driver sends probe
172 * response
173 * 0: ASIC sends prresp
174 */
175 #define ATW_C_FRCTL_DRVBCON __BIT(25) /* 1: driver sends beacons
176 * 0: ASIC sends beacons
177 */
178 #define ATW_C_FRCTL_DRVLINKCTRL __BIT(24) /* 1: driver controls link LED
179 * 0: ASIC controls link LED
180 */
181 #define ATW_C_FRCTL_DRVLINKON __BIT(23) /* 1: turn on link LED
182 * 0: turn off link LED
183 */
184 #define ATW_C_FRCTL_CTX_DATA __BIT(22) /* 0: set by CSR28
185 * 1: random
186 */
187 #define ATW_C_FRCTL_RSVFRM __BIT(21) /* 1: receive "reserved"
188 * frames, 0: ignore
189 * reserved frames
190 */
191 #define ATW_C_FRCTL_CFEND __BIT(19) /* write to send CF_END,
192 * ADM8211C/CR clears
193 */
194 #define ATW_FRCTL_DOZEFRM __BIT(18) /* select pre-sleep frame */
195 #define ATW_FRCTL_PSAWAKE __BIT(17) /* MAC is awake (?) */
196 #define ATW_FRCTL_PSMODE __BIT(16) /* MAC is power-saving (?) */
197 #define ATW_FRCTL_AID_MASK __BITS(0, 15) /* STA Association ID */
198
199 #define ATW_INTR_PCF __BIT(31) /* started/ended CFP */
200 #define ATW_INTR_BCNTC __BIT(30) /* transmitted IBSS beacon */
201 #define ATW_INTR_GPINT __BIT(29) /* GPIO interrupt */
202 #define ATW_INTR_LINKOFF __BIT(28) /* lost ATW_WCSR_BLN beacons */
203 #define ATW_INTR_ATIMTC __BIT(27) /* transmitted ATIM */
204 #define ATW_INTR_TSFTF __BIT(26) /* TSFT out of range */
205 #define ATW_INTR_TSCZ __BIT(25) /* TSC countdown expired */
206 #define ATW_INTR_LINKON __BIT(24) /* matched SSID, BSSID */
207 #define ATW_INTR_SQL __BIT(23) /* Marvel signal quality */
208 #define ATW_INTR_WEPTD __BIT(22) /* switched WEP table */
209 #define ATW_INTR_ATIME __BIT(21) /* ended ATIM window */
210 #define ATW_INTR_TBTT __BIT(20) /* (TBTT) Target Beacon TX Time
211 * passed
212 */
213 #define ATW_INTR_NISS __BIT(16) /* normal interrupt status
214 * summary: any of 31, 30, 27,
215 * 24, 14, 12, 6, 2, 0.
216 */
217 #define ATW_INTR_AISS __BIT(15) /* abnormal interrupt status
218 * summary: any of 29, 28, 26,
219 * 25, 23, 22, 13, 11, 8, 7, 5,
220 * 4, 3, 1.
221 */
222 #define ATW_INTR_TEIS __BIT(14) /* transmit early interrupt
223 * status: moved TX packet to
224 * FIFO
225 */
226 #define ATW_INTR_FBE __BIT(13) /* fatal bus error */
227 #define ATW_INTR_REIS __BIT(12) /* receive early interrupt
228 * status: RX packet filled
229 * its first descriptor
230 */
231 #define ATW_INTR_GPTT __BIT(11) /* general purpose timer expired */
232 #define ATW_INTR_RPS __BIT(8) /* stopped receive process */
233 #define ATW_INTR_RDU __BIT(7) /* receive descriptor
234 * unavailable
235 */
236 #define ATW_INTR_RCI __BIT(6) /* completed packet reception */
237 #define ATW_INTR_TUF __BIT(5) /* transmit underflow */
238 #define ATW_INTR_TRT __BIT(4) /* transmit retry count
239 * expired
240 */
241 #define ATW_INTR_TLT __BIT(3) /* transmit lifetime exceeded */
242 #define ATW_INTR_TDU __BIT(2) /* transmit descriptor
243 * unavailable
244 */
245 #define ATW_INTR_TPS __BIT(1) /* stopped transmit process */
246 #define ATW_INTR_TCI __BIT(0) /* completed transmit */
247 #define ATW_NAR_TXCF __BIT(31) /* stop process on TX failure */
248 #define ATW_NAR_HF __BIT(30) /* flush TX FIFO to host (?) */
249 #define ATW_NAR_UTR __BIT(29) /* select retry count source */
250 #define ATW_NAR_PCF __BIT(28) /* use one/both transmit
251 * descriptor base addresses
252 */
253 #define ATW_NAR_CFP __BIT(27) /* indicate more TX data to
254 * point coordinator
255 */
256 #define ATW_C_NAR_APSTA __BIT(26) /* 0: STA mode
257 * 1: AP mode
258 */
259 #define ATW_C_NAR_TDBBE __BIT(25) /* 0: disable TDBB
260 * 1: enable TDBB
261 */
262 #define ATW_C_NAR_TDBHE __BIT(24) /* 0: disable TDBH
263 * 1: enable TDBH
264 */
265 #define ATW_C_NAR_TDBHT __BIT(23) /* write 1 to make ASIC
266 * poll TDBH once; ASIC clears
267 */
268 #define ATW_NAR_SF __BIT(21) /* store and forward: ignore
269 * TX threshold
270 */
271 #define ATW_NAR_TR_MASK __BITS(14, 15) /* TX threshold */
272 #define ATW_NAR_TR_L64 __SHIFTIN(0x0, ATW_NAR_TR_MASK)
273 #define ATW_NAR_TR_L160 __SHIFTIN(0x2, ATW_NAR_TR_MASK)
274 #define ATW_NAR_TR_L192 __SHIFTIN(0x3, ATW_NAR_TR_MASK)
275 #define ATW_NAR_TR_H96 __SHIFTIN(0x0, ATW_NAR_TR_MASK)
276 #define ATW_NAR_TR_H288 __SHIFTIN(0x2, ATW_NAR_TR_MASK)
277 #define ATW_NAR_TR_H544 __SHIFTIN(0x3, ATW_NAR_TR_MASK)
278 #define ATW_NAR_ST __BIT(13) /* start/stop transmit */
279 #define ATW_NAR_OM_MASK __BITS(10, 11) /* operating mode */
280 #define ATW_NAR_OM_NORMAL 0x0
281 #define ATW_NAR_OM_LOOPBACK __SHIFTIN(0x1, ATW_NAR_OM_MASK)
282 #define ATW_NAR_MM __BIT(7) /* RX any multicast */
283 #define ATW_NAR_PR __BIT(6) /* promiscuous mode */
284 #define ATW_NAR_EA __BIT(5) /* match ad hoc packets (?) */
285 #define ATW_NAR_DISPCF __BIT(4) /* 1: PCF *not* supported
286 * 0: PCF supported
287 */
288 #define ATW_NAR_PB __BIT(3) /* pass bad packets */
289 #define ATW_NAR_STPDMA __BIT(2) /* stop DMA, abort packet */
290 #define ATW_NAR_SR __BIT(1) /* start/stop receive */
291 #define ATW_NAR_CTX __BIT(0) /* continuous TX mode */
292
293 /* IER bits are identical to STSR bits. Use ATW_INTR_*. */
294 #if 0
295 #define ATW_IER_NIE __BIT(16) /* normal interrupt enable */
296 #define ATW_IER_AIE __BIT(15) /* abnormal interrupt enable */
297 /* normal interrupts: combine with ATW_IER_NIE */
298 #define ATW_IER_PCFIE __BIT(31) /* STA entered CFP */
299 #define ATW_IER_BCNTCIE __BIT(30) /* STA TX'd beacon */
300 #define ATW_IER_ATIMTCIE __BIT(27) /* transmitted ATIM */
301 #define ATW_IER_LINKONIE __BIT(24) /* matched beacon */
302 #define ATW_IER_ATIMIE __BIT(21) /* ended ATIM window */
303 #define ATW_IER_TBTTIE __BIT(20) /* TBTT */
304 #define ATW_IER_TEIE __BIT(14) /* moved TX packet to FIFO */
305 #define ATW_IER_REIE __BIT(12) /* RX packet filled its first
306 * descriptor
307 */
308 #define ATW_IER_RCIE __BIT(6) /* completed RX */
309 #define ATW_IER_TDUIE __BIT(2) /* transmit descriptor
310 * unavailable
311 */
312 #define ATW_IER_TCIE __BIT(0) /* completed TX */
313 /* abnormal interrupts: combine with ATW_IER_AIE */
314 #define ATW_IER_GPIE __BIT(29) /* GPIO interrupt */
315 #define ATW_IER_LINKOFFIE __BIT(28) /* lost beacon */
316 #define ATW_IER_TSFTFIE __BIT(26) /* TSFT out of range */
317 #define ATW_IER_TSCIE __BIT(25) /* TSC countdown expired */
318 #define ATW_IER_SQLIE __BIT(23) /* signal quality */
319 #define ATW_IER_WEPIE __BIT(22) /* finished WEP table switch */
320 #define ATW_IER_FBEIE __BIT(13) /* fatal bus error */
321 #define ATW_IER_GPTIE __BIT(11) /* general purpose timer expired */
322 #define ATW_IER_RPSIE __BIT(8) /* stopped receive process */
323 #define ATW_IER_RUIE __BIT(7) /* receive descriptor unavailable */
324 #define ATW_IER_TUIE __BIT(5) /* transmit underflow */
325 #define ATW_IER_TRTIE __BIT(4) /* exceeded transmit retry count */
326 #define ATW_IER_TLTTIE __BIT(3) /* transmit lifetime exceeded */
327 #define ATW_IER_TPSIE __BIT(1) /* stopped transmit process */
328 #endif
329
330 #define ATW_LPC_LPCO __BIT(16) /* lost packet counter overflow */
331 #define ATW_LPC_LPC_MASK __BITS(0, 15) /* lost packet counter */
332
333 #define ATW_TEST1_CONTROL __BIT(31) /* "0: read from dxfer_control,
334 * 1: read from dxfer_state"
335 */
336 #define ATW_TEST1_DBGREAD_MASK __BITS(30,28) /* "control of read data,
337 * debug only"
338 */
339 #define ATW_TEST1_TXWP_MASK __BITS(27,25) /* select ATW_WTDP content? */
340 #define ATW_TEST1_TXWP_TDBD __SHIFTIN(0x0, ATW_TEST1_TXWP_MASK)
341 #define ATW_TEST1_TXWP_TDBH __SHIFTIN(0x1, ATW_TEST1_TXWP_MASK)
342 #define ATW_TEST1_TXWP_TDBB __SHIFTIN(0x2, ATW_TEST1_TXWP_MASK)
343 #define ATW_TEST1_TXWP_TDBP __SHIFTIN(0x3, ATW_TEST1_TXWP_MASK)
344 #define ATW_TEST1_RSVD0_MASK __BITS(24,6) /* reserved */
345 #define ATW_TEST1_TESTMODE_MASK __BITS(5,4)
346 /* normal operation */
347 #define ATW_TEST1_TESTMODE_NORMAL __SHIFTIN(0x0, ATW_TEST1_TESTMODE_MASK)
348 /* MAC-only mode */
349 #define ATW_TEST1_TESTMODE_MACONLY __SHIFTIN(0x1, ATW_TEST1_TESTMODE_MASK)
350 /* normal operation */
351 #define ATW_TEST1_TESTMODE_NORMAL2 __SHIFTIN(0x2, ATW_TEST1_TESTMODE_MASK)
352 /* monitor mode */
353 #define ATW_TEST1_TESTMODE_MONITOR __SHIFTIN(0x3, ATW_TEST1_TESTMODE_MASK)
354
355 #define ATW_TEST1_DUMP_MASK __BITS(3,0) /* select dump signal
356 * from dxfer (huh?)
357 */
358
359 #define ATW_SPR_SRS __BIT(11) /* activate SEEPROM access */
360 #define ATW_SPR_SDO __BIT(3) /* data out of SEEPROM */
361 #define ATW_SPR_SDI __BIT(2) /* data into SEEPROM */
362 #define ATW_SPR_SCLK __BIT(1) /* SEEPROM clock */
363 #define ATW_SPR_SCS __BIT(0) /* SEEPROM chip select */
364
365 #define ATW_TEST0_BE_MASK __BITS(31, 29) /* Bus error state */
366 #define ATW_TEST0_TS_MASK __BITS(28, 26) /* Transmit process state */
367
368 /* Stopped */
369 #define ATW_TEST0_TS_STOPPED __SHIFTIN(0, ATW_TEST0_TS_MASK)
370 /* Running - fetch transmit descriptor */
371 #define ATW_TEST0_TS_FETCH __SHIFTIN(1, ATW_TEST0_TS_MASK)
372 /* Running - wait for end of transmission */
373 #define ATW_TEST0_TS_WAIT __SHIFTIN(2, ATW_TEST0_TS_MASK)
374 /* Running - read buffer from memory and queue into FIFO */
375 #define ATW_TEST0_TS_READING __SHIFTIN(3, ATW_TEST0_TS_MASK)
376 #define ATW_TEST0_TS_RESERVED1 __SHIFTIN(4, ATW_TEST0_TS_MASK)
377 #define ATW_TEST0_TS_RESERVED2 __SHIFTIN(5, ATW_TEST0_TS_MASK)
378 /* Suspended */
379 #define ATW_TEST0_TS_SUSPENDED __SHIFTIN(6, ATW_TEST0_TS_MASK)
380 /* Running - close transmit descriptor */
381 #define ATW_TEST0_TS_CLOSE __SHIFTIN(7, ATW_TEST0_TS_MASK)
382
383 /* ADM8211C/CR registers */
384 /* Suspended */
385 #define ATW_C_TEST0_TS_SUSPENDED __SHIFTIN(4, ATW_TEST0_TS_MASK)
386 /* Descriptor write */
387 #define ATW_C_TEST0_TS_CLOSE __SHIFTIN(5, ATW_TEST0_TS_MASK)
388 /* Last descriptor write */
389 #define ATW_C_TEST0_TS_CLOSELAST __SHIFTIN(6, ATW_TEST0_TS_MASK)
390 /* FIFO full */
391 #define ATW_C_TEST0_TS_FIFOFULL __SHIFTIN(7, ATW_TEST0_TS_MASK)
392
393 #define ATW_TEST0_RS_MASK __BITS(25, 23) /* Receive process state */
394
395 /* Stopped */
396 #define ATW_TEST0_RS_STOPPED __SHIFTIN(0, ATW_TEST0_RS_MASK)
397 /* Running - fetch receive descriptor */
398 #define ATW_TEST0_RS_FETCH __SHIFTIN(1, ATW_TEST0_RS_MASK)
399 /* Running - check for end of receive */
400 #define ATW_TEST0_RS_CHECK __SHIFTIN(2, ATW_TEST0_RS_MASK)
401 /* Running - wait for packet */
402 #define ATW_TEST0_RS_WAIT __SHIFTIN(3, ATW_TEST0_RS_MASK)
403 /* Suspended */
404 #define ATW_TEST0_RS_SUSPENDED __SHIFTIN(4, ATW_TEST0_RS_MASK)
405 /* Running - close receive descriptor */
406 #define ATW_TEST0_RS_CLOSE __SHIFTIN(5, ATW_TEST0_RS_MASK)
407 /* Running - flush current frame from FIFO */
408 #define ATW_TEST0_RS_FLUSH __SHIFTIN(6, ATW_TEST0_RS_MASK)
409 /* Running - queue current frame from FIFO into buffer */
410 #define ATW_TEST0_RS_QUEUE __SHIFTIN(7, ATW_TEST0_RS_MASK)
411
412 #define ATW_TEST0_EPNE __BIT(18) /* SEEPROM not detected */
413 #define ATW_TEST0_EPSNM __BIT(17) /* SEEPROM bad signature */
414 #define ATW_TEST0_EPTYP_MASK __BIT(16) /* SEEPROM type
415 * 1: 93c66,
416 * 0: 93c46
417 */
418 #define ATW_TEST0_EPTYP_93c66 ATW_TEST0_EPTYP_MASK
419 #define ATW_TEST0_EPTYP_93c46 0
420 #define ATW_TEST0_EPRLD __BIT(15) /* recall SEEPROM (write 1) */
421
422 #define ATW_WCSR_CRCT __BIT(30) /* CRC-16 type */
423 #define ATW_WCSR_WP1E __BIT(29) /* match wake-up pattern 1 */
424 #define ATW_WCSR_WP2E __BIT(28) /* match wake-up pattern 2 */
425 #define ATW_WCSR_WP3E __BIT(27) /* match wake-up pattern 3 */
426 #define ATW_WCSR_WP4E __BIT(26) /* match wake-up pattern 4 */
427 #define ATW_WCSR_WP5E __BIT(25) /* match wake-up pattern 5 */
428 #define ATW_WCSR_BLN_MASK __BITS(21, 23) /* lose link after BLN lost
429 * beacons
430 */
431 #define ATW_WCSR_TSFTWE __BIT(20) /* wake up on TSFT out of
432 * range
433 */
434 #define ATW_WCSR_TIMWE __BIT(19) /* wake up on TIM */
435 #define ATW_WCSR_ATIMWE __BIT(18) /* wake up on ATIM */
436 #define ATW_WCSR_KEYWE __BIT(17) /* wake up on key update */
437 #define ATW_WCSR_WFRE __BIT(10) /* wake up on wake-up frame */
438 #define ATW_WCSR_MPRE __BIT(9) /* wake up on magic packet */
439 #define ATW_WCSR_LSOE __BIT(8) /* wake up on link loss */
440 /* wake-up reasons correspond to enable bits */
441 #define ATW_WCSR_KEYUP __BIT(6) /* */
442 #define ATW_WCSR_TSFTW __BIT(5) /* */
443 #define ATW_WCSR_TIMW __BIT(4) /* */
444 #define ATW_WCSR_ATIMW __BIT(3) /* */
445 #define ATW_WCSR_WFR __BIT(2) /* */
446 #define ATW_WCSR_MPR __BIT(1) /* */
447 #define ATW_WCSR_LSO __BIT(0) /* */
448
449 #define ATW_GPTMR_COM_MASK __BIT(16) /* continuous operation mode */
450 #define ATW_GPTMR_GTV_MASK __BITS(0, 15) /* set countdown in 204us ticks */
451
452 #define ATW_GPIO_EC1_MASK __BITS(25, 24) /* GPIO1 event configuration */
453 #define ATW_GPIO_LAT_MASK __BITS(21, 20) /* input latch */
454 #define ATW_GPIO_INTEN_MASK __BITS(19, 18) /* interrupt enable */
455 #define ATW_GPIO_EN_MASK __BITS(17, 12) /* output enable */
456 #define ATW_GPIO_O_MASK __BITS(11, 6) /* output value */
457 #define ATW_GPIO_I_MASK __BITS(5, 0) /* pin static input */
458
459 /* Intersil 3-wire interface */
460 #define ATW_BBPCTL_TWI __BIT(31)
461 #define ATW_BBPCTL_RF3KADDR_MASK __BITS(30, 24) /* Address for RF3000 */
462 #define ATW_BBPCTL_RF3KADDR_ADDR __SHIFTIN(0x20, ATW_BBPCTL_RF3KADDR_MASK)
463 /* data-out on negative edge */
464 #define ATW_BBPCTL_NEGEDGE_DO __BIT(23)
465 /* data-in on negative edge */
466 #define ATW_BBPCTL_NEGEDGE_DI __BIT(22)
467 #define ATW_BBPCTL_CCA_ACTLO __BIT(21) /* 1: CCA signal is low
468 * when channel is busy,
469 * CCA signal is high
470 * when channel is
471 * clear.
472 * 0: vice-versa
473 * 1 is suitable for
474 * the embedded
475 * RFMD RF3000.
476 */
477 #define ATW_BBPCTL_TYPE_MASK __BITS(20, 18) /* BBP type */
478 /* start write; reset on completion */
479 #define ATW_BBPCTL_WR __BIT(17)
480 #define ATW_BBPCTL_RD __BIT(16) /* start read; reset on
481 * completion
482 */
483 #define ATW_BBPCTL_ADDR_MASK __BITS(15, 8) /* BBP address */
484 #define ATW_BBPCTL_DATA_MASK __BITS(7, 0) /* BBP data */
485
486 #define ATW_SYNCTL_WR __BIT(31) /* start write; reset on
487 * completion
488 */
489 #define ATW_SYNCTL_RD __BIT(30) /* start read; reset on
490 * completion
491 */
492 #define ATW_SYNCTL_CS0 __BIT(29) /* chip select */
493 #define ATW_SYNCTL_CS1 __BIT(28)
494 #define ATW_SYNCTL_CAL __BIT(27) /* generate RF CAL pulse after
495 * Rx
496 */
497 #define ATW_SYNCTL_SELCAL __BIT(26) /* RF CAL source, 0: CAL bit,
498 * 1: MAC; needed by Intersil
499 * BBP
500 */
501 #define ATW_C_SYNCTL_MMICE __BIT(25) /* ADM8211C/CR define this
502 * bit. 0: latch data on
503 * negative edge, 1: positive
504 * edge.
505 */
506 #define ATW_SYNCTL_RFTYPE_MASK __BITS(24, 22) /* RF type */
507 #define ATW_SYNCTL_DATA_MASK __BITS(21, 0) /* synthesizer setting */
508
509 #define ATW_PLCPHD_SIGNAL_MASK __BITS(31, 24) /* signal field in PLCP header,
510 * only for beacon, ATIM, and
511 * RTS.
512 */
513 #define ATW_PLCPHD_SERVICE_MASK __BITS(23, 16) /* service field in PLCP
514 * header; with RFMD BBP,
515 * sets Tx power for beacon,
516 * RTS, ATIM.
517 */
518 #define ATW_PLCPHD_PMBL __BIT(15) /* 0: long preamble, 1: short */
519
520 #define ATW_MMIWADDR_LENLO_MASK __BITS(31,24) /* tx: written 4th */
521 #define ATW_MMIWADDR_LENHI_MASK __BITS(23,16) /* tx: written 3rd */
522 #define ATW_MMIWADDR_GAIN_MASK __BITS(15,8) /* tx: written 2nd */
523 #define ATW_MMIWADDR_RATE_MASK __BITS(7,0) /* tx: written 1st */
524
525 /* was magic 0x100E0C0A */
526 #define ATW_MMIWADDR_INTERSIL \
527 (__SHIFTIN(HFA3861A_CR6, ATW_MMIWADDR_GAIN_MASK) | \
528 __SHIFTIN(HFA3861A_CR5, ATW_MMIWADDR_RATE_MASK) | \
529 __SHIFTIN(HFA3861A_CR7, ATW_MMIWADDR_LENHI_MASK) | \
530 __SHIFTIN(HFA3861A_CR8, ATW_MMIWADDR_LENLO_MASK))
531
532 /* was magic 0x00009101
533 *
534 * ADMtek sets the AI bit on the ATW_MMIWADDR_GAIN_MASK address to
535 * put the RF3000 into auto-increment mode so that it can write Tx gain,
536 * Tx length (high) and Tx length (low) registers back-to-back.
537 */
538 #define ATW_MMIWADDR_RFMD \
539 (__SHIFTIN(RF3000_TWI_AI|RF3000_GAINCTL, ATW_MMIWADDR_GAIN_MASK) | \
540 __SHIFTIN(RF3000_CTL, ATW_MMIWADDR_RATE_MASK))
541
542 #define ATW_MMIRADDR1_RSVD_MASK __BITS(31, 24)
543 #define ATW_MMIRADDR1_PWRLVL_MASK __BITS(23, 16)
544 #define ATW_MMIRADDR1_RSSI_MASK __BITS(15, 8)
545 #define ATW_MMIRADDR1_RXSTAT_MASK __BITS(7, 0)
546
547 /* was magic 0x00007c7e */
548 #define ATW_MMIRADDR1_INTERSIL \
549 (__SHIFTIN(HFA3861A_CR61, ATW_MMIRADDR1_RSSI_MASK) | \
550 __SHIFTIN(HFA3861A_CR62, ATW_MMIRADDR1_RXSTAT_MASK))
551
552 /* was magic 0x00000301 */
553 #define ATW_MMIRADDR1_RFMD \
554 (__SHIFTIN(RF3000_RSSI, ATW_MMIRADDR1_RSSI_MASK) | \
555 __SHIFTIN(RF3000_RXSTAT, ATW_MMIRADDR1_RXSTAT_MASK))
556
557 /* was magic 0x00100000 */
558 #define ATW_MMIRADDR2_INTERSIL \
559 (__SHIFTIN(0x0, ATW_MMIRADDR2_ID_MASK) | \
560 __SHIFTIN(0x10, ATW_MMIRADDR2_RXPECNT_MASK))
561
562 /* was magic 0x7e100000 */
563 #define ATW_MMIRADDR2_RFMD \
564 (__SHIFTIN(0x7e, ATW_MMIRADDR2_ID_MASK) | \
565 __SHIFTIN(0x10, ATW_MMIRADDR2_RXPECNT_MASK))
566
567 #define ATW_MMIRADDR2_ID_MASK __BITS(31, 24) /* 1st element ID in WEP table
568 * for Probe Response (huh?)
569 */
570 /* RXPE is re-asserted after RXPECNT * 22MHz. */
571 #define ATW_MMIRADDR2_RXPECNT_MASK __BITS(23, 16)
572 #define ATW_MMIRADDR2_PROREXT __BIT(15) /* Probe Response
573 * 11Mb/s length
574 * extension.
575 */
576 #define ATW_MMIRADDR2_PRORLEN_MASK __BITS(14, 0) /* Probe Response
577 * microsecond length
578 */
579
580 /* auto-update BBP with ALCSET */
581 #define ATW_TXBR_ALCUPDATE_MASK __BIT(31)
582 #define ATW_TXBR_TBCNT_MASK __BITS(16, 20) /* transmit burst count */
583 #define ATW_TXBR_ALCSET_MASK __BITS(8, 15) /* TX power level set point */
584 #define ATW_TXBR_ALCREF_MASK __BITS(0, 7) /* TX power level reference point */
585
586 #define ATW_ALCSTAT_MCOV_MASK __BIT(27) /* MPDU count overflow */
587 #define ATW_ALCSTAT_ESOV_MASK __BIT(26) /* error sum overflow */
588 #define ATW_ALCSTAT_MCNT_MASK __BITS(16, 25) /* MPDU count, unsigned integer */
589 #define ATW_ALCSTAT_ERSUM_MASK __BITS(0, 15) /* power error sum,
590 * 2's complement signed integer
591 */
592
593 #define ATW_TOFS2_PWR1UP_MASK __BITS(31, 28) /* delay of Tx/Rx from PE1,
594 * Radio, PHYRST change after
595 * power-up, in 2ms units
596 */
597 #define ATW_TOFS2_PWR0PAPE_MASK __BITS(27, 24) /* delay of PAPE going low
598 * after internal data
599 * transmit end, in us
600 */
601 #define ATW_TOFS2_PWR1PAPE_MASK __BITS(23, 20) /* delay of PAPE going high
602 * after TXPE asserted, in us
603 */
604 #define ATW_TOFS2_PWR0TRSW_MASK __BITS(19, 16) /* delay of TRSW going low
605 * after internal data transmit
606 * end, in us
607 */
608 #define ATW_TOFS2_PWR1TRSW_MASK __BITS(15, 12) /* delay of TRSW going high
609 * after TXPE asserted, in us
610 */
611 #define ATW_TOFS2_PWR0PE2_MASK __BITS(11, 8) /* delay of PE2 going low
612 * after internal data transmit
613 * end, in us
614 */
615 #define ATW_TOFS2_PWR1PE2_MASK __BITS(7, 4) /* delay of PE2 going high
616 * after TXPE asserted, in us
617 */
618 #define ATW_TOFS2_PWR0TXPE_MASK __BITS(3, 0) /* delay of TXPE going low
619 * after internal data transmit
620 * end, in us
621 */
622
623 #define ATW_CMDR_PM __BIT(19) /* enables power mgmt
624 * capabilities.
625 */
626 #define ATW_CMDR_APM __BIT(18) /* APM mode, effective when
627 * PM = 1.
628 */
629 #define ATW_CMDR_RTE __BIT(4) /* enable Rx FIFO threshold */
630 #define ATW_CMDR_DRT_MASK __BITS(3, 2) /* drain Rx FIFO threshold */
631 /* 32 bytes */
632 #define ATW_CMDR_DRT_8DW __SHIFTIN(0x0, ATW_CMDR_DRT_MASK)
633 /* 64 bytes */
634 #define ATW_CMDR_DRT_16DW __SHIFTIN(0x1, ATW_CMDR_DRT_MASK)
635 /* Store & Forward */
636 #define ATW_CMDR_DRT_SF __SHIFTIN(0x2, ATW_CMDR_DRT_MASK)
637 /* Reserved */
638 #define ATW_CMDR_DRT_RSVD __SHIFTIN(0x3, ATW_CMDR_DRT_MASK)
639 #define ATW_CMDR_SINT_MASK __BIT(1) /* software interrupt---huh? */
640
641 /* TBD PCIC */
642
643 /* TBD PMCSR */
644
645
646 #define ATW_PAR0_PAB0_MASK __BITS(0, 7) /* MAC address byte 0 */
647 #define ATW_PAR0_PAB1_MASK __BITS(8, 15) /* MAC address byte 1 */
648 #define ATW_PAR0_PAB2_MASK __BITS(16, 23) /* MAC address byte 2 */
649 #define ATW_PAR0_PAB3_MASK __BITS(24, 31) /* MAC address byte 3 */
650
651 #define ATW_C_PAR1_CTD __BITS(16,31) /* Continuous Tx pattern */
652 #define ATW_PAR1_PAB5_MASK __BITS(8, 15) /* MAC address byte 5 */
653 #define ATW_PAR1_PAB4_MASK __BITS(0, 7) /* MAC address byte 4 */
654
655 #define ATW_MAR0_MAB3_MASK __BITS(31, 24) /* multicast table bits 31:24 */
656 #define ATW_MAR0_MAB2_MASK __BITS(23, 16) /* multicast table bits 23:16 */
657 #define ATW_MAR0_MAB1_MASK __BITS(15, 8) /* multicast table bits 15:8 */
658 #define ATW_MAR0_MAB0_MASK __BITS(7, 0) /* multicast table bits 7:0 */
659
660 #define ATW_MAR1_MAB7_MASK __BITS(31, 24) /* multicast table bits 63:56 */
661 #define ATW_MAR1_MAB6_MASK __BITS(23, 16) /* multicast table bits 55:48 */
662 #define ATW_MAR1_MAB5_MASK __BITS(15, 8) /* multicast table bits 47:40 */
663 #define ATW_MAR1_MAB4_MASK __BITS(7, 0) /* multicast table bits 39:32 */
664
665 /* ATIM destination address */
666 #define ATW_ATIMDA0_ATIMB3_MASK __BITS(31,24)
667 #define ATW_ATIMDA0_ATIMB2_MASK __BITS(23,16)
668 #define ATW_ATIMDA0_ATIMB1_MASK __BITS(15,8)
669 #define ATW_ATIMDA0_ATIMB0_MASK __BITS(7,0)
670
671 /* ATIM destination address, BSSID */
672 #define ATW_ABDA1_BSSIDB5_MASK __BITS(31,24)
673 #define ATW_ABDA1_BSSIDB4_MASK __BITS(23,16)
674 #define ATW_ABDA1_ATIMB5_MASK __BITS(15,8)
675 #define ATW_ABDA1_ATIMB4_MASK __BITS(7,0)
676
677 /* BSSID */
678 #define ATW_BSSID0_BSSIDB3_MASK __BITS(31,24)
679 #define ATW_BSSID0_BSSIDB2_MASK __BITS(23,16)
680 #define ATW_BSSID0_BSSIDB1_MASK __BITS(15,8)
681 #define ATW_BSSID0_BSSIDB0_MASK __BITS(7,0)
682
683 #define ATW_TXLMT_MTMLT_MASK __BITS(31,16) /* max TX MSDU lifetime in TU */
684 #define ATW_TXLMT_SRTYLIM_MASK __BITS(7,0) /* short retry limit */
685
686 #define ATW_MIBCNT_FFCNT_MASK __BITS(31,24) /* FCS failure count */
687 #define ATW_MIBCNT_AFCNT_MASK __BITS(23,16) /* ACK failure count */
688 #define ATW_MIBCNT_RSCNT_MASK __BITS(15,8) /* RTS success count */
689 #define ATW_MIBCNT_RFCNT_MASK __BITS(7,0) /* RTS failure count */
690
691 #define ATW_BCNT_PLCPH_MASK __BITS(23,16) /* 11M PLCP length (us) */
692 #define ATW_BCNT_PLCPL_MASK __BITS(15,8) /* 5.5M PLCP length (us) */
693 #define ATW_BCNT_BCNT_MASK __BITS(7,0) /* byte count of beacon frame */
694
695 /* For ADM8211C/CR */
696 /* ATW_C_TSC_TIMTABSEL = 1 */
697 #define ATW_C_BCNT_EXTEN1 __BIT(31) /* 11M beacon len. extension */
698 #define ATW_C_BCNT_BEANLEN1 __BITS(30,16) /* beacon length in us */
699 /* ATW_C_TSC_TIMTABSEL = 0 */
700 #define ATW_C_BCNT_EXTEN0 __BIT(15) /* 11M beacon len. extension */
701 #define ATW_C_BCNT_BEANLEN0 __BIT(14,0) /* beacon length in us */
702
703 #define ATW_C_TSC_TIMOFS __BITS(31,24) /* I think this is the
704 * SRAM offset for the TIM
705 */
706 #define ATW_C_TSC_TIMLEN __BITS(21,12) /* length of TIM */
707 #define ATW_C_TSC_TIMTABSEL __BIT(4) /* select TIM table 0 or 1 */
708 #define ATW_TSC_TSC_MASK __BITS(3,0) /* TSFT countdown value, 0
709 * disables
710 */
711
712 #define ATW_SYNRF_SELSYN __BIT(31) /* 0: MAC controls SYN IF pins,
713 * 1: ATW_SYNRF
714 * controls SYN IF
715 * pins.
716 */
717 #define ATW_SYNRF_SELRF __BIT(30) /* 0: MAC controls RF IF pins,
718 * 1: ATW_SYNRF
719 * controls RF IF pins.
720 */
721 #define ATW_SYNRF_LERF __BIT(29) /* if SELSYN = 1, direct control
722 * of LERF# pin
723 */
724 #define ATW_SYNRF_LEIF __BIT(28) /* if SELSYN = 1, direct control
725 * of LEIF# pin
726 */
727 #define ATW_SYNRF_SYNCLK __BIT(27) /* if SELSYN = 1, direct control
728 * of SYNCLK pin
729 */
730 #define ATW_SYNRF_SYNDATA __BIT(26) /* if SELSYN = 1, direct control
731 * of SYNDATA pin
732 */
733 #define ATW_SYNRF_PE1 __BIT(25) /* if SELRF = 1, direct control
734 * of PE1 pin
735 */
736 #define ATW_SYNRF_PE2 __BIT(24) /* if SELRF = 1, direct control
737 * of PE2 pin
738 */
739 #define ATW_SYNRF_PAPE __BIT(23) /* if SELRF = 1, direct control
740 * of PAPE pin
741 */
742 #define ATW_C_SYNRF_TRSW __BIT(22) /* if SELRF = 1, direct control
743 * of TRSW pin
744 */
745 #define ATW_C_SYNRF_TRSWN __BIT(21) /* if SELRF = 1, direct control
746 * of TRSWn pin
747 */
748 #define ATW_SYNRF_INTERSIL_EN __BIT(20) /* if SELRF = 1, enables
749 * some signal used by the
750 * Intersil RF front-end?
751 * Undocumented.
752 */
753 #define ATW_SYNRF_PHYRST __BIT(18) /* if SELRF = 1, direct control
754 * of PHYRST# pin
755 */
756 /* 1: force TXPE = RXPE = 1 if ATW_CMDR[27] = 0. */
757 #define ATW_C_SYNRF_RF2958PD ATW_SYNRF_PHYRST
758
759 #define ATW_BPLI_BP_MASK __BITS(31,16) /* beacon interval in TU */
760 #define ATW_BPLI_LI_MASK __BITS(15,0) /* STA listen interval in
761 * beacon intervals
762 */
763
764 #define ATW_C_CAP0_TIMLEN1 __BITS(31,24) /* TIM table 1 len in bytes
765 * including TIM ID (XXX huh?)
766 */
767 #define ATW_C_CAP0_TIMLEN0 __BITS(23,16) /* TIM table 0 len in bytes,
768 * including TIM ID (XXX huh?)
769 */
770 #define ATW_C_CAP0_CWMAX __BITS(11,8) /* 1 <= CWMAX <= 5 fixes CW?
771 * 5 < CWMAX <= 9 sets max?
772 * 10?
773 * default 0
774 */
775 #define ATW_CAP0_RCVDTIM __BIT(4) /* receive every DTIM */
776 #define ATW_CAP0_CHN_MASK __BITS(3,0) /* current DSSS channel */
777
778 #define ATW_CAP1_CAPI_MASK __BITS(31,16) /* capability information */
779 #define ATW_CAP1_ATIMW_MASK __BITS(15,0) /* ATIM window in TU */
780
781 #define ATW_RMD_ATIMST __BIT(31) /* ATIM frame TX status */
782 #define ATW_RMD_CFP __BIT(30) /* CFP indicator */
783 #define ATW_RMD_PCNT __BITS(27,16) /* idle time between
784 * awake/ps mode, in seconds
785 */
786 #define ATW_RMD_RMRD_MASK __BITS(15,0) /* max RX reception duration
787 * in us
788 */
789
790 #define ATW_CFPP_CFPP __BITS(31,24) /* CFP unit DTIM */
791 #define ATW_CFPP_CFPMD __BITS(23,8) /* CFP max duration in TU */
792 #define ATW_CFPP_DTIMP __BITS(7,0) /* DTIM period in beacon
793 * intervals
794 */
795 #define ATW_TOFS0_USCNT_MASK __BITS(29,24) /* number of system clocks
796 * in 1 microsecond.
797 * Depends PCI bus speed?
798 */
799 #define ATW_C_TOFS0_TUCNT_MASK __BITS(14,10) /* PIFS (microseconds) */
800 #define ATW_TOFS0_TUCNT_MASK __BITS(9,0) /* TU counter in microseconds */
801
802 /* TBD TOFS1 */
803 #define ATW_TOFS1_TSFTOFSR_MASK __BITS(31,24) /* RX TSFT offset in
804 * microseconds: RF+BBP
805 * latency
806 */
807 #define ATW_TOFS1_TBTTPRE_MASK __BITS(23,8) /* prediction time, (next
808 * Nth TBTT - TBTTOFS) in
809 * microseconds (huh?). To
810 * match TSFT[25:10] (huh?).
811 */
812 #define ATW_TBTTPRE_MASK __BITS(25, 10)
813 #define ATW_TOFS1_TBTTOFS_MASK __BITS(7,0) /* wake-up time offset before
814 * TBTT in TU
815 */
816 #define ATW_IFST_SLOT_MASK __BITS(27,23) /* SLOT time in us */
817 #define ATW_IFST_SIFS_MASK __BITS(22,15) /* SIFS time in us */
818 #define ATW_IFST_DIFS_MASK __BITS(14,9) /* DIFS time in us */
819 #define ATW_IFST_EIFS_MASK __BITS(8,0) /* EIFS time in us */
820
821 #define ATW_RSPT_MART_MASK __BITS(31,16) /* max response time in us */
822 #define ATW_RSPT_MIRT_MASK __BITS(15,8) /* min response time in us */
823 #define ATW_RSPT_TSFTOFST_MASK __BITS(7,0) /* TX TSFT offset in us */
824
825 #define ATW_WEPCTL_WEPENABLE __BIT(31) /* enable WEP engine */
826 #define ATW_WEPCTL_AUTOSWITCH __BIT(30) /* auto-switch enable (huh?) */
827 #define ATW_WEPCTL_CURTBL __BIT(29) /* current table in use */
828 #define ATW_WEPCTL_WR __BIT(28) /* */
829 #define ATW_WEPCTL_RD __BIT(27) /* */
830 #define ATW_WEPCTL_WEPRXBYP __BIT(25) /* bypass WEP on RX */
831 #define ATW_WEPCTL_SHKEY __BIT(24) /* 1: pass to host if tbl
832 * lookup fails, 0: use
833 * shared-key
834 */
835 #define ATW_WEPCTL_UNKNOWN0 __BIT(23) /* has something to do with
836 * revision 0x20. Possibly
837 * selects a different WEP
838 * table.
839 */
840 #define ATW_WEPCTL_TBLADD_MASK __BITS(8,0) /* add to table */
841
842 /* set these bits in the second byte of a SRAM shared key record to affect
843 * the use and interpretation of the key in the record.
844 */
845 #define ATW_WEP_ENABLED __BIT(7)
846 #define ATW_WEP_104BIT __BIT(6)
847
848 #define ATW_WESK_DATA_MASK __BITS(15,0) /* data */
849 #define ATW_WEPCNT_WIEC_MASK __BITS(15,0) /* WEP ICV error count */
850
851 #define ATW_MACTEST_FORCE_IV __BIT(23)
852 #define ATW_MACTEST_FORCE_KEYID __BIT(22)
853 #define ATW_MACTEST_KEYID_MASK __BITS(21,20)
854 #define ATW_MACTEST_MMI_USETXCLK __BIT(11)
855
856 /* Function Event/Status registers */
857
858 /* interrupt: set regardless of mask */
859 #define ATW_FER_INTR __BIT(15)
860 /* general wake-up: set regardless of mask */
861 #define ATW_FER_GWAKE __BIT(4)
862
863 #define ATW_FEMR_INTR_EN __BIT(15) /* enable INTA# */
864 #define ATW_FEMR_WAKEUP_EN __BIT(14) /* enable wake-up */
865 #define ATW_FEMR_GWAKE_EN __BIT(4) /* enable general wake-up */
866
867 #define ATW_FPSR_INTR_STATUS __BIT(15) /* interrupt status */
868 #define ATW_FPSR_WAKEUP_STATUS __BIT(4) /* CSTSCHG state */
869 /* activate INTA (if not masked) */
870 #define ATW_FFER_INTA_FORCE __BIT(15)
871 /* activate CSTSCHG (if not masked) */
872 #define ATW_FFER_GWAKE_FORCE __BIT(4)
873
874 /* Serial EEPROM offsets */
875 #define ATW_SR_CLASS_CODE (0x00/2)
876 #define ATW_SR_FORMAT_VERSION (0x02/2)
877 #define ATW_SR_MAJOR_MASK __BITS(7, 0)
878 #define ATW_SR_MINOR_MASK __BITS(15,8)
879 #define ATW_SR_MAC00 (0x08/2) /* CSR21 */
880 #define ATW_SR_MAC01 (0x0A/2) /* CSR21/22 */
881 #define ATW_SR_MAC10 (0x0C/2) /* CSR22 */
882 #define ATW_SR_CSR20 (0x16/2)
883 #define ATW_SR_ANT_MASK __BITS(12, 10)
884 #define ATW_SR_PWRSCALE_MASK __BITS(9, 8)
885 #define ATW_SR_CLKSAVE_MASK __BITS(7, 6)
886 #define ATW_SR_RFTYPE_MASK __BITS(5, 3)
887 #define ATW_SR_BBPTYPE_MASK __BITS(2, 0)
888 #define ATW_SR_CR28_CR03 (0x18/2)
889 #define ATW_SR_CR28_MASK __BITS(15,8)
890 #define ATW_SR_CR03_MASK __BITS(7, 0)
891 #define ATW_SR_CTRY_CR29 (0x1A/2)
892 #define ATW_SR_CTRY_MASK __BITS(15,8) /* country code */
893 #define COUNTRY_FCC 0
894 #define COUNTRY_IC 1
895 #define COUNTRY_ETSI 2
896 #define COUNTRY_SPAIN 3
897 #define COUNTRY_FRANCE 4
898 #define COUNTRY_MMK 5
899 #define COUNTRY_MMK2 6
900 #define ATW_SR_CR29_MASK __BITS(7, 0)
901 #define ATW_SR_PCI_DEVICE (0x20/2) /* CR0 */
902 #define ATW_SR_PCI_VENDOR (0x22/2) /* CR0 */
903 #define ATW_SR_SUB_DEVICE (0x24/2) /* CR11 */
904 #define ATW_SR_SUB_VENDOR (0x26/2) /* CR11 */
905 #define ATW_SR_CR15 (0x28/2)
906 #define ATW_SR_LOCISPTR (0x2A/2) /* CR10 */
907 #define ATW_SR_HICISPTR (0x2C/2) /* CR10 */
908 #define ATW_SR_CSR18 (0x2E/2)
909 #define ATW_SR_D0_D1_PWR (0x40/2) /* CR49 */
910 #define ATW_SR_D2_D3_PWR (0x42/2) /* CR49 */
911 #define ATW_SR_CIS_WORDS (0x52/2)
912 /* CR17 of RFMD RF3000 BBP: returns TWO channels */
913 #define ATW_SR_TXPOWER(chnl) (0x54/2 + ((chnl) - 1)/2)
914 /* CR20 of RFMD RF3000 BBP: returns TWO channels */
915 #define ATW_SR_LPF_CUTOFF(chnl) (0x62/2 + ((chnl) - 1)/2)
916 /* CR21 of RFMD RF3000 BBP: returns TWO channels */
917 #define ATW_SR_LNA_GS_THRESH(chnl) (0x70/2 + ((chnl) - 1)/2)
918 #define ATW_SR_CHECKSUM (0x7e/2) /* for data 0x00-0x7d */
919 #define ATW_SR_CIS (0x80/2) /* Cardbus CIS */
920
921 /* Tx descriptor */
922 struct atw_txdesc {
923 volatile uint32_t at_ctl;
924 #define at_stat at_ctl
925 volatile uint32_t at_flags;
926 volatile uint32_t at_buf1;
927 volatile uint32_t at_buf2;
928 } __packed __aligned(4);
929
930 #define ATW_TXCTL_OWN __BIT(31) /* 1: ready to transmit */
931 #define ATW_TXCTL_DONE __BIT(30) /* 0: not processed */
932 #define ATW_TXCTL_TXDR_MASK __BITS(27,20) /* TX data rate (?) */
933 #define ATW_TXCTL_TL_MASK __BITS(19,0) /* retry limit, 0 - 255 */
934
935 #define ATW_TXSTAT_OWN ATW_TXCTL_OWN /* 0: not for transmission */
936 #define ATW_TXSTAT_DONE ATW_TXCTL_DONE /* 1: been processed */
937 #define ATW_TXSTAT_ES __BIT(29) /* 0: TX successful */
938 #define ATW_TXSTAT_TLT __BIT(28) /* TX lifetime expired */
939 #define ATW_TXSTAT_TRT __BIT(27) /* TX retry limit expired */
940 #define ATW_TXSTAT_TUF __BIT(26) /* TX under-run error */
941 #define ATW_TXSTAT_TRO __BIT(25) /* TX over-run error */
942 #define ATW_TXSTAT_SOFBR __BIT(24) /* packet size != buffer size
943 * (?)
944 */
945 #define ATW_TXSTAT_ARC_MASK __BITS(11,0) /* accumulated retry count */
946
947 #define ATW_TXSTAT_ERRMASK (ATW_TXSTAT_TUF | ATW_TXSTAT_TLT | \
948 ATW_TXSTAT_TRT | ATW_TXSTAT_TRO | \
949 ATW_TXSTAT_SOFBR)
950 #define ATW_TXSTAT_FMT "\2\31ATW_TXSTAT_SOFBR\32ATW_TXSTAT_TRO" \
951 "\33ATW_TXSTAT_TUF\34ATW_TXSTAT_TRT\35ATW_TXSTAT_TLT"
952
953 #define ATW_TXFLAG_IC __BIT(31) /* interrupt on completion */
954 #define ATW_TXFLAG_LS __BIT(30) /* packet's last descriptor */
955 #define ATW_TXFLAG_FS __BIT(29) /* packet's first descriptor */
956 #define ATW_TXFLAG_TER __BIT(25) /* end of ring */
957 #define ATW_TXFLAG_TCH __BIT(24) /* at_buf2 is 2nd chain */
958 #define ATW_TXFLAG_TBS2_MASK __BITS(23,12) /* at_buf2 byte count */
959 #define ATW_TXFLAG_TBS1_MASK __BITS(11,0) /* at_buf1 byte count */
960
961 /* Rx descriptor */
962 struct atw_rxdesc {
963 volatile uint32_t ar_stat;
964 volatile uint32_t ar_ctlrssi;
965 volatile uint32_t ar_buf1;
966 volatile uint32_t ar_buf2;
967 } __packed __aligned(4);
968
969 #define ATW_RXCTL_RER __BIT(25) /* end of ring */
970 #define ATW_RXCTL_RCH __BIT(24) /* ar_buf2 is 2nd chain */
971 #define ATW_RXCTL_RBS2_MASK __BITS(23,12) /* ar_buf2 byte count */
972 #define ATW_RXCTL_RBS1_MASK __BITS(11,0) /* ar_buf1 byte count */
973
974 #define ATW_RXSTAT_OWN __BIT(31) /* 1: NIC may fill descriptor */
975 #define ATW_RXSTAT_ES __BIT(30) /* error summary, 0 on
976 * success
977 */
978 #define ATW_RXSTAT_SQL __BIT(29) /* has signal quality (?) */
979 #define ATW_RXSTAT_DE __BIT(28) /* descriptor error---packet is
980 * truncated. last descriptor
981 * only
982 */
983 #define ATW_RXSTAT_FS __BIT(27) /* packet's first descriptor */
984 #define ATW_RXSTAT_LS __BIT(26) /* packet's last descriptor */
985 #define ATW_RXSTAT_PCF __BIT(25) /* received during CFP */
986 #define ATW_RXSTAT_SFDE __BIT(24) /* PLCP SFD error */
987 #define ATW_RXSTAT_SIGE __BIT(23) /* PLCP signal error */
988 #define ATW_RXSTAT_CRC16E __BIT(22) /* PLCP CRC16 error */
989 #define ATW_RXSTAT_RXTOE __BIT(21) /* RX time-out, last descriptor
990 * only.
991 */
992 #define ATW_RXSTAT_CRC32E __BIT(20) /* CRC32 error */
993 #define ATW_RXSTAT_ICVE __BIT(19) /* WEP ICV error */
994 #define ATW_RXSTAT_DA1 __BIT(17) /* DA bit 1, admin'd address */
995 #define ATW_RXSTAT_DA0 __BIT(16) /* DA bit 0, group address */
996 #define ATW_RXSTAT_RXDR_MASK __BITS(15,12) /* RX data rate */
997 #define ATW_RXSTAT_FL_MASK __BITS(11,0) /* RX frame length, last
998 * descriptor only
999 */
1000
1001 /* Static RAM (contains WEP keys, beacon content). Addresses and size
1002 * are in 16-bit words.
1003 */
1004 #define ATW_SRAM_ADDR_INDIVL_KEY 0x0
1005 #define ATW_SRAM_ADDR_SHARED_KEY (0x160 * 2)
1006 #define ATW_SRAM_ADDR_SSID (0x180 * 2)
1007 #define ATW_SRAM_ADDR_SUPRATES (0x191 * 2)
1008 #define ATW_SRAM_MAXSIZE (0x200 * 2)
1009 #define ATW_SRAM_A_SIZE ATW_SRAM_MAXSIZE
1010 #define ATW_SRAM_B_SIZE (0x1c0 * 2)
1011
Cache object: 5d447bda4c453cb3ca42fb2f14a94013
|