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

Annotation of sys/dev/ic/ar5210reg.h, Revision 1.1.1.1

1.1       nbrk        1: /*     $OpenBSD: ar5210reg.h,v 1.13 2007/03/12 01:04:52 reyk Exp $     */
                      2:
                      3: /*
                      4:  * Copyright (c) 2004, 2005, 2006, 2007 Reyk Floeter <reyk@openbsd.org>
                      5:  *
                      6:  * Permission to use, copy, modify, and distribute this software for any
                      7:  * purpose with or without fee is hereby granted, provided that the above
                      8:  * copyright notice and this permission notice appear in all copies.
                      9:  *
                     10:  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
                     11:  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
                     12:  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
                     13:  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
                     14:  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
                     15:  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
                     16:  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
                     17:  */
                     18:
                     19: /*
                     20:  * Known registers of the Atheros AR5000 Wireless LAN chipset
                     21:  * (AR5210 + AR5110).
                     22:  */
                     23:
                     24: #ifndef _AR5K_AR5210_REG_H
                     25: #define _AR5K_AR5210_REG_H
                     26:
                     27: /*
                     28:  * First tansmit queue descriptor pointer register ("data queue")
                     29:  */
                     30: #define AR5K_AR5210_TXDP0      0x0000
                     31:
                     32: /*
                     33:  * Second transmit queue descriptor pointer register ("beacon queue")
                     34:  */
                     35: #define AR5K_AR5210_TXDP1      0x0004
                     36:
                     37: /*
                     38:  * Command register
                     39:  */
                     40: #define AR5K_AR5210_CR         0x0008
                     41: #define AR5K_AR5210_CR_TXE0    0x00000001
                     42: #define AR5K_AR5210_CR_TXE1    0x00000002
                     43: #define AR5K_AR5210_CR_RXE     0x00000004
                     44: #define AR5K_AR5210_CR_TXD0    0x00000008
                     45: #define AR5K_AR5210_CR_TXD1    0x00000010
                     46: #define AR5K_AR5210_CR_RXD     0x00000020
                     47: #define AR5K_AR5210_CR_SWI     0x00000040
                     48:
                     49: /*
                     50:  * Receive queue descriptor pointer register
                     51:  */
                     52: #define AR5K_AR5210_RXDP       0x000c
                     53:
                     54: /*
                     55:  * Configuration and status register
                     56:  */
                     57: #define AR5K_AR5210_CFG                0x0014
                     58: #define AR5K_AR5210_CFG_SWTD   0x00000001
                     59: #define AR5K_AR5210_CFG_SWTB   0x00000002
                     60: #define AR5K_AR5210_CFG_SWRD   0x00000004
                     61: #define AR5K_AR5210_CFG_SWRB   0x00000008
                     62: #define AR5K_AR5210_CFG_SWRG   0x00000010
                     63: #define AR5K_AR5210_CFG_EEBS   0x00000200
                     64: #define AR5K_AR5210_CFG_TXCNT  0x00007800
                     65: #define AR5K_AR5210_CFG_TXCNT_S        11
                     66: #define AR5K_AR5210_CFG_TXFSTAT 0x00008000
                     67: #define AR5K_AR5210_CFG_TXFSTRT 0x00010000
                     68:
                     69: /*
                     70:  * Interrupt service register
                     71:  */
                     72: #define AR5K_AR5210_ISR                0x001c
                     73: #define AR5K_AR5210_ISR_RXOK   0x00000001
                     74: #define AR5K_AR5210_ISR_RXDESC 0x00000002
                     75: #define AR5K_AR5210_ISR_RXERR  0x00000004
                     76: #define AR5K_AR5210_ISR_RXNOFRM        0x00000008
                     77: #define AR5K_AR5210_ISR_RXEOL  0x00000010
                     78: #define AR5K_AR5210_ISR_RXORN  0x00000020
                     79: #define AR5K_AR5210_ISR_TXOK   0x00000040
                     80: #define AR5K_AR5210_ISR_TXDESC 0x00000080
                     81: #define AR5K_AR5210_ISR_TXERR  0x00000100
                     82: #define AR5K_AR5210_ISR_TXNOFRM 0x00000200
                     83: #define AR5K_AR5210_ISR_TXEOL  0x00000400
                     84: #define AR5K_AR5210_ISR_TXURN  0x00000800
                     85: #define AR5K_AR5210_ISR_MIB    0x00001000
                     86: #define AR5K_AR5210_ISR_SWI    0x00002000
                     87: #define AR5K_AR5210_ISR_RXPHY  0x00004000
                     88: #define AR5K_AR5210_ISR_RXKCM  0x00008000
                     89: #define AR5K_AR5210_ISR_SWBA   0x00010000
                     90: #define AR5K_AR5210_ISR_BRSSI  0x00020000
                     91: #define AR5K_AR5210_ISR_BMISS  0x00040000
                     92: #define AR5K_AR5210_ISR_MCABT  0x00100000
                     93: #define AR5K_AR5210_ISR_SSERR  0x00200000
                     94: #define AR5K_AR5210_ISR_DPERR  0x00400000
                     95: #define AR5K_AR5210_ISR_GPIO   0x01000000
                     96: #define        AR5K_AR5210_ISR_FATAL   (                                       \
                     97:        AR5K_AR5210_ISR_MCABT | AR5K_AR5210_ISR_SSERR |                 \
                     98:        AR5K_AR5210_ISR_DPERR | AR5K_AR5210_ISR_RXORN                   \
                     99: )
                    100:
                    101: /*
                    102:  * Interrupt mask register
                    103:  */
                    104: #define AR5K_AR5210_IMR                0x0020
                    105: #define AR5K_AR5210_IMR_RXOK   0x00000001
                    106: #define AR5K_AR5210_IMR_RXDESC 0x00000002
                    107: #define AR5K_AR5210_IMR_RXERR  0x00000004
                    108: #define AR5K_AR5210_IMR_RXNOFRM        0x00000008
                    109: #define AR5K_AR5210_IMR_RXEOL  0x00000010
                    110: #define AR5K_AR5210_IMR_RXORN  0x00000020
                    111: #define AR5K_AR5210_IMR_TXOK   0x00000040
                    112: #define AR5K_AR5210_IMR_TXDESC 0x00000080
                    113: #define AR5K_AR5210_IMR_TXERR  0x00000100
                    114: #define AR5K_AR5210_IMR_TXNOFRM 0x00000200
                    115: #define AR5K_AR5210_IMR_TXEOL  0x00000400
                    116: #define AR5K_AR5210_IMR_TXURN  0x00000800
                    117: #define AR5K_AR5210_IMR_MIB    0x00001000
                    118: #define AR5K_AR5210_IMR_SWI    0x00002000
                    119: #define AR5K_AR5210_IMR_RXPHY  0x00004000
                    120: #define AR5K_AR5210_IMR_RXKCM  0x00008000
                    121: #define AR5K_AR5210_IMR_SWBA   0x00010000
                    122: #define AR5K_AR5210_IMR_BRSSI  0x00020000
                    123: #define AR5K_AR5210_IMR_BMISS  0x00040000
                    124: #define AR5K_AR5210_IMR_MCABT  0x00100000
                    125: #define AR5K_AR5210_IMR_SSERR  0x00200000
                    126: #define AR5K_AR5210_IMR_DPERR  0x00400000
                    127: #define AR5K_AR5210_IMR_GPIO   0x01000000
                    128:
                    129: /*
                    130:  * Interrupt enable register
                    131:  */
                    132: #define AR5K_AR5210_IER                0x0024
                    133: #define AR5K_AR5210_IER_DISABLE        0x00000000
                    134: #define AR5K_AR5210_IER_ENABLE 0x00000001
                    135:
                    136: /*
                    137:  * Beacon control register
                    138:  */
                    139: #define AR5K_AR5210_BCR                0x0028
                    140: #define AR5K_AR5210_BCR_AP     0x00000000
                    141: #define AR5K_AR5210_BCR_ADHOC  0x00000001
                    142: #define AR5K_AR5210_BCR_BDMAE  0x00000002
                    143: #define AR5K_AR5210_BCR_TQ1FV  0x00000004
                    144: #define AR5K_AR5210_BCR_TQ1V   0x00000008
                    145: #define AR5K_AR5210_BCR_BCGET  0x00000010
                    146:
                    147: /*
                    148:  * Beacon status register
                    149:  */
                    150: #define AR5K_AR5210_BSR                        0x002c
                    151: #define AR5K_AR5210_BSR_BDLYSW         0x00000001
                    152: #define AR5K_AR5210_BSR_BDLYDMA                0x00000002
                    153: #define AR5K_AR5210_BSR_TXQ1F          0x00000004
                    154: #define AR5K_AR5210_BSR_ATIMDLY                0x00000008
                    155: #define AR5K_AR5210_BSR_SNPBCMD                0x00000100
                    156: #define AR5K_AR5210_BSR_SNPBDMAE       0x00000200
                    157: #define AR5K_AR5210_BSR_SNPTQ1FV       0x00000400
                    158: #define AR5K_AR5210_BSR_SNPTQ1V                0x00000800
                    159: #define AR5K_AR5210_BSR_SNAPPEDBCRVALID        0x00001000
                    160: #define AR5K_AR5210_BSR_SWBA_CNT       0x00ff0000
                    161:
                    162: /*
                    163:  * DMA size definitions
                    164:  */
                    165: typedef enum {
                    166:        AR5K_AR5210_DMASIZE_4B = 0,
                    167:        AR5K_AR5210_DMASIZE_8B,
                    168:        AR5K_AR5210_DMASIZE_16B,
                    169:        AR5K_AR5210_DMASIZE_32B,
                    170:        AR5K_AR5210_DMASIZE_64B,
                    171:        AR5K_AR5210_DMASIZE_128B,
                    172:        AR5K_AR5210_DMASIZE_256B,
                    173:        AR5K_AR5210_DMASIZE_512B
                    174: } ar5k_ar5210_dmasize_t;
                    175:
                    176: /*
                    177:  * Transmit configuration register
                    178:  */
                    179: #define AR5K_AR5210_TXCFG              0x0030
                    180: #define AR5K_AR5210_TXCFG_SDMAMR       0x00000007
                    181: #define AR5K_AR5210_TXCFG_TXFSTP       0x00000008
                    182: #define AR5K_AR5210_TXCFG_TXFULL       0x00000070
                    183: #define AR5K_AR5210_TXCFG_TXCONT_EN    0x00000080
                    184:
                    185: /*
                    186:  * Receive configuration register
                    187:  */
                    188: #define AR5K_AR5210_RXCFG              0x0034
                    189: #define AR5K_AR5210_RXCFG_SDMAMW       0x00000007
                    190: #define AR5K_AR5210_RXCFG_ZLFDMA       0x00000010
                    191:
                    192: /*
                    193:  * MIB control register
                    194:  */
                    195: #define AR5K_AR5210_MIBC               0x0040
                    196: #define AR5K_AR5210_MIBC_COW           0x00000001
                    197: #define AR5K_AR5210_MIBC_FMC           0x00000002
                    198: #define AR5K_AR5210_MIBC_CMC           0x00000004
                    199: #define AR5K_AR5210_MIBC_MCS           0x00000008
                    200:
                    201: /*
                    202:  * Timeout prescale register
                    203:  */
                    204: #define AR5K_AR5210_TOPS               0x0044
                    205:
                    206: /*
                    207:  * Receive timeout register (no frame received)
                    208:  */
                    209: #define AR5K_AR5210_RXNOFRM            0x0048
                    210:
                    211: /*
                    212:  * Transmit timeout register (no frame sent)
                    213:  */
                    214: #define AR5K_AR5210_TXNOFRM            0x004c
                    215:
                    216: /*
                    217:  * Receive frame gap timeout register
                    218:  */
                    219: #define AR5K_AR5210_RPGTO              0x0050
                    220:
                    221: /*
                    222:  * Receive frame count limit register
                    223:  */
                    224: #define AR5K_AR5210_RFCNT              0x0054
                    225: #define AR5K_AR5210_RFCNT_RFCL         0x0000000f
                    226:
                    227: /*
                    228:  * Misc settings/status register
                    229:  */
                    230: #define AR5K_AR5210_MISC               0x0058
                    231: #define AR5K_AR5210_MISC_LED_DECAY     0x001c0000
                    232: #define AR5K_AR5210_MISC_LED_BLINK     0x00e00000
                    233:
                    234: /*
                    235:  * Reset control register
                    236:  */
                    237: #define AR5K_AR5210_RC                 0x4000
                    238: #define AR5K_AR5210_RC_PCU             0x00000001
                    239: #define AR5K_AR5210_RC_DMA             0x00000002
                    240: #define AR5K_AR5210_RC_MAC             0x00000004
                    241: #define AR5K_AR5210_RC_PHY             0x00000008
                    242: #define AR5K_AR5210_RC_PCI             0x00000010
                    243: #define AR5K_AR5210_RC_CHIP            (                               \
                    244:        AR5K_AR5210_RC_PCU | AR5K_AR5210_RC_DMA |                       \
                    245:        AR5K_AR5210_RC_MAC | AR5K_AR5210_RC_PHY                         \
                    246: )
                    247:
                    248: /*
                    249:  * Sleep control register
                    250:  */
                    251: #define AR5K_AR5210_SCR                        0x4004
                    252: #define AR5K_AR5210_SCR_SLDUR          0x0000ffff
                    253: #define AR5K_AR5210_SCR_SLE            0x00030000
                    254: #define AR5K_AR5210_SCR_SLE_WAKE       0x00000000
                    255: #define AR5K_AR5210_SCR_SLE_SLP                0x00010000
                    256: #define AR5K_AR5210_SCR_SLE_ALLOW      0x00020000
                    257:
                    258: /*
                    259:  * Interrupt pending register
                    260:  */
                    261: #define AR5K_AR5210_INTPEND            0x4008
                    262: #define AR5K_AR5210_INTPEND_IP         0x00000001
                    263:
                    264: /*
                    265:  * Sleep force register
                    266:  */
                    267: #define AR5K_AR5210_SFR                        0x400c
                    268: #define AR5K_AR5210_SFR_SF             0x00000001
                    269:
                    270: /*
                    271:  * PCI configuration register
                    272:  */
                    273: #define AR5K_AR5210_PCICFG             0x4010
                    274: #define AR5K_AR5210_PCICFG_EEAE                0x00000001
                    275: #define AR5K_AR5210_PCICFG_CLKRUNEN    0x00000004
                    276: #define AR5K_AR5210_PCICFG_LED_PEND    0x00000020
                    277: #define AR5K_AR5210_PCICFG_LED_ACT     0x00000040
                    278: #define AR5K_AR5210_PCICFG_SL_INTEN    0x00000800
                    279: #define AR5K_AR5210_PCICFG_LED_BCTL    0x00001000
                    280: #define AR5K_AR5210_PCICFG_SL_INPEN    0x00002800
                    281: #define AR5K_AR5210_PCICFG_SPWR_DN     0x00010000
                    282:
                    283: /*
                    284:  * "General Purpose Input/Output" (GPIO) control register
                    285:  */
                    286: #define AR5K_AR5210_GPIOCR             0x4014
                    287: #define AR5K_AR5210_GPIOCR_INT_ENA     0x00008000
                    288: #define AR5K_AR5210_GPIOCR_INT_SELL    0x00000000
                    289: #define AR5K_AR5210_GPIOCR_INT_SELH    0x00010000
                    290: #define AR5K_AR5210_GPIOCR_IN(n)       (0 << ((n) * 2))
                    291: #define AR5K_AR5210_GPIOCR_OUT0(n)     (1 << ((n) * 2))
                    292: #define AR5K_AR5210_GPIOCR_OUT1(n)     (2 << ((n) * 2))
                    293: #define AR5K_AR5210_GPIOCR_OUT(n)      (3 << ((n) * 2))
                    294: #define AR5K_AR5210_GPIOCR_ALL(n)      (3<< ((n) * 2))
                    295: #define AR5K_AR5210_GPIOCR_INT_SEL(n)  ((n) << 12)
                    296:
                    297: #define AR5K_AR5210_NUM_GPIO   6
                    298:
                    299: /*
                    300:  * "General Purpose Input/Output" (GPIO) data output register
                    301:  */
                    302: #define AR5K_AR5210_GPIODO     0x4018
                    303:
                    304: /*
                    305:  * "General Purpose Input/Output" (GPIO) data input register
                    306:  */
                    307: #define AR5K_AR5210_GPIODI     0x401c
                    308: #define AR5K_AR5210_GPIOD_MASK 0x0000002f
                    309:
                    310: /*
                    311:  * Silicon revision register
                    312:  */
                    313: #define AR5K_AR5210_SREV               0x4020
                    314: #define AR5K_AR5210_SREV_REV           0x0000000f
                    315: #define AR5K_AR5210_SREV_REV_S         0
                    316: #define AR5K_AR5210_SREV_VER           0x000000ff
                    317: #define AR5K_AR5210_SREV_VER_S         4
                    318:
                    319: /*
                    320:  * EEPROM access registers
                    321:  */
                    322: #define AR5K_AR5210_EEPROM_BASE                0x6000
                    323: #define AR5K_AR5210_EEPROM_RDATA       0x6800
                    324: #define AR5K_AR5210_EEPROM_STATUS      0x6c00
                    325: #define AR5K_AR5210_EEPROM_STAT_RDERR  0x0001
                    326: #define AR5K_AR5210_EEPROM_STAT_RDDONE 0x0002
                    327: #define AR5K_AR5210_EEPROM_STAT_WRERR  0x0004
                    328: #define AR5K_AR5210_EEPROM_STAT_WRDONE 0x0008
                    329:
                    330: /*
                    331:  * PCU registers
                    332:  */
                    333:
                    334: #define AR5K_AR5210_PCU_MIN    0x8000
                    335: #define AR5K_AR5210_PCU_MAX    0x8fff
                    336:
                    337: /*
                    338:  * First station id register (MAC address in lower 32 bits)
                    339:  */
                    340: #define AR5K_AR5210_STA_ID0    0x8000
                    341:
                    342: /*
                    343:  * Second station id register (MAC address in upper 16 bits)
                    344:  */
                    345: #define AR5K_AR5210_STA_ID1                    0x8004
                    346: #define AR5K_AR5210_STA_ID1_AP                 0x00010000
                    347: #define AR5K_AR5210_STA_ID1_ADHOC              0x00020000
                    348: #define AR5K_AR5210_STA_ID1_PWR_SV             0x00040000
                    349: #define AR5K_AR5210_STA_ID1_NO_KEYSRCH         0x00080000
                    350: #define AR5K_AR5210_STA_ID1_NO_PSPOLL          0x00100000
                    351: #define AR5K_AR5210_STA_ID1_PCF                        0x00200000
                    352: #define AR5K_AR5210_STA_ID1_DESC_ANTENNA       0x00400000
                    353: #define AR5K_AR5210_STA_ID1_DEFAULT_ANTENNA    0x00800000
                    354: #define AR5K_AR5210_STA_ID1_ACKCTS_6MB         0x01000000
                    355:
                    356: /*
                    357:  * First BSSID register (MAC address, lower 32bits)
                    358:  */
                    359: #define AR5K_AR5210_BSS_ID0    0x8008
                    360:
                    361: /*
                    362:  * Second BSSID register (MAC address in upper 16 bits)
                    363:  *
                    364:  * AID: Association ID
                    365:  */
                    366: #define AR5K_AR5210_BSS_ID1            0x800c
                    367: #define AR5K_AR5210_BSS_ID1_AID                0xffff0000
                    368: #define AR5K_AR5210_BSS_ID1_AID_S      16
                    369:
                    370: /*
                    371:  * Backoff slot time register
                    372:  */
                    373: #define AR5K_AR5210_SLOT_TIME  0x8010
                    374:
                    375: /*
                    376:  * ACK/CTS timeout register
                    377:  */
                    378: #define AR5K_AR5210_TIME_OUT           0x8014
                    379: #define AR5K_AR5210_TIME_OUT_ACK       0x00001fff
                    380: #define AR5K_AR5210_TIME_OUT_ACK_S     0
                    381: #define AR5K_AR5210_TIME_OUT_CTS       0x1fff0000
                    382: #define AR5K_AR5210_TIME_OUT_CTS_S     16
                    383:
                    384: /*
                    385:  * RSSI threshold register
                    386:  */
                    387: #define AR5K_AR5210_RSSI_THR           0x8018
                    388: #define AR5K_AR5210_RSSI_THR_BM_THR    0x00000700
                    389: #define AR5K_AR5210_RSSI_THR_BM_THR_S  8
                    390:
                    391: /*
                    392:  * Retry limit register
                    393:  */
                    394: #define AR5K_AR5210_RETRY_LMT                  0x801c
                    395: #define AR5K_AR5210_RETRY_LMT_SH_RETRY         0x0000000f
                    396: #define AR5K_AR5210_RETRY_LMT_SH_RETRY_S       0
                    397: #define AR5K_AR5210_RETRY_LMT_LG_RETRY         0x000000f0
                    398: #define AR5K_AR5210_RETRY_LMT_LG_RETRY_S       4
                    399: #define AR5K_AR5210_RETRY_LMT_SSH_RETRY                0x00003f00
                    400: #define AR5K_AR5210_RETRY_LMT_SSH_RETRY_S      8
                    401: #define AR5K_AR5210_RETRY_LMT_SLG_RETRY                0x000fc000
                    402: #define AR5K_AR5210_RETRY_LMT_SLG_RETRY_S      14
                    403: #define AR5K_AR5210_RETRY_LMT_CW_MIN           0x3ff00000
                    404: #define AR5K_AR5210_RETRY_LMT_CW_MIN_S         20
                    405:
                    406: /*
                    407:  * Transmit latency register
                    408:  */
                    409: #define AR5K_AR5210_USEC               0x8020
                    410: #define AR5K_AR5210_USEC_1             0x0000007f
                    411: #define AR5K_AR5210_USEC_1_S           0
                    412: #define AR5K_AR5210_USEC_32            0x00003f80
                    413: #define AR5K_AR5210_USEC_32_S          7
                    414: #define AR5K_AR5210_USEC_TX_LATENCY    0x000fc000
                    415: #define AR5K_AR5210_USEC_TX_LATENCY_S  14
                    416: #define AR5K_AR5210_USEC_RX_LATENCY    0x03f00000
                    417: #define AR5K_AR5210_USEC_RX_LATENCY_S  20
                    418:
                    419: /*
                    420:  * PCU beacon control register
                    421:  */
                    422: #define AR5K_AR5210_BEACON             0x8024
                    423: #define AR5K_AR5210_BEACON_PERIOD      0x0000ffff
                    424: #define AR5K_AR5210_BEACON_PERIOD_S    0
                    425: #define AR5K_AR5210_BEACON_TIM         0x007f0000
                    426: #define AR5K_AR5210_BEACON_TIM_S       16
                    427: #define AR5K_AR5210_BEACON_EN          0x00800000
                    428: #define AR5K_AR5210_BEACON_RESET_TSF   0x01000000
                    429:
                    430: /*
                    431:  * CFP period register
                    432:  */
                    433: #define AR5K_AR5210_CFP_PERIOD         0x8028
                    434:
                    435: /*
                    436:  * Next beacon time register
                    437:  */
                    438: #define AR5K_AR5210_TIMER0             0x802c
                    439:
                    440: /*
                    441:  * Next DMA beacon alert register
                    442:  */
                    443: #define AR5K_AR5210_TIMER1             0x8030
                    444:
                    445: /*
                    446:  * Next software beacon alert register
                    447:  */
                    448: #define AR5K_AR5210_TIMER2             0x8034
                    449:
                    450: /*
                    451:  * Next ATIM window time register
                    452:  */
                    453: #define AR5K_AR5210_TIMER3             0x8038
                    454:
                    455: /*
                    456:  * First inter frame spacing register (IFS)
                    457:  */
                    458: #define AR5K_AR5210_IFS0               0x8040
                    459: #define AR5K_AR5210_IFS0_SIFS          0x000007ff
                    460: #define AR5K_AR5210_IFS0_SIFS_S                0
                    461: #define AR5K_AR5210_IFS0_DIFS          0x007ff800
                    462: #define AR5K_AR5210_IFS0_DIFS_S                11
                    463:
                    464: /*
                    465:  * Second inter frame spacing register (IFS)
                    466:  */
                    467: #define AR5K_AR5210_IFS1               0x8044
                    468: #define AR5K_AR5210_IFS1_PIFS          0x00000fff
                    469: #define AR5K_AR5210_IFS1_PIFS_S                0
                    470: #define AR5K_AR5210_IFS1_EIFS          0x03fff000
                    471: #define AR5K_AR5210_IFS1_EIFS_S                12
                    472: #define AR5K_AR5210_IFS1_CS_EN         0x04000000
                    473:
                    474: /*
                    475:  * CFP duration register
                    476:  */
                    477: #define AR5K_AR5210_CFP_DUR            0x8048
                    478:
                    479: /*
                    480:  * Receive filter register
                    481:  */
                    482: #define AR5K_AR5210_RX_FILTER          0x804c
                    483: #define AR5K_AR5210_RX_FILTER_UNICAST  0x00000001
                    484: #define AR5K_AR5210_RX_FILTER_MULTICAST        0x00000002
                    485: #define AR5K_AR5210_RX_FILTER_BROADCAST        0x00000004
                    486: #define AR5K_AR5210_RX_FILTER_CONTROL  0x00000008
                    487: #define AR5K_AR5210_RX_FILTER_BEACON   0x00000010
                    488: #define AR5K_AR5210_RX_FILTER_PROMISC  0x00000020
                    489:
                    490: /*
                    491:  * Multicast filter register (lower 32 bits)
                    492:  */
                    493: #define AR5K_AR5210_MCAST_FIL0 0x8050
                    494:
                    495: /*
                    496:  * Multicast filter register (higher 16 bits)
                    497:  */
                    498: #define AR5K_AR5210_MCAST_FIL1 0x8054
                    499:
                    500: /*
                    501:  * Transmit mask register (lower 32 bits)
                    502:  */
                    503: #define AR5K_AR5210_TX_MASK0   0x8058
                    504:
                    505: /*
                    506:  * Transmit mask register (higher 16 bits)
                    507:  */
                    508: #define AR5K_AR5210_TX_MASK1   0x805c
                    509:
                    510: /*
                    511:  * Clear transmit mask
                    512:  */
                    513: #define AR5K_AR5210_CLR_TMASK  0x8060
                    514:
                    515: /*
                    516:  * Trigger level register (before transmission)
                    517:  */
                    518: #define AR5K_AR5210_TRIG_LVL   0x8064
                    519:
                    520: /*
                    521:  * PCU control register
                    522:  */
                    523: #define AR5K_AR5210_DIAG_SW                    0x8068
                    524: #define AR5K_AR5210_DIAG_SW_DIS_WEP_ACK                0x00000001
                    525: #define AR5K_AR5210_DIAG_SW_DIS_ACK            0x00000002
                    526: #define AR5K_AR5210_DIAG_SW_DIS_CTS            0x00000004
                    527: #define AR5K_AR5210_DIAG_SW_DIS_ENC            0x00000008
                    528: #define AR5K_AR5210_DIAG_SW_DIS_DEC            0x00000010
                    529: #define AR5K_AR5210_DIAG_SW_DIS_TX             0x00000020
                    530: #define AR5K_AR5210_DIAG_SW_DIS_RX             0x00000040
                    531: #define AR5K_AR5210_DIAG_SW_LOOP_BACK          0x00000080
                    532: #define AR5K_AR5210_DIAG_SW_CORR_FCS           0x00000100
                    533: #define AR5K_AR5210_DIAG_SW_CHAN_INFO          0x00000200
                    534: #define AR5K_AR5210_DIAG_SW_EN_SCRAM_SEED      0x00000400
                    535: #define AR5K_AR5210_DIAG_SW_SCVRAM_SEED                0x0003f800
                    536: #define AR5K_AR5210_DIAG_SW_DIS_SEQ_INC                0x00040000
                    537: #define AR5K_AR5210_DIAG_SW_FRAME_NV0          0x00080000
                    538:
                    539: /*
                    540:  * TSF (clock) register (lower 32 bits)
                    541:  */
                    542: #define AR5K_AR5210_TSF_L32    0x806c
                    543:
                    544: /*
                    545:  * TSF (clock) register (higher 32 bits)
                    546:  */
                    547: #define AR5K_AR5210_TSF_U32    0x8070
                    548:
                    549: /*
                    550:  * Last beacon timestamp register
                    551:  */
                    552: #define AR5K_AR5210_LAST_TSTP  0x8080
                    553:
                    554: /*
                    555:  * Retry count register
                    556:  */
                    557: #define AR5K_AR5210_RETRY_CNT          0x8084
                    558: #define AR5K_AR5210_RETRY_CNT_SSH      0x0000003f
                    559: #define AR5K_AR5210_RETRY_CNT_SLG      0x00000fc0
                    560:
                    561: /*
                    562:  * Back-off status register
                    563:  */
                    564: #define AR5K_AR5210_BACKOFF            0x8088
                    565: #define AR5K_AR5210_BACKOFF_CW         0x000003ff
                    566: #define AR5K_AR5210_BACKOFF_CNT                0x03ff0000
                    567:
                    568: /*
                    569:  * NAV register (current)
                    570:  */
                    571: #define AR5K_AR5210_NAV                0x808c
                    572:
                    573: /*
                    574:  * RTS success register
                    575:  */
                    576: #define AR5K_AR5210_RTS_OK     0x8090
                    577:
                    578: /*
                    579:  * RTS failure register
                    580:  */
                    581: #define AR5K_AR5210_RTS_FAIL   0x8094
                    582:
                    583: /*
                    584:  * ACK failure register
                    585:  */
                    586: #define AR5K_AR5210_ACK_FAIL   0x8098
                    587:
                    588: /*
                    589:  * FCS failure register
                    590:  */
                    591: #define AR5K_AR5210_FCS_FAIL   0x809c
                    592:
                    593: /*
                    594:  * Beacon count register
                    595:  */
                    596: #define AR5K_AR5210_BEACON_CNT 0x80a0
                    597:
                    598: /*
                    599:  * Key table (WEP) register
                    600:  */
                    601: #define AR5K_AR5210_KEYTABLE_0         0x9000
                    602: #define AR5K_AR5210_KEYTABLE(n)                (AR5K_AR5210_KEYTABLE_0 + ((n) << 5))
                    603: #define AR5K_AR5210_KEYTABLE_OFF(_n, x)        (AR5K_AR5210_KEYTABLE(_n) + (x << 2))
                    604: #define AR5K_AR5210_KEYTABLE_TYPE(_n)  AR5K_AR5210_KEYTABLE_OFF(_n, 5)
                    605: #define AR5K_AR5210_KEYTABLE_TYPE_40   0x00000000
                    606: #define AR5K_AR5210_KEYTABLE_TYPE_104  0x00000001
                    607: #define AR5K_AR5210_KEYTABLE_TYPE_128  0x00000003
                    608: #define AR5K_AR5210_KEYTABLE_MAC0(_n)  AR5K_AR5210_KEYTABLE_OFF(_n, 6)
                    609: #define AR5K_AR5210_KEYTABLE_MAC1(_n)  AR5K_AR5210_KEYTABLE_OFF(_n, 7)
                    610: #define AR5K_AR5210_KEYTABLE_VALID     0x00008000
                    611:
                    612: #define AR5K_AR5210_KEYTABLE_SIZE      64
                    613: #define AR5K_AR5210_KEYCACHE_SIZE      8
                    614:
                    615: /*
                    616:  * PHY register
                    617:  */
                    618: #define        AR5K_AR5210_PHY(_n)     (0x9800 + ((_n) << 2))
                    619:
                    620: /*
                    621:  * PHY frame control register
                    622:  */
                    623: #define        AR5K_AR5210_PHY_FC              0x9804
                    624: #define        AR5K_AR5210_PHY_FC_TURBO_MODE   0x00000001
                    625: #define        AR5K_AR5210_PHY_FC_TURBO_SHORT  0x00000002
                    626: #define        AR5K_AR5210_PHY_FC_TIMING_ERR   0x01000000
                    627: #define        AR5K_AR5210_PHY_FC_PARITY_ERR   0x02000000
                    628: #define        AR5K_AR5210_PHY_FC_ILLRATE_ERR  0x04000000
                    629: #define        AR5K_AR5210_PHY_FC_ILLLEN_ERR   0x08000000
                    630: #define        AR5K_AR5210_PHY_FC_SERVICE_ERR  0x20000000
                    631: #define        AR5K_AR5210_PHY_FC_TXURN_ERR    0x40000000
                    632:
                    633: /*
                    634:  * PHY agility command register
                    635:  */
                    636: #define        AR5K_AR5210_PHY_AGC             0x9808
                    637: #define        AR5K_AR5210_PHY_AGC_DISABLE     0x08000000
                    638:
                    639: /*
                    640:  * PHY chip revision register
                    641:  */
                    642: #define        AR5K_AR5210_PHY_CHIP_ID         0x9818
                    643:
                    644: /*
                    645:  * PHY activation register
                    646:  */
                    647: #define        AR5K_AR5210_PHY_ACTIVE          0x981c
                    648: #define        AR5K_AR5210_PHY_ENABLE          0x00000001
                    649: #define        AR5K_AR5210_PHY_DISABLE         0x00000002
                    650:
                    651: /*
                    652:  * PHY signal register
                    653:  */
                    654: #define        AR5K_AR5210_PHY_SIG             0x9858
                    655: #define        AR5K_AR5210_PHY_SIG_FIRSTEP     0x0003f000
                    656: #define        AR5K_AR5210_PHY_SIG_FIRSTEP_S   12
                    657: #define        AR5K_AR5210_PHY_SIG_FIRPWR      0x03fc0000
                    658: #define        AR5K_AR5210_PHY_SIG_FIRPWR_S    18
                    659:
                    660: /*
                    661:  * PHY coarse agility control register
                    662:  */
                    663: #define        AR5K_AR5210_PHY_AGCCOARSE       0x985c
                    664: #define        AR5K_AR5210_PHY_AGCCOARSE_LO    0x00007f80
                    665: #define        AR5K_AR5210_PHY_AGCCOARSE_LO_S  7
                    666: #define        AR5K_AR5210_PHY_AGCCOARSE_HI    0x003f8000
                    667: #define        AR5K_AR5210_PHY_AGCCOARSE_HI_S  15
                    668:
                    669: /*
                    670:  * PHY agility control register
                    671:  */
                    672: #define        AR5K_AR5210_PHY_AGCCTL          0x9860
                    673: #define        AR5K_AR5210_PHY_AGCCTL_CAL      0x00000001
                    674: #define        AR5K_AR5210_PHY_AGCCTL_NF       0x00000002
                    675:
                    676: /*
                    677:  * PHY noise floor status register
                    678:  */
                    679: #define AR5K_AR5210_PHY_NF             0x9864
                    680: #define AR5K_AR5210_PHY_NF_M           0x000001ff
                    681: #define AR5K_AR5210_PHY_NF_ACTIVE      0x00000100
                    682: #define AR5K_AR5210_PHY_NF_RVAL(_n)    (((_n) >> 19) & AR5K_AR5210_PHY_NF_M)
                    683: #define AR5K_AR5210_PHY_NF_AVAL(_n)    (-((_n) ^ AR5K_AR5210_PHY_NF_M) + 1)
                    684:
                    685: /*
                    686:  * PHY ADC saturation register
                    687:  */
                    688: #define        AR5K_AR5210_PHY_ADCSAT          0x9868
                    689: #define        AR5K_AR5210_PHY_ADCSAT_ICNT     0x0001f800
                    690: #define        AR5K_AR5210_PHY_ADCSAT_ICNT_S   11
                    691: #define        AR5K_AR5210_PHY_ADCSAT_THR      0x000007e0
                    692: #define        AR5K_AR5210_PHY_ADCSAT_THR_S    5
                    693:
                    694: /*
                    695:  * PHY RF stage register
                    696:  */
                    697: #define AR5K_AR5210_PHY_RFSTG          0x98d4
                    698: #define AR5K_AR5210_PHY_RFSTG_DISABLE  0x00000021
                    699:
                    700: /*
                    701:  * Misc PHY/radio registers
                    702:  */
                    703: #define AR5K_AR5210_BB_GAIN(_n)                (0x9b00 + ((_n) << 2))
                    704: #define AR5K_AR5210_RF_GAIN(_n)                (0x9a00 + ((_n) << 2))
                    705:
                    706: #endif

CVSweb