[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

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