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 1046