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

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

1.1       nbrk        1: /*     $OpenBSD: ar5212reg.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:  * (AR5212/AR5311).
                     22:  */
                     23:
                     24: #ifndef _AR5K_AR5212_REG_H
                     25: #define _AR5K_AR5212_REG_H
                     26:
                     27: /*
                     28:  * Command register
                     29:  */
                     30: #define AR5K_AR5212_CR         0x0008
                     31: #define AR5K_AR5212_CR_RXE     0x00000004
                     32: #define AR5K_AR5212_CR_RXD     0x00000020
                     33: #define AR5K_AR5212_CR_SWI     0x00000040
                     34:
                     35: /*
                     36:  * Receive queue descriptor pointer register
                     37:  */
                     38: #define AR5K_AR5212_RXDP       0x000c
                     39:
                     40: /*
                     41:  * Configuration and status register
                     42:  */
                     43: #define AR5K_AR5212_CFG                        0x0014
                     44: #define AR5K_AR5212_CFG_SWTD           0x00000001
                     45: #define AR5K_AR5212_CFG_SWTB           0x00000002
                     46: #define AR5K_AR5212_CFG_SWRD           0x00000004
                     47: #define AR5K_AR5212_CFG_SWRB           0x00000008
                     48: #define AR5K_AR5212_CFG_SWRG           0x00000010
                     49: #define AR5K_AR5212_CFG_ADHOC          0x00000020
                     50: #define AR5K_AR5212_CFG_PHY_OK         0x00000100
                     51: #define AR5K_AR5212_CFG_EEBS           0x00000200
                     52: #define        AR5K_AR5212_CFG_CLKGD           0x00000400
                     53: #define        AR5K_AR5212_CFG_PCI_THRES       0x00060000
                     54: #define        AR5K_AR5212_CFG_PCI_THRES_S     17
                     55:
                     56: /*
                     57:  * Interrupt enable register
                     58:  */
                     59: #define AR5K_AR5212_IER                0x0024
                     60: #define AR5K_AR5212_IER_DISABLE        0x00000000
                     61: #define AR5K_AR5212_IER_ENABLE 0x00000001
                     62:
                     63: /*
                     64:  * Transmit configuration register
                     65:  */
                     66: #define AR5K_AR5212_TXCFG              0x0030
                     67: #define AR5K_AR5212_TXCFG_SDMAMR       0x00000007
                     68: #define AR5K_AR5212_TXCFG_SDMAMR_S     0
                     69: #define AR5K_AR5212_TXCFG_B_MODE       0x00000008
                     70: #define AR5K_AR5212_TXCFG_TXFULL       0x000003f0
                     71: #define AR5K_AR5212_TXCFG_TXFULL_S     4
                     72: #define AR5K_AR5212_TXCFG_TXFULL_0B    0x00000000
                     73: #define AR5K_AR5212_TXCFG_TXFULL_64B   0x00000010
                     74: #define AR5K_AR5212_TXCFG_TXFULL_128B  0x00000020
                     75: #define AR5K_AR5212_TXCFG_TXFULL_192B  0x00000030
                     76: #define AR5K_AR5212_TXCFG_TXFULL_256B  0x00000040
                     77: #define AR5K_AR5212_TXCFG_TXCONT_ENABLE        0x00000080
                     78: #define AR5K_AR5212_TXCFG_DMASIZE      0x00000100
                     79: #define AR5K_AR5212_TXCFG_JUMBO_TXE    0x00000400
                     80: #define AR5K_AR5212_TXCFG_RTSRND       0x00001000
                     81: #define AR5K_AR5212_TXCFG_FRMPAD_DIS   0x00002000
                     82: #define AR5K_AR5212_TXCFG_RDY_DIS      0x00004000
                     83:
                     84: /*
                     85:  * Receive configuration register
                     86:  */
                     87: #define AR5K_AR5212_RXCFG                      0x0034
                     88: #define AR5K_AR5212_RXCFG_SDMAMW               0x00000007
                     89: #define AR5K_AR5212_RXCFG_SDMAMW_S             0
                     90: #define        AR5K_AR5311_RXCFG_DEFAULT_ANTENNA       0x00000008
                     91: #define AR5K_AR5212_RXCFG_ZLFDMA               0x00000010
                     92: #define AR5K_AR5212_RXCFG_JUMBO_RXE            0x00000020
                     93: #define AR5K_AR5212_RXCFG_JUMBO_WRAP           0x00000040
                     94:
                     95: /*
                     96:  * MIB control register
                     97:  */
                     98: #define AR5K_AR5212_MIBC               0x0040
                     99: #define AR5K_AR5212_MIBC_COW           0x00000001
                    100: #define AR5K_AR5212_MIBC_FMC           0x00000002
                    101: #define AR5K_AR5212_MIBC_CMC           0x00000004
                    102: #define AR5K_AR5212_MIBC_MCS           0x00000008
                    103:
                    104: /*
                    105:  * Timeout prescale register
                    106:  */
                    107: #define AR5K_AR5212_TOPS               0x0044
                    108: #define        AR5K_AR5212_TOPS_M              0x0000ffff
                    109:
                    110: /*
                    111:  * Receive timeout register (no frame received)
                    112:  */
                    113: #define AR5K_AR5212_RXNOFRM            0x0048
                    114: #define        AR5K_AR5212_RXNOFRM_M           0x000003ff
                    115:
                    116: /*
                    117:  * Transmit timeout register (no frame sent)
                    118:  */
                    119: #define AR5K_AR5212_TXNOFRM            0x004c
                    120: #define        AR5K_AR5212_TXNOFRM_M           0x000003ff
                    121: #define        AR5K_AR5212_TXNOFRM_QCU         0x000ffc00
                    122:
                    123: /*
                    124:  * Receive frame gap timeout register
                    125:  */
                    126: #define AR5K_AR5212_RPGTO              0x0050
                    127: #define AR5K_AR5212_RPGTO_M            0x000003ff
                    128:
                    129: /*
                    130:  * Receive frame count limit register
                    131:  */
                    132: #define AR5K_AR5212_RFCNT              0x0054
                    133: #define AR5K_AR5212_RFCNT_M            0x0000001f
                    134:
                    135: /*
                    136:  * Misc settings register
                    137:  */
                    138: #define AR5K_AR5212_MISC               0x0058
                    139: #define        AR5K_AR5212_MISC_DMA_OBS_M      0x000001e0
                    140: #define        AR5K_AR5212_MISC_DMA_OBS_S      5
                    141: #define        AR5K_AR5212_MISC_MISC_OBS_M     0x00000e00
                    142: #define        AR5K_AR5212_MISC_MISC_OBS_S     9
                    143: #define        AR5K_AR5212_MISC_MAC_OBS_LSB_M  0x00007000
                    144: #define        AR5K_AR5212_MISC_MAC_OBS_LSB_S  12
                    145: #define        AR5K_AR5212_MISC_MAC_OBS_MSB_M  0x00038000
                    146: #define        AR5K_AR5212_MISC_MAC_OBS_MSB_S  15
                    147:
                    148: /*
                    149:  * Primary interrupt status register
                    150:  */
                    151: #define AR5K_AR5212_PISR               0x0080
                    152: #define AR5K_AR5212_PISR_RXOK          0x00000001
                    153: #define AR5K_AR5212_PISR_RXDESC                0x00000002
                    154: #define AR5K_AR5212_PISR_RXERR         0x00000004
                    155: #define AR5K_AR5212_PISR_RXNOFRM       0x00000008
                    156: #define AR5K_AR5212_PISR_RXEOL         0x00000010
                    157: #define AR5K_AR5212_PISR_RXORN         0x00000020
                    158: #define AR5K_AR5212_PISR_TXOK          0x00000040
                    159: #define AR5K_AR5212_PISR_TXDESC                0x00000080
                    160: #define AR5K_AR5212_PISR_TXERR         0x00000100
                    161: #define AR5K_AR5212_PISR_TXNOFRM       0x00000200
                    162: #define AR5K_AR5212_PISR_TXEOL         0x00000400
                    163: #define AR5K_AR5212_PISR_TXURN         0x00000800
                    164: #define AR5K_AR5212_PISR_MIB           0x00001000
                    165: #define AR5K_AR5212_PISR_SWI           0x00002000
                    166: #define AR5K_AR5212_PISR_RXPHY         0x00004000
                    167: #define AR5K_AR5212_PISR_RXKCM         0x00008000
                    168: #define AR5K_AR5212_PISR_SWBA          0x00010000
                    169: #define AR5K_AR5212_PISR_BRSSI         0x00020000
                    170: #define AR5K_AR5212_PISR_BMISS         0x00040000
                    171: #define AR5K_AR5212_PISR_HIUERR                0x00080000
                    172: #define AR5K_AR5212_PISR_BNR           0x00100000
                    173: #define AR5K_AR5212_PISR_RXCHIRP       0x00200000
                    174: #define AR5K_AR5212_PISR_TIM           0x00800000
                    175: #define AR5K_AR5212_PISR_BCNMISC       0x00800000
                    176: #define AR5K_AR5212_PISR_GPIO          0x01000000
                    177: #define AR5K_AR5212_PISR_QCBRORN       0x02000000
                    178: #define AR5K_AR5212_PISR_QCBRURN       0x04000000
                    179: #define AR5K_AR5212_PISR_QTRIG         0x08000000
                    180:
                    181: /*
                    182:  * Secondary interrupt status registers (0 - 4)
                    183:  */
                    184: #define AR5K_AR5212_SISR0              0x0084
                    185: #define AR5K_AR5212_SISR0_QCU_TXOK     0x000003ff
                    186: #define AR5K_AR5212_SISR0_QCU_TXDESC   0x03ff0000
                    187:
                    188: #define AR5K_AR5212_SISR1              0x0088
                    189: #define AR5K_AR5212_SISR1_QCU_TXERR    0x000003ff
                    190: #define AR5K_AR5212_SISR1_QCU_TXEOL    0x03ff0000
                    191:
                    192: #define AR5K_AR5212_SISR2              0x008c
                    193: #define AR5K_AR5212_SISR2_QCU_TXURN    0x000003ff
                    194: #define        AR5K_AR5212_SISR2_MCABT         0x00100000
                    195: #define        AR5K_AR5212_SISR2_SSERR         0x00200000
                    196: #define        AR5K_AR5212_SISR2_DPERR         0x00400000
                    197: #define        AR5K_AR5212_SISR2_TIM           0x01000000
                    198: #define        AR5K_AR5212_SISR2_CAB_END       0x02000000
                    199: #define        AR5K_AR5212_SISR2_DTIM_SYNC     0x04000000
                    200: #define        AR5K_AR5212_SISR2_BCN_TIMEOUT   0x08000000
                    201: #define        AR5K_AR5212_SISR2_CAB_TIMEOUT   0x10000000
                    202: #define        AR5K_AR5212_SISR2_DTIM          0x20000000
                    203:
                    204: #define AR5K_AR5212_SISR3              0x0090
                    205: #define AR5K_AR5212_SISR3_QCBRORN      0x000003ff
                    206: #define AR5K_AR5212_SISR3_QCBRURN      0x03ff0000
                    207:
                    208: #define AR5K_AR5212_SISR4              0x0094
                    209: #define AR5K_AR5212_SISR4_QTRIG                0x000003ff
                    210:
                    211: /*
                    212:  * Shadow read-and-clear interrupt status registers
                    213:  */
                    214: #define AR5K_AR5212_RAC_PISR   0x00c0
                    215: #define AR5K_AR5212_RAC_SISR0  0x00c4
                    216: #define AR5K_AR5212_RAC_SISR1  0x00c8
                    217: #define AR5K_AR5212_RAC_SISR2  0x00cc
                    218: #define AR5K_AR5212_RAC_SISR3  0c00d0
                    219: #define AR5K_AR5212_RAC_SISR4  0c00d4
                    220:
                    221: /*
                    222:  * Primary interrupt mask register
                    223:  */
                    224: #define AR5K_AR5212_PIMR               0x00a0
                    225: #define AR5K_AR5212_PIMR_RXOK          0x00000001
                    226: #define AR5K_AR5212_PIMR_RXDESC                0x00000002
                    227: #define AR5K_AR5212_PIMR_RXERR         0x00000004
                    228: #define AR5K_AR5212_PIMR_RXNOFRM       0x00000008
                    229: #define AR5K_AR5212_PIMR_RXEOL         0x00000010
                    230: #define AR5K_AR5212_PIMR_RXORN         0x00000020
                    231: #define AR5K_AR5212_PIMR_TXOK          0x00000040
                    232: #define AR5K_AR5212_PIMR_TXDESC                0x00000080
                    233: #define AR5K_AR5212_PIMR_TXERR         0x00000100
                    234: #define AR5K_AR5212_PIMR_TXNOFRM       0x00000200
                    235: #define AR5K_AR5212_PIMR_TXEOL         0x00000400
                    236: #define AR5K_AR5212_PIMR_TXURN         0x00000800
                    237: #define AR5K_AR5212_PIMR_MIB           0x00001000
                    238: #define AR5K_AR5212_PIMR_SWI           0x00002000
                    239: #define AR5K_AR5212_PIMR_RXPHY         0x00004000
                    240: #define AR5K_AR5212_PIMR_RXKCM         0x00008000
                    241: #define AR5K_AR5212_PIMR_SWBA          0x00010000
                    242: #define AR5K_AR5212_PIMR_BRSSI         0x00020000
                    243: #define AR5K_AR5212_PIMR_BMISS         0x00040000
                    244: #define AR5K_AR5212_PIMR_HIUERR                0x00080000
                    245: #define AR5K_AR5212_PIMR_BNR           0x00100000
                    246: #define AR5K_AR5212_PIMR_RXCHIRP       0x00200000
                    247: #define AR5K_AR5212_PIMR_TIM           0x00800000
                    248: #define AR5K_AR5212_PIMR_BCNMISC       0x00800000
                    249: #define AR5K_AR5212_PIMR_GPIO          0x01000000
                    250: #define AR5K_AR5212_PIMR_QCBRORN       0x02000000
                    251: #define AR5K_AR5212_PIMR_QCBRURN       0x04000000
                    252: #define AR5K_AR5212_PIMR_QTRIG         0x08000000
                    253:
                    254: /*
                    255:  * Secondary interrupt mask registers (0 - 4)
                    256:  */
                    257: #define AR5K_AR5212_SIMR0              0x00a4
                    258: #define AR5K_AR5212_SIMR0_QCU_TXOK     0x000003ff
                    259: #define AR5K_AR5212_SIMR0_QCU_TXOK_S   0
                    260: #define AR5K_AR5212_SIMR0_QCU_TXDESC   0x03ff0000
                    261: #define AR5K_AR5212_SIMR0_QCU_TXDESC_S 16
                    262:
                    263: #define AR5K_AR5212_SIMR1              0x00a8
                    264: #define AR5K_AR5212_SIMR1_QCU_TXERR    0x000003ff
                    265: #define AR5K_AR5212_SIMR1_QCU_TXERR_S  0
                    266: #define AR5K_AR5212_SIMR1_QCU_TXEOL    0x03ff0000
                    267: #define AR5K_AR5212_SIMR1_QCU_TXEOL_S  16
                    268:
                    269: #define AR5K_AR5212_SIMR2              0x00ac
                    270: #define AR5K_AR5212_SIMR2_QCU_TXURN    0x000003ff
                    271: #define AR5K_AR5212_SIMR2_QCU_TXURN_S  0
                    272: #define        AR5K_AR5212_SIMR2_MCABT         0x00100000
                    273: #define        AR5K_AR5212_SIMR2_SSERR         0x00200000
                    274: #define        AR5K_AR5212_SIMR2_DPERR         0x00400000
                    275: #define        AR5K_AR5212_SIMR2_TIM           0x01000000
                    276: #define        AR5K_AR5212_SIMR2_CAB_END       0x02000000
                    277: #define        AR5K_AR5212_SIMR2_DTIM_SYNC     0x04000000
                    278: #define        AR5K_AR5212_SIMR2_BCN_TIMEOUT   0x08000000
                    279: #define        AR5K_AR5212_SIMR2_CAB_TIMEOUT   0x10000000
                    280: #define        AR5K_AR5212_SIMR2_DTIM          0x20000000
                    281:
                    282: #define AR5K_AR5212_SIMR3              0x00b0
                    283: #define AR5K_AR5212_SIMR3_QCBRORN      0x000003ff
                    284: #define AR5K_AR5212_SIMR3_QCBRORN_S    0
                    285: #define AR5K_AR5212_SIMR3_QCBRURN      0x03ff0000
                    286: #define AR5K_AR5212_SIMR3_QCBRURN_S    16
                    287:
                    288: #define AR5K_AR5212_SIMR4              0x00b4
                    289: #define AR5K_AR5212_SIMR4_QTRIG                0x000003ff
                    290: #define AR5K_AR5212_SIMR4_QTRIG_S      0
                    291:
                    292: /*
                    293:  * Decompression mask registers
                    294:  */
                    295: #define AR5K_AR5212_DCM_ADDR   0x0400
                    296: #define AR5K_AR5212_DCM_DATA   0x0404
                    297:
                    298: /*
                    299:  * Decompression configuration registers
                    300:  */
                    301: #define AR5K_AR5212_DCCFG      0x0420
                    302:
                    303: /*
                    304:  * Compression configuration registers
                    305:  */
                    306: #define AR5K_AR5212_CCFG       0x0600
                    307: #define AR5K_AR5212_CCFG_CUP   0x0604
                    308:
                    309: /*
                    310:  * Compression performance counter registers
                    311:  */
                    312: #define AR5K_AR5212_CPC0       0x0610
                    313: #define AR5K_AR5212_CPC1       0x0614
                    314: #define AR5K_AR5212_CPC2       0x0618
                    315: #define AR5K_AR5212_CPC3       0x061c
                    316: #define AR5K_AR5212_CPCORN     0x0620
                    317:
                    318: /*
                    319:  * Queue control unit (QCU) registers (0 - 9)
                    320:  */
                    321: #define        AR5K_AR5212_QCU(_n, _a)         (((_n) << 2) + _a)
                    322:
                    323: /*
                    324:  * QCU Transmit descriptor pointer registers
                    325:  */
                    326: #define AR5K_AR5212_QCU_TXDP(_n)       AR5K_AR5212_QCU(_n, 0x0800)
                    327:
                    328: /*
                    329:  * QCU Transmit enable register
                    330:  */
                    331: #define AR5K_AR5212_QCU_TXE            0x0840
                    332:
                    333: /*
                    334:  * QCU Transmit disable register
                    335:  */
                    336: #define AR5K_AR5212_QCU_TXD            0x0880
                    337:
                    338: /*
                    339:  * QCU CBR configuration registers
                    340:  */
                    341: #define        AR5K_AR5212_QCU_CBRCFG(_n)              AR5K_AR5212_QCU(_n, 0x08c0)
                    342: #define        AR5K_AR5212_QCU_CBRCFG_INTVAL           0x00ffffff
                    343: #define AR5K_AR5212_QCU_CBRCFG_INTVAL_S                0
                    344: #define        AR5K_AR5212_QCU_CBRCFG_ORN_THRES        0xff000000
                    345: #define AR5K_AR5212_QCU_CBRCFG_ORN_THRES_S     24
                    346:
                    347: /*
                    348:  * QCU Ready time configuration registers
                    349:  */
                    350: #define        AR5K_AR5212_QCU_RDYTIMECFG(_n)          AR5K_AR5212_QCU(_n, 0x0900)
                    351: #define        AR5K_AR5212_QCU_RDYTIMECFG_INTVAL       0x00ffffff
                    352: #define AR5K_AR5212_QCU_RDYTIMECFG_INTVAL_S    0
                    353: #define        AR5K_AR5212_QCU_RDYTIMECFG_DURATION     0x00ffffff
                    354: #define        AR5K_AR5212_QCU_RDYTIMECFG_ENABLE       0x01000000
                    355:
                    356: /*
                    357:  * QCU one shot arm set registers
                    358:  */
                    359: #define        AR5K_AR5212_QCU_ONESHOTARMS(_n) AR5K_AR5212_QCU(_n, 0x0940)
                    360: #define        AR5K_AR5212_QCU_ONESHOTARMS_M   0x0000ffff
                    361:
                    362: /*
                    363:  * QCU one shot arm clear registers
                    364:  */
                    365: #define        AR5K_AR5212_QCU_ONESHOTARMC(_n) AR5K_AR5212_QCU(_n, 0x0980)
                    366: #define        AR5K_AR5212_QCU_ONESHOTARMC_M   0x0000ffff
                    367:
                    368: /*
                    369:  * QCU misc registers
                    370:  */
                    371: #define AR5K_AR5212_QCU_MISC(_n)               AR5K_AR5212_QCU(_n, 0x09c0)
                    372: #define        AR5K_AR5212_QCU_MISC_FRSHED_M           0x0000000f
                    373: #define        AR5K_AR5212_QCU_MISC_FRSHED_ASAP        0
                    374: #define        AR5K_AR5212_QCU_MISC_FRSHED_CBR         1
                    375: #define        AR5K_AR5212_QCU_MISC_FRSHED_DBA_GT      2
                    376: #define        AR5K_AR5212_QCU_MISC_FRSHED_TIM_GT      3
                    377: #define        AR5K_AR5212_QCU_MISC_FRSHED_BCN_SENT_GT 4
                    378: #define        AR5K_AR5212_QCU_MISC_ONESHOT_ENABLE     0x00000010
                    379: #define        AR5K_AR5212_QCU_MISC_CBREXP             0x00000020
                    380: #define        AR5K_AR5212_QCU_MISC_CBREXP_BCN         0x00000040
                    381: #define        AR5K_AR5212_QCU_MISC_BCN_ENABLE         0x00000080
                    382: #define        AR5K_AR5212_QCU_MISC_CBR_THRES_ENABLE   0x00000100
                    383: #define        AR5K_AR5212_QCU_MISC_TXE                0x00000200
                    384: #define        AR5K_AR5212_QCU_MISC_CBR                0x00000400
                    385: #define        AR5K_AR5212_QCU_MISC_DCU_EARLY          0x00000800
                    386:
                    387: /*
                    388:  * QCU status registers
                    389:  */
                    390: #define AR5K_AR5212_QCU_STS(_n)                AR5K_AR5212_QCU(_n, 0x0a00)
                    391: #define        AR5K_AR5212_QCU_STS_FRMPENDCNT  0x00000003
                    392: #define        AR5K_AR5212_QCU_STS_CBREXPCNT   0x0000ff00
                    393:
                    394: /*
                    395:  * QCU ready time shutdown register
                    396:  */
                    397: #define AR5K_AR5212_QCU_RDYTIMESHDN    0x0a40
                    398: #define AR5K_AR5212_QCU_RDYTIMESHDN_M  0x000003ff
                    399:
                    400: /*
                    401:  * QCU compression buffer base registers
                    402:  */
                    403: #define AR5K_AR5212_QCU_CBB_SELECT     0x0b00
                    404: #define AR5K_AR5212_QCU_CBB_ADDR       0x0b04
                    405:
                    406: /*
                    407:  * QCU compression buffer configuration register
                    408:  */
                    409: #define AR5K_AR5212_QCU_CBCFG  0x0b08
                    410:
                    411: /*
                    412:  * DCF control unit (DCU) registers (0 - 9)
                    413:  */
                    414: #define        AR5K_AR5212_DCU(_n, _a)         AR5K_AR5212_QCU(_n, _a)
                    415:
                    416: /*
                    417:  * DCU QCU mask registers
                    418:  */
                    419: #define AR5K_AR5212_DCU_QCUMASK(_n)    AR5K_AR5212_DCU(_n, 0x1000)
                    420: #define AR5K_AR5212_DCU_QCUMASK_M      0x000003ff
                    421:
                    422: /*
                    423:  * DCU local IFS settings register
                    424:  */
                    425: #define AR5K_AR5212_DCU_LCL_IFS(_n)            AR5K_AR5212_DCU(_n, 0x1040)
                    426: #define        AR5K_AR5212_DCU_LCL_IFS_CW_MIN          0x000003ff
                    427: #define        AR5K_AR5212_DCU_LCL_IFS_CW_MIN_S        0
                    428: #define        AR5K_AR5212_DCU_LCL_IFS_CW_MAX          0x000ffc00
                    429: #define        AR5K_AR5212_DCU_LCL_IFS_CW_MAX_S        10
                    430: #define        AR5K_AR5212_DCU_LCL_IFS_AIFS            0x0ff00000
                    431: #define        AR5K_AR5212_DCU_LCL_IFS_AIFS_S          20
                    432:
                    433: /*
                    434:  * DCU retry limit registers
                    435:  */
                    436: #define AR5K_AR5212_DCU_RETRY_LMT(_n)          AR5K_AR5212_DCU(_n, 0x1080)
                    437: #define AR5K_AR5212_DCU_RETRY_LMT_SH_RETRY     0x0000000f
                    438: #define AR5K_AR5212_DCU_RETRY_LMT_SH_RETRY_S   0
                    439: #define AR5K_AR5212_DCU_RETRY_LMT_LG_RETRY     0x000000f0
                    440: #define AR5K_AR5212_DCU_RETRY_LMT_LG_RETRY_S   4
                    441: #define AR5K_AR5212_DCU_RETRY_LMT_SSH_RETRY    0x00003f00
                    442: #define AR5K_AR5212_DCU_RETRY_LMT_SSH_RETRY_S  8
                    443: #define AR5K_AR5212_DCU_RETRY_LMT_SLG_RETRY    0x000fc000
                    444: #define AR5K_AR5212_DCU_RETRY_LMT_SLG_RETRY_S  14
                    445:
                    446: /*
                    447:  * DCU channel time registers
                    448:  */
                    449: #define AR5K_AR5212_DCU_CHAN_TIME(_n)          AR5K_AR5212_DCU(_n, 0x10c0)
                    450: #define        AR5K_AR5212_DCU_CHAN_TIME_DUR           0x000fffff
                    451: #define        AR5K_AR5212_DCU_CHAN_TIME_DUR_S         0
                    452: #define        AR5K_AR5212_DCU_CHAN_TIME_ENABLE        0x00100000
                    453:
                    454: /*
                    455:  * DCU misc registers
                    456:  */
                    457: #define AR5K_AR5212_DCU_MISC(_n)               AR5K_AR5212_DCU(_n, 0x1100)
                    458: #define        AR5K_AR5212_DCU_MISC_BACKOFF            0x000007ff
                    459: #define AR5K_AR5212_DCU_MISC_BACKOFF_FRAG      0x00000200
                    460: #define        AR5K_AR5212_DCU_MISC_HCFPOLL_ENABLE     0x00000800
                    461: #define        AR5K_AR5212_DCU_MISC_BACKOFF_PERSIST    0x00001000
                    462: #define        AR5K_AR5212_DCU_MISC_FRMPRFTCH_ENABLE   0x00002000
                    463: #define        AR5K_AR5212_DCU_MISC_VIRTCOL            0x0000c000
                    464: #define        AR5K_AR5212_DCU_MISC_VIRTCOL_NORMAL     0
                    465: #define        AR5K_AR5212_DCU_MISC_VIRTCOL_MODIFIED   1
                    466: #define        AR5K_AR5212_DCU_MISC_VIRTCOL_IGNORE     2
                    467: #define        AR5K_AR5212_DCU_MISC_BCN_ENABLE         0x00010000
                    468: #define        AR5K_AR5212_DCU_MISC_ARBLOCK_CTL        0x00060000
                    469: #define        AR5K_AR5212_DCU_MISC_ARBLOCK_CTL_S      17
                    470: #define        AR5K_AR5212_DCU_MISC_ARBLOCK_CTL_NONE   0
                    471: #define        AR5K_AR5212_DCU_MISC_ARBLOCK_CTL_INTFRM 1
                    472: #define        AR5K_AR5212_DCU_MISC_ARBLOCK_CTL_GLOBAL 2
                    473: #define        AR5K_AR5212_DCU_MISC_ARBLOCK_IGNORE     0x00080000
                    474: #define        AR5K_AR5212_DCU_MISC_SEQ_NUM_INCR_DIS   0x00100000
                    475: #define        AR5K_AR5212_DCU_MISC_POST_FR_BKOFF_DIS  0x00200000
                    476: #define        AR5K_AR5212_DCU_MISC_VIRT_COLL_POLICY   0x00400000
                    477: #define        AR5K_AR5212_DCU_MISC_BLOWN_IFS_POLICY   0x00800000
                    478: #define        AR5K_AR5212_DCU_MISC_SEQNUM_CTL         0x01000000
                    479:
                    480: /*
                    481:  * DCU frame sequence number registers
                    482:  */
                    483: #define AR5K_AR5212_DCU_SEQNUM(_n)     AR5K_AR5212_DCU(_n, 0x1140)
                    484: #define        AR5K_AR5212_DCU_SEQNUM_M        0x00000fff
                    485: /*
                    486:  * DCU global IFS SIFS registers
                    487:  */
                    488: #define AR5K_AR5212_DCU_GBL_IFS_SIFS   0x1030
                    489: #define AR5K_AR5212_DCU_GBL_IFS_SIFS_M 0x0000ffff
                    490:
                    491: /*
                    492:  * DCU global IFS slot interval registers
                    493:  */
                    494: #define AR5K_AR5212_DCU_GBL_IFS_SLOT   0x1070
                    495: #define AR5K_AR5212_DCU_GBL_IFS_SLOT_M 0x0000ffff
                    496:
                    497: /*
                    498:  * DCU global IFS EIFS registers
                    499:  */
                    500: #define AR5K_AR5212_DCU_GBL_IFS_EIFS   0x10b0
                    501: #define AR5K_AR5212_DCU_GBL_IFS_EIFS_M 0x0000ffff
                    502:
                    503: /*
                    504:  * DCU global IFS misc registers
                    505:  */
                    506: #define AR5K_AR5212_DCU_GBL_IFS_MISC                   0x10f0
                    507: #define        AR5K_AR5212_DCU_GBL_IFS_MISC_LFSR_SLICE         0x00000007
                    508: #define        AR5K_AR5212_DCU_GBL_IFS_MISC_TURBO_MODE         0x00000008
                    509: #define        AR5K_AR5212_DCU_GBL_IFS_MISC_SIFS_DUR_USEC      0x000003f0
                    510: #define        AR5K_AR5212_DCU_GBL_IFS_MISC_USEC_DUR           0x000ffc00
                    511: #define        AR5K_AR5212_DCU_GBL_IFS_MISC_DCU_ARB_DELAY      0x00300000
                    512:
                    513: /*
                    514:  * DCU frame prefetch control register
                    515:  */
                    516: #define AR5K_AR5212_DCU_FP             0x1230
                    517:
                    518: /*
                    519:  * DCU transmit pause control/status register
                    520:  */
                    521: #define AR5K_AR5212_DCU_TXP            0x1270
                    522: #define        AR5K_AR5212_DCU_TXP_M           0x000003ff
                    523: #define        AR5K_AR5212_DCU_TXP_STATUS      0x00010000
                    524:
                    525: /*
                    526:  * DCU transmit filter register
                    527:  */
                    528: #define AR5K_AR5212_DCU_TX_FILTER      0x1038
                    529:
                    530: /*
                    531:  * DCU clear transmit filter register
                    532:  */
                    533: #define AR5K_AR5212_DCU_TX_FILTER_CLR  0x143c
                    534:
                    535: /*
                    536:  * DCU set transmit filter register
                    537:  */
                    538: #define AR5K_AR5212_DCU_TX_FILTER_SET  0x147c
                    539:
                    540: /*
                    541:  * DMA size definitions
                    542:  */
                    543: typedef enum {
                    544:        AR5K_AR5212_DMASIZE_4B = 0,
                    545:        AR5K_AR5212_DMASIZE_8B = 1,
                    546:        AR5K_AR5212_DMASIZE_16B = 2,
                    547:        AR5K_AR5212_DMASIZE_32B = 3,
                    548:        AR5K_AR5212_DMASIZE_64B = 4,
                    549:        AR5K_AR5212_DMASIZE_128B = 5,
                    550:        AR5K_AR5212_DMASIZE_256B = 6,
                    551:        AR5K_AR5212_DMASIZE_512B = 7
                    552: } ar5k_ar5212_dmasize_t;
                    553:
                    554: /*
                    555:  * Reset control register
                    556:  */
                    557: #define AR5K_AR5212_RC                 0x4000
                    558: #define AR5K_AR5212_RC_PCU             0x00000001
                    559: #define AR5K_AR5212_RC_BB              0x00000002
                    560: #define AR5K_AR5212_RC_PCI             0x00000010
                    561: #define AR5K_AR5212_RC_CHIP            (                               \
                    562:        AR5K_AR5212_RC_PCU | AR5K_AR5212_RC_BB | AR5K_AR5212_RC_PCI     \
                    563: )
                    564:
                    565: /*
                    566:  * Sleep control register
                    567:  */
                    568: #define AR5K_AR5212_SCR                        0x4004
                    569: #define AR5K_AR5212_SCR_SLDUR          0x0000ffff
                    570: #define AR5K_AR5212_SCR_SLE            0x00030000
                    571: #define AR5K_AR5212_SCR_SLE_S          16
                    572: #define AR5K_AR5212_SCR_SLE_WAKE       0x00000000
                    573: #define AR5K_AR5212_SCR_SLE_SLP                0x00010000
                    574: #define AR5K_AR5212_SCR_SLE_ALLOW      0x00020000
                    575: #define AR5K_AR5212_SCR_SLE_UNITS      0x00000008
                    576:
                    577: /*
                    578:  * Interrupt pending register
                    579:  */
                    580: #define AR5K_AR5212_INTPEND    0x4008
                    581: #define AR5K_AR5212_INTPEND_M  0x00000001
                    582:
                    583: /*
                    584:  * Sleep force register
                    585:  */
                    586: #define AR5K_AR5212_SFR                0x400c
                    587: #define AR5K_AR5212_SFR_M      0x00000001
                    588:
                    589: /*
                    590:  * PCI configuration register
                    591:  */
                    592: #define AR5K_AR5212_PCICFG             0x4010
                    593: #define AR5K_AR5212_PCICFG_CLKRUNEN    0x00000004
                    594: #define AR5K_AR5212_PCICFG_EESIZE      0x00000018
                    595: #define AR5K_AR5212_PCICFG_EESIZE_S    3
                    596: #define AR5K_AR5212_PCICFG_EESIZE_4K   0
                    597: #define AR5K_AR5212_PCICFG_EESIZE_8K   1
                    598: #define AR5K_AR5212_PCICFG_EESIZE_16K  2
                    599: #define AR5K_AR5212_PCICFG_EESIZE_FAIL 3
                    600: #define AR5K_AR5212_PCICFG_LED         0x00000060
                    601: #define AR5K_AR5212_PCICFG_LED_NONE    0x00000000
                    602: #define AR5K_AR5212_PCICFG_LED_PEND    0x00000020
                    603: #define AR5K_AR5212_PCICFG_LED_ASSOC   0x00000040
                    604: #define        AR5K_AR5212_PCICFG_BUS_SEL      0x00000380
                    605: #define        AR5K_AR5212_PCICFG_CBEFIX_DIS   0x00000400
                    606: #define AR5K_AR5212_PCICFG_SL_INTEN    0x00000800
                    607: #define AR5K_AR5212_PCICFG_SL_INPEN    0x00002800
                    608: #define AR5K_AR5212_PCICFG_SPWR_DN     0x00010000
                    609: #define AR5K_AR5212_PCICFG_LEDMODE     0x000e0000
                    610: #define AR5K_AR5212_PCICFG_LEDMODE_PROP        0x00000000
                    611: #define AR5K_AR5212_PCICFG_LEDMODE_PROM        0x00020000
                    612: #define AR5K_AR5212_PCICFG_LEDMODE_PWR 0x00040000
                    613: #define AR5K_AR5212_PCICFG_LEDMODE_RAND        0x00060000
                    614: #define AR5K_AR5212_PCICFG_LEDBLINK    0x00700000
                    615: #define AR5K_AR5212_PCICFG_LEDBLINK_S  20
                    616: #define AR5K_AR5212_PCICFG_LEDSLOW     0x00800000
                    617: #define AR5K_AR5212_PCICFG_LEDSTATE                                    \
                    618:        (AR5K_AR5212_PCICFG_LED | AR5K_AR5212_PCICFG_LEDMODE |          \
                    619:        AR5K_AR5212_PCICFG_LEDBLINK | AR5K_AR5212_PCICFG_LEDSLOW)
                    620:
                    621: /*
                    622:  * "General Purpose Input/Output" (GPIO) control register
                    623:  */
                    624: #define AR5K_AR5212_GPIOCR             0x4014
                    625: #define AR5K_AR5212_GPIOCR_INT_ENA     0x00008000
                    626: #define AR5K_AR5212_GPIOCR_INT_SELL    0x00000000
                    627: #define AR5K_AR5212_GPIOCR_INT_SELH    0x00010000
                    628: #define AR5K_AR5212_GPIOCR_NONE(n)     (0 << ((n) * 2))
                    629: #define AR5K_AR5212_GPIOCR_OUT0(n)     (1 << ((n) * 2))
                    630: #define AR5K_AR5212_GPIOCR_OUT1(n)     (2 << ((n) * 2))
                    631: #define AR5K_AR5212_GPIOCR_ALL(n)      (3 << ((n) * 2))
                    632: #define AR5K_AR5212_GPIOCR_INT_SEL(n)  ((n) << 12)
                    633:
                    634: #define AR5K_AR5212_NUM_GPIO   6
                    635:
                    636: /*
                    637:  * "General Purpose Input/Output" (GPIO) data output register
                    638:  */
                    639: #define AR5K_AR5212_GPIODO     0x4018
                    640:
                    641: /*
                    642:  * "General Purpose Input/Output" (GPIO) data input register
                    643:  */
                    644: #define AR5K_AR5212_GPIODI     0x401c
                    645: #define AR5K_AR5212_GPIODI_M   0x0000002f
                    646:
                    647: /*
                    648:  * Silicon revision register
                    649:  */
                    650: #define AR5K_AR5212_SREV               0x4020
                    651: #define AR5K_AR5212_SREV_REV           0x0000000f
                    652: #define AR5K_AR5212_SREV_REV_S         0
                    653: #define AR5K_AR5212_SREV_VER           0x000000ff
                    654: #define AR5K_AR5212_SREV_VER_S         4
                    655:
                    656: /*
                    657:  * EEPROM access registers
                    658:  */
                    659: #define AR5K_AR5212_EEPROM_BASE                0x6000
                    660: #define AR5K_AR5212_EEPROM_DATA                0x6004
                    661: #define AR5K_AR5212_EEPROM_CMD         0x6008
                    662: #define AR5K_AR5212_EEPROM_CMD_READ    0x00000001
                    663: #define AR5K_AR5212_EEPROM_CMD_WRITE   0x00000002
                    664: #define AR5K_AR5212_EEPROM_CMD_RESET   0x00000004
                    665: #define AR5K_AR5212_EEPROM_STATUS      0x600c
                    666: #define AR5K_AR5212_EEPROM_STAT_RDERR  0x00000001
                    667: #define AR5K_AR5212_EEPROM_STAT_RDDONE 0x00000002
                    668: #define AR5K_AR5212_EEPROM_STAT_WRERR  0x00000004
                    669: #define AR5K_AR5212_EEPROM_STAT_WRDONE 0x00000008
                    670: #define AR5K_AR5212_EEPROM_CFG         0x6010
                    671:
                    672: /*
                    673:  * PCU registers
                    674:  */
                    675:
                    676: #define AR5K_AR5212_PCU_MIN    0x8000
                    677: #define AR5K_AR5212_PCU_MAX    0x8fff
                    678:
                    679: /*
                    680:  * First station id register (MAC address in lower 32 bits)
                    681:  */
                    682: #define AR5K_AR5212_STA_ID0    0x8000
                    683:
                    684: /*
                    685:  * Second station id register (MAC address in upper 16 bits)
                    686:  */
                    687: #define AR5K_AR5212_STA_ID1                    0x8004
                    688: #define AR5K_AR5212_STA_ID1_AP                 0x00010000
                    689: #define AR5K_AR5212_STA_ID1_ADHOC              0x00020000
                    690: #define AR5K_AR5212_STA_ID1_PWR_SV             0x00040000
                    691: #define AR5K_AR5212_STA_ID1_NO_KEYSRCH         0x00080000
                    692: #define AR5K_AR5212_STA_ID1_PCF                        0x00100000
                    693: #define AR5K_AR5212_STA_ID1_DEFAULT_ANTENNA    0x00200000
                    694: #define AR5K_AR5212_STA_ID1_DESC_ANTENNA       0x00400000
                    695: #define AR5K_AR5212_STA_ID1_RTS_DEFAULT_ANTENNA        0x00800000
                    696: #define AR5K_AR5212_STA_ID1_ACKCTS_6MB         0x01000000
                    697: #define AR5K_AR5212_STA_ID1_BASE_RATE_11B      0x02000000
                    698:
                    699: /*
                    700:  * First BSSID register (MAC address, lower 32bits)
                    701:  */
                    702: #define AR5K_AR5212_BSS_ID0    0x8008
                    703:
                    704: /*
                    705:  * Second BSSID register (MAC address in upper 16 bits)
                    706:  *
                    707:  * AID: Association ID
                    708:  */
                    709: #define AR5K_AR5212_BSS_ID1            0x800c
                    710: #define AR5K_AR5212_BSS_ID1_AID                0xffff0000
                    711: #define AR5K_AR5212_BSS_ID1_AID_S      16
                    712:
                    713: /*
                    714:  * Backoff slot time register
                    715:  */
                    716: #define AR5K_AR5212_SLOT_TIME  0x8010
                    717:
                    718: /*
                    719:  * ACK/CTS timeout register
                    720:  */
                    721: #define AR5K_AR5212_TIME_OUT           0x8014
                    722: #define AR5K_AR5212_TIME_OUT_ACK       0x00001fff
                    723: #define AR5K_AR5212_TIME_OUT_ACK_S     0
                    724: #define AR5K_AR5212_TIME_OUT_CTS       0x1fff0000
                    725: #define AR5K_AR5212_TIME_OUT_CTS_S     16
                    726:
                    727: /*
                    728:  * RSSI threshold register
                    729:  */
                    730: #define AR5K_AR5212_RSSI_THR           0x8018
                    731: #define AR5K_AR5212_RSSI_THR_M         0x000000ff
                    732: #define AR5K_AR5212_RSSI_THR_BMISS     0x0000ff00
                    733: #define AR5K_AR5212_RSSI_THR_BMISS_S   8
                    734:
                    735: /*
                    736:  * Transmit latency register
                    737:  */
                    738: #define AR5K_AR5212_USEC               0x801c
                    739: #define AR5K_AR5212_USEC_1             0x0000007f
                    740: #define AR5K_AR5212_USEC_1_S           0
                    741: #define AR5K_AR5212_USEC_32            0x00003f80
                    742: #define AR5K_AR5212_USEC_32_S          7
                    743: #define AR5K_AR5212_USEC_TX_LATENCY    0x007fc000
                    744: #define AR5K_AR5212_USEC_TX_LATENCY_S  14
                    745: #define AR5K_AR5212_USEC_RX_LATENCY    0x1f800000
                    746: #define AR5K_AR5212_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_AR5212_BEACON             0x8020
                    756: #define AR5K_AR5212_BEACON_PERIOD      0x0000ffff
                    757: #define AR5K_AR5212_BEACON_PERIOD_S    0
                    758: #define AR5K_AR5212_BEACON_TIM         0x007f0000
                    759: #define AR5K_AR5212_BEACON_TIM_S       16
                    760: #define AR5K_AR5212_BEACON_ENABLE      0x00800000
                    761: #define AR5K_AR5212_BEACON_RESET_TSF   0x01000000
                    762:
                    763: /*
                    764:  * CFP period register
                    765:  */
                    766: #define AR5K_AR5212_CFP_PERIOD         0x8024
                    767:
                    768: /*
                    769:  * Next beacon time register
                    770:  */
                    771: #define AR5K_AR5212_TIMER0             0x8028
                    772:
                    773: /*
                    774:  * Next DMA beacon alert register
                    775:  */
                    776: #define AR5K_AR5212_TIMER1             0x802c
                    777:
                    778: /*
                    779:  * Next software beacon alert register
                    780:  */
                    781: #define AR5K_AR5212_TIMER2             0x8030
                    782:
                    783: /*
                    784:  * Next ATIM window time register
                    785:  */
                    786: #define AR5K_AR5212_TIMER3             0x8034
                    787:
                    788: /*
                    789:  * CFP duration register
                    790:  */
                    791: #define AR5K_AR5212_CFP_DUR            0x8038
                    792:
                    793: /*
                    794:  * Receive filter register
                    795:  */
                    796: #define AR5K_AR5212_RX_FILTER          0x803c
                    797: #define AR5K_AR5212_RX_FILTER_UNICAST  0x00000001
                    798: #define AR5K_AR5212_RX_FILTER_MULTICAST        0x00000002
                    799: #define AR5K_AR5212_RX_FILTER_BROADCAST        0x00000004
                    800: #define AR5K_AR5212_RX_FILTER_CONTROL  0x00000008
                    801: #define AR5K_AR5212_RX_FILTER_BEACON   0x00000010
                    802: #define AR5K_AR5212_RX_FILTER_PROMISC  0x00000020
                    803: #define AR5K_AR5212_RX_FILTER_XR_POLL  0x00000040
                    804: #define AR5K_AR5212_RX_FILTER_PROBE_REQ        0x00000080
                    805:
                    806: /*
                    807:  * Multicast filter register (lower 32 bits)
                    808:  */
                    809: #define AR5K_AR5212_MCAST_FIL0 0x8040
                    810:
                    811: /*
                    812:  * Multicast filter register (higher 16 bits)
                    813:  */
                    814: #define AR5K_AR5212_MCAST_FIL1 0x8044
                    815:
                    816: /*
                    817:  * PCU control register
                    818:  */
                    819: #define AR5K_AR5212_DIAG_SW                    0x8048
                    820: #define AR5K_AR5212_DIAG_SW_DIS_WEP_ACK                0x00000001
                    821: #define AR5K_AR5212_DIAG_SW_DIS_ACK            0x00000002
                    822: #define AR5K_AR5212_DIAG_SW_DIS_CTS            0x00000004
                    823: #define AR5K_AR5212_DIAG_SW_DIS_ENC            0x00000008
                    824: #define AR5K_AR5212_DIAG_SW_DIS_DEC            0x00000010
                    825: #define AR5K_AR5212_DIAG_SW_DIS_RX             0x00000020
                    826: #define AR5K_AR5212_DIAG_SW_LOOP_BACK          0x00000040
                    827: #define AR5K_AR5212_DIAG_SW_CORR_FCS           0x00000080
                    828: #define AR5K_AR5212_DIAG_SW_CHAN_INFO          0x00000100
                    829: #define AR5K_AR5212_DIAG_SW_EN_SCRAM_SEED      0x00000200
                    830: #define AR5K_AR5212_DIAG_SW_ECO_ENABLE         0x00000400
                    831: #define AR5K_AR5212_DIAG_SW_SCRAM_SEED_M       0x0001fc00
                    832: #define AR5K_AR5212_DIAG_SW_SCRAM_SEED_S       10
                    833: #define AR5K_AR5212_DIAG_SW_FRAME_NV0          0x00020000
                    834: #define AR5K_AR5212_DIAG_SW_OBSPT_M            0x000c0000
                    835: #define AR5K_AR5212_DIAG_SW_OBSPT_S            18
                    836:
                    837: /*
                    838:  * TSF (clock) register (lower 32 bits)
                    839:  */
                    840: #define AR5K_AR5212_TSF_L32    0x804c
                    841:
                    842: /*
                    843:  * TSF (clock) register (higher 32 bits)
                    844:  */
                    845: #define AR5K_AR5212_TSF_U32    0x8050
                    846:
                    847: /*
                    848:  * ADDAC test register
                    849:  */
                    850: #define AR5K_AR5212_ADDAC_TEST 0x8054
                    851:
                    852: /*
                    853:  * Default antenna register
                    854:  */
                    855: #define AR5K_AR5212_DEFAULT_ANTENNA    0x8058
                    856:
                    857: /*
                    858:  * Last beacon timestamp register
                    859:  */
                    860: #define AR5K_AR5212_LAST_TSTP  0x8080
                    861:
                    862: /*
                    863:  * NAV register (current)
                    864:  */
                    865: #define AR5K_AR5212_NAV                0x8084
                    866:
                    867: /*
                    868:  * RTS success register
                    869:  */
                    870: #define AR5K_AR5212_RTS_OK     0x8088
                    871:
                    872: /*
                    873:  * RTS failure register
                    874:  */
                    875: #define AR5K_AR5212_RTS_FAIL   0x808c
                    876:
                    877: /*
                    878:  * ACK failure register
                    879:  */
                    880: #define AR5K_AR5212_ACK_FAIL   0x8090
                    881:
                    882: /*
                    883:  * FCS failure register
                    884:  */
                    885: #define AR5K_AR5212_FCS_FAIL   0x8094
                    886:
                    887: /*
                    888:  * Beacon count register
                    889:  */
                    890: #define AR5K_AR5212_BEACON_CNT 0x8098
                    891:
                    892: /*
                    893:  * XR (eXtended Range) mode register
                    894:  */
                    895: #define AR5K_AR5212_XRMODE                     0x80c0
                    896: #define        AR5K_AR5212_XRMODE_POLL_TYPE_M          0x0000003f
                    897: #define        AR5K_AR5212_XRMODE_POLL_TYPE_S          0
                    898: #define        AR5K_AR5212_XRMODE_POLL_SUBTYPE_M       0x0000003c
                    899: #define        AR5K_AR5212_XRMODE_POLL_SUBTYPE_S       2
                    900: #define        AR5K_AR5212_XRMODE_POLL_WAIT_ALL        0x00000080
                    901: #define        AR5K_AR5212_XRMODE_SIFS_DELAY           0x000fff00
                    902: #define        AR5K_AR5212_XRMODE_FRAME_HOLD_M         0xfff00000
                    903: #define        AR5K_AR5212_XRMODE_FRAME_HOLD_S         20
                    904:
                    905: /*
                    906:  * XR delay register
                    907:  */
                    908: #define AR5K_AR5212_XRDELAY                    0x80c4
                    909: #define AR5K_AR5212_XRDELAY_SLOT_DELAY_M       0x0000ffff
                    910: #define AR5K_AR5212_XRDELAY_SLOT_DELAY_S       0
                    911: #define AR5K_AR5212_XRDELAY_CHIRP_DELAY_M      0xffff0000
                    912: #define AR5K_AR5212_XRDELAY_CHIRP_DELAY_S      16
                    913:
                    914: /*
                    915:  * XR timeout register
                    916:  */
                    917: #define AR5K_AR5212_XRTIMEOUT          0x80c8
                    918: #define AR5K_AR5212_XRTIMEOUT_CHIRP_M  0x0000ffff
                    919: #define AR5K_AR5212_XRTIMEOUT_CHIRP_S  0
                    920: #define AR5K_AR5212_XRTIMEOUT_POLL_M   0xffff0000
                    921: #define AR5K_AR5212_XRTIMEOUT_POLL_S   16
                    922:
                    923: /*
                    924:  * XR chirp register
                    925:  */
                    926: #define AR5K_AR5212_XRCHIRP            0x80cc
                    927: #define AR5K_AR5212_XRCHIRP_SEND       0x00000001
                    928: #define AR5K_AR5212_XRCHIRP_GAP                0xffff0000
                    929:
                    930: /*
                    931:  * XR stomp register
                    932:  */
                    933: #define AR5K_AR5212_XRSTOMP            0x80d0
                    934: #define AR5K_AR5212_XRSTOMP_TX         0x00000001
                    935: #define AR5K_AR5212_XRSTOMP_RX_ABORT   0x00000002
                    936: #define AR5K_AR5212_XRSTOMP_RSSI_THRES 0x0000ff00
                    937:
                    938: /*
                    939:  * First enhanced sleep register
                    940:  */
                    941: #define AR5K_AR5212_SLEEP0             0x80d4
                    942: #define AR5K_AR5212_SLEEP0_NEXT_DTIM   0x0007ffff
                    943: #define AR5K_AR5212_SLEEP0_NEXT_DTIM_S 0
                    944: #define AR5K_AR5212_SLEEP0_ASSUME_DTIM 0x00080000
                    945: #define AR5K_AR5212_SLEEP0_ENH_SLEEP_EN        0x00100000
                    946: #define AR5K_AR5212_SLEEP0_CABTO       0xff000000
                    947: #define AR5K_AR5212_SLEEP0_CABTO_S     24
                    948:
                    949: /*
                    950:  * Second enhanced sleep register
                    951:  */
                    952: #define AR5K_AR5212_SLEEP1             0x80d8
                    953: #define AR5K_AR5212_SLEEP1_NEXT_TIM    0x0007ffff
                    954: #define AR5K_AR5212_SLEEP1_NEXT_TIM_S  0
                    955: #define AR5K_AR5212_SLEEP1_BEACON_TO   0xff000000
                    956: #define AR5K_AR5212_SLEEP1_BEACON_TO_S 24
                    957:
                    958: /*
                    959:  * Third enhanced sleep register
                    960:  */
                    961: #define AR5K_AR5212_SLEEP2             0x80dc
                    962: #define AR5K_AR5212_SLEEP2_TIM_PER     0x0000ffff
                    963: #define AR5K_AR5212_SLEEP2_TIM_PER_S   0
                    964: #define AR5K_AR5212_SLEEP2_DTIM_PER    0xffff0000
                    965: #define AR5K_AR5212_SLEEP2_DTIM_PER_S  16
                    966:
                    967: /*
                    968:  * BSSID mask registers
                    969:  */
                    970: #define AR5K_AR5212_BSS_IDM0   0x80e0
                    971: #define AR5K_AR5212_BSS_IDM1   0x80e4
                    972:
                    973: /*
                    974:  * TX power control (TPC) register
                    975:  */
                    976: #define AR5K_AR5212_TXPC               0x80e8
                    977: #define AR5K_AR5212_TXPC_ACK_M         0x0000003f
                    978: #define AR5K_AR5212_TXPC_ACK_S         0
                    979: #define AR5K_AR5212_TXPC_CTS_M         0x00003f00
                    980: #define AR5K_AR5212_TXPC_CTS_S         8
                    981: #define AR5K_AR5212_TXPC_CHIRP_M       0x003f0000
                    982: #define AR5K_AR5212_TXPC_CHIRP_S       22
                    983:
                    984: /*
                    985:  * Profile count registers
                    986:  */
                    987: #define AR5K_AR5212_PROFCNT_TX         0x80ec
                    988: #define AR5K_AR5212_PROFCNT_RX         0x80f0
                    989: #define AR5K_AR5212_PROFCNT_RXCLR      0x80f4
                    990: #define AR5K_AR5212_PROFCNT_CYCLE      0x80f8
                    991:
                    992: /*
                    993:  * TSF parameter register
                    994:  */
                    995: #define AR5K_AR5212_TSF_PARM           0x8104
                    996: #define AR5K_AR5212_TSF_PARM_INC_M     0x000000ff
                    997: #define AR5K_AR5212_TSF_PARM_INC_S     0
                    998:
                    999: /*
                   1000:  * PHY error filter register
                   1001:  */
                   1002: #define AR5K_AR5212_PHY_ERR_FIL                0x810c
                   1003: #define AR5K_AR5212_PHY_ERR_FIL_RADAR  0x00000020
                   1004: #define AR5K_AR5212_PHY_ERR_FIL_OFDM   0x00020000
                   1005: #define AR5K_AR5212_PHY_ERR_FIL_CCK    0x02000000
                   1006:
                   1007: /*
                   1008:  * Rate duration register
                   1009:  */
                   1010: #define AR5K_AR5212_RATE_DUR_0         0x8700
                   1011: #define AR5K_AR5212_RATE_DUR(_n)       (AR5K_AR5212_RATE_DUR_0 + ((_n) << 2))
                   1012:
                   1013: /*
                   1014:  * Key table (WEP) register
                   1015:  */
                   1016: #define AR5K_AR5212_KEYTABLE_0         0x8800
                   1017: #define AR5K_AR5212_KEYTABLE(_n)       (AR5K_AR5212_KEYTABLE_0 + ((_n) << 5))
                   1018: #define AR5K_AR5212_KEYTABLE_OFF(_n, x)        (AR5K_AR5212_KEYTABLE(_n) + (x << 2))
                   1019: #define AR5K_AR5212_KEYTABLE_TYPE(_n)  AR5K_AR5212_KEYTABLE_OFF(_n, 5)
                   1020: #define AR5K_AR5212_KEYTABLE_TYPE_40   0x00000000
                   1021: #define AR5K_AR5212_KEYTABLE_TYPE_104  0x00000001
                   1022: #define AR5K_AR5212_KEYTABLE_TYPE_128  0x00000003
                   1023: #define AR5K_AR5212_KEYTABLE_TYPE_TKIP 0x00000004
                   1024: #define AR5K_AR5212_KEYTABLE_TYPE_AES  0x00000005
                   1025: #define AR5K_AR5212_KEYTABLE_TYPE_CCM  0x00000006
                   1026: #define AR5K_AR5212_KEYTABLE_TYPE_NULL 0x00000007
                   1027: #define AR5K_AR5212_KEYTABLE_ANTENNA   0x00000008
                   1028: #define AR5K_AR5212_KEYTABLE_MAC0(_n)  AR5K_AR5212_KEYTABLE_OFF(_n, 6)
                   1029: #define AR5K_AR5212_KEYTABLE_MAC1(_n)  AR5K_AR5212_KEYTABLE_OFF(_n, 7)
                   1030: #define AR5K_AR5212_KEYTABLE_VALID     0x00008000
                   1031:
                   1032: #define AR5K_AR5212_KEYTABLE_SIZE      128
                   1033: #define AR5K_AR5212_KEYCACHE_SIZE      8
                   1034:
                   1035: /*
                   1036:  * PHY register
                   1037:  */
                   1038: #define        AR5K_AR5212_PHY(_n)             (0x9800 + ((_n) << 2))
                   1039: #define AR5K_AR5212_PHY_SHIFT_2GHZ     0x00004007
                   1040: #define AR5K_AR5212_PHY_SHIFT_5GHZ     0x00000007
                   1041:
                   1042: /*
                   1043:  * PHY turbo mode register
                   1044:  */
                   1045: #define        AR5K_AR5212_PHY_TURBO           0x9804
                   1046: #define        AR5K_AR5212_PHY_TURBO_MODE      0x00000001
                   1047: #define        AR5K_AR5212_PHY_TURBO_SHORT     0x00000002
                   1048:
                   1049: /*
                   1050:  * PHY agility command register
                   1051:  */
                   1052: #define        AR5K_AR5212_PHY_AGC             0x9808
                   1053: #define        AR5K_AR5212_PHY_AGC_DISABLE     0x08000000
                   1054:
                   1055: /*
                   1056:  * PHY timing register
                   1057:  */
                   1058: #define        AR5K_AR5212_PHY_TIMING_3                0x9814
                   1059: #define        AR5K_AR5212_PHY_TIMING_3_DSC_MAN        0xfffe0000
                   1060: #define        AR5K_AR5212_PHY_TIMING_3_DSC_MAN_S      17
                   1061: #define        AR5K_AR5212_PHY_TIMING_3_DSC_EXP        0x0001e000
                   1062: #define        AR5K_AR5212_PHY_TIMING_3_DSC_EXP_S      13
                   1063:
                   1064: /*
                   1065:  * PHY chip revision register
                   1066:  */
                   1067: #define        AR5K_AR5212_PHY_CHIP_ID         0x9818
                   1068:
                   1069: /*
                   1070:  * PHY activation register
                   1071:  */
                   1072: #define        AR5K_AR5212_PHY_ACTIVE          0x981c
                   1073: #define        AR5K_AR5212_PHY_ENABLE          0x00000001
                   1074: #define        AR5K_AR5212_PHY_DISABLE         0x00000002
                   1075:
                   1076: /*
                   1077:  * PHY agility control register
                   1078:  */
                   1079: #define        AR5K_AR5212_PHY_AGCCTL          0x9860
                   1080: #define        AR5K_AR5212_PHY_AGCCTL_CAL      0x00000001
                   1081: #define        AR5K_AR5212_PHY_AGCCTL_NF       0x00000002
                   1082:
                   1083: /*
                   1084:  * PHY noise floor status register
                   1085:  */
                   1086: #define AR5K_AR5212_PHY_NF             0x9864
                   1087: #define AR5K_AR5212_PHY_NF_M           0x000001ff
                   1088: #define AR5K_AR5212_PHY_NF_ACTIVE      0x00000100
                   1089: #define AR5K_AR5212_PHY_NF_RVAL(_n)    (((_n) >> 19) & AR5K_AR5212_PHY_NF_M)
                   1090: #define AR5K_AR5212_PHY_NF_AVAL(_n)    (-((_n) ^ AR5K_AR5212_PHY_NF_M) + 1)
                   1091: #define AR5K_AR5212_PHY_NF_SVAL(_n)    (((_n) & AR5K_AR5212_PHY_NF_M) | (1 << 9))
                   1092:
                   1093: /*
                   1094:  * PHY sleep registers
                   1095:  */
                   1096: #define AR5K_AR5212_PHY_SCR            0x9870
                   1097: #define AR5K_AR5212_PHY_SCR_32MHZ      0x0000001f
                   1098: #define AR5K_AR5212_PHY_SLMT           0x9874
                   1099: #define AR5K_AR5212_PHY_SLMT_32MHZ     0x0000007f
                   1100: #define AR5K_AR5212_PHY_SCAL           0x9878
                   1101: #define AR5K_AR5212_PHY_SCAL_32MHZ     0x0000000e
                   1102:
                   1103: /*
                   1104:  * PHY PLL control register
                   1105:  */
                   1106: #define        AR5K_AR5212_PHY_PLL             0x987c
                   1107: #define        AR5K_AR5212_PHY_PLL_40MHZ       0x000000aa
                   1108: #define        AR5K_AR5212_PHY_PLL_44MHZ       0x000000ab
                   1109: #define AR5K_AR5212_PHY_PLL_AR5111     0x00000000
                   1110: #define AR5K_AR5212_PHY_PLL_AR5112     0x00000040
                   1111:
                   1112: /*
                   1113:  * PHY receiver delay register
                   1114:  */
                   1115: #define        AR5K_AR5212_PHY_RX_DELAY        0x9914
                   1116: #define        AR5K_AR5212_PHY_RX_DELAY_M      0x00003fff
                   1117:
                   1118: /*
                   1119:  * PHY timing IQ control register
                   1120:  */
                   1121: #define        AR5K_AR5212_PHY_IQ                      0x9920
                   1122: #define        AR5K_AR5212_PHY_IQ_CORR_Q_Q_COFF        0x0000001f
                   1123: #define        AR5K_AR5212_PHY_IQ_CORR_Q_I_COFF        0x000007e0
                   1124: #define        AR5K_AR5212_PHY_IQ_CORR_Q_I_COFF_S      5
                   1125: #define        AR5K_AR5212_PHY_IQ_CORR_ENABLE          0x00000800
                   1126: #define        AR5K_AR5212_PHY_IQ_CAL_NUM_LOG_MAX      0x0000f000
                   1127: #define        AR5K_AR5212_PHY_IQ_CAL_NUM_LOG_MAX_S    12
                   1128: #define        AR5K_AR5212_PHY_IQ_RUN                  0x00010000
                   1129:
                   1130: /*
                   1131:  * PHY PAPD probe register
                   1132:  */
                   1133: #define        AR5K_AR5212_PHY_PAPD_PROBE              0x9930
                   1134: #define        AR5K_AR5212_PHY_PAPD_PROBE_TXPOWER      0x00007e00
                   1135: #define        AR5K_AR5212_PHY_PAPD_PROBE_TXPOWER_S    9
                   1136: #define        AR5K_AR5212_PHY_PAPD_PROBE_TX_NEXT      0x00008000
                   1137: #define        AR5K_AR5212_PHY_PAPD_PROBE_TYPE         0x01800000
                   1138: #define        AR5K_AR5212_PHY_PAPD_PROBE_TYPE_S       23
                   1139: #define        AR5K_AR5212_PHY_PAPD_PROBE_TYPE_OFDM    0
                   1140: #define        AR5K_AR5212_PHY_PAPD_PROBE_TYPE_XR      1
                   1141: #define        AR5K_AR5212_PHY_PAPD_PROBE_TYPE_CCK     2
                   1142: #define        AR5K_AR5212_PHY_PAPD_PROBE_GAINF        0xfe000000
                   1143: #define        AR5K_AR5212_PHY_PAPD_PROBE_GAINF_S      25
                   1144:
                   1145: /*
                   1146:  * PHY TX power registers
                   1147:  */
                   1148: #define        AR5K_AR5212_PHY_TXPOWER_RATE1                   0x9934
                   1149: #define        AR5K_AR5212_PHY_TXPOWER_RATE2                   0x9938
                   1150: #define        AR5K_AR5212_PHY_TXPOWER_RATE_MAX                0x993c
                   1151: #define        AR5K_AR5212_PHY_TXPOWER_RATE_MAX_TPC_ENABLE     0x00000040
                   1152: #define        AR5K_AR5212_PHY_TXPOWER_RATE3                   0xa234
                   1153: #define        AR5K_AR5212_PHY_TXPOWER_RATE4                   0xa238
                   1154:
                   1155: /*
                   1156:  * PHY frame control register
                   1157:  */
                   1158: #define        AR5K_AR5212_PHY_FC              0x9944
                   1159: #define        AR5K_AR5212_PHY_FC_TX_CLIP      0x00000038
                   1160: #define        AR5K_AR5212_PHY_FC_TX_CLIP_S    3
                   1161:
                   1162: /*
                   1163:  * PHY radar detection enable register
                   1164:  */
                   1165: #define        AR5K_AR5212_PHY_RADAR           0x9954
                   1166: #define        AR5K_AR5212_PHY_RADAR_DISABLE   0x00000000
                   1167: #define        AR5K_AR5212_PHY_RADAR_ENABLE    0x00000001
                   1168:
                   1169: /*
                   1170:  * PHY antenna switch table registers
                   1171:  */
                   1172: #define AR5K_AR5212_PHY_ANT_SWITCH_TABLE_0     0x9960
                   1173: #define AR5K_AR5212_PHY_ANT_SWITCH_TABLE_1     0x9964
                   1174:
                   1175: /*
                   1176:  * PHY clock sleep registers
                   1177:  */
                   1178: #define AR5K_AR5212_PHY_SCLOCK         0x99f0
                   1179: #define AR5K_AR5212_PHY_SCLOCK_32MHZ   0x0000000c
                   1180: #define AR5K_AR5212_PHY_SDELAY         0x99f4
                   1181: #define AR5K_AR5212_PHY_SDELAY_32MHZ   0x000000ff
                   1182: #define AR5K_AR5212_PHY_SPENDING       0x99f8
                   1183: #define AR5K_AR5212_PHY_SPENDING_AR5111        0x00000018
                   1184: #define AR5K_AR5212_PHY_SPENDING_AR5112        0x00000014
                   1185:
                   1186: /*
                   1187:  * PHY timing IQ calibration result register
                   1188:  */
                   1189: #define        AR5K_AR5212_PHY_IQRES_CAL_PWR_I 0x9c10
                   1190: #define        AR5K_AR5212_PHY_IQRES_CAL_PWR_Q 0x9c14
                   1191: #define        AR5K_AR5212_PHY_IQRES_CAL_CORR  0x9c18
                   1192:
                   1193: /*
                   1194:  * PHY current RSSI register
                   1195:  */
                   1196: #define        AR5K_AR5212_PHY_CURRENT_RSSI    0x9c1c
                   1197:
                   1198: /*
                   1199:  * PHY PCDAC TX power register
                   1200:  */
                   1201: #define        AR5K_AR5212_PHY_PCDAC_TXPOWER(_n)       (0xa180 + ((_n) << 2))
                   1202:
                   1203: /*
                   1204:  * PHY mode register
                   1205:  */
                   1206: #define        AR5K_AR5212_PHY_MODE            0x0a200
                   1207: #define        AR5K_AR5212_PHY_MODE_MOD        0x00000001
                   1208: #define AR5K_AR5212_PHY_MODE_MOD_OFDM  0
                   1209: #define AR5K_AR5212_PHY_MODE_MOD_CCK   1
                   1210: #define AR5K_AR5212_PHY_MODE_FREQ      0x00000002
                   1211: #define        AR5K_AR5212_PHY_MODE_FREQ_5GHZ  0
                   1212: #define        AR5K_AR5212_PHY_MODE_FREQ_2GHZ  2
                   1213: #define AR5K_AR5212_PHY_MODE_MOD_DYN   0x00000004
                   1214: #define AR5K_AR5212_PHY_MODE_RAD       0x00000008
                   1215: #define AR5K_AR5212_PHY_MODE_RAD_AR5111        0
                   1216: #define AR5K_AR5212_PHY_MODE_RAD_AR5112        8
                   1217: #define AR5K_AR5212_PHY_MODE_XR                0x00000010
                   1218:
                   1219: /*
                   1220:  * PHY CCK transmit control register
                   1221:  */
                   1222: #define AR5K_AR5212_PHY_CCKTXCTL       0xa204
                   1223: #define AR5K_AR5212_PHY_CCKTXCTL_WORLD 0x00000000
                   1224: #define AR5K_AR5212_PHY_CCKTXCTL_JAPAN 0x00000010
                   1225:
                   1226: /*
                   1227:  * PHY 2GHz gain register
                   1228:  */
                   1229: #define        AR5K_AR5212_PHY_GAIN_2GHZ               0xa20c
                   1230: #define        AR5K_AR5212_PHY_GAIN_2GHZ_MARGIN_TXRX   0x00fc0000
                   1231: #define        AR5K_AR5212_PHY_GAIN_2GHZ_MARGIN_TXRX_S 18
                   1232:
                   1233: #endif

CVSweb