[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

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