[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     ! 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