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