The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/dev/ic/ar5211reg.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

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

Cache object: 02a14a97e705da85c0929ef114495540


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.