Main Page | Data Structures | Directories | File List | Data Fields | Globals

ar5212reg.h

Go to the documentation of this file.
00001 /*      $OpenBSD: ar5212reg.h,v 1.6 2005/07/30 17:13:17 reyk Exp $      */
00002 
00003 /*
00004  * Copyright (c) 2004, 2005 Reyk Floeter <reyk@vantronix.net>
00005  *
00006  * Permission to use, copy, modify, and distribute this software for any
00007  * purpose with or without fee is hereby granted, provided that the above
00008  * copyright notice and this permission notice appear in all copies.
00009  *
00010  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
00011  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
00012  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
00013  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
00014  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
00015  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
00016  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
00017  */
00018 
00019 /*
00020  * Known registers of the Atheros AR5001 Wireless LAN chipsets
00021  * (AR5212/AR5311).
00022  */
00023 
00024 #ifndef _AR5K_AR5212_REG_H
00025 #define _AR5K_AR5212_REG_H
00026 
00027 /*
00028  * Command register
00029  */
00030 #define AR5K_AR5212_CR          0x0008
00031 #define AR5K_AR5212_CR_RXE      0x00000004
00032 #define AR5K_AR5212_CR_RXD      0x00000020
00033 #define AR5K_AR5212_CR_SWI      0x00000040
00034 
00035 /*
00036  * Receive queue descriptor pointer register
00037  */
00038 #define AR5K_AR5212_RXDP        0x000c
00039 
00040 /*
00041  * Configuration and status register
00042  */
00043 #define AR5K_AR5212_CFG                 0x0014
00044 #define AR5K_AR5212_CFG_SWTD            0x00000001
00045 #define AR5K_AR5212_CFG_SWTB            0x00000002
00046 #define AR5K_AR5212_CFG_SWRD            0x00000004
00047 #define AR5K_AR5212_CFG_SWRB            0x00000008
00048 #define AR5K_AR5212_CFG_SWRG            0x00000010
00049 #define AR5K_AR5212_CFG_ADHOC           0x00000020
00050 #define AR5K_AR5212_CFG_PHY_OK          0x00000100
00051 #define AR5K_AR5212_CFG_EEBS            0x00000200
00052 #define AR5K_AR5212_CFG_CLKGD           0x00000400
00053 #define AR5K_AR5212_CFG_PCI_THRES       0x00060000
00054 #define AR5K_AR5212_CFG_PCI_THRES_S     17
00055 
00056 /*
00057  * Interrupt enable register
00058  */
00059 #define AR5K_AR5212_IER         0x0024
00060 #define AR5K_AR5212_IER_DISABLE 0x00000000
00061 #define AR5K_AR5212_IER_ENABLE  0x00000001
00062 
00063 /*
00064  * Transmit configuration register
00065  */
00066 #define AR5K_AR5212_TXCFG               0x0030
00067 #define AR5K_AR5212_TXCFG_SDMAMR        0x00000007
00068 #define AR5K_AR5212_TXCFG_SDMAMR_S      0
00069 #define AR5K_AR5212_TXCFG_B_MODE        0x00000008
00070 #define AR5K_AR5212_TXCFG_TXFULL        0x000003f0
00071 #define AR5K_AR5212_TXCFG_TXFULL_S      4
00072 #define AR5K_AR5212_TXCFG_TXFULL_0B     0x00000000
00073 #define AR5K_AR5212_TXCFG_TXFULL_64B    0x00000010
00074 #define AR5K_AR5212_TXCFG_TXFULL_128B   0x00000020
00075 #define AR5K_AR5212_TXCFG_TXFULL_192B   0x00000030
00076 #define AR5K_AR5212_TXCFG_TXFULL_256B   0x00000040
00077 #define AR5K_AR5212_TXCFG_TXCONT_ENABLE 0x00000080
00078 #define AR5K_AR5212_TXCFG_DMASIZE       0x00000100
00079 #define AR5K_AR5212_TXCFG_JUMBO_TXE     0x00000400
00080 #define AR5K_AR5212_TXCFG_RTSRND        0x00001000
00081 #define AR5K_AR5212_TXCFG_FRMPAD_DIS    0x00002000
00082 #define AR5K_AR5212_TXCFG_RDY_DIS       0x00004000
00083 
00084 /*
00085  * Receive configuration register
00086  */
00087 #define AR5K_AR5212_RXCFG                       0x0034
00088 #define AR5K_AR5212_RXCFG_SDMAMW                0x00000007
00089 #define AR5K_AR5212_RXCFG_SDMAMW_S              0
00090 #define AR5K_AR5311_RXCFG_DEFAULT_ANTENNA       0x00000008
00091 #define AR5K_AR5212_RXCFG_ZLFDMA                0x00000010
00092 #define AR5K_AR5212_RXCFG_JUMBO_RXE             0x00000020
00093 #define AR5K_AR5212_RXCFG_JUMBO_WRAP            0x00000040
00094 
00095 /*
00096  * MIB control register
00097  */
00098 #define AR5K_AR5212_MIBC                0x0040
00099 #define AR5K_AR5212_MIBC_COW            0x00000001
00100 #define AR5K_AR5212_MIBC_FMC            0x00000002
00101 #define AR5K_AR5212_MIBC_CMC            0x00000004
00102 #define AR5K_AR5212_MIBC_MCS            0x00000008
00103 
00104 /*
00105  * Timeout prescale register
00106  */
00107 #define AR5K_AR5212_TOPS                0x0044
00108 #define AR5K_AR5212_TOPS_M              0x0000ffff
00109 
00110 /*
00111  * Receive timeout register (no frame received)
00112  */
00113 #define AR5K_AR5212_RXNOFRM             0x0048
00114 #define AR5K_AR5212_RXNOFRM_M           0x000003ff
00115 
00116 /*
00117  * Transmit timeout register (no frame sent)
00118  */
00119 #define AR5K_AR5212_TXNOFRM             0x004c
00120 #define AR5K_AR5212_TXNOFRM_M           0x000003ff
00121 #define AR5K_AR5212_TXNOFRM_QCU         0x000ffc00
00122 
00123 /*
00124  * Receive frame gap timeout register
00125  */
00126 #define AR5K_AR5212_RPGTO               0x0050
00127 #define AR5K_AR5212_RPGTO_M             0x000003ff
00128 
00129 /*
00130  * Receive frame count limit register
00131  */
00132 #define AR5K_AR5212_RFCNT               0x0054
00133 #define AR5K_AR5212_RFCNT_M             0x0000001f
00134 
00135 /*
00136  * Misc settings register
00137  */
00138 #define AR5K_AR5212_MISC                0x0058
00139 #define AR5K_AR5212_MISC_DMA_OBS_M      0x000001e0
00140 #define AR5K_AR5212_MISC_DMA_OBS_S      5
00141 #define AR5K_AR5212_MISC_MISC_OBS_M     0x00000e00
00142 #define AR5K_AR5212_MISC_MISC_OBS_S     9
00143 #define AR5K_AR5212_MISC_MAC_OBS_LSB_M  0x00007000
00144 #define AR5K_AR5212_MISC_MAC_OBS_LSB_S  12
00145 #define AR5K_AR5212_MISC_MAC_OBS_MSB_M  0x00038000
00146 #define AR5K_AR5212_MISC_MAC_OBS_MSB_S  15
00147 
00148 /*
00149  * Primary interrupt status register
00150  */
00151 #define AR5K_AR5212_PISR                0x0080
00152 #define AR5K_AR5212_PISR_RXOK           0x00000001
00153 #define AR5K_AR5212_PISR_RXDESC         0x00000002
00154 #define AR5K_AR5212_PISR_RXERR          0x00000004
00155 #define AR5K_AR5212_PISR_RXNOFRM        0x00000008
00156 #define AR5K_AR5212_PISR_RXEOL          0x00000010
00157 #define AR5K_AR5212_PISR_RXORN          0x00000020
00158 #define AR5K_AR5212_PISR_TXOK           0x00000040
00159 #define AR5K_AR5212_PISR_TXDESC         0x00000080
00160 #define AR5K_AR5212_PISR_TXERR          0x00000100
00161 #define AR5K_AR5212_PISR_TXNOFRM        0x00000200
00162 #define AR5K_AR5212_PISR_TXEOL          0x00000400
00163 #define AR5K_AR5212_PISR_TXURN          0x00000800
00164 #define AR5K_AR5212_PISR_MIB            0x00001000
00165 #define AR5K_AR5212_PISR_SWI            0x00002000
00166 #define AR5K_AR5212_PISR_RXPHY          0x00004000
00167 #define AR5K_AR5212_PISR_RXKCM          0x00008000
00168 #define AR5K_AR5212_PISR_SWBA           0x00010000
00169 #define AR5K_AR5212_PISR_BRSSI          0x00020000
00170 #define AR5K_AR5212_PISR_BMISS          0x00040000
00171 #define AR5K_AR5212_PISR_HIUERR         0x00080000
00172 #define AR5K_AR5212_PISR_BNR            0x00100000
00173 #define AR5K_AR5212_PISR_RXCHIRP        0x00200000
00174 #define AR5K_AR5212_PISR_TIM            0x00400000
00175 #define AR5K_AR5212_PISR_BCNMISC        0x00800000
00176 #define AR5K_AR5212_PISR_GPIO           0x01000000
00177 #define AR5K_AR5212_PISR_QCBRORN        0x02000000
00178 #define AR5K_AR5212_PISR_QCBRURN        0x04000000
00179 #define AR5K_AR5212_PISR_QTRIG          0x08000000
00180 
00181 /*
00182  * Secondary interrupt status registers (0 - 4)
00183  */
00184 #define AR5K_AR5212_SISR0               0x0084
00185 #define AR5K_AR5212_SISR0_QCU_TXOK      0x000003ff
00186 #define AR5K_AR5212_SISR0_QCU_TXDESC    0x03ff0000
00187 
00188 #define AR5K_AR5212_SISR1               0x0088
00189 #define AR5K_AR5212_SISR1_QCU_TXERR     0x000003ff
00190 #define AR5K_AR5212_SISR1_QCU_TXEOL     0x03ff0000
00191 
00192 #define AR5K_AR5212_SISR2               0x008c
00193 #define AR5K_AR5212_SISR2_QCU_TXURN     0x000003ff
00194 #define AR5K_AR5212_SISR2_MCABT         0x00100000
00195 #define AR5K_AR5212_SISR2_SSERR         0x00200000
00196 #define AR5K_AR5212_SISR2_DPERR         0x00400000
00197 #define AR5K_AR5212_SISR2_TIM           0x01000000
00198 #define AR5K_AR5212_SISR2_CAB_END       0x02000000
00199 #define AR5K_AR5212_SISR2_DTIM_SYNC     0x04000000
00200 #define AR5K_AR5212_SISR2_BCN_TIMEOUT   0x08000000
00201 #define AR5K_AR5212_SISR2_CAB_TIMEOUT   0x10000000
00202 #define AR5K_AR5212_SISR2_DTIM          0x20000000
00203 
00204 #define AR5K_AR5212_SISR3               0x0090
00205 #define AR5K_AR5212_SISR3_QCBRORN       0x000003ff
00206 #define AR5K_AR5212_SISR3_QCBRURN       0x03ff0000
00207 
00208 #define AR5K_AR5212_SISR4               0x0094
00209 #define AR5K_AR5212_SISR4_QTRIG         0x000003ff
00210 
00211 /*
00212  * Shadow read-and-clear interrupt status registers
00213  */
00214 #define AR5K_AR5212_RAC_PISR    0x00c0
00215 #define AR5K_AR5212_RAC_SISR0   0x00c4
00216 #define AR5K_AR5212_RAC_SISR1   0x00c8
00217 #define AR5K_AR5212_RAC_SISR2   0x00cc
00218 #define AR5K_AR5212_RAC_SISR3   0c00d0
00219 #define AR5K_AR5212_RAC_SISR4   0c00d4
00220 
00221 /*
00222  * Primary interrupt mask register
00223  */
00224 #define AR5K_AR5212_PIMR                0x00a0
00225 #define AR5K_AR5212_PIMR_RXOK           0x00000001
00226 #define AR5K_AR5212_PIMR_RXDESC         0x00000002
00227 #define AR5K_AR5212_PIMR_RXERR          0x00000004
00228 #define AR5K_AR5212_PIMR_RXNOFRM        0x00000008
00229 #define AR5K_AR5212_PIMR_RXEOL          0x00000010
00230 #define AR5K_AR5212_PIMR_RXORN          0x00000020
00231 #define AR5K_AR5212_PIMR_TXOK           0x00000040
00232 #define AR5K_AR5212_PIMR_TXDESC         0x00000080
00233 #define AR5K_AR5212_PIMR_TXERR          0x00000100
00234 #define AR5K_AR5212_PIMR_TXNOFRM        0x00000200
00235 #define AR5K_AR5212_PIMR_TXEOL          0x00000400
00236 #define AR5K_AR5212_PIMR_TXURN          0x00000800
00237 #define AR5K_AR5212_PIMR_MIB            0x00001000
00238 #define AR5K_AR5212_PIMR_SWI            0x00002000
00239 #define AR5K_AR5212_PIMR_RXPHY          0x00004000
00240 #define AR5K_AR5212_PIMR_RXKCM          0x00008000
00241 #define AR5K_AR5212_PIMR_SWBA           0x00010000
00242 #define AR5K_AR5212_PIMR_BRSSI          0x00020000
00243 #define AR5K_AR5212_PIMR_BMISS          0x00040000
00244 #define AR5K_AR5212_PIMR_HIUERR         0x00080000
00245 #define AR5K_AR5212_PIMR_BNR            0x00100000
00246 #define AR5K_AR5212_PIMR_RXCHIRP        0x00200000
00247 #define AR5K_AR5212_PIMR_TIM            0x00800000
00248 #define AR5K_AR5212_PIMR_BCNMISC        0x00800000
00249 #define AR5K_AR5212_PIMR_GPIO           0x01000000
00250 #define AR5K_AR5212_PIMR_QCBRORN        0x02000000
00251 #define AR5K_AR5212_PIMR_QCBRURN        0x04000000
00252 #define AR5K_AR5212_PIMR_QTRIG          0x08000000
00253 
00254 /*
00255  * Secondary interrupt mask registers (0 - 4)
00256  */
00257 #define AR5K_AR5212_SIMR0               0x00a4
00258 #define AR5K_AR5212_SIMR0_QCU_TXOK      0x000003ff
00259 #define AR5K_AR5212_SIMR0_QCU_TXOK_S    0
00260 #define AR5K_AR5212_SIMR0_QCU_TXDESC    0x03ff0000
00261 #define AR5K_AR5212_SIMR0_QCU_TXDESC_S  16
00262 
00263 #define AR5K_AR5212_SIMR1               0x00a8
00264 #define AR5K_AR5212_SIMR1_QCU_TXERR     0x000003ff
00265 #define AR5K_AR5212_SIMR1_QCU_TXERR_S   0
00266 #define AR5K_AR5212_SIMR1_QCU_TXEOL     0x03ff0000
00267 #define AR5K_AR5212_SIMR1_QCU_TXEOL_S   16
00268 
00269 #define AR5K_AR5212_SIMR2               0x00ac
00270 #define AR5K_AR5212_SIMR2_QCU_TXURN     0x000003ff
00271 #define AR5K_AR5212_SIMR2_QCU_TXURN_S   0
00272 #define AR5K_AR5212_SIMR2_MCABT         0x00100000
00273 #define AR5K_AR5212_SIMR2_SSERR         0x00200000
00274 #define AR5K_AR5212_SIMR2_DPERR         0x00400000
00275 #define AR5K_AR5212_SIMR2_TIM           0x01000000
00276 #define AR5K_AR5212_SIMR2_CAB_END       0x02000000
00277 #define AR5K_AR5212_SIMR2_DTIM_SYNC     0x04000000
00278 #define AR5K_AR5212_SIMR2_BCN_TIMEOUT   0x08000000
00279 #define AR5K_AR5212_SIMR2_CAB_TIMEOUT   0x10000000
00280 #define AR5K_AR5212_SIMR2_DTIM          0x20000000
00281 
00282 #define AR5K_AR5212_SIMR3               0x00b0
00283 #define AR5K_AR5212_SIMR3_QCBRORN       0x000003ff
00284 #define AR5K_AR5212_SIMR3_QCBRORN_S     0
00285 #define AR5K_AR5212_SIMR3_QCBRURN       0x03ff0000
00286 #define AR5K_AR5212_SIMR3_QCBRURN_S     16
00287 
00288 #define AR5K_AR5212_SIMR4               0x00b4
00289 #define AR5K_AR5212_SIMR4_QTRIG         0x000003ff
00290 #define AR5K_AR5212_SIMR4_QTRIG_S       0
00291 
00292 /*
00293  * Decompression mask registers
00294  */
00295 #define AR5K_AR5212_DCM_ADDR    0x0400
00296 #define AR5K_AR5212_DCM_DATA    0x0404
00297 
00298 /*
00299  * Decompression configuration registers
00300  */
00301 #define AR5K_AR5212_DCCFG       0x0420
00302 
00303 /*
00304  * Compression configuration registers
00305  */
00306 #define AR5K_AR5212_CCFG        0x0600
00307 #define AR5K_AR5212_CCFG_CUP    0x0604
00308 
00309 /*
00310  * Compression performance counter registers
00311  */
00312 #define AR5K_AR5212_CPC0        0x0610
00313 #define AR5K_AR5212_CPC1        0x0614
00314 #define AR5K_AR5212_CPC2        0x0618
00315 #define AR5K_AR5212_CPC3        0x061c
00316 #define AR5K_AR5212_CPCORN      0x0620
00317 
00318 /*
00319  * Queue control unit (QCU) registers (0 - 9)
00320  */
00321 #define AR5K_AR5212_QCU(_n, _a)         (((_n) << 2) + _a)
00322 
00323 /*
00324  * QCU Transmit descriptor pointer registers
00325  */
00326 #define AR5K_AR5212_QCU_TXDP(_n)        AR5K_AR5212_QCU(_n, 0x0800)
00327 
00328 /*
00329  * QCU Transmit enable register
00330  */
00331 #define AR5K_AR5212_QCU_TXE             0x0840
00332 
00333 /*
00334  * QCU Transmit disable register
00335  */
00336 #define AR5K_AR5212_QCU_TXD             0x0880
00337 
00338 /*
00339  * QCU CBR configuration registers
00340  */
00341 #define AR5K_AR5212_QCU_CBRCFG(_n)              AR5K_AR5212_QCU(_n, 0x08c0)
00342 #define AR5K_AR5212_QCU_CBRCFG_INTVAL           0x00ffffff
00343 #define AR5K_AR5212_QCU_CBRCFG_INTVAL_S         0
00344 #define AR5K_AR5212_QCU_CBRCFG_ORN_THRES        0xff000000
00345 #define AR5K_AR5212_QCU_CBRCFG_ORN_THRES_S      24
00346 
00347 /*
00348  * QCU Ready time configuration registers
00349  */
00350 #define AR5K_AR5212_QCU_RDYTIMECFG(_n)          AR5K_AR5212_QCU(_n, 0x0900)
00351 #define AR5K_AR5212_QCU_RDYTIMECFG_INTVAL       0x00ffffff
00352 #define AR5K_AR5212_QCU_RDYTIMECFG_INTVAL_S     0
00353 #define AR5K_AR5212_QCU_RDYTIMECFG_DURATION     0x00ffffff
00354 #define AR5K_AR5212_QCU_RDYTIMECFG_ENABLE       0x01000000
00355 
00356 /*
00357  * QCU one shot arm set registers
00358  */
00359 #define AR5K_AR5212_QCU_ONESHOTARMS(_n) AR5K_AR5212_QCU(_n, 0x0940)
00360 #define AR5K_AR5212_QCU_ONESHOTARMS_M   0x0000ffff
00361 
00362 /*
00363  * QCU one shot arm clear registers
00364  */
00365 #define AR5K_AR5212_QCU_ONESHOTARMC(_n) AR5K_AR5212_QCU(_n, 0x0980)
00366 #define AR5K_AR5212_QCU_ONESHOTARMC_M   0x0000ffff
00367 
00368 /*
00369  * QCU misc registers
00370  */
00371 #define AR5K_AR5212_QCU_MISC(_n)                AR5K_AR5212_QCU(_n, 0x09c0)
00372 #define AR5K_AR5212_QCU_MISC_FRSHED_M           0x0000000f
00373 #define AR5K_AR5212_QCU_MISC_FRSHED_ASAP        0
00374 #define AR5K_AR5212_QCU_MISC_FRSHED_CBR         1
00375 #define AR5K_AR5212_QCU_MISC_FRSHED_DBA_GT      2
00376 #define AR5K_AR5212_QCU_MISC_FRSHED_TIM_GT      3
00377 #define AR5K_AR5212_QCU_MISC_FRSHED_BCN_SENT_GT 4
00378 #define AR5K_AR5212_QCU_MISC_ONESHOT_ENABLE     0x00000010
00379 #define AR5K_AR5212_QCU_MISC_CBREXP             0x00000020
00380 #define AR5K_AR5212_QCU_MISC_CBREXP_BCN         0x00000040
00381 #define AR5K_AR5212_QCU_MISC_BCN_ENABLE         0x00000080
00382 #define AR5K_AR5212_QCU_MISC_CBR_THRES_ENABLE   0x00000100
00383 #define AR5K_AR5212_QCU_MISC_TXE                0x00000200
00384 #define AR5K_AR5212_QCU_MISC_CBR                0x00000400
00385 #define AR5K_AR5212_QCU_MISC_DCU_EARLY          0x00000800
00386 
00387 /*
00388  * QCU status registers
00389  */
00390 #define AR5K_AR5212_QCU_STS(_n)         AR5K_AR5212_QCU(_n, 0x0a00)
00391 #define AR5K_AR5212_QCU_STS_FRMPENDCNT  0x00000003
00392 #define AR5K_AR5212_QCU_STS_CBREXPCNT   0x0000ff00
00393 
00394 /*
00395  * QCU ready time shutdown register
00396  */
00397 #define AR5K_AR5212_QCU_RDYTIMESHDN     0x0a40
00398 #define AR5K_AR5212_QCU_RDYTIMESHDN_M   0x000003ff
00399 
00400 /*
00401  * QCU compression buffer base registers
00402  */
00403 #define AR5K_AR5212_QCU_CBB_SELECT      0x0b00
00404 #define AR5K_AR5212_QCU_CBB_ADDR        0x0b04
00405 
00406 /*
00407  * QCU compression buffer configuration register
00408  */
00409 #define AR5K_AR5212_QCU_CBCFG   0x0b08
00410 
00411 /*
00412  * DCF control unit (DCU) registers (0 - 9)
00413  */
00414 #define AR5K_AR5212_DCU(_n, _a)         AR5K_AR5212_QCU(_n, _a)
00415 
00416 /*
00417  * DCU QCU mask registers
00418  */
00419 #define AR5K_AR5212_DCU_QCUMASK(_n)     AR5K_AR5212_DCU(_n, 0x1000)
00420 #define AR5K_AR5212_DCU_QCUMASK_M       0x000003ff
00421 
00422 /*
00423  * DCU local IFS settings register
00424  */
00425 #define AR5K_AR5212_DCU_LCL_IFS(_n)             AR5K_AR5212_DCU(_n, 0x1040)
00426 #define AR5K_AR5212_DCU_LCL_IFS_CW_MIN          0x000003ff
00427 #define AR5K_AR5212_DCU_LCL_IFS_CW_MIN_S        0
00428 #define AR5K_AR5212_DCU_LCL_IFS_CW_MAX          0x000ffc00
00429 #define AR5K_AR5212_DCU_LCL_IFS_CW_MAX_S        10
00430 #define AR5K_AR5212_DCU_LCL_IFS_AIFS            0x0ff00000
00431 #define AR5K_AR5212_DCU_LCL_IFS_AIFS_S          20
00432 
00433 /*
00434  * DCU retry limit registers
00435  */
00436 #define AR5K_AR5212_DCU_RETRY_LMT(_n)           AR5K_AR5212_DCU(_n, 0x1080)
00437 #define AR5K_AR5212_DCU_RETRY_LMT_SH_RETRY      0x0000000f
00438 #define AR5K_AR5212_DCU_RETRY_LMT_SH_RETRY_S    0
00439 #define AR5K_AR5212_DCU_RETRY_LMT_LG_RETRY      0x000000f0
00440 #define AR5K_AR5212_DCU_RETRY_LMT_LG_RETRY_S    4
00441 #define AR5K_AR5212_DCU_RETRY_LMT_SSH_RETRY     0x00003f00
00442 #define AR5K_AR5212_DCU_RETRY_LMT_SSH_RETRY_S   8
00443 #define AR5K_AR5212_DCU_RETRY_LMT_SLG_RETRY     0x000fc000
00444 #define AR5K_AR5212_DCU_RETRY_LMT_SLG_RETRY_S   14
00445 
00446 /*
00447  * DCU channel time registers
00448  */
00449 #define AR5K_AR5212_DCU_CHAN_TIME(_n)           AR5K_AR5212_DCU(_n, 0x10c0)
00450 #define AR5K_AR5212_DCU_CHAN_TIME_DUR           0x000fffff
00451 #define AR5K_AR5212_DCU_CHAN_TIME_DUR_S         0
00452 #define AR5K_AR5212_DCU_CHAN_TIME_ENABLE        0x00100000
00453 
00454 /*
00455  * DCU misc registers
00456  */
00457 #define AR5K_AR5212_DCU_MISC(_n)                AR5K_AR5212_DCU(_n, 0x1100)
00458 #define AR5K_AR5212_DCU_MISC_BACKOFF            0x000007ff
00459 #define AR5K_AR5212_DCU_MISC_BACKOFF_FRAG       0x00000200
00460 #define AR5K_AR5212_DCU_MISC_HCFPOLL_ENABLE     0x00000800
00461 #define AR5K_AR5212_DCU_MISC_BACKOFF_PERSIST    0x00001000
00462 #define AR5K_AR5212_DCU_MISC_FRMPRFTCH_ENABLE   0x00002000
00463 #define AR5K_AR5212_DCU_MISC_VIRTCOL            0x0000c000
00464 #define AR5K_AR5212_DCU_MISC_VIRTCOL_NORMAL     0
00465 #define AR5K_AR5212_DCU_MISC_VIRTCOL_MODIFIED   1
00466 #define AR5K_AR5212_DCU_MISC_VIRTCOL_IGNORE     2
00467 #define AR5K_AR5212_DCU_MISC_BCN_ENABLE         0x00010000
00468 #define AR5K_AR5212_DCU_MISC_ARBLOCK_CTL        0x00060000
00469 #define AR5K_AR5212_DCU_MISC_ARBLOCK_CTL_S      17
00470 #define AR5K_AR5212_DCU_MISC_ARBLOCK_CTL_NONE   0
00471 #define AR5K_AR5212_DCU_MISC_ARBLOCK_CTL_INTFRM 1
00472 #define AR5K_AR5212_DCU_MISC_ARBLOCK_CTL_GLOBAL 2
00473 #define AR5K_AR5212_DCU_MISC_ARBLOCK_IGNORE     0x00080000
00474 #define AR5K_AR5212_DCU_MISC_SEQ_NUM_INCR_DIS   0x00100000
00475 #define AR5K_AR5212_DCU_MISC_POST_FR_BKOFF_DIS  0x00200000
00476 #define AR5K_AR5212_DCU_MISC_VIRT_COLL_POLICY   0x00400000
00477 #define AR5K_AR5212_DCU_MISC_BLOWN_IFS_POLICY   0x00800000
00478 #define AR5K_AR5212_DCU_MISC_SEQNUM_CTL         0x01000000
00479 
00480 /*
00481  * DCU frame sequence number registers
00482  */
00483 #define AR5K_AR5212_DCU_SEQNUM(_n)      AR5K_AR5212_DCU(_n, 0x1140)
00484 #define AR5K_AR5212_DCU_SEQNUM_M        0x00000fff
00485 /*
00486  * DCU global IFS SIFS registers
00487  */
00488 #define AR5K_AR5212_DCU_GBL_IFS_SIFS    0x1030
00489 #define AR5K_AR5212_DCU_GBL_IFS_SIFS_M  0x0000ffff
00490 
00491 /*
00492  * DCU global IFS slot interval registers
00493  */
00494 #define AR5K_AR5212_DCU_GBL_IFS_SLOT    0x1070
00495 #define AR5K_AR5212_DCU_GBL_IFS_SLOT_M  0x0000ffff
00496 
00497 /*
00498  * DCU global IFS EIFS registers
00499  */
00500 #define AR5K_AR5212_DCU_GBL_IFS_EIFS    0x10b0
00501 #define AR5K_AR5212_DCU_GBL_IFS_EIFS_M  0x0000ffff
00502 
00503 /*
00504  * DCU global IFS misc registers
00505  */
00506 #define AR5K_AR5212_DCU_GBL_IFS_MISC                    0x10f0
00507 #define AR5K_AR5212_DCU_GBL_IFS_MISC_LFSR_SLICE         0x00000007
00508 #define AR5K_AR5212_DCU_GBL_IFS_MISC_TURBO_MODE         0x00000008
00509 #define AR5K_AR5212_DCU_GBL_IFS_MISC_SIFS_DUR_USEC      0x000003f0
00510 #define AR5K_AR5212_DCU_GBL_IFS_MISC_USEC_DUR           0x000ffc00
00511 #define AR5K_AR5212_DCU_GBL_IFS_MISC_DCU_ARB_DELAY      0x00300000
00512 
00513 /*
00514  * DCU frame prefetch control register
00515  */
00516 #define AR5K_AR5212_DCU_FP              0x1230
00517 
00518 /*
00519  * DCU transmit pause control/status register
00520  */
00521 #define AR5K_AR5212_DCU_TXP             0x1270
00522 #define AR5K_AR5212_DCU_TXP_M           0x000003ff
00523 #define AR5K_AR5212_DCU_TXP_STATUS      0x00010000
00524 
00525 /*
00526  * DCU transmit filter register
00527  */
00528 #define AR5K_AR5212_DCU_TX_FILTER       0x1038
00529 
00530 /*
00531  * DCU clear transmit filter register
00532  */
00533 #define AR5K_AR5212_DCU_TX_FILTER_CLR   0x143c
00534 
00535 /*
00536  * DCU set transmit filter register
00537  */
00538 #define AR5K_AR5212_DCU_TX_FILTER_SET   0x147c
00539 
00540 /*
00541  * DMA size definitions
00542  */
00543 typedef enum {
00544         AR5K_AR5212_DMASIZE_4B = 0,
00545         AR5K_AR5212_DMASIZE_8B = 1,
00546         AR5K_AR5212_DMASIZE_16B = 2,
00547         AR5K_AR5212_DMASIZE_32B = 3,
00548         AR5K_AR5212_DMASIZE_64B = 4,
00549         AR5K_AR5212_DMASIZE_128B = 5,
00550         AR5K_AR5212_DMASIZE_256B = 6,
00551         AR5K_AR5212_DMASIZE_512B = 7
00552 } ar5k_ar5212_dmasize_t;
00553 
00554 /*
00555  * Reset control register
00556  */
00557 #define AR5K_AR5212_RC                  0x4000
00558 #define AR5K_AR5212_RC_PCU              0x00000001
00559 #define AR5K_AR5212_RC_BB               0x00000002
00560 #define AR5K_AR5212_RC_PCI              0x00000010
00561 #define AR5K_AR5212_RC_CHIP             (                               \
00562         AR5K_AR5212_RC_PCU | AR5K_AR5212_RC_BB | AR5K_AR5212_RC_PCI     \
00563 )
00564 
00565 /*
00566  * Sleep control register
00567  */
00568 #define AR5K_AR5212_SCR                 0x4004
00569 #define AR5K_AR5212_SCR_SLDUR           0x0000ffff
00570 #define AR5K_AR5212_SCR_SLE             0x00030000
00571 #define AR5K_AR5212_SCR_SLE_S           16
00572 #define AR5K_AR5212_SCR_SLE_WAKE        0x00000000
00573 #define AR5K_AR5212_SCR_SLE_SLP         0x00010000
00574 #define AR5K_AR5212_SCR_SLE_ALLOW       0x00020000
00575 #define AR5K_AR5212_SCR_SLE_UNITS       0x00000008
00576 
00577 /*
00578  * Interrupt pending register
00579  */
00580 #define AR5K_AR5212_INTPEND     0x4008
00581 #define AR5K_AR5212_INTPEND_M   0x00000001
00582 
00583 /*
00584  * Sleep force register
00585  */
00586 #define AR5K_AR5212_SFR         0x400c
00587 #define AR5K_AR5212_SFR_M       0x00000001
00588 
00589 /*
00590  * PCI configuration register
00591  */
00592 #define AR5K_AR5212_PCICFG              0x4010
00593 #define AR5K_AR5212_PCICFG_CLKRUNEN     0x00000004
00594 #define AR5K_AR5212_PCICFG_EESIZE       0x00000018
00595 #define AR5K_AR5212_PCICFG_EESIZE_S     3
00596 #define AR5K_AR5212_PCICFG_EESIZE_4K    0
00597 #define AR5K_AR5212_PCICFG_EESIZE_8K    1
00598 #define AR5K_AR5212_PCICFG_EESIZE_16K   2
00599 #define AR5K_AR5212_PCICFG_EESIZE_FAIL  3
00600 #define AR5K_AR5212_PCICFG_LED          0x00000060
00601 #define AR5K_AR5212_PCICFG_LED_NONE     0x00000000
00602 #define AR5K_AR5212_PCICFG_LED_PEND     0x00000020
00603 #define AR5K_AR5212_PCICFG_LED_ASSOC    0x00000040
00604 #define AR5K_AR5212_PCICFG_BUS_SEL      0x00000380
00605 #define AR5K_AR5212_PCICFG_CBEFIX_DIS   0x00000400
00606 #define AR5K_AR5212_PCICFG_SL_INTEN     0x00000800
00607 #define AR5K_AR5212_PCICFG_SL_INPEN     0x00002800
00608 #define AR5K_AR5212_PCICFG_SPWR_DN      0x00010000
00609 #define AR5K_AR5212_PCICFG_LEDMODE      0x000e0000
00610 #define AR5K_AR5212_PCICFG_LEDMODE_PROP 0x00000000
00611 #define AR5K_AR5212_PCICFG_LEDMODE_PROM 0x00020000
00612 #define AR5K_AR5212_PCICFG_LEDMODE_PWR  0x00040000
00613 #define AR5K_AR5212_PCICFG_LEDMODE_RAND 0x00060000
00614 #define AR5K_AR5212_PCICFG_LEDBLINK     0x00700000
00615 #define AR5K_AR5212_PCICFG_LEDBLINK_S   20
00616 #define AR5K_AR5212_PCICFG_LEDSLOW      0x00800000
00617 #define AR5K_AR5212_PCICFG_LEDSTATE                                     \
00618         (AR5K_AR5212_PCICFG_LED | AR5K_AR5212_PCICFG_LEDMODE |          \
00619         AR5K_AR5212_PCICFG_LEDBLINK | AR5K_AR5212_PCICFG_LEDSLOW)
00620 
00621 /*
00622  * "General Purpose Input/Output" (GPIO) control register
00623  */
00624 #define AR5K_AR5212_GPIOCR              0x4014
00625 #define AR5K_AR5212_GPIOCR_INT_ENA      0x00008000
00626 #define AR5K_AR5212_GPIOCR_INT_SELL     0x00000000
00627 #define AR5K_AR5212_GPIOCR_INT_SELH     0x00010000
00628 #define AR5K_AR5212_GPIOCR_NONE(n)      (0 << ((n) * 2))
00629 #define AR5K_AR5212_GPIOCR_OUT0(n)      (1 << ((n) * 2))
00630 #define AR5K_AR5212_GPIOCR_OUT1(n)      (2 << ((n) * 2))
00631 #define AR5K_AR5212_GPIOCR_ALL(n)       (3 << ((n) * 2))
00632 #define AR5K_AR5212_GPIOCR_INT_SEL(n)   ((n) << 12)
00633 
00634 #define AR5K_AR5212_NUM_GPIO    6
00635 
00636 /*
00637  * "General Purpose Input/Output" (GPIO) data output register
00638  */
00639 #define AR5K_AR5212_GPIODO      0x4018
00640 
00641 /*
00642  * "General Purpose Input/Output" (GPIO) data input register
00643  */
00644 #define AR5K_AR5212_GPIODI      0x401c
00645 #define AR5K_AR5212_GPIODI_M    0x0000002f
00646 
00647 /*
00648  * Silicon revision register
00649  */
00650 #define AR5K_AR5212_SREV                0x4020
00651 #define AR5K_AR5212_SREV_REV            0x0000000f
00652 #define AR5K_AR5212_SREV_REV_S          0
00653 #define AR5K_AR5212_SREV_VER            0x000000ff
00654 #define AR5K_AR5212_SREV_VER_S          4
00655 
00656 /*
00657  * EEPROM access registers
00658  */
00659 #define AR5K_AR5212_EEPROM_BASE         0x6000
00660 #define AR5K_AR5212_EEPROM_DATA         0x6004
00661 #define AR5K_AR5212_EEPROM_CMD          0x6008
00662 #define AR5K_AR5212_EEPROM_CMD_READ     0x00000001
00663 #define AR5K_AR5212_EEPROM_CMD_WRITE    0x00000002
00664 #define AR5K_AR5212_EEPROM_CMD_RESET    0x00000004
00665 #define AR5K_AR5212_EEPROM_STATUS       0x600c
00666 #define AR5K_AR5212_EEPROM_STAT_RDERR   0x00000001
00667 #define AR5K_AR5212_EEPROM_STAT_RDDONE  0x00000002
00668 #define AR5K_AR5212_EEPROM_STAT_WRERR   0x00000004
00669 #define AR5K_AR5212_EEPROM_STAT_WRDONE  0x00000008
00670 #define AR5K_AR5212_EEPROM_CFG          0x6010
00671 
00672 /*
00673  * PCU registers
00674  */
00675 
00676 #define AR5K_AR5212_PCU_MIN     0x8000
00677 #define AR5K_AR5212_PCU_MAX     0x8fff
00678 
00679 /*
00680  * First station id register (MAC address in lower 32 bits)
00681  */
00682 #define AR5K_AR5212_STA_ID0     0x8000
00683 
00684 /*
00685  * Second station id register (MAC address in upper 16 bits)
00686  */
00687 #define AR5K_AR5212_STA_ID1                     0x8004
00688 #define AR5K_AR5212_STA_ID1_AP                  0x00010000
00689 #define AR5K_AR5212_STA_ID1_ADHOC               0x00020000
00690 #define AR5K_AR5212_STA_ID1_PWR_SV              0x00040000
00691 #define AR5K_AR5212_STA_ID1_NO_KEYSRCH          0x00080000
00692 #define AR5K_AR5212_STA_ID1_PCF                 0x00100000
00693 #define AR5K_AR5212_STA_ID1_DEFAULT_ANTENNA     0x00200000
00694 #define AR5K_AR5212_STA_ID1_DESC_ANTENNA        0x00400000
00695 #define AR5K_AR5212_STA_ID1_RTS_DEFAULT_ANTENNA 0x00800000
00696 #define AR5K_AR5212_STA_ID1_ACKCTS_6MB          0x01000000
00697 #define AR5K_AR5212_STA_ID1_BASE_RATE_11B       0x02000000
00698 
00699 /*
00700  * First BSSID register (MAC address, lower 32bits)
00701  */
00702 #define AR5K_AR5212_BSS_ID0     0x8008
00703 
00704 /*
00705  * Second BSSID register (MAC address in upper 16 bits)
00706  *
00707  * AID: Association ID
00708  */
00709 #define AR5K_AR5212_BSS_ID1             0x800c
00710 #define AR5K_AR5212_BSS_ID1_AID         0xffff0000
00711 #define AR5K_AR5212_BSS_ID1_AID_S       16
00712 
00713 /*
00714  * Backoff slot time register
00715  */
00716 #define AR5K_AR5212_SLOT_TIME   0x8010
00717 
00718 /*
00719  * ACK/CTS timeout register
00720  */
00721 #define AR5K_AR5212_TIME_OUT            0x8014
00722 #define AR5K_AR5212_TIME_OUT_ACK        0x00001fff
00723 #define AR5K_AR5212_TIME_OUT_ACK_S      0
00724 #define AR5K_AR5212_TIME_OUT_CTS        0x1fff0000
00725 #define AR5K_AR5212_TIME_OUT_CTS_S      16
00726 
00727 /*
00728  * RSSI threshold register
00729  */
00730 #define AR5K_AR5212_RSSI_THR            0x8018
00731 #define AR5K_AR5212_RSSI_THR_M          0x000000ff
00732 #define AR5K_AR5212_RSSI_THR_BMISS      0x0000ff00
00733 #define AR5K_AR5212_RSSI_THR_BMISS_S    8
00734 
00735 /*
00736  * Transmit latency register
00737  */
00738 #define AR5K_AR5212_USEC                0x801c
00739 #define AR5K_AR5212_USEC_1              0x0000007f
00740 #define AR5K_AR5212_USEC_1_S            0
00741 #define AR5K_AR5212_USEC_32             0x00003f80
00742 #define AR5K_AR5212_USEC_32_S           7
00743 #define AR5K_AR5212_USEC_TX_LATENCY     0x007fc000
00744 #define AR5K_AR5212_USEC_TX_LATENCY_S   14
00745 #define AR5K_AR5212_USEC_RX_LATENCY     0x1f800000
00746 #define AR5K_AR5212_USEC_RX_LATENCY_S   23
00747 #define AR5K_AR5311_USEC_TX_LATENCY     0x000fc000
00748 #define AR5K_AR5311_USEC_TX_LATENCY_S   14
00749 #define AR5K_AR5311_USEC_RX_LATENCY     0x03f00000
00750 #define AR5K_AR5311_USEC_RX_LATENCY_S   20
00751 
00752 /*
00753  * PCU beacon control register
00754  */
00755 #define AR5K_AR5212_BEACON              0x8020
00756 #define AR5K_AR5212_BEACON_PERIOD       0x0000ffff
00757 #define AR5K_AR5212_BEACON_PERIOD_S     0
00758 #define AR5K_AR5212_BEACON_TIM          0x007f0000
00759 #define AR5K_AR5212_BEACON_TIM_S        16
00760 #define AR5K_AR5212_BEACON_ENABLE       0x00800000
00761 #define AR5K_AR5212_BEACON_RESET_TSF    0x01000000
00762 
00763 /*
00764  * CFP period register
00765  */
00766 #define AR5K_AR5212_CFP_PERIOD          0x8024
00767 
00768 /*
00769  * Next beacon time register
00770  */
00771 #define AR5K_AR5212_TIMER0              0x8028
00772 
00773 /*
00774  * Next DMA beacon alert register
00775  */
00776 #define AR5K_AR5212_TIMER1              0x802c
00777 
00778 /*
00779  * Next software beacon alert register
00780  */
00781 #define AR5K_AR5212_TIMER2              0x8030
00782 
00783 /*
00784  * Next ATIM window time register
00785  */
00786 #define AR5K_AR5212_TIMER3              0x8034
00787 
00788 /*
00789  * CFP duration register
00790  */
00791 #define AR5K_AR5212_CFP_DUR             0x8038
00792 
00793 /*
00794  * Receive filter register
00795  */
00796 #define AR5K_AR5212_RX_FILTER           0x803c
00797 #define AR5K_AR5212_RX_FILTER_UNICAST   0x00000001
00798 #define AR5K_AR5212_RX_FILTER_MULTICAST 0x00000002
00799 #define AR5K_AR5212_RX_FILTER_BROADCAST 0x00000004
00800 #define AR5K_AR5212_RX_FILTER_CONTROL   0x00000008
00801 #define AR5K_AR5212_RX_FILTER_BEACON    0x00000010
00802 #define AR5K_AR5212_RX_FILTER_PROMISC   0x00000020
00803 #define AR5K_AR5212_RX_FILTER_XR_POLL   0x00000040
00804 #define AR5K_AR5212_RX_FILTER_PROBE_REQ 0x00000080
00805 
00806 /*
00807  * Multicast filter register (lower 32 bits)
00808  */
00809 #define AR5K_AR5212_MCAST_FIL0  0x8040
00810 
00811 /*
00812  * Multicast filter register (higher 16 bits)
00813  */
00814 #define AR5K_AR5212_MCAST_FIL1  0x8044
00815 
00816 /*
00817  * PCU control register
00818  */
00819 #define AR5K_AR5212_DIAG_SW                     0x8048
00820 #define AR5K_AR5212_DIAG_SW_DIS_WEP_ACK         0x00000001
00821 #define AR5K_AR5212_DIAG_SW_DIS_ACK             0x00000002
00822 #define AR5K_AR5212_DIAG_SW_DIS_CTS             0x00000004
00823 #define AR5K_AR5212_DIAG_SW_DIS_ENC             0x00000008
00824 #define AR5K_AR5212_DIAG_SW_DIS_DEC             0x00000010
00825 #define AR5K_AR5212_DIAG_SW_DIS_RX              0x00000020
00826 #define AR5K_AR5212_DIAG_SW_LOOP_BACK           0x00000040
00827 #define AR5K_AR5212_DIAG_SW_CORR_FCS            0x00000080
00828 #define AR5K_AR5212_DIAG_SW_CHAN_INFO           0x00000100
00829 #define AR5K_AR5212_DIAG_SW_EN_SCRAM_SEED       0x00000200
00830 #define AR5K_AR5212_DIAG_SW_ECO_ENABLE          0x00000400
00831 #define AR5K_AR5212_DIAG_SW_SCRAM_SEED_M        0x0001fc00
00832 #define AR5K_AR5212_DIAG_SW_SCRAM_SEED_S        10
00833 #define AR5K_AR5212_DIAG_SW_FRAME_NV0           0x00020000
00834 #define AR5K_AR5212_DIAG_SW_OBSPT_M             0x000c0000
00835 #define AR5K_AR5212_DIAG_SW_OBSPT_S             18
00836 
00837 /*
00838  * TSF (clock) register (lower 32 bits)
00839  */
00840 #define AR5K_AR5212_TSF_L32     0x804c
00841 
00842 /*
00843  * TSF (clock) register (higher 32 bits)
00844  */
00845 #define AR5K_AR5212_TSF_U32     0x8050
00846 
00847 /*
00848  * ADDAC test register
00849  */
00850 #define AR5K_AR5212_ADDAC_TEST  0x8054
00851 
00852 /*
00853  * Default antenna register
00854  */
00855 #define AR5K_AR5212_DEFAULT_ANTENNA     0x8058
00856 
00857 /*
00858  * Last beacon timestamp register
00859  */
00860 #define AR5K_AR5212_LAST_TSTP   0x8080
00861 
00862 /*
00863  * NAV register (current)
00864  */
00865 #define AR5K_AR5212_NAV         0x8084
00866 
00867 /*
00868  * RTS success register
00869  */
00870 #define AR5K_AR5212_RTS_OK      0x8088
00871 
00872 /*
00873  * RTS failure register
00874  */
00875 #define AR5K_AR5212_RTS_FAIL    0x808c
00876 
00877 /*
00878  * ACK failure register
00879  */
00880 #define AR5K_AR5212_ACK_FAIL    0x8090
00881 
00882 /*
00883  * FCS failure register
00884  */
00885 #define AR5K_AR5212_FCS_FAIL    0x8094
00886 
00887 /*
00888  * Beacon count register
00889  */
00890 #define AR5K_AR5212_BEACON_CNT  0x8098
00891 
00892 /*
00893  * XR (eXtended Range) mode register
00894  */
00895 #define AR5K_AR5212_XRMODE                      0x80c0
00896 #define AR5K_AR5212_XRMODE_POLL_TYPE_M          0x0000003f
00897 #define AR5K_AR5212_XRMODE_POLL_TYPE_S          0
00898 #define AR5K_AR5212_XRMODE_POLL_SUBTYPE_M       0x0000003c
00899 #define AR5K_AR5212_XRMODE_POLL_SUBTYPE_S       2
00900 #define AR5K_AR5212_XRMODE_POLL_WAIT_ALL        0x00000080
00901 #define AR5K_AR5212_XRMODE_SIFS_DELAY           0x000fff00
00902 #define AR5K_AR5212_XRMODE_FRAME_HOLD_M         0xfff00000
00903 #define AR5K_AR5212_XRMODE_FRAME_HOLD_S         20
00904 
00905 /*
00906  * XR delay register
00907  */
00908 #define AR5K_AR5212_XRDELAY                     0x80c4
00909 #define AR5K_AR5212_XRDELAY_SLOT_DELAY_M        0x0000ffff
00910 #define AR5K_AR5212_XRDELAY_SLOT_DELAY_S        0
00911 #define AR5K_AR5212_XRDELAY_CHIRP_DELAY_M       0xffff0000
00912 #define AR5K_AR5212_XRDELAY_CHIRP_DELAY_S       16
00913 
00914 /*
00915  * XR timeout register
00916  */
00917 #define AR5K_AR5212_XRTIMEOUT           0x80c8
00918 #define AR5K_AR5212_XRTIMEOUT_CHIRP_M   0x0000ffff
00919 #define AR5K_AR5212_XRTIMEOUT_CHIRP_S   0
00920 #define AR5K_AR5212_XRTIMEOUT_POLL_M    0xffff0000
00921 #define AR5K_AR5212_XRTIMEOUT_POLL_S    16
00922 
00923 /*
00924  * XR chirp register
00925  */
00926 #define AR5K_AR5212_XRCHIRP             0x80cc
00927 #define AR5K_AR5212_XRCHIRP_SEND        0x00000001
00928 #define AR5K_AR5212_XRCHIRP_GAP         0xffff0000
00929 
00930 /*
00931  * XR stomp register
00932  */
00933 #define AR5K_AR5212_XRSTOMP             0x80d0
00934 #define AR5K_AR5212_XRSTOMP_TX          0x00000001
00935 #define AR5K_AR5212_XRSTOMP_RX_ABORT    0x00000002
00936 #define AR5K_AR5212_XRSTOMP_RSSI_THRES  0x0000ff00
00937 
00938 /*
00939  * First enhanced sleep register
00940  */
00941 #define AR5K_AR5212_SLEEP0              0x80d4
00942 #define AR5K_AR5212_SLEEP0_NEXT_DTIM    0x0007ffff
00943 #define AR5K_AR5212_SLEEP0_NEXT_DTIM_S  0
00944 #define AR5K_AR5212_SLEEP0_ASSUME_DTIM  0x00080000
00945 #define AR5K_AR5212_SLEEP0_ENH_SLEEP_EN 0x00100000
00946 #define AR5K_AR5212_SLEEP0_CABTO        0xff000000
00947 #define AR5K_AR5212_SLEEP0_CABTO_S      24
00948 
00949 /*
00950  * Second enhanced sleep register
00951  */
00952 #define AR5K_AR5212_SLEEP1              0x80d8
00953 #define AR5K_AR5212_SLEEP1_NEXT_TIM     0x0007ffff
00954 #define AR5K_AR5212_SLEEP1_NEXT_TIM_S   0
00955 #define AR5K_AR5212_SLEEP1_BEACON_TO    0xff000000
00956 #define AR5K_AR5212_SLEEP1_BEACON_TO_S  24
00957 
00958 /*
00959  * Third enhanced sleep register
00960  */
00961 #define AR5K_AR5212_SLEEP2              0x80dc
00962 #define AR5K_AR5212_SLEEP2_TIM_PER      0x0000ffff
00963 #define AR5K_AR5212_SLEEP2_TIM_PER_S    0
00964 #define AR5K_AR5212_SLEEP2_DTIM_PER     0xffff0000
00965 #define AR5K_AR5212_SLEEP2_DTIM_PER_S   16
00966 
00967 /*
00968  * BSSID mask registers
00969  */
00970 #define AR5K_AR5212_BSS_IDM0    0x80e0
00971 #define AR5K_AR5212_BSS_IDM1    0x80e4
00972 
00973 /*
00974  * TX power control (TPC) register
00975  */
00976 #define AR5K_AR5212_TXPC                0x80e8
00977 #define AR5K_AR5212_TXPC_ACK_M          0x0000003f
00978 #define AR5K_AR5212_TXPC_ACK_S          0
00979 #define AR5K_AR5212_TXPC_CTS_M          0x00003f00
00980 #define AR5K_AR5212_TXPC_CTS_S          8
00981 #define AR5K_AR5212_TXPC_CHIRP_M        0x003f0000
00982 #define AR5K_AR5212_TXPC_CHIRP_S        22
00983 
00984 /*
00985  * Profile count registers
00986  */
00987 #define AR5K_AR5212_PROFCNT_TX          0x80ec
00988 #define AR5K_AR5212_PROFCNT_RX          0x80f0
00989 #define AR5K_AR5212_PROFCNT_RXCLR       0x80f4
00990 #define AR5K_AR5212_PROFCNT_CYCLE       0x80f8
00991 
00992 /*
00993  * TSF parameter register
00994  */
00995 #define AR5K_AR5212_TSF_PARM            0x8104
00996 #define AR5K_AR5212_TSF_PARM_INC_M      0x000000ff
00997 #define AR5K_AR5212_TSF_PARM_INC_S      0
00998 
00999 /*
01000  * PHY error filter register
01001  */
01002 #define AR5K_AR5212_PHY_ERR_FIL         0x810c
01003 #define AR5K_AR5212_PHY_ERR_FIL_RADAR   0x00000020
01004 #define AR5K_AR5212_PHY_ERR_FIL_OFDM    0x00020000
01005 #define AR5K_AR5212_PHY_ERR_FIL_CCK     0x02000000
01006 
01007 /*
01008  * Rate duration register
01009  */
01010 #define AR5K_AR5212_RATE_DUR_0          0x8700
01011 #define AR5K_AR5212_RATE_DUR(_n)        (AR5K_AR5212_RATE_DUR_0 + ((_n) << 2))
01012 
01013 /*
01014  * Key table (WEP) register
01015  */
01016 #define AR5K_AR5212_KEYTABLE_0          0x8800
01017 #define AR5K_AR5212_KEYTABLE(_n)        (AR5K_AR5212_KEYTABLE_0 + ((_n) << 5))
01018 #define AR5K_AR5212_KEYTABLE_OFF(_n, x) (AR5K_AR5212_KEYTABLE(_n) + (x << 2))
01019 #define AR5K_AR5212_KEYTABLE_TYPE(_n)   AR5K_AR5212_KEYTABLE_OFF(_n, 5)
01020 #define AR5K_AR5212_KEYTABLE_TYPE_40    0x00000000
01021 #define AR5K_AR5212_KEYTABLE_TYPE_104   0x00000001
01022 #define AR5K_AR5212_KEYTABLE_TYPE_128   0x00000003
01023 #define AR5K_AR5212_KEYTABLE_TYPE_TKIP  0x00000004
01024 #define AR5K_AR5212_KEYTABLE_TYPE_AES   0x00000005
01025 #define AR5K_AR5212_KEYTABLE_TYPE_CCM   0x00000006
01026 #define AR5K_AR5212_KEYTABLE_TYPE_NULL  0x00000007
01027 #define AR5K_AR5212_KEYTABLE_ANTENNA    0x00000008
01028 #define AR5K_AR5212_KEYTABLE_MAC0(_n)   AR5K_AR5212_KEYTABLE_OFF(_n, 6)
01029 #define AR5K_AR5212_KEYTABLE_MAC1(_n)   AR5K_AR5212_KEYTABLE_OFF(_n, 7)
01030 #define AR5K_AR5212_KEYTABLE_VALID      0x00008000
01031 
01032 #define AR5K_AR5212_KEYTABLE_SIZE       128
01033 #define AR5K_AR5212_KEYCACHE_SIZE       8
01034 
01035 /*
01036  * PHY register
01037  */
01038 #define AR5K_AR5212_PHY(_n)             (0x9800 + ((_n) << 2))
01039 #define AR5K_AR5212_PHY_SHIFT_2GHZ      0x00004007
01040 #define AR5K_AR5212_PHY_SHIFT_5GHZ      0x00000007
01041 
01042 /*
01043  * PHY turbo mode register
01044  */
01045 #define AR5K_AR5212_PHY_TURBO           0x9804
01046 #define AR5K_AR5212_PHY_TURBO_MODE      0x00000001
01047 #define AR5K_AR5212_PHY_TURBO_SHORT     0x00000002
01048 
01049 /*
01050  * PHY agility command register
01051  */
01052 #define AR5K_AR5212_PHY_AGC             0x9808
01053 #define AR5K_AR5212_PHY_AGC_DISABLE     0x08000000
01054 
01055 /*
01056  * PHY timing register
01057  */
01058 #define AR5K_AR5212_PHY_TIMING_3                0x9814
01059 #define AR5K_AR5212_PHY_TIMING_3_DSC_MAN        0xfffe0000
01060 #define AR5K_AR5212_PHY_TIMING_3_DSC_MAN_S      17
01061 #define AR5K_AR5212_PHY_TIMING_3_DSC_EXP        0x0001e000
01062 #define AR5K_AR5212_PHY_TIMING_3_DSC_EXP_S      13
01063 
01064 /*
01065  * PHY chip revision register
01066  */
01067 #define AR5K_AR5212_PHY_CHIP_ID         0x9818
01068 
01069 /*
01070  * PHY activation register
01071  */
01072 #define AR5K_AR5212_PHY_ACTIVE          0x981c
01073 #define AR5K_AR5212_PHY_ENABLE          0x00000001
01074 #define AR5K_AR5212_PHY_DISABLE         0x00000002
01075 
01076 /*
01077  * PHY agility control register
01078  */
01079 #define AR5K_AR5212_PHY_AGCCTL          0x9860
01080 #define AR5K_AR5212_PHY_AGCCTL_CAL      0x00000001
01081 #define AR5K_AR5212_PHY_AGCCTL_NF       0x00000002
01082 
01083 /*
01084  * PHY noise floor status register
01085  */
01086 #define AR5K_AR5212_PHY_NF              0x9864
01087 #define AR5K_AR5212_PHY_NF_M            0x000001ff
01088 #define AR5K_AR5212_PHY_NF_ACTIVE       0x00000100
01089 #define AR5K_AR5212_PHY_NF_RVAL(_n)     (((_n) >> 19) & AR5K_AR5212_PHY_NF_M)
01090 #define AR5K_AR5212_PHY_NF_AVAL(_n)     (-((_n) ^ AR5K_AR5212_PHY_NF_M) + 1)
01091 #define AR5K_AR5212_PHY_NF_SVAL(_n)     (((_n) & AR5K_AR5212_PHY_NF_M) | (1 << 9))
01092 
01093 /*
01094  * PHY sleep registers
01095  */
01096 #define AR5K_AR5212_PHY_SCR             0x9870
01097 #define AR5K_AR5212_PHY_SCR_32MHZ       0x0000001f
01098 #define AR5K_AR5212_PHY_SLMT            0x9874
01099 #define AR5K_AR5212_PHY_SLMT_32MHZ      0x0000007f
01100 #define AR5K_AR5212_PHY_SCAL            0x9878
01101 #define AR5K_AR5212_PHY_SCAL_32MHZ      0x0000000e
01102 
01103 /*
01104  * PHY PLL control register
01105  */
01106 #define AR5K_AR5212_PHY_PLL             0x987c
01107 #define AR5K_AR5212_PHY_PLL_40MHZ       0x000000aa
01108 #define AR5K_AR5212_PHY_PLL_44MHZ       0x000000ab
01109 #define AR5K_AR5212_PHY_PLL_AR5111      0x00000000
01110 #define AR5K_AR5212_PHY_PLL_AR5112      0x00000040
01111 
01112 /*
01113  * PHY receiver delay register
01114  */
01115 #define AR5K_AR5212_PHY_RX_DELAY        0x9914
01116 #define AR5K_AR5212_PHY_RX_DELAY_M      0x00003fff
01117 
01118 /*
01119  * PHY timing IQ control register
01120  */
01121 #define AR5K_AR5212_PHY_IQ                      0x9920
01122 #define AR5K_AR5212_PHY_IQ_CORR_Q_Q_COFF        0x0000001f
01123 #define AR5K_AR5212_PHY_IQ_CORR_Q_I_COFF        0x000007e0
01124 #define AR5K_AR5212_PHY_IQ_CORR_Q_I_COFF_S      5
01125 #define AR5K_AR5212_PHY_IQ_CORR_ENABLE          0x00000800
01126 #define AR5K_AR5212_PHY_IQ_CAL_NUM_LOG_MAX      0x0000f000
01127 #define AR5K_AR5212_PHY_IQ_CAL_NUM_LOG_MAX_S    12
01128 #define AR5K_AR5212_PHY_IQ_RUN                  0x00010000
01129 
01130 /*
01131  * PHY PAPD probe register
01132  */
01133 #define AR5K_AR5212_PHY_PAPD_PROBE              0x9930
01134 #define AR5K_AR5212_PHY_PAPD_PROBE_TXPOWER      0x00007e00
01135 #define AR5K_AR5212_PHY_PAPD_PROBE_TXPOWER_S    9
01136 #define AR5K_AR5212_PHY_PAPD_PROBE_TX_NEXT      0x00008000
01137 #define AR5K_AR5212_PHY_PAPD_PROBE_TYPE         0x01800000
01138 #define AR5K_AR5212_PHY_PAPD_PROBE_TYPE_S       23
01139 #define AR5K_AR5212_PHY_PAPD_PROBE_TYPE_OFDM    0
01140 #define AR5K_AR5212_PHY_PAPD_PROBE_TYPE_XR      1
01141 #define AR5K_AR5212_PHY_PAPD_PROBE_TYPE_CCK     2
01142 #define AR5K_AR5212_PHY_PAPD_PROBE_GAINF        0xfe000000
01143 #define AR5K_AR5212_PHY_PAPD_PROBE_GAINF_S      25
01144 
01145 /*
01146  * PHY TX power registers
01147  */
01148 #define AR5K_AR5212_PHY_TXPOWER_RATE1                   0x9934
01149 #define AR5K_AR5212_PHY_TXPOWER_RATE2                   0x9938
01150 #define AR5K_AR5212_PHY_TXPOWER_RATE_MAX                0x993c
01151 #define AR5K_AR5212_PHY_TXPOWER_RATE_MAX_TPC_ENABLE     0x00000040
01152 #define AR5K_AR5212_PHY_TXPOWER_RATE3                   0xa234
01153 #define AR5K_AR5212_PHY_TXPOWER_RATE4                   0xa238
01154 
01155 /*
01156  * PHY frame control register
01157  */
01158 #define AR5K_AR5212_PHY_FC              0x9944
01159 #define AR5K_AR5212_PHY_FC_TX_CLIP      0x00000038
01160 #define AR5K_AR5212_PHY_FC_TX_CLIP_S    3
01161 
01162 /*
01163  * PHY radar detection enable register
01164  */
01165 #define AR5K_AR5212_PHY_RADAR           0x9954
01166 #define AR5K_AR5212_PHY_RADAR_DISABLE   0x00000000
01167 #define AR5K_AR5212_PHY_RADAR_ENABLE    0x00000001
01168 
01169 /*
01170  * PHY antenna switch table registers
01171  */
01172 #define AR5K_AR5212_PHY_ANT_SWITCH_TABLE_0      0x9960
01173 #define AR5K_AR5212_PHY_ANT_SWITCH_TABLE_1      0x9964
01174 
01175 /*
01176  * PHY clock sleep registers
01177  */
01178 #define AR5K_AR5212_PHY_SCLOCK          0x99f0
01179 #define AR5K_AR5212_PHY_SCLOCK_32MHZ    0x0000000c
01180 #define AR5K_AR5212_PHY_SDELAY          0x99f4
01181 #define AR5K_AR5212_PHY_SDELAY_32MHZ    0x000000ff
01182 #define AR5K_AR5212_PHY_SPENDING        0x99f8
01183 #define AR5K_AR5212_PHY_SPENDING_AR5111 0x00000018
01184 #define AR5K_AR5212_PHY_SPENDING_AR5112 0x00000014
01185 
01186 /*
01187  * PHY timing IQ calibration result register
01188  */
01189 #define AR5K_AR5212_PHY_IQRES_CAL_PWR_I 0x9c10
01190 #define AR5K_AR5212_PHY_IQRES_CAL_PWR_Q 0x9c14
01191 #define AR5K_AR5212_PHY_IQRES_CAL_CORR  0x9c18
01192 
01193 /*
01194  * PHY current RSSI register
01195  */
01196 #define AR5K_AR5212_PHY_CURRENT_RSSI    0x9c1c
01197 
01198 /*
01199  * PHY PCDAC TX power register
01200  */
01201 #define AR5K_AR5212_PHY_PCDAC_TXPOWER(_n)       (0xa180 + ((_n) << 2))
01202 
01203 /*
01204  * PHY mode register
01205  */
01206 #define AR5K_AR5212_PHY_MODE            0x0a200
01207 #define AR5K_AR5212_PHY_MODE_MOD        0x00000001
01208 #define AR5K_AR5212_PHY_MODE_MOD_OFDM   0
01209 #define AR5K_AR5212_PHY_MODE_MOD_CCK    1
01210 #define AR5K_AR5212_PHY_MODE_FREQ       0x00000002
01211 #define AR5K_AR5212_PHY_MODE_FREQ_5GHZ  0
01212 #define AR5K_AR5212_PHY_MODE_FREQ_2GHZ  2
01213 #define AR5K_AR5212_PHY_MODE_MOD_DYN    0x00000004
01214 #define AR5K_AR5212_PHY_MODE_RAD        0x00000008
01215 #define AR5K_AR5212_PHY_MODE_RAD_AR5111 0
01216 #define AR5K_AR5212_PHY_MODE_RAD_AR5112 8
01217 #define AR5K_AR5212_PHY_MODE_XR         0x00000010
01218 
01219 /*
01220  * PHY 2GHz gain register
01221  */
01222 #define AR5K_AR5212_PHY_GAIN_2GHZ               0xa20c
01223 #define AR5K_AR5212_PHY_GAIN_2GHZ_MARGIN_TXRX   0x00fc0000
01224 #define AR5K_AR5212_PHY_GAIN_2GHZ_MARGIN_TXRX_S 18
01225 
01226 #endif

Generated on Mon Nov 21 15:58:10 2005 for openwifi by  doxygen 1.4.1