1*6ab8d4f7Sstsp /* $OpenBSD: athnreg.h,v 1.25 2020/04/28 06:58:09 stsp Exp $ */ 2498e8a28Sdamien 3498e8a28Sdamien /*- 4498e8a28Sdamien * Copyright (c) 2009 Damien Bergamini <damien.bergamini@free.fr> 5498e8a28Sdamien * Copyright (c) 2008-2009 Atheros Communications Inc. 6498e8a28Sdamien * 7498e8a28Sdamien * Permission to use, copy, modify, and distribute this software for any 8498e8a28Sdamien * purpose with or without fee is hereby granted, provided that the above 9498e8a28Sdamien * copyright notice and this permission notice appear in all copies. 10498e8a28Sdamien * 11498e8a28Sdamien * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 12498e8a28Sdamien * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 13498e8a28Sdamien * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 14498e8a28Sdamien * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 15498e8a28Sdamien * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 16498e8a28Sdamien * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 17498e8a28Sdamien * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 18498e8a28Sdamien */ 19498e8a28Sdamien 20bd6ea91dSdamien /* 21bd6ea91dSdamien * MAC registers. 22bd6ea91dSdamien */ 23498e8a28Sdamien #define AR_CR 0x0008 24498e8a28Sdamien #define AR_RXDP 0x000c 25498e8a28Sdamien #define AR_CFG 0x0014 26bd6ea91dSdamien #define AR_RXBP_THRESH 0x0018 27498e8a28Sdamien #define AR_MIRT 0x0020 28498e8a28Sdamien #define AR_IER 0x0024 29498e8a28Sdamien #define AR_TIMT 0x0028 30498e8a28Sdamien #define AR_RIMT 0x002c 31498e8a28Sdamien #define AR_TXCFG 0x0030 32498e8a28Sdamien #define AR_RXCFG 0x0034 33498e8a28Sdamien #define AR_MIBC 0x0040 34498e8a28Sdamien #define AR_TOPS 0x0044 35498e8a28Sdamien #define AR_RXNPTO 0x0048 36498e8a28Sdamien #define AR_TXNPTO 0x004c 37498e8a28Sdamien #define AR_RPGTO 0x0050 38498e8a28Sdamien #define AR_RPCNT 0x0054 39498e8a28Sdamien #define AR_MACMISC 0x0058 40bd6ea91dSdamien #define AR_DATABUF_SIZE 0x0060 41498e8a28Sdamien #define AR_GTXTO 0x0064 42498e8a28Sdamien #define AR_GTTM 0x0068 43498e8a28Sdamien #define AR_CST 0x006c 44bd6ea91dSdamien #define AR_HP_RXDP 0x0074 45bd6ea91dSdamien #define AR_LP_RXDP 0x0078 46498e8a28Sdamien #define AR_ISR 0x0080 47498e8a28Sdamien #define AR_ISR_S0 0x0084 48498e8a28Sdamien #define AR_ISR_S1 0x0088 49498e8a28Sdamien #define AR_ISR_S2 0x008c 50498e8a28Sdamien #define AR_ISR_S3 0x0090 51498e8a28Sdamien #define AR_ISR_S4 0x0094 52498e8a28Sdamien #define AR_ISR_S5 0x0098 53498e8a28Sdamien #define AR_IMR 0x00a0 54498e8a28Sdamien #define AR_IMR_S0 0x00a4 55498e8a28Sdamien #define AR_IMR_S1 0x00a8 56498e8a28Sdamien #define AR_IMR_S2 0x00ac 57498e8a28Sdamien #define AR_IMR_S3 0x00b0 58498e8a28Sdamien #define AR_IMR_S4 0x00b4 59498e8a28Sdamien #define AR_IMR_S5 0x00b8 60498e8a28Sdamien #define AR_ISR_RAC 0x00c0 61498e8a28Sdamien #define AR_ISR_S0_S 0x00c4 62498e8a28Sdamien #define AR_ISR_S1_S 0x00c8 63498e8a28Sdamien #define AR_DMADBG(i) (0x00e0 + (i) * 4) 64498e8a28Sdamien #define AR_QTXDP(i) (0x0800 + (i) * 4) 65bd6ea91dSdamien #define AR_Q_STATUS_RING_START 0x0830 66bd6ea91dSdamien #define AR_Q_STATUS_RING_END 0x0834 67498e8a28Sdamien #define AR_Q_TXE 0x0840 68498e8a28Sdamien #define AR_Q_TXD 0x0880 69498e8a28Sdamien #define AR_QCBRCFG(i) (0x08c0 + (i) * 4) 70498e8a28Sdamien #define AR_QRDYTIMECFG(i) (0x0900 + (i) * 4) 71498e8a28Sdamien #define AR_Q_ONESHOTARM_SC 0x0940 72498e8a28Sdamien #define AR_Q_ONESHOTARM_CC 0x0980 73498e8a28Sdamien #define AR_QMISC(i) (0x09c0 + (i) * 4) 74498e8a28Sdamien #define AR_QSTS(i) (0x0a00 + (i) * 4) 75498e8a28Sdamien #define AR_Q_RDYTIMESHDN 0x0a40 76bd6ea91dSdamien #define AR_Q_DESC_CRCCHK 0x0a44 77498e8a28Sdamien #define AR_DQCUMASK(i) (0x1000 + (i) * 4) 78498e8a28Sdamien #define AR_D_GBL_IFS_SIFS 0x1030 79498e8a28Sdamien #define AR_D_TXBLK_CMD 0x1038 80498e8a28Sdamien #define AR_DLCL_IFS(i) (0x1040 + (i) * 4) 81498e8a28Sdamien #define AR_D_GBL_IFS_SLOT 0x1070 82498e8a28Sdamien #define AR_DRETRY_LIMIT(i) (0x1080 + (i) * 4) 83498e8a28Sdamien #define AR_D_GBL_IFS_EIFS 0x10b0 84498e8a28Sdamien #define AR_DCHNTIME(i) (0x10c0 + (i) * 4) 85498e8a28Sdamien #define AR_D_GBL_IFS_MISC 0x10f0 86498e8a28Sdamien #define AR_DMISC(i) (0x1100 + (i) * 4) 87498e8a28Sdamien #define AR_D_SEQNUM 0x1140 88498e8a28Sdamien #define AR_D_FPCTL 0x1230 89498e8a28Sdamien #define AR_D_TXPSE 0x1270 90498e8a28Sdamien #define AR_D_TXSLOTMASK 0x12f0 91498e8a28Sdamien #define AR_MAC_SLEEP 0x1f00 92498e8a28Sdamien #define AR_CFG_LED 0x1f04 93498e8a28Sdamien #define AR_EEPROM_OFFSET(i) (0x2000 + (i) * 4) 94498e8a28Sdamien #define AR_RC 0x4000 95498e8a28Sdamien #define AR_WA 0x4004 96498e8a28Sdamien #define AR_PM_STATE 0x4008 97498e8a28Sdamien #define AR_PCIE_PM_CTRL 0x4014 98498e8a28Sdamien #define AR_HOST_TIMEOUT 0x4018 99498e8a28Sdamien #define AR_EEPROM 0x401c 100498e8a28Sdamien #define AR_SREV 0x4020 101498e8a28Sdamien #define AR_AHB_MODE 0x4024 102498e8a28Sdamien #define AR_INTR_SYNC_CAUSE 0x4028 103498e8a28Sdamien #define AR_INTR_SYNC_ENABLE 0x402c 104498e8a28Sdamien #define AR_INTR_ASYNC_MASK 0x4030 105498e8a28Sdamien #define AR_INTR_SYNC_MASK 0x4034 106498e8a28Sdamien #define AR_INTR_ASYNC_CAUSE 0x4038 107498e8a28Sdamien #define AR_INTR_ASYNC_ENABLE 0x403c 108498e8a28Sdamien #define AR_PCIE_SERDES 0x4040 109498e8a28Sdamien #define AR_PCIE_SERDES2 0x4044 110bd6ea91dSdamien #define AR_INTR_PRIO_SYNC_ENABLE 0x40c4 111bd6ea91dSdamien #define AR_INTR_PRIO_ASYNC_MASK 0x40c8 112bd6ea91dSdamien #define AR_INTR_PRIO_SYNC_MASK 0x40cc 113bd6ea91dSdamien #define AR_INTR_PRIO_ASYNC_ENABLE 0x40d4 114498e8a28Sdamien #define AR_RTC_RC 0x7000 115bd6ea91dSdamien #define AR_RTC_XTAL_CONTROL 0x7004 116bd6ea91dSdamien #define AR_RTC_REG_CONTROL0 0x7008 117bd6ea91dSdamien #define AR_RTC_REG_CONTROL1 0x700c 118498e8a28Sdamien #define AR_RTC_PLL_CONTROL 0x7014 1197a911050Sdamien #define AR_RTC_PLL_CONTROL2 0x703c 120498e8a28Sdamien #define AR_RTC_RESET 0x7040 121498e8a28Sdamien #define AR_RTC_STATUS 0x7044 122498e8a28Sdamien #define AR_RTC_SLEEP_CLK 0x7048 123498e8a28Sdamien #define AR_RTC_FORCE_WAKE 0x704c 124498e8a28Sdamien #define AR_RTC_INTR_CAUSE 0x7050 125498e8a28Sdamien #define AR_RTC_INTR_ENABLE 0x7054 126498e8a28Sdamien #define AR_RTC_INTR_MASK 0x7058 127498e8a28Sdamien #define AR_STA_ID0 0x8000 128498e8a28Sdamien #define AR_STA_ID1 0x8004 129498e8a28Sdamien #define AR_BSS_ID0 0x8008 130498e8a28Sdamien #define AR_BSS_ID1 0x800c 131498e8a28Sdamien #define AR_BCN_RSSI_AVE 0x8010 132498e8a28Sdamien #define AR_TIME_OUT 0x8014 133498e8a28Sdamien #define AR_RSSI_THR 0x8018 134498e8a28Sdamien #define AR_USEC 0x801c 135498e8a28Sdamien #define AR_RESET_TSF 0x8020 136498e8a28Sdamien #define AR_MAX_CFP_DUR 0x8038 137498e8a28Sdamien #define AR_RX_FILTER 0x803c 138498e8a28Sdamien #define AR_MCAST_FIL0 0x8040 139498e8a28Sdamien #define AR_MCAST_FIL1 0x8044 140498e8a28Sdamien #define AR_DIAG_SW 0x8048 141498e8a28Sdamien #define AR_TSF_L32 0x804c 142498e8a28Sdamien #define AR_TSF_U32 0x8050 143498e8a28Sdamien #define AR_TST_ADDAC 0x8054 144498e8a28Sdamien #define AR_DEF_ANTENNA 0x8058 145498e8a28Sdamien #define AR_AES_MUTE_MASK0 0x805c 146498e8a28Sdamien #define AR_AES_MUTE_MASK1 0x8060 147498e8a28Sdamien #define AR_GATED_CLKS 0x8064 148498e8a28Sdamien #define AR_OBS_BUS_CTRL 0x8068 149498e8a28Sdamien #define AR_OBS_BUS_1 0x806c 150498e8a28Sdamien #define AR_LAST_TSTP 0x8080 151498e8a28Sdamien #define AR_NAV 0x8084 152498e8a28Sdamien #define AR_RTS_OK 0x8088 153498e8a28Sdamien #define AR_RTS_FAIL 0x808c 154498e8a28Sdamien #define AR_ACK_FAIL 0x8090 155498e8a28Sdamien #define AR_FCS_FAIL 0x8094 156498e8a28Sdamien #define AR_BEACON_CNT 0x8098 157498e8a28Sdamien #define AR_SLEEP1 0x80d4 158498e8a28Sdamien #define AR_SLEEP2 0x80d8 159498e8a28Sdamien #define AR_BSSMSKL 0x80e0 160498e8a28Sdamien #define AR_BSSMSKU 0x80e4 161498e8a28Sdamien #define AR_TPC 0x80e8 162498e8a28Sdamien #define AR_TFCNT 0x80ec 163498e8a28Sdamien #define AR_RFCNT 0x80f0 164498e8a28Sdamien #define AR_RCCNT 0x80f4 165498e8a28Sdamien #define AR_CCCNT 0x80f8 166498e8a28Sdamien #define AR_QUIET1 0x80fc 167498e8a28Sdamien #define AR_QUIET2 0x8100 168498e8a28Sdamien #define AR_TSF_PARM 0x8104 169498e8a28Sdamien #define AR_QOS_NO_ACK 0x8108 170498e8a28Sdamien #define AR_PHY_ERR 0x810c 171498e8a28Sdamien #define AR_RXFIFO_CFG 0x8114 172498e8a28Sdamien #define AR_MIC_QOS_CONTROL 0x8118 173498e8a28Sdamien #define AR_MIC_QOS_SELECT 0x811c 174498e8a28Sdamien #define AR_PCU_MISC 0x8120 175498e8a28Sdamien #define AR_FILT_OFDM 0x8124 176498e8a28Sdamien #define AR_FILT_CCK 0x8128 177498e8a28Sdamien #define AR_PHY_ERR_1 0x812c 178498e8a28Sdamien #define AR_PHY_ERR_MASK_1 0x8130 179498e8a28Sdamien #define AR_PHY_ERR_2 0x8134 180498e8a28Sdamien #define AR_PHY_ERR_MASK_2 0x8138 181498e8a28Sdamien #define AR_TSFOOR_THRESHOLD 0x813c 182bd6ea91dSdamien #define AR_PHY_ERR_EIFS_MASK 0x8144 183498e8a28Sdamien #define AR_PHY_ERR_3 0x8168 184498e8a28Sdamien #define AR_PHY_ERR_MASK_3 0x816c 185498e8a28Sdamien #define AR_BT_COEX_MODE 0x8170 186498e8a28Sdamien #define AR_BT_COEX_WEIGHT 0x8174 187498e8a28Sdamien #define AR_BT_COEX_MODE2 0x817c 188498e8a28Sdamien #define AR_NEXT_NDP2_TIMER(i) (0x8180 + (i) * 4) 189498e8a28Sdamien #define AR_NDP2_PERIOD(i) (0x81a0 + (i) * 4) 190498e8a28Sdamien #define AR_NDP2_TIMER_MODE 0x81c0 191498e8a28Sdamien #define AR_TXSIFS 0x81d0 192498e8a28Sdamien #define AR_TXOP_X 0x81ec 193498e8a28Sdamien #define AR_TXOP_0_3 0x81f0 194498e8a28Sdamien #define AR_TXOP_4_7 0x81f4 195498e8a28Sdamien #define AR_TXOP_8_11 0x81f8 196498e8a28Sdamien #define AR_TXOP_12_15 0x81fc 197bd6ea91dSdamien #define AR_GEN_TIMER(i) (0x8200 + (i) * 4) 198bd6ea91dSdamien #define AR_NEXT_TBTT_TIMER AR_GEN_TIMER(0) 199bd6ea91dSdamien #define AR_NEXT_DMA_BEACON_ALERT AR_GEN_TIMER(1) 200bd6ea91dSdamien #define AR_NEXT_CFP AR_GEN_TIMER(2) 201bd6ea91dSdamien #define AR_NEXT_HCF AR_GEN_TIMER(3) 202bd6ea91dSdamien #define AR_NEXT_TIM AR_GEN_TIMER(4) 203bd6ea91dSdamien #define AR_NEXT_DTIM AR_GEN_TIMER(5) 204bd6ea91dSdamien #define AR_NEXT_QUIET_TIMER AR_GEN_TIMER(6) 205bd6ea91dSdamien #define AR_NEXT_NDP_TIMER AR_GEN_TIMER(7) 206bd6ea91dSdamien #define AR_BEACON_PERIOD AR_GEN_TIMER(8) 207bd6ea91dSdamien #define AR_DMA_BEACON_PERIOD AR_GEN_TIMER(9) 208bd6ea91dSdamien #define AR_SWBA_PERIOD AR_GEN_TIMER(10) 209bd6ea91dSdamien #define AR_HCF_PERIOD AR_GEN_TIMER(11) 210bd6ea91dSdamien #define AR_TIM_PERIOD AR_GEN_TIMER(12) 211bd6ea91dSdamien #define AR_DTIM_PERIOD AR_GEN_TIMER(13) 212bd6ea91dSdamien #define AR_QUIET_PERIOD AR_GEN_TIMER(14) 213bd6ea91dSdamien #define AR_NDP_PERIOD AR_GEN_TIMER(15) 214498e8a28Sdamien #define AR_TIMER_MODE 0x8240 215498e8a28Sdamien #define AR_SLP32_MODE 0x8244 216498e8a28Sdamien #define AR_SLP32_WAKE 0x8248 217498e8a28Sdamien #define AR_SLP32_INC 0x824c 218498e8a28Sdamien #define AR_SLP_CNT 0x8250 219498e8a28Sdamien #define AR_SLP_CYCLE_CNT 0x8254 220498e8a28Sdamien #define AR_SLP_MIB_CTRL 0x8258 221498e8a28Sdamien #define AR_WOW_PATTERN_REG 0x825c 222498e8a28Sdamien #define AR_WOW_COUNT_REG 0x8260 223498e8a28Sdamien #define AR_MAC_PCU_LOGIC_ANALYZER 0x8264 224498e8a28Sdamien #define AR_WOW_BCN_EN_REG 0x8270 225498e8a28Sdamien #define AR_WOW_BCN_TIMO_REG 0x8274 226498e8a28Sdamien #define AR_WOW_KEEP_ALIVE_TIMO_REG 0x8278 227498e8a28Sdamien #define AR_WOW_KEEP_ALIVE_REG 0x827c 228498e8a28Sdamien #define AR_WOW_US_SCALAR_REG 0x8284 229498e8a28Sdamien #define AR_WOW_KEEP_ALIVE_DELAY_REG 0x8288 230498e8a28Sdamien #define AR_WOW_PATTERN_MATCH_REG 0x828c 231498e8a28Sdamien #define AR_WOW_PATTERN_OFF1_REG 0x8290 232498e8a28Sdamien #define AR_WOW_PATTERN_OFF2_REG 0x8294 233498e8a28Sdamien #define AR_WOW_EXACT_REG 0x829c 234498e8a28Sdamien #define AR_2040_MODE 0x8318 235498e8a28Sdamien #define AR_EXTRCCNT 0x8328 23691fe9e06Sstsp #define AR_PCU_BA_BAR_CTRL 0x8330 237498e8a28Sdamien #define AR_SELFGEN_MASK 0x832c 238498e8a28Sdamien #define AR_PCU_TXBUF_CTRL 0x8340 239498e8a28Sdamien #define AR_PCU_MISC_MODE2 0x8344 240498e8a28Sdamien #define AR_MAC_PCU_ASYNC_FIFO_REG3 0x8358 241498e8a28Sdamien #define AR_WOW_LENGTH1_REG 0x8360 242498e8a28Sdamien #define AR_WOW_LENGTH2_REG 0x8364 243498e8a28Sdamien #define AR_WOW_PATTERN_MATCH_LT_256B 0x8368 244498e8a28Sdamien #define AR_RATE_DURATION(i) (0x8700 + (i) * 4) 245498e8a28Sdamien #define AR_KEYTABLE(i) (0x8800 + (i) * 32) 246498e8a28Sdamien #define AR_KEYTABLE_KEY0(i) (AR_KEYTABLE(i) + 0) 247498e8a28Sdamien #define AR_KEYTABLE_KEY1(i) (AR_KEYTABLE(i) + 4) 248498e8a28Sdamien #define AR_KEYTABLE_KEY2(i) (AR_KEYTABLE(i) + 8) 249498e8a28Sdamien #define AR_KEYTABLE_KEY3(i) (AR_KEYTABLE(i) + 12) 250498e8a28Sdamien #define AR_KEYTABLE_KEY4(i) (AR_KEYTABLE(i) + 16) 251498e8a28Sdamien #define AR_KEYTABLE_TYPE(i) (AR_KEYTABLE(i) + 20) 252498e8a28Sdamien #define AR_KEYTABLE_MAC0(i) (AR_KEYTABLE(i) + 24) 253498e8a28Sdamien #define AR_KEYTABLE_MAC1(i) (AR_KEYTABLE(i) + 28) 254498e8a28Sdamien 255498e8a28Sdamien 256498e8a28Sdamien /* Bits for AR_CR. */ 257aec01765Sstsp #define AR_CR_RXE (AR_SREV_9380_20_OR_LATER(sc) ? 0x000c : 0x0004) 258498e8a28Sdamien #define AR_CR_RXD 0x00000020 259498e8a28Sdamien #define AR_CR_SWI 0x00000040 260498e8a28Sdamien 261498e8a28Sdamien /* Bits for AR_CFG. */ 262498e8a28Sdamien #define AR_CFG_SWTD 0x00000001 263498e8a28Sdamien #define AR_CFG_SWTB 0x00000002 264498e8a28Sdamien #define AR_CFG_SWRD 0x00000004 265498e8a28Sdamien #define AR_CFG_SWRB 0x00000008 266498e8a28Sdamien #define AR_CFG_SWRG 0x00000010 267498e8a28Sdamien #define AR_CFG_AP_ADHOC_INDICATION 0x00000020 268498e8a28Sdamien #define AR_CFG_PHOK 0x00000100 269498e8a28Sdamien #define AR_CFG_EEBS 0x00000200 270498e8a28Sdamien #define AR_CFG_CLK_GATE_DIS 0x00000400 271498e8a28Sdamien #define AR_CFG_PCI_MASTER_REQ_Q_THRESH_M 0x00060000 272498e8a28Sdamien #define AR_CFG_PCI_MASTER_REQ_Q_THRESH_S 17 273498e8a28Sdamien 274bd6ea91dSdamien /* Bits for AR_RXBP_THRESH. */ 275bd6ea91dSdamien #define AR_RXBP_THRESH_HP_M 0x0000000f 276bd6ea91dSdamien #define AR_RXBP_THRESH_HP_S 0 277bd6ea91dSdamien #define AR_RXBP_THRESH_LP_M 0x00003f00 278bd6ea91dSdamien #define AR_RXBP_THRESH_LP_S 8 279bd6ea91dSdamien 280498e8a28Sdamien /* Bits for AR_IER. */ 281498e8a28Sdamien #define AR_IER_ENABLE 0x00000001 282498e8a28Sdamien 283*6ab8d4f7Sstsp /* Bits for AR_MIRT. */ 284*6ab8d4f7Sstsp #define AR_MIRT_RATE_THRES_M 0x0000ffff 285*6ab8d4f7Sstsp #define AR_MIRT_RATE_THRES_S 0 286*6ab8d4f7Sstsp 287498e8a28Sdamien /* Bits for AR_TIMT. */ 288498e8a28Sdamien #define AR_TIMT_LAST_M 0x0000ffff 289498e8a28Sdamien #define AR_TIMT_LAST_S 0 290498e8a28Sdamien #define AR_TIMT_FIRST_M 0xffff0000 291498e8a28Sdamien #define AR_TIMT_FIRST_S 16 292498e8a28Sdamien 293498e8a28Sdamien /* Bits for AR_RIMT. */ 294498e8a28Sdamien #define AR_RIMT_LAST_M 0x0000ffff 295498e8a28Sdamien #define AR_RIMT_LAST_S 0 296498e8a28Sdamien #define AR_RIMT_FIRST_M 0xffff0000 297498e8a28Sdamien #define AR_RIMT_FIRST_S 16 298498e8a28Sdamien 299498e8a28Sdamien /* Bits for AR_[TR]XCFG_DMASZ fields. */ 300498e8a28Sdamien #define AR_DMASZ_4B 0 301498e8a28Sdamien #define AR_DMASZ_8B 1 302498e8a28Sdamien #define AR_DMASZ_16B 2 303498e8a28Sdamien #define AR_DMASZ_32B 3 304498e8a28Sdamien #define AR_DMASZ_64B 4 305498e8a28Sdamien #define AR_DMASZ_128B 5 306498e8a28Sdamien #define AR_DMASZ_256B 6 307498e8a28Sdamien #define AR_DMASZ_512B 7 308498e8a28Sdamien 309498e8a28Sdamien /* Bits for AR_TXCFG. */ 310498e8a28Sdamien #define AR_TXCFG_DMASZ_M 0x00000007 311498e8a28Sdamien #define AR_TXCFG_DMASZ_S 0 312498e8a28Sdamien #define AR_TXCFG_FTRIG_M 0x000003f0 313498e8a28Sdamien #define AR_TXCFG_FTRIG_S 4 314498e8a28Sdamien #define AR_TXCFG_FTRIG_IMMED ( 0 / 64) 315498e8a28Sdamien #define AR_TXCFG_FTRIG_64B ( 64 / 64) 316498e8a28Sdamien #define AR_TXCFG_FTRIG_128B (128 / 64) 317498e8a28Sdamien #define AR_TXCFG_FTRIG_192B (192 / 64) 318498e8a28Sdamien #define AR_TXCFG_FTRIG_256B (256 / 64) 319498e8a28Sdamien #define AR_TXCFG_FTRIG_512B (512 / 64) 320498e8a28Sdamien #define AR_TXCFG_ADHOC_BEACON_ATIM_TX_POLICY 0x00000800 321498e8a28Sdamien 322498e8a28Sdamien /* Bits for AR_RXCFG. */ 323498e8a28Sdamien #define AR_RXCFG_DMASZ_M 0x00000007 324498e8a28Sdamien #define AR_RXCFG_DMASZ_S 0 325498e8a28Sdamien #define AR_RXCFG_CHIRP 0x00000008 326498e8a28Sdamien #define AR_RXCFG_ZLFDMA 0x00000010 327498e8a28Sdamien 328498e8a28Sdamien /* Bits for AR_MIBC. */ 329498e8a28Sdamien #define AR_MIBC_COW 0x00000001 330498e8a28Sdamien #define AR_MIBC_FMC 0x00000002 331498e8a28Sdamien #define AR_MIBC_CMC 0x00000004 332498e8a28Sdamien #define AR_MIBC_MCS 0x00000008 333498e8a28Sdamien 334498e8a28Sdamien /* Bits for AR_TOPS. */ 335498e8a28Sdamien #define AR_TOPS_MASK 0x0000ffff 336498e8a28Sdamien 337498e8a28Sdamien /* Bits for AR_RXNPTO. */ 338498e8a28Sdamien #define AR_RXNPTO_MASK 0x000003ff 339498e8a28Sdamien 340498e8a28Sdamien /* Bits for AR_TXNPTO. */ 341498e8a28Sdamien #define AR_TXNPTO_MASK 0x000003ff 342498e8a28Sdamien #define AR_TXNPTO_QCU_MASK 0x000ffc00 343498e8a28Sdamien 344498e8a28Sdamien /* Bits for AR_RPGTO. */ 345498e8a28Sdamien #define AR_RPGTO_MASK 0x000003ff 346498e8a28Sdamien 347498e8a28Sdamien /* Bits for AR_RPCNT. */ 348498e8a28Sdamien #define AR_RPCNT_MASK 0x0000001f 349498e8a28Sdamien 350498e8a28Sdamien /* Bits for AR_MACMISC. */ 351498e8a28Sdamien #define AR_MACMISC_PCI_EXT_FORCE 0x00000010 352498e8a28Sdamien #define AR_MACMISC_DMA_OBS_M 0x000001e0 353498e8a28Sdamien #define AR_MACMISC_DMA_OBS_S 5 354498e8a28Sdamien #define AR_MACMISC_MISC_OBS_M 0x00000e00 355498e8a28Sdamien #define AR_MACMISC_MISC_OBS_S 9 356498e8a28Sdamien #define AR_MACMISC_MISC_OBS_BUS_LSB_M 0x00007000 357498e8a28Sdamien #define AR_MACMISC_MISC_OBS_BUS_LSB_S 12 358498e8a28Sdamien #define AR_MACMISC_MISC_OBS_BUS_MSB_M 0x00038000 359498e8a28Sdamien #define AR_MACMISC_MISC_OBS_BUS_MSB_S 15 360498e8a28Sdamien 361498e8a28Sdamien /* Bits for AR_GTXTO. */ 362498e8a28Sdamien #define AR_GTXTO_TIMEOUT_COUNTER_M 0x0000ffff 363498e8a28Sdamien #define AR_GTXTO_TIMEOUT_COUNTER_S 0 364498e8a28Sdamien #define AR_GTXTO_TIMEOUT_LIMIT_M 0xffff0000 365498e8a28Sdamien #define AR_GTXTO_TIMEOUT_LIMIT_S 16 366498e8a28Sdamien 367498e8a28Sdamien /* Bits for AR_GTTM. */ 368498e8a28Sdamien #define AR_GTTM_USEC 0x00000001 369498e8a28Sdamien #define AR_GTTM_IGNORE_IDLE 0x00000002 370498e8a28Sdamien #define AR_GTTM_RESET_IDLE 0x00000004 371498e8a28Sdamien #define AR_GTTM_CST_USEC 0x00000008 372498e8a28Sdamien 373498e8a28Sdamien /* Bits for AR_CST. */ 374498e8a28Sdamien #define AR_CST_TIMEOUT_COUNTER_M 0x0000ffff 375498e8a28Sdamien #define AR_CST_TIMEOUT_COUNTER_S 0 376498e8a28Sdamien #define AR_CST_TIMEOUT_LIMIT_M 0xffff0000 377498e8a28Sdamien #define AR_CST_TIMEOUT_LIMIT_S 16 378498e8a28Sdamien 379498e8a28Sdamien /* Bits for AR_ISR. */ 380498e8a28Sdamien #define AR_ISR_RXOK 0x00000001 381bd6ea91dSdamien #define AR_ISR_HP_RXOK 0x00000001 382498e8a28Sdamien #define AR_ISR_RXDESC 0x00000002 383bd6ea91dSdamien #define AR_ISR_LP_RXOK 0x00000002 384498e8a28Sdamien #define AR_ISR_RXERR 0x00000004 385498e8a28Sdamien #define AR_ISR_RXNOPKT 0x00000008 386498e8a28Sdamien #define AR_ISR_RXEOL 0x00000010 387498e8a28Sdamien #define AR_ISR_RXORN 0x00000020 388498e8a28Sdamien #define AR_ISR_TXOK 0x00000040 389498e8a28Sdamien #define AR_ISR_TXDESC 0x00000080 390498e8a28Sdamien #define AR_ISR_TXERR 0x00000100 391498e8a28Sdamien #define AR_ISR_TXNOPKT 0x00000200 392498e8a28Sdamien #define AR_ISR_TXEOL 0x00000400 393498e8a28Sdamien #define AR_ISR_TXURN 0x00000800 394498e8a28Sdamien #define AR_ISR_MIB 0x00001000 395498e8a28Sdamien #define AR_ISR_SWI 0x00002000 396498e8a28Sdamien #define AR_ISR_RXPHY 0x00004000 397498e8a28Sdamien #define AR_ISR_RXKCM 0x00008000 398498e8a28Sdamien #define AR_ISR_SWBA 0x00010000 399498e8a28Sdamien #define AR_ISR_BRSSI 0x00020000 400498e8a28Sdamien #define AR_ISR_BMISS 0x00040000 401498e8a28Sdamien #define AR_ISR_TXMINTR 0x00080000 402498e8a28Sdamien #define AR_ISR_BNR 0x00100000 403498e8a28Sdamien #define AR_ISR_RXCHIRP 0x00200000 404498e8a28Sdamien #define AR_ISR_BCNMISC 0x00800000 405498e8a28Sdamien #define AR_ISR_TIM 0x00800000 406498e8a28Sdamien #define AR_ISR_RXMINTR 0x01000000 407498e8a28Sdamien #define AR_ISR_QCBROVF 0x02000000 408498e8a28Sdamien #define AR_ISR_QCBRURN 0x04000000 409498e8a28Sdamien #define AR_ISR_QTRIG 0x08000000 410498e8a28Sdamien #define AR_ISR_GENTMR 0x10000000 411498e8a28Sdamien #define AR_ISR_TXINTM 0x40000000 412498e8a28Sdamien #define AR_ISR_RXINTM 0x80000000 413498e8a28Sdamien 414498e8a28Sdamien /* Bits for AR_ISR_S0. */ 415498e8a28Sdamien #define AR_ISR_S0_QCU_TXOK_M 0x000003ff 416498e8a28Sdamien #define AR_ISR_S0_QCU_TXOK_S 0 417498e8a28Sdamien #define AR_ISR_S0_QCU_TXDESC_M 0x03ff0000 418498e8a28Sdamien #define AR_ISR_S0_QCU_TXDESC_S 16 419498e8a28Sdamien 420498e8a28Sdamien /* Bits for AR_ISR_S1. */ 421498e8a28Sdamien #define AR_ISR_S1_QCU_TXERR_M 0x000003ff 422498e8a28Sdamien #define AR_ISR_S1_QCU_TXERR_S 0 423498e8a28Sdamien #define AR_ISR_S1_QCU_TXEOL_M 0x03ff0000 424498e8a28Sdamien #define AR_ISR_S1_QCU_TXEOL_S 16 425498e8a28Sdamien 426498e8a28Sdamien /* Bits for AR_ISR_S2. */ 427498e8a28Sdamien #define AR_ISR_S2_QCU_TXURN_M 0x000003ff 428498e8a28Sdamien #define AR_ISR_S2_QCU_TXURN_S 0 429bc9f0c79Sdamien #define AR_ISR_S2_BB_WATCHDOG 0x00010000 430498e8a28Sdamien #define AR_ISR_S2_CST 0x00400000 431498e8a28Sdamien #define AR_ISR_S2_GTT 0x00800000 432498e8a28Sdamien #define AR_ISR_S2_TIM 0x01000000 433498e8a28Sdamien #define AR_ISR_S2_CABEND 0x02000000 434498e8a28Sdamien #define AR_ISR_S2_DTIMSYNC 0x04000000 435498e8a28Sdamien #define AR_ISR_S2_BCNTO 0x08000000 436498e8a28Sdamien #define AR_ISR_S2_CABTO 0x10000000 437498e8a28Sdamien #define AR_ISR_S2_DTIM 0x20000000 438498e8a28Sdamien #define AR_ISR_S2_TSFOOR 0x40000000 439498e8a28Sdamien #define AR_ISR_S2_TBTT_TIME 0x80000000 440498e8a28Sdamien 441498e8a28Sdamien /* Bits for AR_ISR_S3. */ 442498e8a28Sdamien #define AR_ISR_S3_QCU_QCBROVF_M 0x000003ff 443498e8a28Sdamien #define AR_ISR_S3_QCU_QCBROVF_S 0 444498e8a28Sdamien #define AR_ISR_S3_QCU_QCBRURN_M 0x03ff0000 445498e8a28Sdamien #define AR_ISR_S3_QCU_QCBRURN_S 0 446498e8a28Sdamien 447498e8a28Sdamien /* Bits for AR_ISR_S4. */ 448498e8a28Sdamien #define AR_ISR_S4_QCU_QTRIG_M 0x000003ff 449498e8a28Sdamien #define AR_ISR_S4_QCU_QTRIG_S 0 450498e8a28Sdamien 451498e8a28Sdamien /* Bits for AR_ISR_S5. */ 452498e8a28Sdamien #define AR_ISR_S5_TIMER_TRIG_M 0x000000ff 453498e8a28Sdamien #define AR_ISR_S5_TIMER_TRIG_S 0 454498e8a28Sdamien #define AR_ISR_S5_TIMER_THRESH_M 0x0007fe00 455498e8a28Sdamien #define AR_ISR_S5_TIMER_THRESH_S 9 456498e8a28Sdamien #define AR_ISR_S5_TIM_TIMER 0x00000010 457498e8a28Sdamien #define AR_ISR_S5_DTIM_TIMER 0x00000020 458498e8a28Sdamien #define AR_ISR_S5_GENTIMER_TRIG_M 0x0000ff80 459498e8a28Sdamien #define AR_ISR_S5_GENTIMER_TRIG_S 0 460498e8a28Sdamien #define AR_ISR_S5_GENTIMER_THRESH_M 0xff800000 461498e8a28Sdamien #define AR_ISR_S5_GENTIMER_THRESH_S 16 462498e8a28Sdamien 463498e8a28Sdamien /* Bits for AR_IMR. */ 464498e8a28Sdamien #define AR_IMR_RXOK 0x00000001 465bd6ea91dSdamien #define AR_IMR_HP_RXOK 0x00000001 466498e8a28Sdamien #define AR_IMR_RXDESC 0x00000002 467bd6ea91dSdamien #define AR_IMR_LP_RXOK 0x00000002 468498e8a28Sdamien #define AR_IMR_RXERR 0x00000004 469498e8a28Sdamien #define AR_IMR_RXNOPKT 0x00000008 470498e8a28Sdamien #define AR_IMR_RXEOL 0x00000010 471498e8a28Sdamien #define AR_IMR_RXORN 0x00000020 472498e8a28Sdamien #define AR_IMR_TXOK 0x00000040 473498e8a28Sdamien #define AR_IMR_TXDESC 0x00000080 474498e8a28Sdamien #define AR_IMR_TXERR 0x00000100 475498e8a28Sdamien #define AR_IMR_TXNOPKT 0x00000200 476498e8a28Sdamien #define AR_IMR_TXEOL 0x00000400 477498e8a28Sdamien #define AR_IMR_TXURN 0x00000800 478498e8a28Sdamien #define AR_IMR_MIB 0x00001000 479498e8a28Sdamien #define AR_IMR_SWI 0x00002000 480498e8a28Sdamien #define AR_IMR_RXPHY 0x00004000 481498e8a28Sdamien #define AR_IMR_RXKCM 0x00008000 482498e8a28Sdamien #define AR_IMR_SWBA 0x00010000 483498e8a28Sdamien #define AR_IMR_BRSSI 0x00020000 484498e8a28Sdamien #define AR_IMR_BMISS 0x00040000 485498e8a28Sdamien #define AR_IMR_TXMINTR 0x00080000 486498e8a28Sdamien #define AR_IMR_BNR 0x00100000 487498e8a28Sdamien #define AR_IMR_RXCHIRP 0x00200000 488498e8a28Sdamien #define AR_IMR_BCNMISC 0x00800000 489498e8a28Sdamien #define AR_IMR_TIM 0x00800000 490498e8a28Sdamien #define AR_IMR_RXMINTR 0x01000000 491498e8a28Sdamien #define AR_IMR_QCBROVF 0x02000000 492498e8a28Sdamien #define AR_IMR_QCBRURN 0x04000000 493498e8a28Sdamien #define AR_IMR_QTRIG 0x08000000 494498e8a28Sdamien #define AR_IMR_GENTMR 0x10000000 495498e8a28Sdamien #define AR_IMR_TXINTM 0x40000000 496498e8a28Sdamien #define AR_IMR_RXINTM 0x80000000 497498e8a28Sdamien 498498e8a28Sdamien #define AR_IMR_DEFAULT \ 499498e8a28Sdamien (AR_IMR_TXERR | AR_IMR_TXURN | AR_IMR_RXERR | \ 500498e8a28Sdamien AR_IMR_RXORN | AR_IMR_BCNMISC | AR_IMR_RXINTM | \ 501498e8a28Sdamien AR_IMR_RXMINTR | AR_IMR_TXOK) 502498e8a28Sdamien #define AR_IMR_HOSTAP (AR_IMR_DEFAULT | AR_IMR_MIB) 503498e8a28Sdamien 504498e8a28Sdamien /* Bits for AR_IMR_S0. */ 505498e8a28Sdamien #define AR_IMR_S0_QCU_TXOK(qid) (1 << (qid)) 506498e8a28Sdamien #define AR_IMR_S0_QCU_TXDESC(qid) (1 << (16 + (qid))) 507498e8a28Sdamien 508498e8a28Sdamien /* Bits for AR_IMR_S1. */ 509498e8a28Sdamien #define AR_IMR_S1_QCU_TXERR(qid) (1 << (qid)) 510498e8a28Sdamien #define AR_IMR_S1_QCU_TXEOL(qid) (1 << (16 + (qid))) 511498e8a28Sdamien 512498e8a28Sdamien /* Bits for AR_IMR_S2. */ 513498e8a28Sdamien #define AR_IMR_S2_QCU_TXURN(qid) (1 << (qid)) 514498e8a28Sdamien #define AR_IMR_S2_CST 0x00400000 515498e8a28Sdamien #define AR_IMR_S2_GTT 0x00800000 516498e8a28Sdamien #define AR_IMR_S2_TIM 0x01000000 517498e8a28Sdamien #define AR_IMR_S2_CABEND 0x02000000 518498e8a28Sdamien #define AR_IMR_S2_DTIMSYNC 0x04000000 519498e8a28Sdamien #define AR_IMR_S2_BCNTO 0x08000000 520498e8a28Sdamien #define AR_IMR_S2_CABTO 0x10000000 521498e8a28Sdamien #define AR_IMR_S2_DTIM 0x20000000 522498e8a28Sdamien #define AR_IMR_S2_TSFOOR 0x40000000 523498e8a28Sdamien 524498e8a28Sdamien /* Bits for AR_IMR_S3. */ 525498e8a28Sdamien #define AR_IMR_S3_QCU_QCBROVF(qid) (1 << (qid)) 526498e8a28Sdamien #define AR_IMR_S3_QCU_QCBRURN(qid) (1 << (16 + (qid))) 527498e8a28Sdamien 528498e8a28Sdamien /* Bits for AR_IMR_S4. */ 529498e8a28Sdamien #define AR_IMR_S4_QCU_QTRIG(qid) (1 << (qid)) 530498e8a28Sdamien 531498e8a28Sdamien /* Bits for AR_IMR_S5. */ 532498e8a28Sdamien #define AR_IMR_S5_TIM_TIMER 0x00000010 533498e8a28Sdamien #define AR_IMR_S5_DTIM_TIMER 0x00000020 534498e8a28Sdamien #define AR_IMR_S5_TIMER_TRIG_M 0x000000ff 535498e8a28Sdamien #define AR_IMR_S5_TIMER_TRIG_S 0 536498e8a28Sdamien #define AR_IMR_S5_TIMER_THRESH_M 0x0000ff00 537498e8a28Sdamien #define AR_IMR_S5_TIMER_THRESH_S 0 538498e8a28Sdamien 539498e8a28Sdamien #define AR_NUM_QCU 10 540498e8a28Sdamien #define AR_QCU(x) (1 << (x)) 541498e8a28Sdamien 542498e8a28Sdamien /* Bits for AR_Q_TXE. */ 543498e8a28Sdamien #define AR_Q_TXE_M 0x000003ff 544498e8a28Sdamien #define AR_Q_TXE_S 0 545498e8a28Sdamien 546498e8a28Sdamien /* Bits for AR_Q_TXD. */ 547498e8a28Sdamien #define AR_Q_TXD_M 0x000003ff 548498e8a28Sdamien #define AR_Q_TXD_S 0 549498e8a28Sdamien 550498e8a28Sdamien /* Bits for AR_QCBRCFG_*. */ 551498e8a28Sdamien #define AR_Q_CBRCFG_INTERVAL_M 0x00ffffff 552498e8a28Sdamien #define AR_Q_CBRCFG_INTERVAL_S 0 553498e8a28Sdamien #define AR_Q_CBRCFG_OVF_THRESH_M 0xff000000 554498e8a28Sdamien #define AR_Q_CBRCFG_OVF_THRESH_S 24 555498e8a28Sdamien 556bd6ea91dSdamien /* Bits for AR_QRDYTIMECFG_*. */ 557498e8a28Sdamien #define AR_Q_RDYTIMECFG_DURATION_M 0x00ffffff 558498e8a28Sdamien #define AR_Q_RDYTIMECFG_DURATION_S 0 559498e8a28Sdamien #define AR_Q_RDYTIMECFG_EN 0x01000000 560498e8a28Sdamien 561bd6ea91dSdamien /* Bits for AR_QMISC_*. */ 562498e8a28Sdamien #define AR_Q_MISC_FSP_M 0x0000000f 563498e8a28Sdamien #define AR_Q_MISC_FSP_S 0 564498e8a28Sdamien #define AR_Q_MISC_FSP_ASAP 0 565498e8a28Sdamien #define AR_Q_MISC_FSP_CBR 1 566498e8a28Sdamien #define AR_Q_MISC_FSP_DBA_GATED 2 567498e8a28Sdamien #define AR_Q_MISC_FSP_TIM_GATED 3 568498e8a28Sdamien #define AR_Q_MISC_FSP_BEACON_SENT_GATED 4 569498e8a28Sdamien #define AR_Q_MISC_FSP_BEACON_RCVD_GATED 5 570498e8a28Sdamien #define AR_Q_MISC_ONE_SHOT_EN 0x00000010 571498e8a28Sdamien #define AR_Q_MISC_CBR_INCR_DIS1 0x00000020 572498e8a28Sdamien #define AR_Q_MISC_CBR_INCR_DIS0 0x00000040 573498e8a28Sdamien #define AR_Q_MISC_BEACON_USE 0x00000080 574498e8a28Sdamien #define AR_Q_MISC_CBR_EXP_CNTR_LIMIT_EN 0x00000100 575498e8a28Sdamien #define AR_Q_MISC_RDYTIME_EXP_POLICY 0x00000200 576498e8a28Sdamien #define AR_Q_MISC_RESET_CBR_EXP_CTR 0x00000400 577498e8a28Sdamien #define AR_Q_MISC_DCU_EARLY_TERM_REQ 0x00000800 578498e8a28Sdamien 579bd6ea91dSdamien /* Bits for AR_QSTS_*. */ 580498e8a28Sdamien #define AR_Q_STS_PEND_FR_CNT_M 0x00000003 581498e8a28Sdamien #define AR_Q_STS_PEND_FR_CNT_S 0 582498e8a28Sdamien #define AR_Q_STS_CBR_EXP_CNT_M 0x0000ff00 583498e8a28Sdamien #define AR_Q_STS_CBR_EXP_CNT_S 8 584498e8a28Sdamien 585bd6ea91dSdamien /* Bits for AR_Q_DESC_CRCCHK. */ 586bd6ea91dSdamien #define AR_Q_DESC_CRCCHK_EN 0x00000001 587bd6ea91dSdamien 588498e8a28Sdamien #define AR_NUM_DCU 10 589498e8a28Sdamien #define AR_DCU(x) (1 << (x)) 590498e8a28Sdamien 591498e8a28Sdamien /* Bits for AR_D_QCUMASK_*. */ 592498e8a28Sdamien #define AR_D_QCUMASK_M 0x000003ff 593498e8a28Sdamien #define AR_D_QCUMASK_S 0 594498e8a28Sdamien 595498e8a28Sdamien /* Bits for AR_D_GBL_IFS_SIFS. */ 596498e8a28Sdamien #define AR_D_GBL_IFS_SIFS_ASYNC_FIFO_DUR 0x000003ab 597498e8a28Sdamien 598498e8a28Sdamien /* Bits for AR_D_TXBLK_CMD. */ 599498e8a28Sdamien #define AR_D_TXBLK_WRITE_BITMASK_M 0x0000ffff 600498e8a28Sdamien #define AR_D_TXBLK_WRITE_BITMASK_S 0 601498e8a28Sdamien #define AR_D_TXBLK_WRITE_SLICE_M 0x000f0000 602498e8a28Sdamien #define AR_D_TXBLK_WRITE_SLICE_S 16 603498e8a28Sdamien #define AR_D_TXBLK_WRITE_DCU_M 0x00f00000 604498e8a28Sdamien #define AR_D_TXBLK_WRITE_DCU_S 20 605498e8a28Sdamien #define AR_D_TXBLK_WRITE_COMMAND_M 0x0f000000 606498e8a28Sdamien #define AR_D_TXBLK_WRITE_COMMAND_S 24 607498e8a28Sdamien 608498e8a28Sdamien /* Bits for AR_DLCL_IFS. */ 609498e8a28Sdamien #define AR_D_LCL_IFS_CWMIN_M 0x000003ff 610498e8a28Sdamien #define AR_D_LCL_IFS_CWMIN_S 0 611498e8a28Sdamien #define AR_D_LCL_IFS_CWMAX_M 0x000ffc00 612498e8a28Sdamien #define AR_D_LCL_IFS_CWMAX_S 10 613498e8a28Sdamien #define AR_D_LCL_IFS_AIFS_M 0x0ff00000 614498e8a28Sdamien #define AR_D_LCL_IFS_AIFS_S 20 615498e8a28Sdamien 616498e8a28Sdamien /* Bits for AR_D_GBL_IFS_SLOT. */ 617498e8a28Sdamien #define AR_D_GBL_IFS_SLOT_M 0x0000ffff 618498e8a28Sdamien #define AR_D_GBL_IFS_SLOT_S 0 619498e8a28Sdamien #define AR_D_GBL_IFS_SLOT_ASYNC_FIFO_DUR 0x00000420 620498e8a28Sdamien 621498e8a28Sdamien /* Bits for AR_DRETRY_LIMIT_*. */ 622498e8a28Sdamien #define AR_D_RETRY_LIMIT_FR_SH_M 0x0000000f 623498e8a28Sdamien #define AR_D_RETRY_LIMIT_FR_SH_S 0 624498e8a28Sdamien #define AR_D_RETRY_LIMIT_STA_SH_M 0x00003f00 625498e8a28Sdamien #define AR_D_RETRY_LIMIT_STA_SH_S 8 626498e8a28Sdamien #define AR_D_RETRY_LIMIT_STA_LG_M 0x000fc000 627498e8a28Sdamien #define AR_D_RETRY_LIMIT_STA_LG_S 14 628498e8a28Sdamien 629498e8a28Sdamien /* Bits for AR_D_GBL_IFS_EIFS. */ 630498e8a28Sdamien #define AR_D_GBL_IFS_EIFS_M 0x0000ffff 631498e8a28Sdamien #define AR_D_GBL_IFS_EIFS_S 0 632498e8a28Sdamien #define AR_D_GBL_IFS_EIFS_ASYNC_FIFO_DUR 0x0000a5eb 633498e8a28Sdamien 634498e8a28Sdamien /* Bits for AR_DCHNTIME_*. */ 635498e8a28Sdamien #define AR_D_CHNTIME_DUR_M 0x000fffff 636498e8a28Sdamien #define AR_D_CHNTIME_DUR_S 0 637498e8a28Sdamien #define AR_D_CHNTIME_EN 0x00100000 638498e8a28Sdamien 639498e8a28Sdamien /* Bits for AR_D_GBL_IFS_MISC. */ 640498e8a28Sdamien #define AR_D_GBL_IFS_MISC_LFSR_SLICE_SEL 0x00000007 641498e8a28Sdamien #define AR_D_GBL_IFS_MISC_TURBO_MODE 0x00000008 642498e8a28Sdamien #define AR_D_GBL_IFS_MISC_USEC_DURATION 0x000ffc00 643498e8a28Sdamien #define AR_D_GBL_IFS_MISC_DCU_ARBITER_DLY 0x00300000 644498e8a28Sdamien #define AR_D_GBL_IFS_MISC_RANDOM_LFSR_SLICE_DIS 0x01000000 645498e8a28Sdamien #define AR_D_GBL_IFS_MISC_SLOT_XMIT_WIND_LEN 0x06000000 646498e8a28Sdamien #define AR_D_GBL_IFS_MISC_FORCE_XMIT_SLOT_BOUND 0x08000000 647498e8a28Sdamien #define AR_D_GBL_IFS_MISC_IGNORE_BACKOFF 0x10000000 648498e8a28Sdamien 649498e8a28Sdamien /* Bits for AR_DMISC_*. */ 650498e8a28Sdamien #define AR_D_MISC_BKOFF_THRESH_M 0x0000003f 651498e8a28Sdamien #define AR_D_MISC_BKOFF_THRESH_S 0 652498e8a28Sdamien #define AR_D_MISC_RETRY_CNT_RESET_EN 0x00000040 653498e8a28Sdamien #define AR_D_MISC_CW_RESET_EN 0x00000080 654498e8a28Sdamien #define AR_D_MISC_FRAG_WAIT_EN 0x00000100 655498e8a28Sdamien #define AR_D_MISC_FRAG_BKOFF_EN 0x00000200 656498e8a28Sdamien #define AR_D_MISC_CW_BKOFF_EN 0x00001000 657498e8a28Sdamien #define AR_D_MISC_VIR_COL_HANDLING_M 0x0000c000 658498e8a28Sdamien #define AR_D_MISC_VIR_COL_HANDLING_S 14 659498e8a28Sdamien #define AR_D_MISC_VIR_COL_HANDLING_DEFAULT 0 660498e8a28Sdamien #define AR_D_MISC_VIR_COL_HANDLING_IGNORE 1 661498e8a28Sdamien #define AR_D_MISC_BEACON_USE 0x00010000 662498e8a28Sdamien #define AR_D_MISC_ARB_LOCKOUT_CNTRL_M 0x00060000 663498e8a28Sdamien #define AR_D_MISC_ARB_LOCKOUT_CNTRL_S 17 664498e8a28Sdamien #define AR_D_MISC_ARB_LOCKOUT_CNTRL_NONE 0 665498e8a28Sdamien #define AR_D_MISC_ARB_LOCKOUT_CNTRL_INTRA_FR 1 666498e8a28Sdamien #define AR_D_MISC_ARB_LOCKOUT_CNTRL_GLOBAL 2 667498e8a28Sdamien #define AR_D_MISC_ARB_LOCKOUT_IGNORE 0x00080000 668498e8a28Sdamien #define AR_D_MISC_SEQ_NUM_INCR_DIS 0x00100000 669498e8a28Sdamien #define AR_D_MISC_POST_FR_BKOFF_DIS 0x00200000 670498e8a28Sdamien #define AR_D_MISC_VIT_COL_CW_BKOFF_EN 0x00400000 671498e8a28Sdamien #define AR_D_MISC_BLOWN_IFS_RETRY_EN 0x00800000 672498e8a28Sdamien 673498e8a28Sdamien /* Bits for AR_D_FPCTL. */ 674498e8a28Sdamien #define AR_D_FPCTL_DCU_M 0x0000000f 675498e8a28Sdamien #define AR_D_FPCTL_DCU_S 0 676498e8a28Sdamien #define AR_D_FPCTL_PREFETCH_EN 0x00000010 677498e8a28Sdamien #define AR_D_FPCTL_BURST_PREFETCH_M 0x00007fe0 678498e8a28Sdamien #define AR_D_FPCTL_BURST_PREFETCH_S 5 679498e8a28Sdamien 680498e8a28Sdamien /* Bits for AR_D_TXPSE. */ 681498e8a28Sdamien #define AR_D_TXPSE_CTRL_M 0x000003ff 682498e8a28Sdamien #define AR_D_TXPSE_CTRL_S 0 683498e8a28Sdamien #define AR_D_TXPSE_STATUS 0x00010000 684498e8a28Sdamien 685498e8a28Sdamien /* Bits for AR_D_TXSLOTMASK. */ 686498e8a28Sdamien #define AR_D_TXSLOTMASK_NUM 0x0000000f 687498e8a28Sdamien 688498e8a28Sdamien /* Bits for AR_MAC_SLEEP. */ 689498e8a28Sdamien #define AR_MAC_SLEEP_MAC_ASLEEP 0x00000001 690498e8a28Sdamien 691498e8a28Sdamien /* Bits for AR_CFG_LED. */ 692498e8a28Sdamien #define AR_CFG_SCLK_RATE_IND_M 0x00000003 693498e8a28Sdamien #define AR_CFG_SCLK_RATE_IND_S 0 694498e8a28Sdamien #define AR_CFG_SCLK_32MHZ 0 695498e8a28Sdamien #define AR_CFG_SCLK_4MHZ 1 696498e8a28Sdamien #define AR_CFG_SCLK_1MHZ 2 697498e8a28Sdamien #define AR_CFG_SCLK_32KHZ 3 698498e8a28Sdamien #define AR_CFG_LED_BLINK_SLOW 0x00000008 699498e8a28Sdamien #define AR_CFG_LED_BLINK_THRESH_SEL_M 0x00000070 700498e8a28Sdamien #define AR_CFG_LED_BLINK_THRESH_SEL_S 4 701498e8a28Sdamien #define AR_CFG_LED_MODE_SEL_M 0x00000380 702498e8a28Sdamien #define AR_CFG_LED_MODE_SEL_S 7 703498e8a28Sdamien #define AR_CFG_LED_POWER_M 0x00000280 704498e8a28Sdamien #define AR_CFG_LED_POWER_S 7 705498e8a28Sdamien #define AR_CFG_LED_NETWORK_M 0x00000300 706498e8a28Sdamien #define AR_CFG_LED_NETWORK_S 7 707498e8a28Sdamien #define AR_CFG_LED_MODE_PROP 0 708498e8a28Sdamien #define AR_CFG_LED_MODE_RPROP 1 709498e8a28Sdamien #define AR_CFG_LED_MODE_SPLIT 2 710498e8a28Sdamien #define AR_CFG_LED_MODE_RAND 3 711498e8a28Sdamien #define AR_CFG_LED_MODE_POWER_OFF 4 712498e8a28Sdamien #define AR_CFG_LED_MODE_POWER_ON 5 713498e8a28Sdamien #define AR_CFG_LED_MODE_NETWORK_OFF 4 714498e8a28Sdamien #define AR_CFG_LED_MODE_NETWORK_ON 6 715498e8a28Sdamien #define AR_CFG_LED_ASSOC_CTL_M 0x00000c00 716498e8a28Sdamien #define AR_CFG_LED_ASSOC_CTL_S 10 717498e8a28Sdamien #define AR_CFG_LED_ASSOC_NONE 0 718498e8a28Sdamien #define AR_CFG_LED_ASSOC_ACTIVE 1 719498e8a28Sdamien #define AR_CFG_LED_ASSOC_PENDING 2 720498e8a28Sdamien 721498e8a28Sdamien /* Bit for AR_RC. */ 722498e8a28Sdamien #define AR_RC_AHB 0x00000001 723498e8a28Sdamien #define AR_RC_APB 0x00000002 724498e8a28Sdamien #define AR_RC_HOSTIF 0x00000100 725498e8a28Sdamien 726498e8a28Sdamien /* Bits for AR_WA. */ 727498e8a28Sdamien #define AR5416_WA_DEFAULT 0x0000073f 728498e8a28Sdamien #define AR9280_WA_DEFAULT 0x0040073b 7296fe0fa47Sdamien #define AR9285_WA_DEFAULT 0x004a050b 730498e8a28Sdamien #define AR_WA_UNTIE_RESET_EN 0x00008000 731498e8a28Sdamien #define AR_WA_RESET_EN 0x00040000 732498e8a28Sdamien #define AR_WA_ANALOG_SHIFT 0x00100000 733498e8a28Sdamien #define AR_WA_POR_SHORT 0x00200000 734498e8a28Sdamien 735498e8a28Sdamien /* Bits for AR_PM_STATE. */ 736498e8a28Sdamien #define AR_PM_STATE_PME_D3COLD_VAUX 0x00100000 737498e8a28Sdamien 738498e8a28Sdamien /* Bits for AR_PCIE_PM_CTRL. */ 739498e8a28Sdamien #define AR_PCIE_PM_CTRL_ENA 0x00080000 740498e8a28Sdamien 741498e8a28Sdamien /* Bits for AR_HOST_TIMEOUT. */ 742498e8a28Sdamien #define AR_HOST_TIMEOUT_APB_CNTR_M 0x0000ffff 743498e8a28Sdamien #define AR_HOST_TIMEOUT_APB_CNTR_S 0 744498e8a28Sdamien #define AR_HOST_TIMEOUT_LCL_CNTR_M 0xffff0000 745498e8a28Sdamien #define AR_HOST_TIMEOUT_LCL_CNTR_S 16 746498e8a28Sdamien 747498e8a28Sdamien /* Bits for AR_EEPROM. */ 748498e8a28Sdamien #define AR_EEPROM_ABSENT 0x00000100 749498e8a28Sdamien #define AR_EEPROM_CORRUPT 0x00000200 750498e8a28Sdamien #define AR_EEPROM_PROT_MASK_M 0x03fffc00 751498e8a28Sdamien #define AR_EEPROM_PROT_MASK_S 10 752498e8a28Sdamien 753498e8a28Sdamien /* Bits for AR_SREV. */ 754498e8a28Sdamien #define AR_SREV_ID_M 0x000000ff 755498e8a28Sdamien #define AR_SREV_ID_S 0 756498e8a28Sdamien #define AR_SREV_REVISION_M 0x00000007 757498e8a28Sdamien #define AR_SREV_REVISION_S 0 758498e8a28Sdamien #define AR_SREV_VERSION_M 0x000000f0 759498e8a28Sdamien #define AR_SREV_VERSION_S 4 760498e8a28Sdamien #define AR_SREV_VERSION2_M 0xfffc0000 761498e8a28Sdamien #define AR_SREV_VERSION2_S 12 /* XXX Hack. */ 762498e8a28Sdamien #define AR_SREV_TYPE2_M 0x0003f000 763498e8a28Sdamien #define AR_SREV_TYPE2_S 12 764498e8a28Sdamien #define AR_SREV_TYPE2_CHAIN 0x00001000 765498e8a28Sdamien #define AR_SREV_TYPE2_HOST_MODE 0x00002000 766498e8a28Sdamien #define AR_SREV_REVISION2_M 0x00000f00 767498e8a28Sdamien #define AR_SREV_REVISION2_S 8 768498e8a28Sdamien #define AR_SREV_VERSION_5416_PCI 0x00d 769498e8a28Sdamien #define AR_SREV_VERSION_5416_PCIE 0x00c 770498e8a28Sdamien #define AR_SREV_REVISION_5416_10 0 771498e8a28Sdamien #define AR_SREV_REVISION_5416_20 1 772498e8a28Sdamien #define AR_SREV_REVISION_5416_22 2 773498e8a28Sdamien #define AR_SREV_VERSION_9100 0x014 774498e8a28Sdamien #define AR_SREV_VERSION_9160 0x040 775498e8a28Sdamien #define AR_SREV_REVISION_9160_10 0 776498e8a28Sdamien #define AR_SREV_REVISION_9160_11 1 777498e8a28Sdamien #define AR_SREV_VERSION_9280 0x080 778498e8a28Sdamien #define AR_SREV_REVISION_9280_10 0 779498e8a28Sdamien #define AR_SREV_REVISION_9280_20 1 780498e8a28Sdamien #define AR_SREV_REVISION_9280_21 2 781498e8a28Sdamien #define AR_SREV_VERSION_9285 0x0c0 782498e8a28Sdamien #define AR_SREV_REVISION_9285_10 0 783498e8a28Sdamien #define AR_SREV_REVISION_9285_11 1 784498e8a28Sdamien #define AR_SREV_REVISION_9285_12 2 7857a911050Sdamien #define AR_SREV_VERSION_9271 0x140 7867a911050Sdamien #define AR_SREV_REVISION_9271_10 0 7877a911050Sdamien #define AR_SREV_REVISION_9271_11 1 788498e8a28Sdamien #define AR_SREV_VERSION_9287 0x180 789498e8a28Sdamien #define AR_SREV_REVISION_9287_10 0 790498e8a28Sdamien #define AR_SREV_REVISION_9287_11 1 791498e8a28Sdamien #define AR_SREV_REVISION_9287_12 2 7921c1c6997Sdamien #define AR_SREV_REVISION_9287_13 3 793bd6ea91dSdamien #define AR_SREV_VERSION_9380 0x1c0 794bd6ea91dSdamien #define AR_SREV_REVISION_9380_10 0 795bd6ea91dSdamien #define AR_SREV_REVISION_9380_20 2 7967a911050Sdamien #define AR_SREV_VERSION_9485 0x240 7977a911050Sdamien #define AR_SREV_REVISION_9485_10 0 798498e8a28Sdamien 799498e8a28Sdamien /* Bits for AR_AHB_MODE. */ 800498e8a28Sdamien #define AR_AHB_EXACT_WR_EN 0x00000000 801498e8a28Sdamien #define AR_AHB_BUF_WR_EN 0x00000001 802498e8a28Sdamien #define AR_AHB_EXACT_RD_EN 0x00000000 803498e8a28Sdamien #define AR_AHB_CACHELINE_RD_EN 0x00000002 804498e8a28Sdamien #define AR_AHB_PREFETCH_RD_EN 0x00000004 805498e8a28Sdamien #define AR_AHB_PAGE_SIZE_1K 0x00000000 806498e8a28Sdamien #define AR_AHB_PAGE_SIZE_2K 0x00000008 807498e8a28Sdamien #define AR_AHB_PAGE_SIZE_4K 0x00000010 808498e8a28Sdamien #define AR_AHB_CUSTOM_BURST_M 0x000000c0 809498e8a28Sdamien #define AR_AHB_CUSTOM_BURST_S 6 810498e8a28Sdamien #define AR_AHB_CUSTOM_BURST_ASYNC_FIFO_VAL 3 811498e8a28Sdamien 812498e8a28Sdamien /* Bits for AR_INTR_SYNC_CAUSE. */ 813498e8a28Sdamien #define AR_INTR_SYNC_RTC_IRQ 0x00000001 814498e8a28Sdamien #define AR_INTR_SYNC_MAC_IRQ 0x00000002 815498e8a28Sdamien #define AR_INTR_SYNC_EEPROM_ILLEGAL_ACCESS 0x00000004 816498e8a28Sdamien #define AR_INTR_SYNC_APB_TIMEOUT 0x00000008 817498e8a28Sdamien #define AR_INTR_SYNC_PCI_MODE_CONFLICT 0x00000010 818498e8a28Sdamien #define AR_INTR_SYNC_HOST1_FATAL 0x00000020 819498e8a28Sdamien #define AR_INTR_SYNC_HOST1_PERR 0x00000040 820498e8a28Sdamien #define AR_INTR_SYNC_TRCV_FIFO_PERR 0x00000080 821498e8a28Sdamien #define AR_INTR_SYNC_RADM_CPL_EP 0x00000100 822498e8a28Sdamien #define AR_INTR_SYNC_RADM_CPL_DLLP_ABORT 0x00000200 823498e8a28Sdamien #define AR_INTR_SYNC_RADM_CPL_TLP_ABORT 0x00000400 824498e8a28Sdamien #define AR_INTR_SYNC_RADM_CPL_ECRC_ERR 0x00000800 825498e8a28Sdamien #define AR_INTR_SYNC_RADM_CPL_TIMEOUT 0x00001000 826498e8a28Sdamien #define AR_INTR_SYNC_LOCAL_TIMEOUT 0x00002000 827498e8a28Sdamien #define AR_INTR_SYNC_PM_ACCESS 0x00004000 828498e8a28Sdamien #define AR_INTR_SYNC_MAC_AWAKE 0x00008000 829498e8a28Sdamien #define AR_INTR_SYNC_MAC_ASLEEP 0x00010000 830498e8a28Sdamien #define AR_INTR_SYNC_MAC_SLEEP_ACCESS 0x00020000 831498e8a28Sdamien #define AR_INTR_SYNC_ALL 0x0003ffff 8327f0116d0Sdamien #define AR_INTR_SYNC_GPIO_PIN(i) (1 << (18 + (i))) 833498e8a28Sdamien 834498e8a28Sdamien #define AR_INTR_SYNC_DEFAULT \ 835498e8a28Sdamien (AR_INTR_SYNC_HOST1_FATAL | \ 836498e8a28Sdamien AR_INTR_SYNC_HOST1_PERR | \ 837498e8a28Sdamien AR_INTR_SYNC_RADM_CPL_EP | \ 838498e8a28Sdamien AR_INTR_SYNC_RADM_CPL_DLLP_ABORT | \ 839498e8a28Sdamien AR_INTR_SYNC_RADM_CPL_TLP_ABORT | \ 840498e8a28Sdamien AR_INTR_SYNC_RADM_CPL_ECRC_ERR | \ 841498e8a28Sdamien AR_INTR_SYNC_RADM_CPL_TIMEOUT | \ 842498e8a28Sdamien AR_INTR_SYNC_LOCAL_TIMEOUT | \ 843498e8a28Sdamien AR_INTR_SYNC_MAC_SLEEP_ACCESS) 844498e8a28Sdamien 845498e8a28Sdamien /* Bits for AR_INTR_ASYNC_CAUSE. */ 846498e8a28Sdamien #define AR_INTR_RTC_IRQ 0x00000001 847498e8a28Sdamien #define AR_INTR_MAC_IRQ 0x00000002 848498e8a28Sdamien #define AR_INTR_EEP_PROT_ACCESS 0x00000004 849498e8a28Sdamien #define AR_INTR_MAC_AWAKE 0x00020000 850498e8a28Sdamien #define AR_INTR_MAC_ASLEEP 0x00040000 8517f0116d0Sdamien #define AR_INTR_GPIO_PIN(i) (1 << (18 + (i))) 852498e8a28Sdamien #define AR_INTR_SPURIOUS 0xffffffff 853498e8a28Sdamien 854498e8a28Sdamien /* Bits for AR_GPIO_OE_OUT. */ 855498e8a28Sdamien #define AR_GPIO_OE_OUT_DRV_M 0x00000003 856498e8a28Sdamien #define AR_GPIO_OE_OUT_DRV_S 0 857498e8a28Sdamien #define AR_GPIO_OE_OUT_DRV_NO 0 858498e8a28Sdamien #define AR_GPIO_OE_OUT_DRV_LOW 1 859498e8a28Sdamien #define AR_GPIO_OE_OUT_DRV_HI 2 860498e8a28Sdamien #define AR_GPIO_OE_OUT_DRV_ALL 3 861498e8a28Sdamien 8627f0116d0Sdamien /* Bits for AR_GPIO_INTR_POL. */ 8637f0116d0Sdamien #define AR_GPIO_INTR_POL_PIN(i) (1 << (i)) 8647f0116d0Sdamien 865498e8a28Sdamien /* Bits for AR_GPIO_INPUT_EN_VAL. */ 866498e8a28Sdamien #define AR_GPIO_INPUT_EN_VAL_BT_PRIORITY_DEF 0x00000004 867498e8a28Sdamien #define AR_GPIO_INPUT_EN_VAL_BT_FREQUENCY_DEF 0x00000008 868498e8a28Sdamien #define AR_GPIO_INPUT_EN_VAL_BT_ACTIVE_DEF 0x00000010 869498e8a28Sdamien #define AR_GPIO_INPUT_EN_VAL_RFSILENT_DEF 0x00000080 870498e8a28Sdamien #define AR_GPIO_INPUT_EN_VAL_BT_PRIORITY_BB 0x00000400 871498e8a28Sdamien #define AR_GPIO_INPUT_EN_VAL_BT_ACTIVE_BB 0x00001000 872498e8a28Sdamien #define AR_GPIO_INPUT_EN_VAL_RFSILENT_BB 0x00008000 873498e8a28Sdamien #define AR_GPIO_RTC_RESET_OVERRIDE_ENABLE 0x00010000 874498e8a28Sdamien #define AR_GPIO_JTAG_DISABLE 0x00020000 875498e8a28Sdamien 876498e8a28Sdamien /* Bits for AR_GPIO_INPUT_MUX1. */ 877498e8a28Sdamien #define AR_GPIO_INPUT_MUX1_BT_PRIORITY_M 0x00000f00 878498e8a28Sdamien #define AR_GPIO_INPUT_MUX1_BT_PRIORITY_S 8 879498e8a28Sdamien #define AR_GPIO_INPUT_MUX1_BT_ACTIVE_M 0x000f0000 880498e8a28Sdamien #define AR_GPIO_INPUT_MUX1_BT_ACTIVE_S 16 881498e8a28Sdamien 882498e8a28Sdamien /* Bits for AR_GPIO_INPUT_MUX2. */ 883498e8a28Sdamien #define AR_GPIO_INPUT_MUX2_CLK25_M 0x0000000f 884498e8a28Sdamien #define AR_GPIO_INPUT_MUX2_CLK25_S 0 885498e8a28Sdamien #define AR_GPIO_INPUT_MUX2_RFSILENT_M 0x000000f0 886498e8a28Sdamien #define AR_GPIO_INPUT_MUX2_RFSILENT_S 4 887498e8a28Sdamien #define AR_GPIO_INPUT_MUX2_RTC_RESET_M 0x00000f00 888498e8a28Sdamien #define AR_GPIO_INPUT_MUX2_RTC_RESET_S 8 889498e8a28Sdamien 890498e8a28Sdamien /* Bits for AR_GPIO_OUTPUT_MUX[1-3]. */ 891498e8a28Sdamien #define AR_GPIO_OUTPUT_MUX_AS_OUTPUT 0 892498e8a28Sdamien #define AR_GPIO_OUTPUT_MUX_AS_PCIE_ATTENTION_LED 1 893498e8a28Sdamien #define AR_GPIO_OUTPUT_MUX_AS_PCIE_POWER_LED 2 894498e8a28Sdamien #define AR_GPIO_OUTPUT_MUX_AS_TX_FRAME 3 895498e8a28Sdamien #define AR_GPIO_OUTPUT_MUX_AS_RX_CLEAR_EXTERNAL 4 896498e8a28Sdamien #define AR_GPIO_OUTPUT_MUX_AS_MAC_NETWORK_LED 5 897498e8a28Sdamien #define AR_GPIO_OUTPUT_MUX_AS_MAC_POWER_LED 6 898498e8a28Sdamien 899498e8a28Sdamien /* Bits for AR_EEPROM_STATUS_DATA. */ 900498e8a28Sdamien #define AR_EEPROM_STATUS_DATA_VAL_M 0x0000ffff 901498e8a28Sdamien #define AR_EEPROM_STATUS_DATA_VAL_S 0 902498e8a28Sdamien #define AR_EEPROM_STATUS_DATA_BUSY 0x00010000 903498e8a28Sdamien #define AR_EEPROM_STATUS_DATA_BUSY_ACCESS 0x00020000 904498e8a28Sdamien #define AR_EEPROM_STATUS_DATA_PROT_ACCESS 0x00040000 905498e8a28Sdamien #define AR_EEPROM_STATUS_DATA_ABSENT_ACCESS 0x00080000 906498e8a28Sdamien 907498e8a28Sdamien /* Bits for AR_PCIE_MSI. */ 908498e8a28Sdamien #define AR_PCIE_MSI_ENABLE 0x00000001 909498e8a28Sdamien 910498e8a28Sdamien /* Bits for AR_RTC_RC. */ 911498e8a28Sdamien #define AR_RTC_RC_MAC_WARM 0x00000001 912498e8a28Sdamien #define AR_RTC_RC_MAC_COLD 0x00000002 913498e8a28Sdamien #define AR_RTC_RC_COLD_RESET 0x00000004 914498e8a28Sdamien #define AR_RTC_RC_WARM_RESET 0x00000008 915498e8a28Sdamien 916bd6ea91dSdamien /* Bits for AR_RTC_REG_CONTROL1. */ 917bd6ea91dSdamien #define AR_RTC_REG_CONTROL1_SWREG_PROGRAM 0x00000001 918bd6ea91dSdamien 919498e8a28Sdamien /* Bits for AR_RTC_PLL_CONTROL. */ 920498e8a28Sdamien #define AR_RTC_PLL_DIV_M 0x0000001f 921498e8a28Sdamien #define AR_RTC_PLL_DIV_S 0 922498e8a28Sdamien #define AR_RTC_PLL_DIV2 0x00000020 923498e8a28Sdamien #define AR_RTC_PLL_REFDIV_5 0x000000c0 924498e8a28Sdamien #define AR_RTC_PLL_CLKSEL_M 0x00000300 925498e8a28Sdamien #define AR_RTC_PLL_CLKSEL_S 8 926498e8a28Sdamien #define AR_RTC_9160_PLL_DIV_M 0x000003ff 927498e8a28Sdamien #define AR_RTC_9160_PLL_DIV_S 0 928498e8a28Sdamien #define AR_RTC_9160_PLL_REFDIV_M 0x00003c00 929498e8a28Sdamien #define AR_RTC_9160_PLL_REFDIV_S 10 930498e8a28Sdamien #define AR_RTC_9160_PLL_CLKSEL_M 0x0000c000 931498e8a28Sdamien #define AR_RTC_9160_PLL_CLKSEL_S 14 932498e8a28Sdamien 933498e8a28Sdamien /* Bits for AR_RTC_RESET. */ 934498e8a28Sdamien #define AR_RTC_RESET_EN 0x00000001 935498e8a28Sdamien 936498e8a28Sdamien /* Bits for AR_RTC_STATUS. */ 937498e8a28Sdamien #define AR_RTC_STATUS_M 0x0000000f 938498e8a28Sdamien #define AR_RTC_STATUS_S 0 939498e8a28Sdamien #define AR_RTC_STATUS_SHUTDOWN 0x00000001 940498e8a28Sdamien #define AR_RTC_STATUS_ON 0x00000002 941498e8a28Sdamien #define AR_RTC_STATUS_SLEEP 0x00000004 942498e8a28Sdamien #define AR_RTC_STATUS_WAKEUP 0x00000008 943498e8a28Sdamien 944498e8a28Sdamien /* Bits for AR_RTC_SLEEP_CLK. */ 945498e8a28Sdamien #define AR_RTC_FORCE_DERIVED_CLK 0x00000002 946bd6ea91dSdamien #define AR_RTC_FORCE_SWREG_PRD 0x00000004 947498e8a28Sdamien 948498e8a28Sdamien /* Bits for AR_RTC_FORCE_WAKE. */ 949498e8a28Sdamien #define AR_RTC_FORCE_WAKE_EN 0x00000001 950498e8a28Sdamien #define AR_RTC_FORCE_WAKE_ON_INT 0x00000002 951498e8a28Sdamien 952498e8a28Sdamien /* Bits for AR_STA_ID1. */ 953498e8a28Sdamien #define AR_STA_ID1_SADH_M 0x0000ffff 954498e8a28Sdamien #define AR_STA_ID1_SADH_S 0 955498e8a28Sdamien #define AR_STA_ID1_STA_AP 0x00010000 956498e8a28Sdamien #define AR_STA_ID1_ADHOC 0x00020000 957498e8a28Sdamien #define AR_STA_ID1_PWR_SAV 0x00040000 958498e8a28Sdamien #define AR_STA_ID1_KSRCHDIS 0x00080000 959498e8a28Sdamien #define AR_STA_ID1_PCF 0x00100000 960498e8a28Sdamien #define AR_STA_ID1_USE_DEFANT 0x00200000 961498e8a28Sdamien #define AR_STA_ID1_DEFANT_UPDATE 0x00400000 962498e8a28Sdamien #define AR_STA_ID1_RTS_USE_DEF 0x00800000 963498e8a28Sdamien #define AR_STA_ID1_ACKCTS_6MB 0x01000000 964498e8a28Sdamien #define AR_STA_ID1_BASE_RATE_11B 0x02000000 965498e8a28Sdamien #define AR_STA_ID1_SECTOR_SELF_GEN 0x04000000 966498e8a28Sdamien #define AR_STA_ID1_CRPT_MIC_ENABLE 0x08000000 967498e8a28Sdamien #define AR_STA_ID1_KSRCH_MODE 0x10000000 968498e8a28Sdamien #define AR_STA_ID1_PRESERVE_SEQNUM 0x20000000 969498e8a28Sdamien #define AR_STA_ID1_CBCIV_ENDIAN 0x40000000 970498e8a28Sdamien #define AR_STA_ID1_MCAST_KSRCH 0x80000000 971498e8a28Sdamien 972498e8a28Sdamien /* Bits for AR_BSS_ID1. */ 973498e8a28Sdamien #define AR_BSS_ID1_U16_M 0x0000ffff 974498e8a28Sdamien #define AR_BSS_ID1_U16_S 0 975498e8a28Sdamien #define AR_BSS_ID1_AID_M 0x07ff0000 976498e8a28Sdamien #define AR_BSS_ID1_AID_S 16 977498e8a28Sdamien 978498e8a28Sdamien /* Bits for AR_TIME_OUT. */ 979498e8a28Sdamien #define AR_TIME_OUT_ACK_M 0x00003fff 980498e8a28Sdamien #define AR_TIME_OUT_ACK_S 0 981498e8a28Sdamien #define AR_TIME_OUT_CTS_M 0x3fff0000 982498e8a28Sdamien #define AR_TIME_OUT_CTS_S 16 983498e8a28Sdamien #define AR_TIME_OUT_ACK_CTS_ASYNC_FIFO_DUR 0x16001d56 984498e8a28Sdamien 985498e8a28Sdamien /* Bits for AR_RSSI_THR. */ 986498e8a28Sdamien #define AR_RSSI_THR_M 0x000000ff 987498e8a28Sdamien #define AR_RSSI_THR_S 0 988498e8a28Sdamien #define AR_RSSI_THR_BM_THR_M 0x0000ff00 989498e8a28Sdamien #define AR_RSSI_THR_BM_THR_S 8 990498e8a28Sdamien #define AR_RSSI_BCN_WEIGHT_M 0x1f000000 991498e8a28Sdamien #define AR_RSSI_BCN_WEIGHT_S 24 992498e8a28Sdamien #define AR_RSSI_BCN_RSSI_RST 0x20000000 993498e8a28Sdamien 994498e8a28Sdamien /* Bits for AR_USEC. */ 995498e8a28Sdamien #define AR_USEC_USEC_M 0x0000007f 996498e8a28Sdamien #define AR_USEC_USEC_S 0 997498e8a28Sdamien #define AR_USEC_TX_LAT_M 0x007fc000 998498e8a28Sdamien #define AR_USEC_TX_LAT_S 14 999498e8a28Sdamien #define AR_USEC_RX_LAT_M 0x1f800000 1000498e8a28Sdamien #define AR_USEC_RX_LAT_S 23 1001498e8a28Sdamien #define AR_USEC_ASYNC_FIFO_DUR 0x12e00074 1002498e8a28Sdamien 1003498e8a28Sdamien /* Bits for AR_RESET_TSF. */ 1004498e8a28Sdamien #define AR_RESET_TSF_ONCE 0x01000000 1005498e8a28Sdamien 1006498e8a28Sdamien /* Bits for AR_RX_FILTER. */ 1007498e8a28Sdamien #define AR_RX_FILTER_UCAST 0x00000001 1008498e8a28Sdamien #define AR_RX_FILTER_MCAST 0x00000002 1009498e8a28Sdamien #define AR_RX_FILTER_BCAST 0x00000004 1010498e8a28Sdamien #define AR_RX_FILTER_CONTROL 0x00000008 1011498e8a28Sdamien #define AR_RX_FILTER_BEACON 0x00000010 1012498e8a28Sdamien #define AR_RX_FILTER_PROM 0x00000020 1013498e8a28Sdamien #define AR_RX_FILTER_PROBEREQ 0x00000080 1014498e8a28Sdamien #define AR_RX_FILTER_MYBEACON 0x00000200 1015498e8a28Sdamien #define AR_RX_FILTER_COMPR_BAR 0x00000400 1016498e8a28Sdamien #define AR_RX_FILTER_PSPOLL 0x00004000 1017498e8a28Sdamien 1018498e8a28Sdamien /* Bits for AR_DIAG_SW. */ 1019498e8a28Sdamien #define AR_DIAG_CACHE_ACK 0x00000001 1020498e8a28Sdamien #define AR_DIAG_ACK_DIS 0x00000002 1021498e8a28Sdamien #define AR_DIAG_CTS_DIS 0x00000004 1022498e8a28Sdamien #define AR_DIAG_ENCRYPT_DIS 0x00000008 1023498e8a28Sdamien #define AR_DIAG_DECRYPT_DIS 0x00000010 1024498e8a28Sdamien #define AR_DIAG_RX_DIS 0x00000020 1025498e8a28Sdamien #define AR_DIAG_LOOP_BACK 0x00000040 1026498e8a28Sdamien #define AR_DIAG_CORR_FCS 0x00000080 1027498e8a28Sdamien #define AR_DIAG_CHAN_INFO 0x00000100 1028498e8a28Sdamien #define AR_DIAG_SCRAM_SEED_M 0x0001fe00 10299b09303fSdamien #define AR_DIAG_SCRAM_SEED_S 8 /* XXX should be 9? */ 1030498e8a28Sdamien #define AR_DIAG_FRAME_NV0 0x00020000 1031498e8a28Sdamien #define AR_DIAG_OBS_PT_SEL1_M 0x000c0000 1032498e8a28Sdamien #define AR_DIAG_OBS_PT_SEL1_S 18 1033498e8a28Sdamien #define AR_DIAG_FORCE_RX_CLEAR 0x00100000 1034498e8a28Sdamien #define AR_DIAG_IGNORE_VIRT_CS 0x00200000 1035498e8a28Sdamien #define AR_DIAG_FORCE_CH_IDLE_HIGH 0x00400000 1036498e8a28Sdamien #define AR_DIAG_EIFS_CTRL_ENA 0x00800000 1037498e8a28Sdamien #define AR_DIAG_DUAL_CHAIN_INFO 0x01000000 1038498e8a28Sdamien #define AR_DIAG_RX_ABORT 0x02000000 1039498e8a28Sdamien #define AR_DIAG_SATURATE_CYCLE_CNT 0x04000000 1040498e8a28Sdamien #define AR_DIAG_OBS_PT_SEL2 0x08000000 1041498e8a28Sdamien #define AR_DIAG_RX_CLEAR_CTL_LOW 0x10000000 1042498e8a28Sdamien #define AR_DIAG_RX_CLEAR_EXT_LOW 0x20000000 1043498e8a28Sdamien 1044498e8a28Sdamien /* Bits for AR_AES_MUTE_MASK0. */ 1045498e8a28Sdamien #define AR_AES_MUTE_MASK0_FC_M 0x0000ffff 1046498e8a28Sdamien #define AR_AES_MUTE_MASK0_FC_S 0 1047498e8a28Sdamien #define AR_AES_MUTE_MASK0_QOS_M 0xffff0000 1048498e8a28Sdamien #define AR_AES_MUTE_MASK0_QOS_S 16 1049498e8a28Sdamien 1050498e8a28Sdamien /* Bits for AR_AES_MUTE_MASK1. */ 1051498e8a28Sdamien #define AR_AES_MUTE_MASK1_SEQ_M 0x0000ffff 1052498e8a28Sdamien #define AR_AES_MUTE_MASK1_SEQ_S 0 1053498e8a28Sdamien #define AR_AES_MUTE_MASK1_FC_MGMT_M 0xffff0000 1054498e8a28Sdamien #define AR_AES_MUTE_MASK1_FC_MGMT_S 16 1055498e8a28Sdamien #define AR_AES_MUTE_MASK1_FC0_MGMT_M 0x00ff0000 1056498e8a28Sdamien #define AR_AES_MUTE_MASK1_FC0_MGMT_S 16 1057498e8a28Sdamien #define AR_AES_MUTE_MASK1_FC1_MGMT_M 0xff000000 1058498e8a28Sdamien #define AR_AES_MUTE_MASK1_FC1_MGMT_S 24 1059498e8a28Sdamien 1060498e8a28Sdamien /* Bits for AR_GATED_CLKS. */ 1061498e8a28Sdamien #define AR_GATED_CLKS_TX 0x00000002 1062498e8a28Sdamien #define AR_GATED_CLKS_RX 0x00000004 1063498e8a28Sdamien #define AR_GATED_CLKS_REG 0x00000008 1064498e8a28Sdamien 1065498e8a28Sdamien /* Bits for AR_OBS_BUS_CTRL. */ 1066498e8a28Sdamien #define AR_OBS_BUS_SEL_1 0x00040000 1067498e8a28Sdamien #define AR_OBS_BUS_SEL_2 0x00080000 1068498e8a28Sdamien #define AR_OBS_BUS_SEL_3 0x000c0000 1069498e8a28Sdamien #define AR_OBS_BUS_SEL_4 0x08040000 1070498e8a28Sdamien #define AR_OBS_BUS_SEL_5 0x08080000 1071498e8a28Sdamien 1072498e8a28Sdamien /* Bits for AR_OBS_BUS_1. */ 1073498e8a28Sdamien #define AR_OBS_BUS_1_PCU 0x00000001 1074498e8a28Sdamien #define AR_OBS_BUS_1_RX_END 0x00000002 1075498e8a28Sdamien #define AR_OBS_BUS_1_RX_WEP 0x00000004 1076498e8a28Sdamien #define AR_OBS_BUS_1_RX_BEACON 0x00000008 1077498e8a28Sdamien #define AR_OBS_BUS_1_RX_FILTER 0x00000010 1078498e8a28Sdamien #define AR_OBS_BUS_1_TX_HCF 0x00000020 1079498e8a28Sdamien #define AR_OBS_BUS_1_QUIET_TIME 0x00000040 1080498e8a28Sdamien #define AR_OBS_BUS_1_CHAN_IDLE 0x00000080 1081498e8a28Sdamien #define AR_OBS_BUS_1_TX_HOLD 0x00000100 1082498e8a28Sdamien #define AR_OBS_BUS_1_TX_FRAME 0x00000200 1083498e8a28Sdamien #define AR_OBS_BUS_1_RX_FRAME 0x00000400 1084498e8a28Sdamien #define AR_OBS_BUS_1_RX_CLEAR 0x00000800 1085498e8a28Sdamien #define AR_OBS_BUS_1_WEP_STATE_M 0x0003f000 1086498e8a28Sdamien #define AR_OBS_BUS_1_WEP_STATE_S 12 1087498e8a28Sdamien #define AR_OBS_BUS_1_RX_STATE_M 0x01f00000 1088498e8a28Sdamien #define AR_OBS_BUS_1_RX_STATE_S 20 1089498e8a28Sdamien #define AR_OBS_BUS_1_TX_STATE_M 0x7e000000 1090498e8a28Sdamien #define AR_OBS_BUS_1_TX_STATE_S 25 1091498e8a28Sdamien 1092498e8a28Sdamien /* Bits for AR_SLEEP1. */ 1093498e8a28Sdamien #define AR_SLEEP1_ASSUME_DTIM 0x00080000 1094498e8a28Sdamien #define AR_SLEEP1_CAB_TIMEOUT_M 0xffe00000 1095498e8a28Sdamien #define AR_SLEEP1_CAB_TIMEOUT_S 21 1096498e8a28Sdamien /* Default value. */ 1097498e8a28Sdamien #define AR_CAB_TIMEOUT_VAL 10 1098498e8a28Sdamien 1099498e8a28Sdamien /* Bits for AR_SLEEP2. */ 1100498e8a28Sdamien #define AR_SLEEP2_BEACON_TIMEOUT_M 0xffe00000 1101498e8a28Sdamien #define AR_SLEEP2_BEACON_TIMEOUT_S 21 1102498e8a28Sdamien 1103498e8a28Sdamien /* Bits for AR_TPC. */ 1104498e8a28Sdamien #define AR_TPC_ACK_M 0x0000003f 1105498e8a28Sdamien #define AR_TPC_ACK_S 0 1106498e8a28Sdamien #define AR_TPC_CTS_M 0x00003f00 1107498e8a28Sdamien #define AR_TPC_CTS_S 8 1108498e8a28Sdamien #define AR_TPC_CHIRP_M 0x003f0000 1109498e8a28Sdamien #define AR_TPC_CHIRP_S 16 1110498e8a28Sdamien 1111498e8a28Sdamien /* Bits for AR_QUIET1. */ 1112498e8a28Sdamien #define AR_QUIET1_NEXT_QUIET_M 0x0000ffff 1113498e8a28Sdamien #define AR_QUIET1_NEXT_QUIET_S 0 1114498e8a28Sdamien #define AR_QUIET1_QUIET_ENABLE 0x00010000 1115498e8a28Sdamien #define AR_QUIET1_QUIET_ACK_CTS_ENABLE 0x00020000 1116498e8a28Sdamien 1117498e8a28Sdamien /* Bits for AR_QUIET2. */ 1118498e8a28Sdamien #define AR_QUIET2_QUIET_PERIOD_M 0x0000ffff 1119498e8a28Sdamien #define AR_QUIET2_QUIET_PERIOD_S 0 1120498e8a28Sdamien #define AR_QUIET2_QUIET_DUR_M 0xffff0000 1121498e8a28Sdamien #define AR_QUIET2_QUIET_DUR_S 16 1122498e8a28Sdamien 1123498e8a28Sdamien /* Bits for AR_TSF_PARM. */ 1124498e8a28Sdamien #define AR_TSF_INCREMENT_M 0x000000ff 1125498e8a28Sdamien #define AR_TSF_INCREMENT_S 0 1126498e8a28Sdamien 1127498e8a28Sdamien /* Bits for AR_QOS_NO_ACK. */ 1128498e8a28Sdamien #define AR_QOS_NO_ACK_TWO_BIT_M 0x0000000f 1129498e8a28Sdamien #define AR_QOS_NO_ACK_TWO_BIT_S 0 1130498e8a28Sdamien #define AR_QOS_NO_ACK_BIT_OFF_M 0x0000007f 1131498e8a28Sdamien #define AR_QOS_NO_ACK_BIT_OFF_S 4 1132498e8a28Sdamien #define AR_QOS_NO_ACK_BYTE_OFF_M 0x00000180 1133498e8a28Sdamien #define AR_QOS_NO_ACK_BYTE_OFF_S 7 1134498e8a28Sdamien 1135498e8a28Sdamien /* Bits for AR_PHY_ERR. */ 1136498e8a28Sdamien #define AR_PHY_ERR_DCHIRP 0x00000008 1137498e8a28Sdamien #define AR_PHY_ERR_RADAR 0x00000020 1138498e8a28Sdamien #define AR_PHY_ERR_OFDM_TIMING 0x00020000 1139498e8a28Sdamien #define AR_PHY_ERR_CCK_TIMING 0x02000000 1140498e8a28Sdamien 1141498e8a28Sdamien /* Bits for AR_PCU_MISC. */ 1142498e8a28Sdamien #define AR_PCU_FORCE_BSSID_MATCH 0x00000001 1143498e8a28Sdamien #define AR_PCU_MIC_NEW_LOC_ENA 0x00000004 1144498e8a28Sdamien #define AR_PCU_TX_ADD_TSF 0x00000008 1145498e8a28Sdamien #define AR_PCU_CCK_SIFS_MODE 0x00000010 1146498e8a28Sdamien #define AR_PCU_RX_ANT_UPDT 0x00000800 1147498e8a28Sdamien #define AR_PCU_TXOP_TBTT_LIMIT_ENA 0x00001000 1148498e8a28Sdamien #define AR_PCU_MISS_BCN_IN_SLEEP 0x00004000 1149498e8a28Sdamien #define AR_PCU_BUG_12306_FIX_ENA 0x00020000 1150498e8a28Sdamien #define AR_PCU_FORCE_QUIET_COLL 0x00040000 1151498e8a28Sdamien #define AR_PCU_BT_ANT_PREVENT_RX 0x00100000 1152498e8a28Sdamien #define AR_PCU_TBTT_PROTECT 0x00200000 1153498e8a28Sdamien #define AR_PCU_CLEAR_VMF 0x01000000 1154498e8a28Sdamien #define AR_PCU_CLEAR_BA_VALID 0x04000000 1155498e8a28Sdamien 1156498e8a28Sdamien /* Bits for AR_BT_COEX_MODE. */ 1157498e8a28Sdamien #define AR_BT_TIME_EXTEND_M 0x000000ff 1158498e8a28Sdamien #define AR_BT_TIME_EXTEND_S 0 1159498e8a28Sdamien #define AR_BT_TXSTATE_EXTEND 0x00000100 1160498e8a28Sdamien #define AR_BT_TX_FRAME_EXTEND 0x00000200 1161498e8a28Sdamien #define AR_BT_MODE_M 0x00000c00 1162498e8a28Sdamien #define AR_BT_MODE_S 10 1163498e8a28Sdamien #define AR_BT_MODE_LEGACY 0 1164498e8a28Sdamien #define AR_BT_MODE_UNSLOTTED 1 1165498e8a28Sdamien #define AR_BT_MODE_SLOTTED 2 1166498e8a28Sdamien #define AR_BT_MODE_DISABLED 3 1167498e8a28Sdamien #define AR_BT_QUIET 0x00001000 1168498e8a28Sdamien #define AR_BT_QCU_THRESH_M 0x0001e000 1169498e8a28Sdamien #define AR_BT_QCU_THRESH_S 13 1170498e8a28Sdamien #define AR_BT_RX_CLEAR_POLARITY 0x00020000 1171498e8a28Sdamien #define AR_BT_PRIORITY_TIME_M 0x00fc0000 1172498e8a28Sdamien #define AR_BT_PRIORITY_TIME_S 18 1173498e8a28Sdamien #define AR_BT_FIRST_SLOT_TIME_M 0xff000000 1174498e8a28Sdamien #define AR_BT_FIRST_SLOT_TIME_S 24 1175498e8a28Sdamien 1176498e8a28Sdamien /* Bits for AR_BT_COEX_WEIGHT. */ 1177498e8a28Sdamien #define AR_BTCOEX_BT_WGHT_M 0x0000ffff 1178498e8a28Sdamien #define AR_BTCOEX_BT_WGHT_S 0 1179498e8a28Sdamien #define AR_STOMP_LOW_BT_WGHT 0xff55 1180498e8a28Sdamien #define AR_BTCOEX_WL_WGHT_M 0xffff0000 1181498e8a28Sdamien #define AR_BTCOEX_WL_WGHT_S 16 1182498e8a28Sdamien #define AR_STOMP_LOW_WL_WGHT 0xaaa8 1183498e8a28Sdamien 1184498e8a28Sdamien /* Bits for AR_BT_COEX_MODE2. */ 1185498e8a28Sdamien #define AR_BT_BCN_MISS_THRESH_M 0x000000ff 1186498e8a28Sdamien #define AR_BT_BCN_MISS_THRESH_S 0 1187498e8a28Sdamien #define AR_BT_BCN_MISS_CNT_M 0x0000ff00 1188498e8a28Sdamien #define AR_BT_BCN_MISS_CNT_S 8 1189498e8a28Sdamien #define AR_BT_HOLD_RX_CLEAR 0x00010000 1190498e8a28Sdamien #define AR_BT_DISABLE_BT_ANT 0x00100000 1191498e8a28Sdamien 119291fe9e06Sstsp /* Bits for AR_PCU_BA_BAR_CTRL. */ 119391fe9e06Sstsp #define AR_PCU_BA_BAR_COMRESSED 0x00000100 119491fe9e06Sstsp #define AR_PCU_BA_BAR_ACK_POLICY 0x00000200 119591fe9e06Sstsp #define AR_PCU_BA_BAR_ACK_POLICY_OFFSET_M 0x000000f0 119691fe9e06Sstsp #define AR_PCU_BA_BAR_ACK_POLICY_OFFSET_S 4 119791fe9e06Sstsp #define AR_PCU_BA_BAR_COMPRESSED_OFFSET_M 0x0000000f 119891fe9e06Sstsp #define AR_PCU_BA_BAR_COMPRESSED_OFFSET_S 0 119991fe9e06Sstsp 1200498e8a28Sdamien /* Bits for AR_PCU_TXBUF_CTRL. */ 1201498e8a28Sdamien #define AR_PCU_TXBUF_CTRL_SIZE_M 0x000007ff 1202498e8a28Sdamien #define AR_PCU_TXBUF_CTRL_SIZE_S 0 12038489ac78Sdamien #define AR_PCU_TXBUF_CTRL_USABLE_SIZE 1792 12048489ac78Sdamien #define AR9285_PCU_TXBUF_CTRL_USABLE_SIZE (1792 / 2) 1205498e8a28Sdamien 1206498e8a28Sdamien /* Bits for AR_PCU_MISC_MODE2. */ 1207498e8a28Sdamien #define AR_PCU_MISC_MODE2_MGMT_CRYPTO_ENABLE 0x00000002 1208498e8a28Sdamien #define AR_PCU_MISC_MODE2_NO_CRYPTO_FOR_NON_DATA_PKT 0x00000004 1209bd6ea91dSdamien #define AR_PCU_MISC_MODE2_AGG_WEP_ENABLE_FIX 0x00000008 1210498e8a28Sdamien #define AR_PCU_MISC_MODE2_ADHOC_MCAST_KEYID_ENABLE 0x00000040 1211498e8a28Sdamien #define AR_PCU_MISC_MODE2_CFP_IGNORE 0x00000080 1212498e8a28Sdamien #define AR_PCU_MISC_MODE2_MGMT_QOS_M 0x0000ff00 1213498e8a28Sdamien #define AR_PCU_MISC_MODE2_MGMT_QOS_S 8 1214498e8a28Sdamien #define AR_PCU_MISC_MODE2_ENABLE_LOAD_NAV_BEACON_DUR 0x00010000 1215498e8a28Sdamien #define AR_PCU_MISC_MODE2_ENABLE_AGGWEP 0x00020000 1216498e8a28Sdamien #define AR_PCU_MISC_MODE2_HWWAR1 0x00100000 1217498e8a28Sdamien #define AR_PCU_MISC_MODE2_HWWAR2 0x02000000 1218498e8a28Sdamien 1219498e8a28Sdamien /* Bits for AR_MAC_PCU_LOGIC_ANALYZER. */ 1220498e8a28Sdamien #define AR_MAC_PCU_LOGIC_ANALYZER_DISBUG20768 0x20000000 1221498e8a28Sdamien 1222498e8a28Sdamien /* Bits for AR_MAC_PCU_ASYNC_FIFO_REG3. */ 1223498e8a28Sdamien #define AR_MAC_PCU_ASYNC_FIFO_REG3_DATAPATH_SEL 0x00000400 1224498e8a28Sdamien #define AR_MAC_PCU_ASYNC_FIFO_REG3_SOFT_RESET 0x80000000 1225498e8a28Sdamien 1226498e8a28Sdamien /* Bits for AR_PHY_ERR_[123]. */ 1227498e8a28Sdamien #define AR_PHY_ERR_COUNT_M 0x00ffffff 1228498e8a28Sdamien #define AR_PHY_ERR_COUNT_S 0 1229498e8a28Sdamien 1230498e8a28Sdamien /* Bits for AR_TSFOOR_THRESHOLD. */ 1231498e8a28Sdamien #define AR_TSFOOR_THRESHOLD_VAL_M 0x0000ffff 1232498e8a28Sdamien #define AR_TSFOOR_THRESHOLD_VAL_S 0 1233498e8a28Sdamien 1234498e8a28Sdamien /* Bit for AR_TXSIFS. */ 1235498e8a28Sdamien #define AR_TXSIFS_TIME_M 0x000000ff 1236498e8a28Sdamien #define AR_TXSIFS_TIME_S 0 1237498e8a28Sdamien #define AR_TXSIFS_TX_LATENCY_M 0x00000f00 1238498e8a28Sdamien #define AR_TXSIFS_TX_LATENCY_S 8 1239498e8a28Sdamien #define AR_TXSIFS_ACK_SHIFT_M 0x00007000 1240498e8a28Sdamien #define AR_TXSIFS_ACK_SHIFT_S 12 1241498e8a28Sdamien 1242498e8a28Sdamien /* Bits for AR_TXOP_X. */ 1243498e8a28Sdamien #define AR_TXOP_X_VAL 0x000000ff 1244498e8a28Sdamien 1245498e8a28Sdamien /* Bits for AR_TIMER_MODE. */ 1246498e8a28Sdamien #define AR_TBTT_TIMER_EN 0x00000001 1247498e8a28Sdamien #define AR_DBA_TIMER_EN 0x00000002 1248498e8a28Sdamien #define AR_SWBA_TIMER_EN 0x00000004 1249498e8a28Sdamien #define AR_HCF_TIMER_EN 0x00000008 1250498e8a28Sdamien #define AR_TIM_TIMER_EN 0x00000010 1251498e8a28Sdamien #define AR_DTIM_TIMER_EN 0x00000020 1252498e8a28Sdamien #define AR_QUIET_TIMER_EN 0x00000040 1253498e8a28Sdamien #define AR_NDP_TIMER_EN 0x00000080 1254498e8a28Sdamien #define AR_TIMER_OVERFLOW_INDEX_M 0x00000700 1255498e8a28Sdamien #define AR_TIMER_OVERFLOW_INDEX_S 8 1256498e8a28Sdamien #define AR_TIMER_THRESH_M 0xfffff000 1257498e8a28Sdamien #define AR_TIMER_THRESH_S 12 1258498e8a28Sdamien 1259498e8a28Sdamien /* Bits for AR_SLP32_MODE. */ 1260498e8a28Sdamien #define AR_SLP32_HALF_CLK_LATENCY_M 0x000fffff 1261498e8a28Sdamien #define AR_SLP32_HALF_CLK_LATENCY_S 0 1262498e8a28Sdamien #define AR_SLP32_ENA 0x00100000 1263498e8a28Sdamien #define AR_SLP32_TSF_WRITE_STATUS 0x00200000 1264498e8a28Sdamien 1265498e8a28Sdamien /* Bits for AR_SLP32_WAKE. */ 1266498e8a28Sdamien #define AR_SLP32_WAKE_XTL_TIME_M 0x0000ffff 1267498e8a28Sdamien #define AR_SLP32_WAKE_XTL_TIME_S 0 1268498e8a28Sdamien 1269498e8a28Sdamien /* Bits for AR_SLP_MIB_CTRL. */ 1270498e8a28Sdamien #define AR_SLP_MIB_CLEAR 0x00000001 1271498e8a28Sdamien #define AR_SLP_MIB_PENDING 0x00000002 1272498e8a28Sdamien 1273498e8a28Sdamien /* Bits for AR_2040_MODE. */ 1274498e8a28Sdamien #define AR_2040_JOINED_RX_CLEAR 0x00000001 1275498e8a28Sdamien 1276498e8a28Sdamien /* Bits for AR_KEYTABLE_TYPE. */ 1277498e8a28Sdamien #define AR_KEYTABLE_TYPE_M 0x00000007 1278498e8a28Sdamien #define AR_KEYTABLE_TYPE_S 0 1279498e8a28Sdamien #define AR_KEYTABLE_TYPE_40 0 1280498e8a28Sdamien #define AR_KEYTABLE_TYPE_104 1 1281498e8a28Sdamien #define AR_KEYTABLE_TYPE_128 3 1282498e8a28Sdamien #define AR_KEYTABLE_TYPE_TKIP 4 1283498e8a28Sdamien #define AR_KEYTABLE_TYPE_AES 5 1284498e8a28Sdamien #define AR_KEYTABLE_TYPE_CCM 6 1285498e8a28Sdamien #define AR_KEYTABLE_TYPE_CLR 7 1286498e8a28Sdamien #define AR_KEYTABLE_ANT 0x00000008 1287498e8a28Sdamien #define AR_KEYTABLE_VALID 0x00008000 1288498e8a28Sdamien 128913236e8dSdamien /* 129013236e8dSdamien * AR9271 specific registers. 129113236e8dSdamien */ 1292caf92146Skevlo #define AR9271_CLOCK_CONTROL 0x050040 129313236e8dSdamien #define AR9271_RESET_POWER_DOWN_CONTROL 0x050044 129413236e8dSdamien #define AR9271_FIRMWARE 0x501000 129513236e8dSdamien #define AR9271_FIRMWARE_TEXT 0x903000 129613236e8dSdamien #define AR7010_FIRMWARE_TEXT 0x906000 129713236e8dSdamien 129813236e8dSdamien /* Bits for AR9271_RESET_POWER_DOWN_CONTROL. */ 129913236e8dSdamien #define AR9271_RADIO_RF_RST 0x00000020 130013236e8dSdamien #define AR9271_GATE_MAC_CTL 0x00004000 130113236e8dSdamien 1302498e8a28Sdamien 1303498e8a28Sdamien #define AR_BASE_PHY_ACTIVE_DELAY 100 1304498e8a28Sdamien 1305498e8a28Sdamien #define AR_CLOCK_RATE_CCK 22 1306498e8a28Sdamien #define AR_CLOCK_RATE_5GHZ_OFDM 40 1307db9f724cSdamien #define AR_CLOCK_RATE_FAST_5GHZ_OFDM 44 1308498e8a28Sdamien #define AR_CLOCK_RATE_2GHZ_OFDM 44 1309498e8a28Sdamien 1310498e8a28Sdamien #define AR_PWR_DECREASE_FOR_2_CHAIN 6 /* 10 * log10(2) * 2 */ 1311498e8a28Sdamien #define AR_PWR_DECREASE_FOR_3_CHAIN 9 /* 10 * log10(3) * 2 */ 1312498e8a28Sdamien 1313498e8a28Sdamien #define AR_SLEEP_SLOP 3 /* TUs */ 1314498e8a28Sdamien 1315498e8a28Sdamien #define AR_MIN_BEACON_TIMEOUT_VAL 1 1316498e8a28Sdamien #define AR_FUDGE 2 1317eff5798eSdamien #define AR_BEACON_DMA_DELAY 2 1318eff5798eSdamien #define AR_SWBA_DELAY 10 1319498e8a28Sdamien /* Divides by 1024 (usecs to TU) without doing 64-bit arithmetic. */ 1320498e8a28Sdamien #define AR_TSF_TO_TU(hi, lo) ((hi) << 22 | (lo) >> 10) 1321498e8a28Sdamien 1322498e8a28Sdamien #define AR_KEY_CACHE_SIZE 128 1323498e8a28Sdamien #define AR_RSVD_KEYTABLE_ENTRIES 4 1324498e8a28Sdamien 1325498e8a28Sdamien #define AR_CAL_SAMPLES 64 /* XXX AR9280? */ 1326498e8a28Sdamien #define AR_MAX_LOG_CAL 2 /* XXX AR9280? */ 1327498e8a28Sdamien 1328498e8a28Sdamien /* Maximum number of chains supported by any chipset. */ 1329498e8a28Sdamien #define AR_MAX_CHAINS 3 1330498e8a28Sdamien 1331498e8a28Sdamien /* Default number of key cache entries. */ 1332498e8a28Sdamien #define AR_KEYTABLE_SIZE 128 1333498e8a28Sdamien 1334498e8a28Sdamien /* GPIO pins. */ 1335498e8a28Sdamien #define AR_GPIO_WLANACTIVE_PIN 5 1336498e8a28Sdamien #define AR_GPIO_BTACTIVE_PIN 6 1337498e8a28Sdamien #define AR_GPIO_BTPRIORITY_PIN 7 1338498e8a28Sdamien 1339498e8a28Sdamien #define AR_SREV_5416(sc) \ 1340498e8a28Sdamien ((sc)->mac_ver == AR_SREV_VERSION_5416_PCI || \ 1341498e8a28Sdamien (sc)->mac_ver == AR_SREV_VERSION_5416_PCIE) 1342498e8a28Sdamien #define AR_SREV_5416_20_OR_LATER(sc) \ 1343498e8a28Sdamien ((AR_SREV_5416(sc) && \ 1344498e8a28Sdamien (sc)->mac_rev >= AR_SREV_REVISION_5416_20) || \ 1345498e8a28Sdamien (sc)->mac_ver >= AR_SREV_VERSION_9100) 1346498e8a28Sdamien #define AR_SREV_5416_22_OR_LATER(sc) \ 1347498e8a28Sdamien ((AR_SREV_5416(sc) && \ 1348498e8a28Sdamien (sc)->mac_rev >= AR_SREV_REVISION_5416_22) || \ 1349498e8a28Sdamien (sc)->mac_ver >= AR_SREV_VERSION_9100) 1350498e8a28Sdamien 1351498e8a28Sdamien #define AR_SREV_9160(sc) \ 1352498e8a28Sdamien ((sc)->mac_ver == AR_SREV_VERSION_9160) 1353498e8a28Sdamien #define AR_SREV_9160_10_OR_LATER(sc) \ 1354498e8a28Sdamien ((sc)->mac_ver >= AR_SREV_VERSION_9160) 1355498e8a28Sdamien #define AR_SREV_9160_11(sc) \ 1356498e8a28Sdamien (AR_SREV_9160(sc) && \ 1357498e8a28Sdamien (sc)->mac_rev == AR_SREV_REVISION_9160_11) 1358498e8a28Sdamien 1359498e8a28Sdamien #define AR_SREV_9280(sc) \ 1360498e8a28Sdamien ((sc)->mac_ver == AR_SREV_VERSION_9280) 1361498e8a28Sdamien #define AR_SREV_9280_10_OR_LATER(sc) \ 1362498e8a28Sdamien ((sc)->mac_ver >= AR_SREV_VERSION_9280) 1363498e8a28Sdamien #define AR_SREV_9280_10(sc) \ 1364498e8a28Sdamien (AR_SREV_9280(sc) && \ 1365498e8a28Sdamien (sc)->mac_rev == AR_SREV_REVISION_9280_10) 1366498e8a28Sdamien #define AR_SREV_9280_20(sc) \ 1367498e8a28Sdamien (AR_SREV_9280(sc) && \ 1368498e8a28Sdamien (sc)->mac_rev >= AR_SREV_REVISION_9280_20) 1369498e8a28Sdamien #define AR_SREV_9280_20_OR_LATER(sc) \ 1370498e8a28Sdamien ((sc)->mac_ver > AR_SREV_VERSION_9280 || \ 1371498e8a28Sdamien (AR_SREV_9280(sc) && (sc)->mac_rev >= AR_SREV_REVISION_9280_20)) 1372498e8a28Sdamien 1373498e8a28Sdamien #define AR_SREV_9285(sc) \ 1374498e8a28Sdamien ((sc)->mac_ver == AR_SREV_VERSION_9285) 1375498e8a28Sdamien #define AR_SREV_9285_10_OR_LATER(sc) \ 1376498e8a28Sdamien ((sc)->mac_ver >= AR_SREV_VERSION_9285) 1377498e8a28Sdamien #define AR_SREV_9285_11(sc) \ 1378498e8a28Sdamien (AR_SREV_9285(sc) && \ 1379498e8a28Sdamien (sc)->mac_rev == AR_SREV_REVISION_9285_11) 1380498e8a28Sdamien #define AR_SREV_9285_11_OR_LATER(sc) \ 1381498e8a28Sdamien ((sc)->mac_ver > AR_SREV_VERSION_9285 || \ 1382498e8a28Sdamien (AR_SREV_9285(sc) && (sc)->mac_rev >= AR_SREV_REVISION_9285_11)) 1383498e8a28Sdamien #define AR_SREV_9285_12(sc) \ 1384498e8a28Sdamien (AR_SREV_9285(sc) && \ 1385498e8a28Sdamien ((sc)->mac_rev == AR_SREV_REVISION_9285_12)) 1386498e8a28Sdamien #define AR_SREV_9285_12_OR_LATER(sc) \ 1387498e8a28Sdamien ((sc)->mac_ver > AR_SREV_VERSION_9285 || \ 1388498e8a28Sdamien (AR_SREV_9285(sc) && (sc)->mac_rev >= AR_SREV_REVISION_9285_12)) 1389498e8a28Sdamien 13907a911050Sdamien #define AR_SREV_9271(sc) \ 13917a911050Sdamien ((sc)->mac_ver == AR_SREV_VERSION_9271) 139213236e8dSdamien #define AR_SREV_9271_10(sc) \ 139313236e8dSdamien (AR_SREV_9271(sc) && \ 139413236e8dSdamien (sc)->mac_rev == AR_SREV_REVISION_9271_10) 13957a911050Sdamien 1396498e8a28Sdamien #define AR_SREV_9287(sc) \ 1397498e8a28Sdamien ((sc)->mac_ver == AR_SREV_VERSION_9287) 1398498e8a28Sdamien #define AR_SREV_9287_10_OR_LATER(sc) \ 1399498e8a28Sdamien ((sc)->mac_ver >= AR_SREV_VERSION_9287) 1400498e8a28Sdamien #define AR_SREV_9287_10(sc) \ 1401498e8a28Sdamien ((sc)->mac_ver == AR_SREV_VERSION_9287 && \ 1402498e8a28Sdamien (sc)->mac_rev == AR_SREV_REVISION_9287_10) 1403498e8a28Sdamien #define AR_SREV_9287_11(sc) \ 1404498e8a28Sdamien ((sc)->mac_ver == AR_SREV_VERSION_9287 && \ 1405498e8a28Sdamien (sc)->mac_rev == AR_SREV_REVISION_9287_11) 1406498e8a28Sdamien #define AR_SREV_9287_11_OR_LATER(sc) \ 1407498e8a28Sdamien ((sc)->mac_ver > AR_SREV_VERSION_9287 || \ 1408498e8a28Sdamien (AR_SREV_9287(sc) && (sc)->mac_rev >= AR_SREV_REVISION_9287_11)) 1409498e8a28Sdamien #define AR_SREV_9287_12(sc) \ 1410498e8a28Sdamien ((sc)->mac_ver == AR_SREV_VERSION_9287 && \ 1411498e8a28Sdamien (sc)->mac_rev == AR_SREV_REVISION_9287_12) 1412498e8a28Sdamien #define AR_SREV_9287_12_OR_LATER(sc) \ 1413498e8a28Sdamien ((sc)->mac_ver > AR_SREV_VERSION_9287 || \ 1414498e8a28Sdamien (AR_SREV_9287(sc) && (sc)->mac_rev >= AR_SREV_REVISION_9287_12)) 14151c1c6997Sdamien #define AR_SREV_9287_13_OR_LATER(sc) \ 14161c1c6997Sdamien ((sc)->mac_ver > AR_SREV_VERSION_9287 || \ 14171c1c6997Sdamien (AR_SREV_9287(sc) && (sc)->mac_rev >= AR_SREV_REVISION_9287_13)) 1418498e8a28Sdamien 1419bd6ea91dSdamien #define AR_SREV_9380(sc) \ 1420bd6ea91dSdamien ((sc)->mac_ver == AR_SREV_VERSION_9380) 1421bd6ea91dSdamien #define AR_SREV_9380_10_OR_LATER(sc) \ 1422bd6ea91dSdamien ((sc)->mac_ver >= AR_SREV_VERSION_9380) 142379bc8a8eSdamien #define AR_SREV_9380_20(sc) \ 142479bc8a8eSdamien (AR_SREV_9380(sc) && \ 142579bc8a8eSdamien (sc)->mac_rev == AR_SREV_REVISION_9380_20) 1426bd6ea91dSdamien #define AR_SREV_9380_20_OR_LATER(sc) \ 1427bd6ea91dSdamien ((sc)->mac_ver > AR_SREV_VERSION_9380 || \ 1428bd6ea91dSdamien (AR_SREV_9380(sc) && (sc)->mac_rev >= AR_SREV_REVISION_9380_20)) 1429bd6ea91dSdamien 14307a911050Sdamien #define AR_SREV_9485(sc) \ 14317a911050Sdamien ((sc)->mac_ver == AR_SREV_VERSION_9485) 14327a911050Sdamien 1433498e8a28Sdamien #define AR_SINGLE_CHIP(sc) AR_SREV_9280_10_OR_LATER(sc) 1434498e8a28Sdamien 1435498e8a28Sdamien #define AR_RADIO_SREV_MAJOR 0xf0 1436498e8a28Sdamien #define AR_RAD5133_SREV_MAJOR 0xc0 1437498e8a28Sdamien #define AR_RAD2133_SREV_MAJOR 0xd0 1438498e8a28Sdamien #define AR_RAD5122_SREV_MAJOR 0xe0 1439498e8a28Sdamien #define AR_RAD2122_SREV_MAJOR 0xf0 1440498e8a28Sdamien 1441498e8a28Sdamien #define AR_BCHAN_UNUSED 0xff 1442498e8a28Sdamien #define AR_PD_GAINS_IN_MASK 4 /* NB: Max for all chips. */ 1443498e8a28Sdamien #define AR_MAX_RATE_POWER 63 1444498e8a28Sdamien 1445498e8a28Sdamien #define AR_HT40_POWER_INC_FOR_PDADC 2 1446bd6ea91dSdamien #define AR_PWR_TABLE_OFFSET_DB (-5) 1447bd6ea91dSdamien #define AR9280_TX_GAIN_TABLE_SIZE 22 1448df31d9afSdamien #define AR9003_TX_GAIN_TABLE_SIZE 32 1449df31d9afSdamien #define AR9003_PAPRD_MEM_TAB_SIZE 24 1450498e8a28Sdamien 1451498e8a28Sdamien #define AR_BASE_FREQ_2GHZ 2300 1452498e8a28Sdamien #define AR_BASE_FREQ_5GHZ 4900 1453498e8a28Sdamien 1454498e8a28Sdamien #define AR_SD_NO_CTL 0xe0 1455498e8a28Sdamien #define AR_NO_CTL 0xff 1456498e8a28Sdamien #define AR_CTL_MODE_M 0x07 1457498e8a28Sdamien #define AR_CTL_MODE_S 0 1458498e8a28Sdamien #define AR_CTL_11A 0 1459498e8a28Sdamien #define AR_CTL_11B 1 1460498e8a28Sdamien #define AR_CTL_11G 2 1461498e8a28Sdamien #define AR_CTL_2GHT20 5 1462498e8a28Sdamien #define AR_CTL_5GHT20 6 1463498e8a28Sdamien #define AR_CTL_2GHT40 7 1464498e8a28Sdamien #define AR_CTL_5GHT40 8 1465498e8a28Sdamien 14669d1f2812Sstsp #define AR_DEFAULT_NOISE_FLOOR (-100) 146704586493Sstsp 1468498e8a28Sdamien /* 1469498e8a28Sdamien * Macros to access registers. 1470498e8a28Sdamien */ 1471498e8a28Sdamien #define AR_READ(sc, reg) \ 14727a911050Sdamien (sc)->ops.read((sc), (reg)) 1473498e8a28Sdamien 1474498e8a28Sdamien #define AR_WRITE(sc, reg, val) \ 14757a911050Sdamien (sc)->ops.write((sc), (reg), (val)) 1476c0a11cf8Sdamien 1477c0a11cf8Sdamien #define AR_WRITE_BARRIER(sc) \ 14787a911050Sdamien (sc)->ops.write_barrier((sc)) 1479498e8a28Sdamien 1480498e8a28Sdamien #define AR_SETBITS(sc, reg, mask) \ 1481498e8a28Sdamien AR_WRITE(sc, reg, AR_READ(sc, reg) | (mask)) 1482498e8a28Sdamien 1483498e8a28Sdamien #define AR_CLRBITS(sc, reg, mask) \ 1484498e8a28Sdamien AR_WRITE(sc, reg, AR_READ(sc, reg) & ~(mask)) 1485498e8a28Sdamien 1486498e8a28Sdamien /* 1487498e8a28Sdamien * Macros to access subfields in registers. 1488498e8a28Sdamien */ 1489498e8a28Sdamien /* Mask and Shift (getter). */ 1490498e8a28Sdamien #define MS(val, field) \ 1491b009ba0aSkettenis (((uint32_t)(val) & field##_M) >> field##_S) 1492498e8a28Sdamien 1493498e8a28Sdamien /* Shift and Mask (setter). */ 1494498e8a28Sdamien #define SM(field, val) \ 1495b009ba0aSkettenis (((uint32_t)(val) << field##_S) & field##_M) 1496498e8a28Sdamien 1497498e8a28Sdamien /* Rewrite. */ 1498498e8a28Sdamien #define RW(var, field, val) \ 1499498e8a28Sdamien (((var) & ~field##_M) | SM(field, val)) 1500