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

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

1.1     ! nbrk        1: /*     $OpenBSD: ar5211reg.h,v 1.11 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 AR5001 Wireless LAN chipsets
        !            21:  * (AR5211/AR5311).
        !            22:  */
        !            23:
        !            24: #ifndef _AR5K_AR5211_REG_H
        !            25: #define _AR5K_AR5211_REG_H
        !            26:
        !            27: /*
        !            28:  * Command register
        !            29:  */
        !            30: #define AR5K_AR5211_CR         0x0008
        !            31: #define AR5K_AR5211_CR_RXE     0x00000004
        !            32: #define AR5K_AR5211_CR_RXD     0x00000020
        !            33: #define AR5K_AR5211_CR_SWI     0x00000040
        !            34:
        !            35: /*
        !            36:  * Receive queue descriptor pointer register
        !            37:  */
        !            38: #define AR5K_AR5211_RXDP       0x000c
        !            39:
        !            40: /*
        !            41:  * Configuration and status register
        !            42:  */
        !            43: #define AR5K_AR5211_CFG                        0x0014
        !            44: #define AR5K_AR5211_CFG_SWTD           0x00000001
        !            45: #define AR5K_AR5211_CFG_SWTB           0x00000002
        !            46: #define AR5K_AR5211_CFG_SWRD           0x00000004
        !            47: #define AR5K_AR5211_CFG_SWRB           0x00000008
        !            48: #define AR5K_AR5211_CFG_SWRG           0x00000010
        !            49: #define AR5K_AR5211_CFG_ADHOC          0x00000020
        !            50: #define AR5K_AR5211_CFG_PHY_OK         0x00000100
        !            51: #define AR5K_AR5211_CFG_EEBS           0x00000200
        !            52: #define        AR5K_AR5211_CFG_CLKGD           0x00000400
        !            53: #define        AR5K_AR5211_CFG_PCI_THRES       0x00060000
        !            54: #define        AR5K_AR5211_CFG_PCI_THRES_S     17
        !            55:
        !            56: /*
        !            57:  * Interrupt enable register
        !            58:  */
        !            59: #define AR5K_AR5211_IER                0x0024
        !            60: #define AR5K_AR5211_IER_DISABLE        0x00000000
        !            61: #define AR5K_AR5211_IER_ENABLE 0x00000001
        !            62:
        !            63: /*
        !            64:  * First RTS duration register
        !            65:  */
        !            66: #define AR5K_AR5211_RTSD0      0x0028
        !            67: #define        AR5K_AR5211_RTSD0_6     0x000000ff
        !            68: #define        AR5K_AR5211_RTSD0_6_S   0
        !            69: #define        AR5K_AR5211_RTSD0_9     0x0000ff00
        !            70: #define        AR5K_AR5211_RTSD0_9_S   8
        !            71: #define        AR5K_AR5211_RTSD0_12    0x00ff0000
        !            72: #define        AR5K_AR5211_RTSD0_12_S  16
        !            73: #define        AR5K_AR5211_RTSD0_18    0xff000000
        !            74: #define        AR5K_AR5211_RTSD0_18_S  24
        !            75:
        !            76: /*
        !            77:  * Second RTS duration register
        !            78:  */
        !            79: #define AR5K_AR5211_RTSD1      0x002c
        !            80: #define        AR5K_AR5211_RTSD1_24    0x000000ff
        !            81: #define        AR5K_AR5211_RTSD1_24_S  0
        !            82: #define        AR5K_AR5211_RTSD1_36    0x0000ff00
        !            83: #define        AR5K_AR5211_RTSD1_36_S  8
        !            84: #define        AR5K_AR5211_RTSD1_48    0x00ff0000
        !            85: #define        AR5K_AR5211_RTSD1_48_S  16
        !            86: #define        AR5K_AR5211_RTSD1_54    0xff000000
        !            87: #define        AR5K_AR5211_RTSD1_54_S  24
        !            88:
        !            89: /*
        !            90:  * Transmit configuration register
        !            91:  */
        !            92: #define AR5K_AR5211_TXCFG              0x0030
        !            93: #define AR5K_AR5211_TXCFG_SDMAMR       0x00000007
        !            94: #define AR5K_AR5211_TXCFG_SDMAMR_S     0
        !            95: #define AR5K_AR5211_TXCFG_B_MODE       0x00000008
        !            96: #define AR5K_AR5211_TXCFG_TXFULL       0x000003f0
        !            97: #define AR5K_AR5211_TXCFG_TXFULL_S     4
        !            98: #define AR5K_AR5211_TXCFG_TXFULL_0B    0x00000000
        !            99: #define AR5K_AR5211_TXCFG_TXFULL_64B   0x00000010
        !           100: #define AR5K_AR5211_TXCFG_TXFULL_128B  0x00000020
        !           101: #define AR5K_AR5211_TXCFG_TXFULL_192B  0x00000030
        !           102: #define AR5K_AR5211_TXCFG_TXFULL_256B  0x00000040
        !           103: #define AR5K_AR5211_TXCFG_TXCONT_ENABLE        0x00000080
        !           104: #define AR5K_AR5211_TXCFG_DMASIZE      0x00000100
        !           105: #define AR5K_AR5211_TXCFG_JUMBO_TXE    0x00000400
        !           106: #define AR5K_AR5211_TXCFG_RTSRND       0x00001000
        !           107: #define AR5K_AR5211_TXCFG_FRMPAD_DIS   0x00002000
        !           108: #define AR5K_AR5211_TXCFG_RDY_DIS      0x00004000
        !           109:
        !           110: /*
        !           111:  * Receive configuration register
        !           112:  */
        !           113: #define AR5K_AR5211_RXCFG                      0x0034
        !           114: #define AR5K_AR5211_RXCFG_SDMAMW               0x00000007
        !           115: #define AR5K_AR5211_RXCFG_SDMAMW_S             0
        !           116: #define        AR5K_AR5311_RXCFG_DEFAULT_ANTENNA       0x00000008
        !           117: #define AR5K_AR5211_RXCFG_ZLFDMA               0x00000010
        !           118: #define AR5K_AR5211_RXCFG_JUMBO_RXE            0x00000020
        !           119: #define AR5K_AR5211_RXCFG_JUMBO_WRAP           0x00000040
        !           120:
        !           121: /*
        !           122:  * Receive jumbo descriptor last address register
        !           123:  */
        !           124: #define AR5K_AR5211_RXJLA              0x0038
        !           125:
        !           126: /*
        !           127:  * MIB control register
        !           128:  */
        !           129: #define AR5K_AR5211_MIBC               0x0040
        !           130: #define AR5K_AR5211_MIBC_COW           0x00000001
        !           131: #define AR5K_AR5211_MIBC_FMC           0x00000002
        !           132: #define AR5K_AR5211_MIBC_CMC           0x00000004
        !           133: #define AR5K_AR5211_MIBC_MCS           0x00000008
        !           134:
        !           135: /*
        !           136:  * Timeout prescale register
        !           137:  */
        !           138: #define AR5K_AR5211_TOPS               0x0044
        !           139: #define        AR5K_AR5211_TOPS_M              0x0000ffff
        !           140:
        !           141: /*
        !           142:  * Receive timeout register (no frame received)
        !           143:  */
        !           144: #define AR5K_AR5211_RXNOFRM            0x0048
        !           145: #define        AR5K_AR5211_RXNOFRM_M           0x000003ff
        !           146:
        !           147: /*
        !           148:  * Transmit timeout register (no frame sent)
        !           149:  */
        !           150: #define AR5K_AR5211_TXNOFRM            0x004c
        !           151: #define        AR5K_AR5211_TXNOFRM_M           0x000003ff
        !           152: #define        AR5K_AR5211_TXNOFRM_QCU         0x000ffc00
        !           153:
        !           154: /*
        !           155:  * Receive frame gap timeout register
        !           156:  */
        !           157: #define AR5K_AR5211_RPGTO              0x0050
        !           158: #define AR5K_AR5211_RPGTO_M            0x000003ff
        !           159:
        !           160: /*
        !           161:  * Receive frame count limit register
        !           162:  */
        !           163: #define AR5K_AR5211_RFCNT              0x0054
        !           164: #define AR5K_AR5211_RFCNT_M            0x0000001f
        !           165:
        !           166: /*
        !           167:  * Misc settings register
        !           168:  */
        !           169: #define AR5K_AR5211_MISC               0x0058
        !           170: #define        AR5K_AR5211_MISC_DMA_OBS_M      0x000001e0
        !           171: #define        AR5K_AR5211_MISC_DMA_OBS_S      5
        !           172: #define        AR5K_AR5211_MISC_MISC_OBS_M     0x00000e00
        !           173: #define        AR5K_AR5211_MISC_MISC_OBS_S     9
        !           174: #define        AR5K_AR5211_MISC_MAC_OBS_LSB_M  0x00007000
        !           175: #define        AR5K_AR5211_MISC_MAC_OBS_LSB_S  12
        !           176: #define        AR5K_AR5211_MISC_MAC_OBS_MSB_M  0x00038000
        !           177: #define        AR5K_AR5211_MISC_MAC_OBS_MSB_S  15
        !           178:
        !           179: /*
        !           180:  * QCU/DCU clock gating register
        !           181:  */
        !           182: #define        AR5K_AR5311_QCUDCU_CLKGT
        !           183: #define        AR5K_AR5311_QCUDCU_CLKGT_QCU    0x0000ffff
        !           184: #define        AR5K_AR5311_QCUDCU_CLKGT_DCU    0x07ff0000
        !           185:
        !           186: /*
        !           187:  * Primary interrupt status register
        !           188:  */
        !           189: #define AR5K_AR5211_PISR               0x0080
        !           190: #define AR5K_AR5211_PISR_RXOK          0x00000001
        !           191: #define AR5K_AR5211_PISR_RXDESC                0x00000002
        !           192: #define AR5K_AR5211_PISR_RXERR         0x00000004
        !           193: #define AR5K_AR5211_PISR_RXNOFRM       0x00000008
        !           194: #define AR5K_AR5211_PISR_RXEOL         0x00000010
        !           195: #define AR5K_AR5211_PISR_RXORN         0x00000020
        !           196: #define AR5K_AR5211_PISR_TXOK          0x00000040
        !           197: #define AR5K_AR5211_PISR_TXDESC                0x00000080
        !           198: #define AR5K_AR5211_PISR_TXERR         0x00000100
        !           199: #define AR5K_AR5211_PISR_TXNOFRM       0x00000200
        !           200: #define AR5K_AR5211_PISR_TXEOL         0x00000400
        !           201: #define AR5K_AR5211_PISR_TXURN         0x00000800
        !           202: #define AR5K_AR5211_PISR_MIB           0x00001000
        !           203: #define AR5K_AR5211_PISR_SWI           0x00002000
        !           204: #define AR5K_AR5211_PISR_RXPHY         0x00004000
        !           205: #define AR5K_AR5211_PISR_RXKCM         0x00008000
        !           206: #define AR5K_AR5211_PISR_SWBA          0x00010000
        !           207: #define AR5K_AR5211_PISR_BRSSI         0x00020000
        !           208: #define AR5K_AR5211_PISR_BMISS         0x00040000
        !           209: #define AR5K_AR5211_PISR_HIUERR                0x00080000
        !           210: #define AR5K_AR5211_PISR_BNR           0x00100000
        !           211: #define AR5K_AR5211_PISR_TIM           0x00800000
        !           212: #define AR5K_AR5211_PISR_GPIO          0x01000000
        !           213: #define AR5K_AR5211_PISR_QCBRORN       0x02000000
        !           214: #define AR5K_AR5211_PISR_QCBRURN       0x04000000
        !           215: #define AR5K_AR5211_PISR_QTRIG         0x08000000
        !           216:
        !           217: /*
        !           218:  * Secondary interrupt status registers (0 - 4)
        !           219:  */
        !           220: #define AR5K_AR5211_SISR0              0x0084
        !           221: #define AR5K_AR5211_SISR0_QCU_TXOK     0x000003ff
        !           222: #define AR5K_AR5211_SISR0_QCU_TXDESC   0x03ff0000
        !           223:
        !           224: #define AR5K_AR5211_SISR1              0x0088
        !           225: #define AR5K_AR5211_SISR1_QCU_TXERR    0x000003ff
        !           226: #define AR5K_AR5211_SISR1_QCU_TXEOL    0x03ff0000
        !           227:
        !           228: #define AR5K_AR5211_SISR2              0x008c
        !           229: #define AR5K_AR5211_SISR2_QCU_TXURN    0x000003ff
        !           230: #define        AR5K_AR5211_SISR2_MCABT         0x00100000
        !           231: #define        AR5K_AR5211_SISR2_SSERR         0x00200000
        !           232: #define        AR5K_AR5211_SISR2_DPERR         0x00400000
        !           233:
        !           234: #define AR5K_AR5211_SISR3              0x0090
        !           235: #define AR5K_AR5211_SISR3_QCBRORN      0x000003ff
        !           236: #define AR5K_AR5211_SISR3_QCBRURN      0x03ff0000
        !           237:
        !           238: #define AR5K_AR5211_SISR4              0x0094
        !           239: #define AR5K_AR5211_SISR4_QTRIG                0x000003ff
        !           240:
        !           241: /*
        !           242:  * Shadow read-and-clear interrupt status registers
        !           243:  */
        !           244: #define AR5K_AR5211_RAC_PISR   0x00c0
        !           245: #define AR5K_AR5211_RAC_SISR0  0x00c4
        !           246: #define AR5K_AR5211_RAC_SISR1  0x00c8
        !           247: #define AR5K_AR5211_RAC_SISR2  0x00cc
        !           248: #define AR5K_AR5211_RAC_SISR3  0c00d0
        !           249: #define AR5K_AR5211_RAC_SISR4  0c00d4
        !           250:
        !           251: /*
        !           252:  * Primary interrupt mask register
        !           253:  */
        !           254: #define AR5K_AR5211_PIMR               0x00a0
        !           255: #define AR5K_AR5211_PIMR_RXOK          0x00000001
        !           256: #define AR5K_AR5211_PIMR_RXDESC                0x00000002
        !           257: #define AR5K_AR5211_PIMR_RXERR         0x00000004
        !           258: #define AR5K_AR5211_PIMR_RXNOFRM       0x00000008
        !           259: #define AR5K_AR5211_PIMR_RXEOL         0x00000010
        !           260: #define AR5K_AR5211_PIMR_RXORN         0x00000020
        !           261: #define AR5K_AR5211_PIMR_TXOK          0x00000040
        !           262: #define AR5K_AR5211_PIMR_TXDESC                0x00000080
        !           263: #define AR5K_AR5211_PIMR_TXERR         0x00000100
        !           264: #define AR5K_AR5211_PIMR_TXNOFRM       0x00000200
        !           265: #define AR5K_AR5211_PIMR_TXEOL         0x00000400
        !           266: #define AR5K_AR5211_PIMR_TXURN         0x00000800
        !           267: #define AR5K_AR5211_PIMR_MIB           0x00001000
        !           268: #define AR5K_AR5211_PIMR_SWI           0x00002000
        !           269: #define AR5K_AR5211_PIMR_RXPHY         0x00004000
        !           270: #define AR5K_AR5211_PIMR_RXKCM         0x00008000
        !           271: #define AR5K_AR5211_PIMR_SWBA          0x00010000
        !           272: #define AR5K_AR5211_PIMR_BRSSI         0x00020000
        !           273: #define AR5K_AR5211_PIMR_BMISS         0x00040000
        !           274: #define AR5K_AR5211_PIMR_HIUERR                0x00080000
        !           275: #define AR5K_AR5211_PIMR_BNR           0x00100000
        !           276: #define AR5K_AR5211_PIMR_TIM           0x00800000
        !           277: #define AR5K_AR5211_PIMR_GPIO          0x01000000
        !           278: #define AR5K_AR5211_PIMR_QCBRORN       0x02000000
        !           279: #define AR5K_AR5211_PIMR_QCBRURN       0x04000000
        !           280: #define AR5K_AR5211_PIMR_QTRIG         0x08000000
        !           281:
        !           282: /*
        !           283:  * Secondary interrupt mask registers (0 - 4)
        !           284:  */
        !           285: #define AR5K_AR5211_SIMR0              0x00a4
        !           286: #define AR5K_AR5211_SIMR0_QCU_TXOK     0x000003ff
        !           287: #define AR5K_AR5211_SIMR0_QCU_TXOK_S   0
        !           288: #define AR5K_AR5211_SIMR0_QCU_TXDESC   0x03ff0000
        !           289: #define AR5K_AR5211_SIMR0_QCU_TXDESC_S 16
        !           290:
        !           291: #define AR5K_AR5211_SIMR1              0x00a8
        !           292: #define AR5K_AR5211_SIMR1_QCU_TXERR    0x000003ff
        !           293: #define AR5K_AR5211_SIMR1_QCU_TXERR_S  0
        !           294: #define AR5K_AR5211_SIMR1_QCU_TXEOL    0x03ff0000
        !           295: #define AR5K_AR5211_SIMR1_QCU_TXEOL_S  16
        !           296:
        !           297: #define AR5K_AR5211_SIMR2              0x00ac
        !           298: #define AR5K_AR5211_SIMR2_QCU_TXURN    0x000003ff
        !           299: #define AR5K_AR5211_SIMR2_QCU_TXURN_S  0
        !           300: #define        AR5K_AR5211_SIMR2_MCABT         0x00100000
        !           301: #define        AR5K_AR5211_SIMR2_SSERR         0x00200000
        !           302: #define        AR5K_AR5211_SIMR2_DPERR         0x00400000
        !           303:
        !           304: #define AR5K_AR5211_SIMR3              0x00b0
        !           305: #define AR5K_AR5211_SIMR3_QCBRORN      0x000003ff
        !           306: #define AR5K_AR5211_SIMR3_QCBRORN_S    0
        !           307: #define AR5K_AR5211_SIMR3_QCBRURN      0x03ff0000
        !           308: #define AR5K_AR5211_SIMR3_QCBRURN_S    16
        !           309:
        !           310: #define AR5K_AR5211_SIMR4              0x00b4
        !           311: #define AR5K_AR5211_SIMR4_QTRIG                0x000003ff
        !           312: #define AR5K_AR5211_SIMR4_QTRIG_S      0
        !           313:
        !           314: /*
        !           315:  * Queue control unit (QCU) registers (0 - 9)
        !           316:  */
        !           317: #define        AR5K_AR5211_QCU(_n, _a)         (((_n) << 2) + _a)
        !           318:
        !           319: /*
        !           320:  * QCU Transmit descriptor pointer registers
        !           321:  */
        !           322: #define AR5K_AR5211_QCU_TXDP(_n)       AR5K_AR5211_QCU(_n, 0x0800)
        !           323:
        !           324: /*
        !           325:  * QCU Transmit enable register
        !           326:  */
        !           327: #define AR5K_AR5211_QCU_TXE            0x0840
        !           328:
        !           329: /*
        !           330:  * QCU Transmit disable register
        !           331:  */
        !           332: #define AR5K_AR5211_QCU_TXD            0x0880
        !           333:
        !           334: /*
        !           335:  * QCU CBR configuration registers
        !           336:  */
        !           337: #define        AR5K_AR5211_QCU_CBRCFG(_n)              AR5K_AR5211_QCU(_n, 0x08c0)
        !           338: #define        AR5K_AR5211_QCU_CBRCFG_INTVAL           0x00ffffff
        !           339: #define AR5K_AR5211_QCU_CBRCFG_INTVAL_S                0
        !           340: #define        AR5K_AR5211_QCU_CBRCFG_ORN_THRES        0xff000000
        !           341: #define AR5K_AR5211_QCU_CBRCFG_ORN_THRES_S     24
        !           342:
        !           343: /*
        !           344:  * QCU Ready time configuration registers
        !           345:  */
        !           346: #define        AR5K_AR5211_QCU_RDYTIMECFG(_n)          AR5K_AR5211_QCU(_n, 0x0900)
        !           347: #define        AR5K_AR5211_QCU_RDYTIMECFG_INTVAL       0x00ffffff
        !           348: #define AR5K_AR5211_QCU_RDYTIMECFG_INTVAL_S    0
        !           349: #define        AR5K_AR5211_QCU_RDYTIMECFG_DURATION     0x00ffffff
        !           350: #define        AR5K_AR5211_QCU_RDYTIMECFG_ENABLE       0x01000000
        !           351:
        !           352: /*
        !           353:  * QCU one shot arm set registers
        !           354:  */
        !           355: #define        AR5K_AR5211_QCU_ONESHOTARMS(_n) AR5K_AR5211_QCU(_n, 0x0940)
        !           356: #define        AR5K_AR5211_QCU_ONESHOTARMS_M   0x0000ffff
        !           357:
        !           358: /*
        !           359:  * QCU one shot arm clear registers
        !           360:  */
        !           361: #define        AR5K_AR5211_QCU_ONESHOTARMC(_n) AR5K_AR5211_QCU(_n, 0x0980)
        !           362: #define        AR5K_AR5211_QCU_ONESHOTARMC_M   0x0000ffff
        !           363:
        !           364: /*
        !           365:  * QCU misc registers
        !           366:  */
        !           367: #define AR5K_AR5211_QCU_MISC(_n)               AR5K_AR5211_QCU(_n, 0x09c0)
        !           368: #define        AR5K_AR5211_QCU_MISC_FRSHED_M           0x0000000f
        !           369: #define        AR5K_AR5211_QCU_MISC_FRSHED_ASAP        0
        !           370: #define        AR5K_AR5211_QCU_MISC_FRSHED_CBR         1
        !           371: #define        AR5K_AR5211_QCU_MISC_FRSHED_DBA_GT      2
        !           372: #define        AR5K_AR5211_QCU_MISC_FRSHED_TIM_GT      3
        !           373: #define        AR5K_AR5211_QCU_MISC_FRSHED_BCN_SENT_GT 4
        !           374: #define        AR5K_AR5211_QCU_MISC_ONESHOT_ENABLE     0x00000010
        !           375: #define        AR5K_AR5211_QCU_MISC_CBREXP             0x00000020
        !           376: #define        AR5K_AR5211_QCU_MISC_CBREXP_BCN         0x00000040
        !           377: #define        AR5K_AR5211_QCU_MISC_BCN_ENABLE         0x00000080
        !           378: #define        AR5K_AR5211_QCU_MISC_CBR_THRES_ENABLE   0x00000100
        !           379: #define        AR5K_AR5211_QCU_MISC_TXE                0x00000200
        !           380: #define        AR5K_AR5211_QCU_MISC_CBR                0x00000400
        !           381: #define        AR5K_AR5211_QCU_MISC_DCU_EARLY          0x00000800
        !           382:
        !           383: /*
        !           384:  * QCU status registers
        !           385:  */
        !           386: #define AR5K_AR5211_QCU_STS(_n)                AR5K_AR5211_QCU(_n, 0x0a00)
        !           387: #define        AR5K_AR5211_QCU_STS_FRMPENDCNT  0x00000003
        !           388: #define        AR5K_AR5211_QCU_STS_CBREXPCNT   0x0000ff00
        !           389:
        !           390: /*
        !           391:  * QCU ready time shutdown register
        !           392:  */
        !           393: #define AR5K_AR5211_QCU_RDYTIMESHDN    0x0a40
        !           394: #define AR5K_AR5211_QCU_RDYTIMESHDN_M  0x000003ff
        !           395:
        !           396: /*
        !           397:  * DCF control unit (DCU) registers (0 - 9)
        !           398:  */
        !           399: #define        AR5K_AR5211_DCU(_n, _a)         AR5K_AR5211_QCU(_n, _a)
        !           400:
        !           401: /*
        !           402:  * DCU QCU mask registers
        !           403:  */
        !           404: #define AR5K_AR5211_DCU_QCUMASK(_n)    AR5K_AR5211_DCU(_n, 0x1000)
        !           405: #define AR5K_AR5211_DCU_QCUMASK_M      0x000003ff
        !           406:
        !           407: /*
        !           408:  * DCU local IFS settings register
        !           409:  */
        !           410: #define AR5K_AR5211_DCU_LCL_IFS(_n)            AR5K_AR5211_DCU(_n, 0x1040)
        !           411: #define        AR5K_AR5211_DCU_LCL_IFS_CW_MIN          0x000003ff
        !           412: #define        AR5K_AR5211_DCU_LCL_IFS_CW_MIN_S        0
        !           413: #define        AR5K_AR5211_DCU_LCL_IFS_CW_MAX          0x000ffc00
        !           414: #define        AR5K_AR5211_DCU_LCL_IFS_CW_MAX_S        10
        !           415: #define        AR5K_AR5211_DCU_LCL_IFS_AIFS            0x0ff00000
        !           416: #define        AR5K_AR5211_DCU_LCL_IFS_AIFS_S          20
        !           417:
        !           418: /*
        !           419:  * DCU retry limit registers
        !           420:  */
        !           421: #define AR5K_AR5211_DCU_RETRY_LMT(_n)          AR5K_AR5211_DCU(_n, 0x1080)
        !           422: #define AR5K_AR5211_DCU_RETRY_LMT_SH_RETRY     0x0000000f
        !           423: #define AR5K_AR5211_DCU_RETRY_LMT_SH_RETRY_S   0
        !           424: #define AR5K_AR5211_DCU_RETRY_LMT_LG_RETRY     0x000000f0
        !           425: #define AR5K_AR5211_DCU_RETRY_LMT_LG_RETRY_S   4
        !           426: #define AR5K_AR5211_DCU_RETRY_LMT_SSH_RETRY    0x00003f00
        !           427: #define AR5K_AR5211_DCU_RETRY_LMT_SSH_RETRY_S  8
        !           428: #define AR5K_AR5211_DCU_RETRY_LMT_SLG_RETRY    0x000fc000
        !           429: #define AR5K_AR5211_DCU_RETRY_LMT_SLG_RETRY_S  14
        !           430:
        !           431: /*
        !           432:  * DCU channel time registers
        !           433:  */
        !           434: #define AR5K_AR5211_DCU_CHAN_TIME(_n)          AR5K_AR5211_DCU(_n, 0x10c0)
        !           435: #define        AR5K_AR5211_DCU_CHAN_TIME_ENABLE        0x00100000
        !           436: #define        AR5K_AR5211_DCU_CHAN_TIME_DUR           0x000fffff
        !           437: #define        AR5K_AR5211_DCU_CHAN_TIME_DUR_S         0
        !           438:
        !           439: /*
        !           440:  * DCU misc registers
        !           441:  */
        !           442: #define AR5K_AR5211_DCU_MISC(_n)               AR5K_AR5211_DCU(_n, 0x1100)
        !           443: #define        AR5K_AR5211_DCU_MISC_BACKOFF            0x000007ff
        !           444: #define AR5K_AR5211_DCU_MISC_BACKOFF_FRAG      0x00000200
        !           445: #define        AR5K_AR5211_DCU_MISC_HCFPOLL_ENABLE     0x00000800
        !           446: #define        AR5K_AR5211_DCU_MISC_BACKOFF_PERSIST    0x00001000
        !           447: #define        AR5K_AR5211_DCU_MISC_FRMPRFTCH_ENABLE   0x00002000
        !           448: #define        AR5K_AR5211_DCU_MISC_VIRTCOL            0x0000c000
        !           449: #define        AR5K_AR5211_DCU_MISC_VIRTCOL_NORMAL     0
        !           450: #define        AR5K_AR5211_DCU_MISC_VIRTCOL_MODIFIED   1
        !           451: #define        AR5K_AR5211_DCU_MISC_VIRTCOL_IGNORE     2
        !           452: #define        AR5K_AR5211_DCU_MISC_BCN_ENABLE         0x00010000
        !           453: #define        AR5K_AR5211_DCU_MISC_ARBLOCK_CTL        0x00060000
        !           454: #define        AR5K_AR5211_DCU_MISC_ARBLOCK_CTL_S      17
        !           455: #define        AR5K_AR5211_DCU_MISC_ARBLOCK_CTL_NONE   0
        !           456: #define        AR5K_AR5211_DCU_MISC_ARBLOCK_CTL_INTFRM 1
        !           457: #define        AR5K_AR5211_DCU_MISC_ARBLOCK_CTL_GLOBAL 2
        !           458: #define        AR5K_AR5211_DCU_MISC_ARBLOCK_IGNORE     0x00080000
        !           459: #define        AR5K_AR5211_DCU_MISC_SEQ_NUM_INCR_DIS   0x00100000
        !           460: #define        AR5K_AR5211_DCU_MISC_POST_FR_BKOFF_DIS  0x00200000
        !           461: #define        AR5K_AR5211_DCU_MISC_VIRT_COLL_POLICY   0x00400000
        !           462: #define        AR5K_AR5211_DCU_MISC_BLOWN_IFS_POLICY   0x00800000
        !           463: #define        AR5K_AR5211_DCU_MISC_SEQNUM_CTL         0x01000000
        !           464:
        !           465: /*
        !           466:  * DCU frame sequence number registers
        !           467:  */
        !           468: #define AR5K_AR5211_DCU_SEQNUM(_n)     AR5K_AR5211_DCU(_n, 0x1140)
        !           469: #define        AR5K_AR5211_DCU_SEQNUM_M        0x00000fff
        !           470: /*
        !           471:  * DCU global IFS SIFS registers
        !           472:  */
        !           473: #define AR5K_AR5211_DCU_GBL_IFS_SIFS   0x1030
        !           474: #define AR5K_AR5211_DCU_GBL_IFS_SIFS_M 0x0000ffff
        !           475:
        !           476: /*
        !           477:  * DCU global IFS slot interval registers
        !           478:  */
        !           479: #define AR5K_AR5211_DCU_GBL_IFS_SLOT   0x1070
        !           480: #define AR5K_AR5211_DCU_GBL_IFS_SLOT_M 0x0000ffff
        !           481:
        !           482: /*
        !           483:  * DCU global IFS EIFS registers
        !           484:  */
        !           485: #define AR5K_AR5211_DCU_GBL_IFS_EIFS   0x10b0
        !           486: #define AR5K_AR5211_DCU_GBL_IFS_EIFS_M 0x0000ffff
        !           487:
        !           488: /*
        !           489:  * DCU global IFS misc registers
        !           490:  */
        !           491: #define AR5K_AR5211_DCU_GBL_IFS_MISC                   0x10f0
        !           492: #define        AR5K_AR5211_DCU_GBL_IFS_MISC_LFSR_SLICE         0x00000007
        !           493: #define        AR5K_AR5211_DCU_GBL_IFS_MISC_TURBO_MODE         0x00000008
        !           494: #define        AR5K_AR5211_DCU_GBL_IFS_MISC_SIFS_DUR_USEC      0x000003f0
        !           495: #define        AR5K_AR5211_DCU_GBL_IFS_MISC_USEC_DUR           0x000ffc00
        !           496: #define        AR5K_AR5211_DCU_GBL_IFS_MISC_DCU_ARB_DELAY      0x00300000
        !           497:
        !           498: /*
        !           499:  * DCU frame prefetch control register
        !           500:  */
        !           501: #define AR5K_AR5211_DCU_FP             0x1230
        !           502:
        !           503: /*
        !           504:  * DCU transmit pause control/status register
        !           505:  */
        !           506: #define AR5K_AR5211_DCU_TXP            0x1270
        !           507: #define        AR5K_AR5211_DCU_TXP_M           0x000003ff
        !           508: #define        AR5K_AR5211_DCU_TXP_STATUS      0x00010000
        !           509:
        !           510: /*
        !           511:  * DCU transmit filter register
        !           512:  */
        !           513: #define AR5K_AR5211_DCU_TX_FILTER      0x1038
        !           514:
        !           515: /*
        !           516:  * DCU clear transmit filter register
        !           517:  */
        !           518: #define AR5K_AR5211_DCU_TX_FILTER_CLR  0x143c
        !           519:
        !           520: /*
        !           521:  * DCU set transmit filter register
        !           522:  */
        !           523: #define AR5K_AR5211_DCU_TX_FILTER_SET  0x147c
        !           524:
        !           525: /*
        !           526:  * DMA size definitions
        !           527:  */
        !           528: typedef enum {
        !           529:        AR5K_AR5211_DMASIZE_4B = 0,
        !           530:        AR5K_AR5211_DMASIZE_8B = 1,
        !           531:        AR5K_AR5211_DMASIZE_16B = 2,
        !           532:        AR5K_AR5211_DMASIZE_32B = 3,
        !           533:        AR5K_AR5211_DMASIZE_64B = 4,
        !           534:        AR5K_AR5211_DMASIZE_128B = 5,
        !           535:        AR5K_AR5211_DMASIZE_256B = 6,
        !           536:        AR5K_AR5211_DMASIZE_512B = 7
        !           537: } ar5k_ar5211_dmasize_t;
        !           538:
        !           539: /*
        !           540:  * Reset control register
        !           541:  */
        !           542: #define AR5K_AR5211_RC                 0x4000
        !           543: #define AR5K_AR5211_RC_PCU             0x00000001
        !           544: #define AR5K_AR5211_RC_BB              0x00000002
        !           545: #define AR5K_AR5211_RC_PCI             0x00000010
        !           546: #define AR5K_AR5211_RC_CHIP            (                               \
        !           547:        AR5K_AR5211_RC_PCU | AR5K_AR5211_RC_BB | AR5K_AR5211_RC_PCI     \
        !           548: )
        !           549:
        !           550: /*
        !           551:  * Sleep control register
        !           552:  */
        !           553: #define AR5K_AR5211_SCR                        0x4004
        !           554: #define AR5K_AR5211_SCR_SLDUR          0x0000ffff
        !           555: #define AR5K_AR5211_SCR_SLDUR_S                0
        !           556: #define AR5K_AR5211_SCR_SLE            0x00030000
        !           557: #define AR5K_AR5211_SCR_SLE_S          16
        !           558: #define AR5K_AR5211_SCR_SLE_WAKE       0x00000000
        !           559: #define AR5K_AR5211_SCR_SLE_SLP                0x00010000
        !           560: #define AR5K_AR5211_SCR_SLE_ALLOW      0x00020000
        !           561: #define AR5K_AR5211_SCR_SLE_UNITS      0x00000008
        !           562:
        !           563: /*
        !           564:  * Interrupt pending register
        !           565:  */
        !           566: #define AR5K_AR5211_INTPEND    0x4008
        !           567: #define AR5K_AR5211_INTPEND_M  0x00000001
        !           568:
        !           569: /*
        !           570:  * Sleep force register
        !           571:  */
        !           572: #define AR5K_AR5211_SFR                0x400c
        !           573: #define AR5K_AR5211_SFR_M      0x00000001
        !           574:
        !           575: /*
        !           576:  * PCI configuration register
        !           577:  */
        !           578: #define AR5K_AR5211_PCICFG             0x4010
        !           579: #define AR5K_AR5211_PCICFG_CLKRUNEN    0x00000004
        !           580: #define AR5K_AR5211_PCICFG_EESIZE      0x00000018
        !           581: #define AR5K_AR5211_PCICFG_EESIZE_S    3
        !           582: #define AR5K_AR5211_PCICFG_EESIZE_4K   0
        !           583: #define AR5K_AR5211_PCICFG_EESIZE_8K   1
        !           584: #define AR5K_AR5211_PCICFG_EESIZE_16K  2
        !           585: #define AR5K_AR5211_PCICFG_EESIZE_FAIL 3
        !           586: #define AR5K_AR5211_PCICFG_LED         0x00000060
        !           587: #define AR5K_AR5211_PCICFG_LED_NONE    0x00000000
        !           588: #define AR5K_AR5211_PCICFG_LED_PEND    0x00000020
        !           589: #define AR5K_AR5211_PCICFG_LED_ASSOC   0x00000040
        !           590: #define        AR5K_AR5211_PCICFG_BUS_SEL      0x00000380
        !           591: #define        AR5K_AR5211_PCICFG_CBEFIX_DIS   0x00000400
        !           592: #define AR5K_AR5211_PCICFG_SL_INTEN    0x00000800
        !           593: #define AR5K_AR5211_PCICFG_SL_INPEN    0x00002800
        !           594: #define AR5K_AR5211_PCICFG_SPWR_DN     0x00010000
        !           595: #define AR5K_AR5211_PCICFG_LEDMODE     0x000e0000
        !           596: #define AR5K_AR5211_PCICFG_LEDMODE_PROP        0x00000000
        !           597: #define AR5K_AR5211_PCICFG_LEDMODE_PROM        0x00020000
        !           598: #define AR5K_AR5211_PCICFG_LEDMODE_PWR 0x00040000
        !           599: #define AR5K_AR5211_PCICFG_LEDMODE_RAND        0x00060000
        !           600: #define AR5K_AR5211_PCICFG_LEDBLINK    0x00700000
        !           601: #define AR5K_AR5211_PCICFG_LEDBLINK_S  20
        !           602: #define AR5K_AR5211_PCICFG_LEDSLOW     0x00800000
        !           603: #define AR5K_AR5211_PCICFG_LEDSTATE                                    \
        !           604:        (AR5K_AR5211_PCICFG_LED | AR5K_AR5211_PCICFG_LEDMODE |          \
        !           605:        AR5K_AR5211_PCICFG_LEDBLINK | AR5K_AR5211_PCICFG_LEDSLOW)
        !           606:
        !           607: /*
        !           608:  * "General Purpose Input/Output" (GPIO) control register
        !           609:  */
        !           610: #define AR5K_AR5211_GPIOCR             0x4014
        !           611: #define AR5K_AR5211_GPIOCR_INT_ENA     0x00008000
        !           612: #define AR5K_AR5211_GPIOCR_INT_SELL    0x00000000
        !           613: #define AR5K_AR5211_GPIOCR_INT_SELH    0x00010000
        !           614: #define AR5K_AR5211_GPIOCR_NONE(n)     (0 << ((n) * 2))
        !           615: #define AR5K_AR5211_GPIOCR_OUT0(n)     (1 << ((n) * 2))
        !           616: #define AR5K_AR5211_GPIOCR_OUT1(n)     (2 << ((n) * 2))
        !           617: #define AR5K_AR5211_GPIOCR_ALL(n)      (3 << ((n) * 2))
        !           618: #define AR5K_AR5211_GPIOCR_INT_SEL(n)  ((n) << 12)
        !           619:
        !           620: #define AR5K_AR5211_NUM_GPIO   6
        !           621:
        !           622: /*
        !           623:  * "General Purpose Input/Output" (GPIO) data output register
        !           624:  */
        !           625: #define AR5K_AR5211_GPIODO     0x4018
        !           626:
        !           627: /*
        !           628:  * "General Purpose Input/Output" (GPIO) data input register
        !           629:  */
        !           630: #define AR5K_AR5211_GPIODI     0x401c
        !           631: #define AR5K_AR5211_GPIODI_M   0x0000002f
        !           632:
        !           633: /*
        !           634:  * Silicon revision register
        !           635:  */
        !           636: #define AR5K_AR5211_SREV               0x4020
        !           637: #define AR5K_AR5211_SREV_REV           0x0000000f
        !           638: #define AR5K_AR5211_SREV_REV_S         0
        !           639: #define AR5K_AR5211_SREV_VER           0x000000ff
        !           640: #define AR5K_AR5211_SREV_VER_S         4
        !           641:
        !           642: /*
        !           643:  * EEPROM access registers
        !           644:  */
        !           645: #define AR5K_AR5211_EEPROM_BASE                0x6000
        !           646: #define AR5K_AR5211_EEPROM_DATA                0x6004
        !           647: #define AR5K_AR5211_EEPROM_CMD         0x6008
        !           648: #define AR5K_AR5211_EEPROM_CMD_READ    0x00000001
        !           649: #define AR5K_AR5211_EEPROM_CMD_WRITE   0x00000002
        !           650: #define AR5K_AR5211_EEPROM_CMD_RESET   0x00000004
        !           651: #define AR5K_AR5211_EEPROM_STATUS      0x600c
        !           652: #define AR5K_AR5211_EEPROM_STAT_RDERR  0x00000001
        !           653: #define AR5K_AR5211_EEPROM_STAT_RDDONE 0x00000002
        !           654: #define AR5K_AR5211_EEPROM_STAT_WRERR  0x00000004
        !           655: #define AR5K_AR5211_EEPROM_STAT_WRDONE 0x00000008
        !           656: #define AR5K_AR5211_EEPROM_CFG         0x6010
        !           657:
        !           658: /*
        !           659:  * AR5211 EEPROM data registers
        !           660:  */
        !           661: #define        AR5K_AR5211_EEPROM_MAGIC                0x3d
        !           662: #define        AR5K_AR5211_EEPROM_MAGIC_VALUE          0x5aa5
        !           663: #define AR5K_AR5211_EEPROM_PROTECT             0x3f
        !           664: #define        AR5K_AR5211_EEPROM_PROTECT_128_191      0x80
        !           665: #define AR5K_AR5211_EEPROM_REG_DOMAIN          0xbf
        !           666: #define AR5K_AR5211_EEPROM_INFO_BASE           0xc0
        !           667: #define AR5K_AR5211_EEPROM_INFO_VERSION                                        \
        !           668:        (AR5K_AR5211_EEPROM_INFO_BASE + 1)
        !           669: #define        AR5K_AR5211_EEPROM_INFO_MAX                                     \
        !           670:        (0x400 - AR5K_AR5211_EEPROM_INFO_BASE)
        !           671:
        !           672: /*
        !           673:  * PCU registers
        !           674:  */
        !           675:
        !           676: #define AR5K_AR5211_PCU_MIN    0x8000
        !           677: #define AR5K_AR5211_PCU_MAX    0x8fff
        !           678:
        !           679: /*
        !           680:  * First station id register (MAC address in lower 32 bits)
        !           681:  */
        !           682: #define AR5K_AR5211_STA_ID0    0x8000
        !           683:
        !           684: /*
        !           685:  * Second station id register (MAC address in upper 16 bits)
        !           686:  */
        !           687: #define AR5K_AR5211_STA_ID1                    0x8004
        !           688: #define AR5K_AR5211_STA_ID1_AP                 0x00010000
        !           689: #define AR5K_AR5211_STA_ID1_ADHOC              0x00020000
        !           690: #define AR5K_AR5211_STA_ID1_PWR_SV             0x00040000
        !           691: #define AR5K_AR5211_STA_ID1_NO_KEYSRCH         0x00080000
        !           692: #define AR5K_AR5211_STA_ID1_PCF                        0x00100000
        !           693: #define AR5K_AR5211_STA_ID1_DEFAULT_ANTENNA    0x00200000
        !           694: #define AR5K_AR5211_STA_ID1_DESC_ANTENNA       0x00400000
        !           695: #define AR5K_AR5211_STA_ID1_RTS_DEFAULT_ANTENNA        0x00800000
        !           696: #define AR5K_AR5211_STA_ID1_ACKCTS_6MB         0x01000000
        !           697: #define AR5K_AR5211_STA_ID1_BASE_RATE_11B      0x02000000
        !           698:
        !           699: /*
        !           700:  * First BSSID register (MAC address, lower 32bits)
        !           701:  */
        !           702: #define AR5K_AR5211_BSS_ID0    0x8008
        !           703:
        !           704: /*
        !           705:  * Second BSSID register (MAC address in upper 16 bits)
        !           706:  *
        !           707:  * AID: Association ID
        !           708:  */
        !           709: #define AR5K_AR5211_BSS_ID1            0x800c
        !           710: #define AR5K_AR5211_BSS_ID1_AID                0xffff0000
        !           711: #define AR5K_AR5211_BSS_ID1_AID_S      16
        !           712:
        !           713: /*
        !           714:  * Backoff slot time register
        !           715:  */
        !           716: #define AR5K_AR5211_SLOT_TIME  0x8010
        !           717:
        !           718: /*
        !           719:  * ACK/CTS timeout register
        !           720:  */
        !           721: #define AR5K_AR5211_TIME_OUT           0x8014
        !           722: #define AR5K_AR5211_TIME_OUT_ACK       0x00001fff
        !           723: #define AR5K_AR5211_TIME_OUT_ACK_S     0
        !           724: #define AR5K_AR5211_TIME_OUT_CTS       0x1fff0000
        !           725: #define AR5K_AR5211_TIME_OUT_CTS_S     16
        !           726:
        !           727: /*
        !           728:  * RSSI threshold register
        !           729:  */
        !           730: #define AR5K_AR5211_RSSI_THR           0x8018
        !           731: #define AR5K_AR5211_RSSI_THR_M         0x000000ff
        !           732: #define AR5K_AR5211_RSSI_THR_BMISS     0x0000ff00
        !           733: #define AR5K_AR5211_RSSI_THR_BMISS_S   8
        !           734:
        !           735: /*
        !           736:  * Transmit latency register
        !           737:  */
        !           738: #define AR5K_AR5211_USEC               0x801c
        !           739: #define AR5K_AR5211_USEC_1             0x0000007f
        !           740: #define AR5K_AR5211_USEC_1_S           0
        !           741: #define AR5K_AR5211_USEC_32            0x00003f80
        !           742: #define AR5K_AR5211_USEC_32_S          7
        !           743: #define AR5K_AR5211_USEC_TX_LATENCY    0x007fc000
        !           744: #define AR5K_AR5211_USEC_TX_LATENCY_S  14
        !           745: #define AR5K_AR5211_USEC_RX_LATENCY    0x1f800000
        !           746: #define AR5K_AR5211_USEC_RX_LATENCY_S  23
        !           747: #define AR5K_AR5311_USEC_TX_LATENCY    0x000fc000
        !           748: #define AR5K_AR5311_USEC_TX_LATENCY_S  14
        !           749: #define AR5K_AR5311_USEC_RX_LATENCY    0x03f00000
        !           750: #define AR5K_AR5311_USEC_RX_LATENCY_S  20
        !           751:
        !           752: /*
        !           753:  * PCU beacon control register
        !           754:  */
        !           755: #define AR5K_AR5211_BEACON             0x8020
        !           756: #define AR5K_AR5211_BEACON_PERIOD      0x0000ffff
        !           757: #define AR5K_AR5211_BEACON_PERIOD_S    0
        !           758: #define AR5K_AR5211_BEACON_TIM         0x007f0000
        !           759: #define AR5K_AR5211_BEACON_TIM_S       16
        !           760: #define AR5K_AR5211_BEACON_ENABLE      0x00800000
        !           761: #define AR5K_AR5211_BEACON_RESET_TSF   0x01000000
        !           762:
        !           763: /*
        !           764:  * CFP period register
        !           765:  */
        !           766: #define AR5K_AR5211_CFP_PERIOD         0x8024
        !           767:
        !           768: /*
        !           769:  * Next beacon time register
        !           770:  */
        !           771: #define AR5K_AR5211_TIMER0             0x8028
        !           772:
        !           773: /*
        !           774:  * Next DMA beacon alert register
        !           775:  */
        !           776: #define AR5K_AR5211_TIMER1             0x802c
        !           777:
        !           778: /*
        !           779:  * Next software beacon alert register
        !           780:  */
        !           781: #define AR5K_AR5211_TIMER2             0x8030
        !           782:
        !           783: /*
        !           784:  * Next ATIM window time register
        !           785:  */
        !           786: #define AR5K_AR5211_TIMER3             0x8034
        !           787:
        !           788: /*
        !           789:  * CFP duration register
        !           790:  */
        !           791: #define AR5K_AR5211_CFP_DUR            0x8038
        !           792:
        !           793: /*
        !           794:  * Receive filter register
        !           795:  */
        !           796: #define AR5K_AR5211_RX_FILTER          0x803c
        !           797: #define AR5K_AR5211_RX_FILTER_UNICAST  0x00000001
        !           798: #define AR5K_AR5211_RX_FILTER_MULTICAST        0x00000002
        !           799: #define AR5K_AR5211_RX_FILTER_BROADCAST        0x00000004
        !           800: #define AR5K_AR5211_RX_FILTER_CONTROL  0x00000008
        !           801: #define AR5K_AR5211_RX_FILTER_BEACON   0x00000010
        !           802: #define AR5K_AR5211_RX_FILTER_PROMISC  0x00000020
        !           803: #define AR5K_AR5211_RX_FILTER_PHYERR   0x00000040
        !           804: #define AR5K_AR5211_RX_FILTER_RADARERR 0x00000080
        !           805:
        !           806: /*
        !           807:  * Multicast filter register (lower 32 bits)
        !           808:  */
        !           809: #define AR5K_AR5211_MCAST_FIL0 0x8040
        !           810:
        !           811: /*
        !           812:  * Multicast filter register (higher 16 bits)
        !           813:  */
        !           814: #define AR5K_AR5211_MCAST_FIL1 0x8044
        !           815:
        !           816: /*
        !           817:  * PCU control register
        !           818:  */
        !           819: #define AR5K_AR5211_DIAG_SW                    0x8048
        !           820: #define AR5K_AR5211_DIAG_SW_DIS_WEP_ACK                0x00000001
        !           821: #define AR5K_AR5211_DIAG_SW_DIS_ACK            0x00000002
        !           822: #define AR5K_AR5211_DIAG_SW_DIS_CTS            0x00000004
        !           823: #define AR5K_AR5211_DIAG_SW_DIS_ENC            0x00000008
        !           824: #define AR5K_AR5211_DIAG_SW_DIS_DEC            0x00000010
        !           825: #define AR5K_AR5211_DIAG_SW_DIS_RX             0x00000020
        !           826: #define AR5K_AR5211_DIAG_SW_LOOP_BACK          0x00000040
        !           827: #define AR5K_AR5211_DIAG_SW_CORR_FCS           0x00000080
        !           828: #define AR5K_AR5211_DIAG_SW_CHAN_INFO          0x00000100
        !           829: #define AR5K_AR5211_DIAG_SW_EN_SCRAM_SEED      0x00000200
        !           830: #define AR5K_AR5211_DIAG_SW_ECO_ENABLE         0x00000400
        !           831: #define AR5K_AR5211_DIAG_SW_SCRAM_SEED_M       0x0001fc00
        !           832: #define AR5K_AR5211_DIAG_SW_SCRAM_SEED_S       10
        !           833: #define AR5K_AR5211_DIAG_SW_FRAME_NV0          0x00020000
        !           834: #define AR5K_AR5211_DIAG_SW_OBSPT_M            0x000c0000
        !           835: #define AR5K_AR5211_DIAG_SW_OBSPT_S            18
        !           836:
        !           837: /*
        !           838:  * TSF (clock) register (lower 32 bits)
        !           839:  */
        !           840: #define AR5K_AR5211_TSF_L32    0x804c
        !           841:
        !           842: /*
        !           843:  * TSF (clock) register (higher 32 bits)
        !           844:  */
        !           845: #define AR5K_AR5211_TSF_U32    0x8050
        !           846:
        !           847: /*
        !           848:  * ADDAC test register
        !           849:  */
        !           850: #define AR5K_AR5211_ADDAC_TEST 0x8054
        !           851:
        !           852: /*
        !           853:  * Default antenna register
        !           854:  */
        !           855: #define AR5K_AR5211_DEFAULT_ANTENNA    0x8058
        !           856:
        !           857: /*
        !           858:  * Last beacon timestamp register
        !           859:  */
        !           860: #define AR5K_AR5211_LAST_TSTP  0x8080
        !           861:
        !           862: /*
        !           863:  * NAV register (current)
        !           864:  */
        !           865: #define AR5K_AR5211_NAV                0x8084
        !           866:
        !           867: /*
        !           868:  * RTS success register
        !           869:  */
        !           870: #define AR5K_AR5211_RTS_OK     0x8088
        !           871:
        !           872: /*
        !           873:  * RTS failure register
        !           874:  */
        !           875: #define AR5K_AR5211_RTS_FAIL   0x808c
        !           876:
        !           877: /*
        !           878:  * ACK failure register
        !           879:  */
        !           880: #define AR5K_AR5211_ACK_FAIL   0x8090
        !           881:
        !           882: /*
        !           883:  * FCS failure register
        !           884:  */
        !           885: #define AR5K_AR5211_FCS_FAIL   0x8094
        !           886:
        !           887: /*
        !           888:  * Beacon count register
        !           889:  */
        !           890: #define AR5K_AR5211_BEACON_CNT 0x8098
        !           891:
        !           892: /*
        !           893:  * Key table (WEP) register
        !           894:  */
        !           895: #define AR5K_AR5211_KEYTABLE_0         0x8800
        !           896: #define AR5K_AR5211_KEYTABLE(n)                (AR5K_AR5211_KEYTABLE_0 + ((n) * 32))
        !           897: #define AR5K_AR5211_KEYTABLE_OFF(_n, x)        (AR5K_AR5211_KEYTABLE(_n) + (x << 2))
        !           898: #define AR5K_AR5211_KEYTABLE_TYPE(_n)  AR5K_AR5211_KEYTABLE_OFF(_n, 5)
        !           899: #define AR5K_AR5211_KEYTABLE_TYPE_40   0x00000000
        !           900: #define AR5K_AR5211_KEYTABLE_TYPE_104  0x00000001
        !           901: #define AR5K_AR5211_KEYTABLE_TYPE_128  0x00000003
        !           902: #define AR5K_AR5211_KEYTABLE_TYPE_AES  0x00000005
        !           903: #define AR5K_AR5211_KEYTABLE_TYPE_NULL 0x00000007
        !           904: #define AR5K_AR5211_KEYTABLE_MAC0(_n)  AR5K_AR5211_KEYTABLE_OFF(_n, 6)
        !           905: #define AR5K_AR5211_KEYTABLE_MAC1(_n)  AR5K_AR5211_KEYTABLE_OFF(_n, 7)
        !           906: #define AR5K_AR5211_KEYTABLE_VALID     0x00008000
        !           907:
        !           908: #define AR5K_AR5211_KEYTABLE_SIZE      128
        !           909: #define AR5K_AR5211_KEYCACHE_SIZE      8
        !           910:
        !           911: /*
        !           912:  * PHY register
        !           913:  */
        !           914: #define        AR5K_AR5211_PHY(_n)             (0x9800 + ((_n) << 2))
        !           915: #define AR5K_AR5211_PHY_SHIFT_2GHZ     0x00004007
        !           916: #define AR5K_AR5211_PHY_SHIFT_5GHZ     0x00000007
        !           917:
        !           918: /*
        !           919:  * PHY turbo mode register
        !           920:  */
        !           921: #define        AR5K_AR5211_PHY_TURBO           0x9804
        !           922: #define        AR5K_AR5211_PHY_TURBO_MODE      0x00000001
        !           923: #define        AR5K_AR5211_PHY_TURBO_SHORT     0x00000002
        !           924:
        !           925: /*
        !           926:  * PHY agility command register
        !           927:  */
        !           928: #define        AR5K_AR5211_PHY_AGC             0x9808
        !           929: #define        AR5K_AR5211_PHY_AGC_DISABLE     0x08000000
        !           930:
        !           931: /*
        !           932:  * PHY chip revision register
        !           933:  */
        !           934: #define        AR5K_AR5211_PHY_CHIP_ID         0x9818
        !           935:
        !           936: /*
        !           937:  * PHY activation register
        !           938:  */
        !           939: #define        AR5K_AR5211_PHY_ACTIVE          0x981c
        !           940: #define        AR5K_AR5211_PHY_ENABLE          0x00000001
        !           941: #define        AR5K_AR5211_PHY_DISABLE         0x00000002
        !           942:
        !           943: /*
        !           944:  * PHY agility control register
        !           945:  */
        !           946: #define        AR5K_AR5211_PHY_AGCCTL          0x9860
        !           947: #define        AR5K_AR5211_PHY_AGCCTL_CAL      0x00000001
        !           948: #define        AR5K_AR5211_PHY_AGCCTL_NF       0x00000002
        !           949:
        !           950: /*
        !           951:  * PHY noise floor status register
        !           952:  */
        !           953: #define AR5K_AR5211_PHY_NF             0x9864
        !           954: #define AR5K_AR5211_PHY_NF_M           0x000001ff
        !           955: #define AR5K_AR5211_PHY_NF_ACTIVE      0x00000100
        !           956: #define AR5K_AR5211_PHY_NF_RVAL(_n)    (((_n) >> 19) & AR5K_AR5211_PHY_NF_M)
        !           957: #define AR5K_AR5211_PHY_NF_AVAL(_n)    (-((_n) ^ AR5K_AR5211_PHY_NF_M) + 1)
        !           958: #define AR5K_AR5211_PHY_NF_SVAL(_n)    (((_n) & AR5K_AR5211_PHY_NF_M) | (1 << 9))
        !           959:
        !           960: /*
        !           961:  * PHY PLL control register
        !           962:  */
        !           963: #define        AR5K_AR5211_PHY_PLL             0x987c
        !           964: #define        AR5K_AR5211_PHY_PLL_20MHZ       0x13
        !           965: #define        AR5K_AR5211_PHY_PLL_40MHZ       0x18
        !           966: #define        AR5K_AR5211_PHY_PLL_44MHZ       0x19
        !           967:
        !           968: /*
        !           969:  * PHY receiver delay register
        !           970:  */
        !           971: #define        AR5K_AR5211_PHY_RX_DELAY        0x9914
        !           972: #define        AR5K_AR5211_PHY_RX_DELAY_M      0x00003fff
        !           973:
        !           974: /*
        !           975:  * PHY timing IQ control register
        !           976:  */
        !           977: #define        AR5K_AR5211_PHY_IQ                      0x9920
        !           978: #define        AR5K_AR5211_PHY_IQ_CORR_Q_Q_COFF        0x0000001f
        !           979: #define        AR5K_AR5211_PHY_IQ_CORR_Q_I_COFF        0x000007e0
        !           980: #define        AR5K_AR5211_PHY_IQ_CORR_Q_I_COFF_S      5
        !           981: #define        AR5K_AR5211_PHY_IQ_CORR_ENABLE          0x00000800
        !           982: #define        AR5K_AR5211_PHY_IQ_CAL_NUM_LOG_MAX      0x0000f000
        !           983: #define        AR5K_AR5211_PHY_IQ_CAL_NUM_LOG_MAX_S    12
        !           984: #define        AR5K_AR5211_PHY_IQ_RUN                  0x00010000
        !           985:
        !           986: /*
        !           987:  * PHY PAPD probe register
        !           988:  */
        !           989: #define        AR5K_AR5211_PHY_PAPD_PROBE              0x9930
        !           990: #define        AR5K_AR5211_PHY_PAPD_PROBE_TX_PWR       0x00007e00
        !           991: #define        AR5K_AR5211_PHY_PAPD_PROBE_TX_PWR_S     9
        !           992: #define        AR5K_AR5211_PHY_PAPD_PROBE_TX_NEXT      0x00008000
        !           993: #define        AR5K_AR5211_PHY_PAPD_PROBE_GAINF        0xfe000000
        !           994: #define        AR5K_AR5211_PHY_PAPD_PROBE_GAINF_S      25
        !           995:
        !           996: /*
        !           997:  * PHY frame control register
        !           998:  */
        !           999: #define        AR5K_AR5211_PHY_FC              0x9944
        !          1000: #define        AR5K_AR5211_PHY_FC_TX_CLIP      0x00000038
        !          1001: #define        AR5K_AR5211_PHY_FC_TX_CLIP_S    3
        !          1002:
        !          1003: /*
        !          1004:  * PHY radar detection enable register
        !          1005:  */
        !          1006: #define        AR5K_AR5211_PHY_RADAR           0x9954
        !          1007: #define        AR5K_AR5211_PHY_RADAR_DISABLE   0x00000000
        !          1008: #define        AR5K_AR5211_PHY_RADAR_ENABLE    0x00000001
        !          1009:
        !          1010: /*
        !          1011:  * PHY antenna switch table registers
        !          1012:  */
        !          1013: #define AR5K_AR5211_PHY_ANT_SWITCH_TABLE_0     0x9960
        !          1014: #define AR5K_AR5211_PHY_ANT_SWITCH_TABLE_1     0x9964
        !          1015:
        !          1016: /*
        !          1017:  * PHY timing IQ calibration result register
        !          1018:  */
        !          1019: #define        AR5K_AR5211_PHY_IQRES_CAL_PWR_I 0x9c10
        !          1020: #define        AR5K_AR5211_PHY_IQRES_CAL_PWR_Q 0x9c14
        !          1021: #define        AR5K_AR5211_PHY_IQRES_CAL_CORR  0x9c18
        !          1022:
        !          1023: /*
        !          1024:  * PHY current RSSI register
        !          1025:  */
        !          1026: #define        AR5K_AR5211_PHY_CURRENT_RSSI    0x9c1c
        !          1027:
        !          1028: /*
        !          1029:  * PHY mode register
        !          1030:  */
        !          1031: #define        AR5K_AR5211_PHY_MODE            0xa200
        !          1032: #define        AR5K_AR5211_PHY_MODE_MOD        0x00000001
        !          1033: #define AR5K_AR5211_PHY_MODE_MOD_OFDM  0
        !          1034: #define AR5K_AR5211_PHY_MODE_MOD_CCK   1
        !          1035: #define AR5K_AR5211_PHY_MODE_FREQ      0x00000002
        !          1036: #define        AR5K_AR5211_PHY_MODE_FREQ_5GHZ  0
        !          1037: #define        AR5K_AR5211_PHY_MODE_FREQ_2GHZ  2
        !          1038:
        !          1039: /*
        !          1040:  * Misc PHY/radio registers
        !          1041:  */
        !          1042: #define AR5K_AR5211_BB_GAIN(_n)                (0x9b00 + ((_n) << 2))
        !          1043: #define AR5K_AR5211_RF_GAIN(_n)                (0x9a00 + ((_n) << 2))
        !          1044:
        !          1045: #endif

CVSweb