[BACK]Return to atwreg.h CVS log [TXT][DIR] Up to [local] / sys / dev / ic

Annotation of sys/dev/ic/atwreg.h, Revision 1.1

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

CVSweb