1*4882a593Smuzhiyun /* 2*4882a593Smuzhiyun * Copyright (c) 2008-2011 Atheros Communications Inc. 3*4882a593Smuzhiyun * 4*4882a593Smuzhiyun * Permission to use, copy, modify, and/or distribute this software for any 5*4882a593Smuzhiyun * purpose with or without fee is hereby granted, provided that the above 6*4882a593Smuzhiyun * copyright notice and this permission notice appear in all copies. 7*4882a593Smuzhiyun * 8*4882a593Smuzhiyun * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 9*4882a593Smuzhiyun * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 10*4882a593Smuzhiyun * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 11*4882a593Smuzhiyun * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 12*4882a593Smuzhiyun * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 13*4882a593Smuzhiyun * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 14*4882a593Smuzhiyun * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 15*4882a593Smuzhiyun */ 16*4882a593Smuzhiyun 17*4882a593Smuzhiyun #ifndef REG_H 18*4882a593Smuzhiyun #define REG_H 19*4882a593Smuzhiyun 20*4882a593Smuzhiyun #include "../reg.h" 21*4882a593Smuzhiyun 22*4882a593Smuzhiyun #define AR_CR 0x0008 23*4882a593Smuzhiyun #define AR_CR_RXE (AR_SREV_9300_20_OR_LATER(ah) ? 0x0000000c : 0x00000004) 24*4882a593Smuzhiyun #define AR_CR_RXD 0x00000020 25*4882a593Smuzhiyun #define AR_CR_SWI 0x00000040 26*4882a593Smuzhiyun 27*4882a593Smuzhiyun #define AR_RXDP 0x000C 28*4882a593Smuzhiyun 29*4882a593Smuzhiyun #define AR_CFG 0x0014 30*4882a593Smuzhiyun #define AR_CFG_SWTD 0x00000001 31*4882a593Smuzhiyun #define AR_CFG_SWTB 0x00000002 32*4882a593Smuzhiyun #define AR_CFG_SWRD 0x00000004 33*4882a593Smuzhiyun #define AR_CFG_SWRB 0x00000008 34*4882a593Smuzhiyun #define AR_CFG_SWRG 0x00000010 35*4882a593Smuzhiyun #define AR_CFG_AP_ADHOC_INDICATION 0x00000020 36*4882a593Smuzhiyun #define AR_CFG_PHOK 0x00000100 37*4882a593Smuzhiyun #define AR_CFG_EEBS 0x00000200 38*4882a593Smuzhiyun #define AR_CFG_CLK_GATE_DIS 0x00000400 39*4882a593Smuzhiyun #define AR_CFG_HALT_REQ 0x00000800 40*4882a593Smuzhiyun #define AR_CFG_HALT_ACK 0x00001000 41*4882a593Smuzhiyun #define AR_CFG_PCI_MASTER_REQ_Q_THRESH 0x00060000 42*4882a593Smuzhiyun #define AR_CFG_PCI_MASTER_REQ_Q_THRESH_S 17 43*4882a593Smuzhiyun 44*4882a593Smuzhiyun #define AR_RXBP_THRESH 0x0018 45*4882a593Smuzhiyun #define AR_RXBP_THRESH_HP 0x0000000f 46*4882a593Smuzhiyun #define AR_RXBP_THRESH_HP_S 0 47*4882a593Smuzhiyun #define AR_RXBP_THRESH_LP 0x00003f00 48*4882a593Smuzhiyun #define AR_RXBP_THRESH_LP_S 8 49*4882a593Smuzhiyun 50*4882a593Smuzhiyun #define AR_MIRT 0x0020 51*4882a593Smuzhiyun #define AR_MIRT_VAL 0x0000ffff 52*4882a593Smuzhiyun #define AR_MIRT_VAL_S 16 53*4882a593Smuzhiyun 54*4882a593Smuzhiyun #define AR_IER 0x0024 55*4882a593Smuzhiyun #define AR_IER_ENABLE 0x00000001 56*4882a593Smuzhiyun #define AR_IER_DISABLE 0x00000000 57*4882a593Smuzhiyun 58*4882a593Smuzhiyun #define AR_TIMT 0x0028 59*4882a593Smuzhiyun #define AR_TIMT_LAST 0x0000ffff 60*4882a593Smuzhiyun #define AR_TIMT_LAST_S 0 61*4882a593Smuzhiyun #define AR_TIMT_FIRST 0xffff0000 62*4882a593Smuzhiyun #define AR_TIMT_FIRST_S 16 63*4882a593Smuzhiyun 64*4882a593Smuzhiyun #define AR_RIMT 0x002C 65*4882a593Smuzhiyun #define AR_RIMT_LAST 0x0000ffff 66*4882a593Smuzhiyun #define AR_RIMT_LAST_S 0 67*4882a593Smuzhiyun #define AR_RIMT_FIRST 0xffff0000 68*4882a593Smuzhiyun #define AR_RIMT_FIRST_S 16 69*4882a593Smuzhiyun 70*4882a593Smuzhiyun #define AR_DMASIZE_4B 0x00000000 71*4882a593Smuzhiyun #define AR_DMASIZE_8B 0x00000001 72*4882a593Smuzhiyun #define AR_DMASIZE_16B 0x00000002 73*4882a593Smuzhiyun #define AR_DMASIZE_32B 0x00000003 74*4882a593Smuzhiyun #define AR_DMASIZE_64B 0x00000004 75*4882a593Smuzhiyun #define AR_DMASIZE_128B 0x00000005 76*4882a593Smuzhiyun #define AR_DMASIZE_256B 0x00000006 77*4882a593Smuzhiyun #define AR_DMASIZE_512B 0x00000007 78*4882a593Smuzhiyun 79*4882a593Smuzhiyun #define AR_TXCFG 0x0030 80*4882a593Smuzhiyun #define AR_TXCFG_DMASZ_MASK 0x00000007 81*4882a593Smuzhiyun #define AR_TXCFG_DMASZ_4B 0 82*4882a593Smuzhiyun #define AR_TXCFG_DMASZ_8B 1 83*4882a593Smuzhiyun #define AR_TXCFG_DMASZ_16B 2 84*4882a593Smuzhiyun #define AR_TXCFG_DMASZ_32B 3 85*4882a593Smuzhiyun #define AR_TXCFG_DMASZ_64B 4 86*4882a593Smuzhiyun #define AR_TXCFG_DMASZ_128B 5 87*4882a593Smuzhiyun #define AR_TXCFG_DMASZ_256B 6 88*4882a593Smuzhiyun #define AR_TXCFG_DMASZ_512B 7 89*4882a593Smuzhiyun #define AR_FTRIG 0x000003F0 90*4882a593Smuzhiyun #define AR_FTRIG_S 4 91*4882a593Smuzhiyun #define AR_FTRIG_IMMED 0x00000000 92*4882a593Smuzhiyun #define AR_FTRIG_64B 0x00000010 93*4882a593Smuzhiyun #define AR_FTRIG_128B 0x00000020 94*4882a593Smuzhiyun #define AR_FTRIG_192B 0x00000030 95*4882a593Smuzhiyun #define AR_FTRIG_256B 0x00000040 96*4882a593Smuzhiyun #define AR_FTRIG_512B 0x00000080 97*4882a593Smuzhiyun #define AR_TXCFG_ADHOC_BEACON_ATIM_TX_POLICY 0x00000800 98*4882a593Smuzhiyun 99*4882a593Smuzhiyun #define AR_RXCFG 0x0034 100*4882a593Smuzhiyun #define AR_RXCFG_CHIRP 0x00000008 101*4882a593Smuzhiyun #define AR_RXCFG_ZLFDMA 0x00000010 102*4882a593Smuzhiyun #define AR_RXCFG_DMASZ_MASK 0x00000007 103*4882a593Smuzhiyun #define AR_RXCFG_DMASZ_4B 0 104*4882a593Smuzhiyun #define AR_RXCFG_DMASZ_8B 1 105*4882a593Smuzhiyun #define AR_RXCFG_DMASZ_16B 2 106*4882a593Smuzhiyun #define AR_RXCFG_DMASZ_32B 3 107*4882a593Smuzhiyun #define AR_RXCFG_DMASZ_64B 4 108*4882a593Smuzhiyun #define AR_RXCFG_DMASZ_128B 5 109*4882a593Smuzhiyun #define AR_RXCFG_DMASZ_256B 6 110*4882a593Smuzhiyun #define AR_RXCFG_DMASZ_512B 7 111*4882a593Smuzhiyun 112*4882a593Smuzhiyun #define AR_TOPS 0x0044 113*4882a593Smuzhiyun #define AR_TOPS_MASK 0x0000FFFF 114*4882a593Smuzhiyun 115*4882a593Smuzhiyun #define AR_RXNPTO 0x0048 116*4882a593Smuzhiyun #define AR_RXNPTO_MASK 0x000003FF 117*4882a593Smuzhiyun 118*4882a593Smuzhiyun #define AR_TXNPTO 0x004C 119*4882a593Smuzhiyun #define AR_TXNPTO_MASK 0x000003FF 120*4882a593Smuzhiyun #define AR_TXNPTO_QCU_MASK 0x000FFC00 121*4882a593Smuzhiyun 122*4882a593Smuzhiyun #define AR_RPGTO 0x0050 123*4882a593Smuzhiyun #define AR_RPGTO_MASK 0x000003FF 124*4882a593Smuzhiyun 125*4882a593Smuzhiyun #define AR_RPCNT 0x0054 126*4882a593Smuzhiyun #define AR_RPCNT_MASK 0x0000001F 127*4882a593Smuzhiyun 128*4882a593Smuzhiyun #define AR_MACMISC 0x0058 129*4882a593Smuzhiyun #define AR_MACMISC_PCI_EXT_FORCE 0x00000010 130*4882a593Smuzhiyun #define AR_MACMISC_DMA_OBS 0x000001E0 131*4882a593Smuzhiyun #define AR_MACMISC_DMA_OBS_S 5 132*4882a593Smuzhiyun #define AR_MACMISC_DMA_OBS_LINE_0 0 133*4882a593Smuzhiyun #define AR_MACMISC_DMA_OBS_LINE_1 1 134*4882a593Smuzhiyun #define AR_MACMISC_DMA_OBS_LINE_2 2 135*4882a593Smuzhiyun #define AR_MACMISC_DMA_OBS_LINE_3 3 136*4882a593Smuzhiyun #define AR_MACMISC_DMA_OBS_LINE_4 4 137*4882a593Smuzhiyun #define AR_MACMISC_DMA_OBS_LINE_5 5 138*4882a593Smuzhiyun #define AR_MACMISC_DMA_OBS_LINE_6 6 139*4882a593Smuzhiyun #define AR_MACMISC_DMA_OBS_LINE_7 7 140*4882a593Smuzhiyun #define AR_MACMISC_DMA_OBS_LINE_8 8 141*4882a593Smuzhiyun #define AR_MACMISC_MISC_OBS 0x00000E00 142*4882a593Smuzhiyun #define AR_MACMISC_MISC_OBS_S 9 143*4882a593Smuzhiyun #define AR_MACMISC_MISC_OBS_BUS_LSB 0x00007000 144*4882a593Smuzhiyun #define AR_MACMISC_MISC_OBS_BUS_LSB_S 12 145*4882a593Smuzhiyun #define AR_MACMISC_MISC_OBS_BUS_MSB 0x00038000 146*4882a593Smuzhiyun #define AR_MACMISC_MISC_OBS_BUS_MSB_S 15 147*4882a593Smuzhiyun #define AR_MACMISC_MISC_OBS_BUS_1 1 148*4882a593Smuzhiyun 149*4882a593Smuzhiyun #define AR_INTCFG 0x005C 150*4882a593Smuzhiyun #define AR_INTCFG_MSI_RXOK 0x00000000 151*4882a593Smuzhiyun #define AR_INTCFG_MSI_RXINTM 0x00000004 152*4882a593Smuzhiyun #define AR_INTCFG_MSI_RXMINTR 0x00000006 153*4882a593Smuzhiyun #define AR_INTCFG_MSI_TXOK 0x00000000 154*4882a593Smuzhiyun #define AR_INTCFG_MSI_TXINTM 0x00000010 155*4882a593Smuzhiyun #define AR_INTCFG_MSI_TXMINTR 0x00000018 156*4882a593Smuzhiyun 157*4882a593Smuzhiyun #define AR_DATABUF_SIZE 0x0060 158*4882a593Smuzhiyun #define AR_DATABUF_SIZE_MASK 0x00000FFF 159*4882a593Smuzhiyun 160*4882a593Smuzhiyun #define AR_GTXTO 0x0064 161*4882a593Smuzhiyun #define AR_GTXTO_TIMEOUT_COUNTER 0x0000FFFF 162*4882a593Smuzhiyun #define AR_GTXTO_TIMEOUT_LIMIT 0xFFFF0000 163*4882a593Smuzhiyun #define AR_GTXTO_TIMEOUT_LIMIT_S 16 164*4882a593Smuzhiyun 165*4882a593Smuzhiyun #define AR_GTTM 0x0068 166*4882a593Smuzhiyun #define AR_GTTM_USEC 0x00000001 167*4882a593Smuzhiyun #define AR_GTTM_IGNORE_IDLE 0x00000002 168*4882a593Smuzhiyun #define AR_GTTM_RESET_IDLE 0x00000004 169*4882a593Smuzhiyun #define AR_GTTM_CST_USEC 0x00000008 170*4882a593Smuzhiyun 171*4882a593Smuzhiyun #define AR_CST 0x006C 172*4882a593Smuzhiyun #define AR_CST_TIMEOUT_COUNTER 0x0000FFFF 173*4882a593Smuzhiyun #define AR_CST_TIMEOUT_LIMIT 0xFFFF0000 174*4882a593Smuzhiyun #define AR_CST_TIMEOUT_LIMIT_S 16 175*4882a593Smuzhiyun 176*4882a593Smuzhiyun #define AR_HP_RXDP 0x0074 177*4882a593Smuzhiyun #define AR_LP_RXDP 0x0078 178*4882a593Smuzhiyun 179*4882a593Smuzhiyun #define AR_ISR 0x0080 180*4882a593Smuzhiyun #define AR_ISR_RXOK 0x00000001 181*4882a593Smuzhiyun #define AR_ISR_RXDESC 0x00000002 182*4882a593Smuzhiyun #define AR_ISR_HP_RXOK 0x00000001 183*4882a593Smuzhiyun #define AR_ISR_LP_RXOK 0x00000002 184*4882a593Smuzhiyun #define AR_ISR_RXERR 0x00000004 185*4882a593Smuzhiyun #define AR_ISR_RXNOPKT 0x00000008 186*4882a593Smuzhiyun #define AR_ISR_RXEOL 0x00000010 187*4882a593Smuzhiyun #define AR_ISR_RXORN 0x00000020 188*4882a593Smuzhiyun #define AR_ISR_TXOK 0x00000040 189*4882a593Smuzhiyun #define AR_ISR_TXDESC 0x00000080 190*4882a593Smuzhiyun #define AR_ISR_TXERR 0x00000100 191*4882a593Smuzhiyun #define AR_ISR_TXNOPKT 0x00000200 192*4882a593Smuzhiyun #define AR_ISR_TXEOL 0x00000400 193*4882a593Smuzhiyun #define AR_ISR_TXURN 0x00000800 194*4882a593Smuzhiyun #define AR_ISR_MIB 0x00001000 195*4882a593Smuzhiyun #define AR_ISR_SWI 0x00002000 196*4882a593Smuzhiyun #define AR_ISR_RXPHY 0x00004000 197*4882a593Smuzhiyun #define AR_ISR_RXKCM 0x00008000 198*4882a593Smuzhiyun #define AR_ISR_SWBA 0x00010000 199*4882a593Smuzhiyun #define AR_ISR_BRSSI 0x00020000 200*4882a593Smuzhiyun #define AR_ISR_BMISS 0x00040000 201*4882a593Smuzhiyun #define AR_ISR_BNR 0x00100000 202*4882a593Smuzhiyun #define AR_ISR_RXCHIRP 0x00200000 203*4882a593Smuzhiyun #define AR_ISR_BCNMISC 0x00800000 204*4882a593Smuzhiyun #define AR_ISR_TIM 0x00800000 205*4882a593Smuzhiyun #define AR_ISR_QCBROVF 0x02000000 206*4882a593Smuzhiyun #define AR_ISR_QCBRURN 0x04000000 207*4882a593Smuzhiyun #define AR_ISR_QTRIG 0x08000000 208*4882a593Smuzhiyun #define AR_ISR_GENTMR 0x10000000 209*4882a593Smuzhiyun 210*4882a593Smuzhiyun #define AR_ISR_TXMINTR 0x00080000 211*4882a593Smuzhiyun #define AR_ISR_RXMINTR 0x01000000 212*4882a593Smuzhiyun #define AR_ISR_TXINTM 0x40000000 213*4882a593Smuzhiyun #define AR_ISR_RXINTM 0x80000000 214*4882a593Smuzhiyun 215*4882a593Smuzhiyun #define AR_ISR_S0 0x0084 216*4882a593Smuzhiyun #define AR_ISR_S0_QCU_TXOK 0x000003FF 217*4882a593Smuzhiyun #define AR_ISR_S0_QCU_TXOK_S 0 218*4882a593Smuzhiyun #define AR_ISR_S0_QCU_TXDESC 0x03FF0000 219*4882a593Smuzhiyun #define AR_ISR_S0_QCU_TXDESC_S 16 220*4882a593Smuzhiyun 221*4882a593Smuzhiyun #define AR_ISR_S1 0x0088 222*4882a593Smuzhiyun #define AR_ISR_S1_QCU_TXERR 0x000003FF 223*4882a593Smuzhiyun #define AR_ISR_S1_QCU_TXERR_S 0 224*4882a593Smuzhiyun #define AR_ISR_S1_QCU_TXEOL 0x03FF0000 225*4882a593Smuzhiyun #define AR_ISR_S1_QCU_TXEOL_S 16 226*4882a593Smuzhiyun 227*4882a593Smuzhiyun #define AR_ISR_S2 0x008c 228*4882a593Smuzhiyun #define AR_ISR_S2_QCU_TXURN 0x000003FF 229*4882a593Smuzhiyun #define AR_ISR_S2_BB_WATCHDOG 0x00010000 230*4882a593Smuzhiyun #define AR_ISR_S2_CST 0x00400000 231*4882a593Smuzhiyun #define AR_ISR_S2_GTT 0x00800000 232*4882a593Smuzhiyun #define AR_ISR_S2_TIM 0x01000000 233*4882a593Smuzhiyun #define AR_ISR_S2_CABEND 0x02000000 234*4882a593Smuzhiyun #define AR_ISR_S2_DTIMSYNC 0x04000000 235*4882a593Smuzhiyun #define AR_ISR_S2_BCNTO 0x08000000 236*4882a593Smuzhiyun #define AR_ISR_S2_CABTO 0x10000000 237*4882a593Smuzhiyun #define AR_ISR_S2_DTIM 0x20000000 238*4882a593Smuzhiyun #define AR_ISR_S2_TSFOOR 0x40000000 239*4882a593Smuzhiyun #define AR_ISR_S2_TBTT_TIME 0x80000000 240*4882a593Smuzhiyun 241*4882a593Smuzhiyun #define AR_ISR_S3 0x0090 242*4882a593Smuzhiyun #define AR_ISR_S3_QCU_QCBROVF 0x000003FF 243*4882a593Smuzhiyun #define AR_ISR_S3_QCU_QCBRURN 0x03FF0000 244*4882a593Smuzhiyun 245*4882a593Smuzhiyun #define AR_ISR_S4 0x0094 246*4882a593Smuzhiyun #define AR_ISR_S4_QCU_QTRIG 0x000003FF 247*4882a593Smuzhiyun #define AR_ISR_S4_RESV0 0xFFFFFC00 248*4882a593Smuzhiyun 249*4882a593Smuzhiyun #define AR_ISR_S5 0x0098 250*4882a593Smuzhiyun #define AR_ISR_S5_TIMER_TRIG 0x000000FF 251*4882a593Smuzhiyun #define AR_ISR_S5_TIMER_THRESH 0x0007FE00 252*4882a593Smuzhiyun #define AR_ISR_S5_TIM_TIMER 0x00000010 253*4882a593Smuzhiyun #define AR_ISR_S5_DTIM_TIMER 0x00000020 254*4882a593Smuzhiyun #define AR_IMR_S5 0x00b8 255*4882a593Smuzhiyun #define AR_IMR_S5_TIM_TIMER 0x00000010 256*4882a593Smuzhiyun #define AR_IMR_S5_DTIM_TIMER 0x00000020 257*4882a593Smuzhiyun #define AR_ISR_S5_GENTIMER_TRIG 0x0000FF80 258*4882a593Smuzhiyun #define AR_ISR_S5_GENTIMER_TRIG_S 0 259*4882a593Smuzhiyun #define AR_ISR_S5_GENTIMER_THRESH 0xFF800000 260*4882a593Smuzhiyun #define AR_ISR_S5_GENTIMER_THRESH_S 16 261*4882a593Smuzhiyun #define AR_IMR_S5_GENTIMER_TRIG 0x0000FF80 262*4882a593Smuzhiyun #define AR_IMR_S5_GENTIMER_TRIG_S 0 263*4882a593Smuzhiyun #define AR_IMR_S5_GENTIMER_THRESH 0xFF800000 264*4882a593Smuzhiyun #define AR_IMR_S5_GENTIMER_THRESH_S 16 265*4882a593Smuzhiyun 266*4882a593Smuzhiyun #define AR_IMR 0x00a0 267*4882a593Smuzhiyun #define AR_IMR_RXOK 0x00000001 268*4882a593Smuzhiyun #define AR_IMR_RXDESC 0x00000002 269*4882a593Smuzhiyun #define AR_IMR_RXOK_HP 0x00000001 270*4882a593Smuzhiyun #define AR_IMR_RXOK_LP 0x00000002 271*4882a593Smuzhiyun #define AR_IMR_RXERR 0x00000004 272*4882a593Smuzhiyun #define AR_IMR_RXNOPKT 0x00000008 273*4882a593Smuzhiyun #define AR_IMR_RXEOL 0x00000010 274*4882a593Smuzhiyun #define AR_IMR_RXORN 0x00000020 275*4882a593Smuzhiyun #define AR_IMR_TXOK 0x00000040 276*4882a593Smuzhiyun #define AR_IMR_TXDESC 0x00000080 277*4882a593Smuzhiyun #define AR_IMR_TXERR 0x00000100 278*4882a593Smuzhiyun #define AR_IMR_TXNOPKT 0x00000200 279*4882a593Smuzhiyun #define AR_IMR_TXEOL 0x00000400 280*4882a593Smuzhiyun #define AR_IMR_TXURN 0x00000800 281*4882a593Smuzhiyun #define AR_IMR_MIB 0x00001000 282*4882a593Smuzhiyun #define AR_IMR_SWI 0x00002000 283*4882a593Smuzhiyun #define AR_IMR_RXPHY 0x00004000 284*4882a593Smuzhiyun #define AR_IMR_RXKCM 0x00008000 285*4882a593Smuzhiyun #define AR_IMR_SWBA 0x00010000 286*4882a593Smuzhiyun #define AR_IMR_BRSSI 0x00020000 287*4882a593Smuzhiyun #define AR_IMR_BMISS 0x00040000 288*4882a593Smuzhiyun #define AR_IMR_BNR 0x00100000 289*4882a593Smuzhiyun #define AR_IMR_RXCHIRP 0x00200000 290*4882a593Smuzhiyun #define AR_IMR_BCNMISC 0x00800000 291*4882a593Smuzhiyun #define AR_IMR_TIM 0x00800000 292*4882a593Smuzhiyun #define AR_IMR_QCBROVF 0x02000000 293*4882a593Smuzhiyun #define AR_IMR_QCBRURN 0x04000000 294*4882a593Smuzhiyun #define AR_IMR_QTRIG 0x08000000 295*4882a593Smuzhiyun #define AR_IMR_GENTMR 0x10000000 296*4882a593Smuzhiyun 297*4882a593Smuzhiyun #define AR_IMR_TXMINTR 0x00080000 298*4882a593Smuzhiyun #define AR_IMR_RXMINTR 0x01000000 299*4882a593Smuzhiyun #define AR_IMR_TXINTM 0x40000000 300*4882a593Smuzhiyun #define AR_IMR_RXINTM 0x80000000 301*4882a593Smuzhiyun 302*4882a593Smuzhiyun #define AR_IMR_S0 0x00a4 303*4882a593Smuzhiyun #define AR_IMR_S0_QCU_TXOK 0x000003FF 304*4882a593Smuzhiyun #define AR_IMR_S0_QCU_TXOK_S 0 305*4882a593Smuzhiyun #define AR_IMR_S0_QCU_TXDESC 0x03FF0000 306*4882a593Smuzhiyun #define AR_IMR_S0_QCU_TXDESC_S 16 307*4882a593Smuzhiyun 308*4882a593Smuzhiyun #define AR_IMR_S1 0x00a8 309*4882a593Smuzhiyun #define AR_IMR_S1_QCU_TXERR 0x000003FF 310*4882a593Smuzhiyun #define AR_IMR_S1_QCU_TXERR_S 0 311*4882a593Smuzhiyun #define AR_IMR_S1_QCU_TXEOL 0x03FF0000 312*4882a593Smuzhiyun #define AR_IMR_S1_QCU_TXEOL_S 16 313*4882a593Smuzhiyun 314*4882a593Smuzhiyun #define AR_IMR_S2 0x00ac 315*4882a593Smuzhiyun #define AR_IMR_S2_QCU_TXURN 0x000003FF 316*4882a593Smuzhiyun #define AR_IMR_S2_QCU_TXURN_S 0 317*4882a593Smuzhiyun #define AR_IMR_S2_BB_WATCHDOG 0x00010000 318*4882a593Smuzhiyun #define AR_IMR_S2_CST 0x00400000 319*4882a593Smuzhiyun #define AR_IMR_S2_GTT 0x00800000 320*4882a593Smuzhiyun #define AR_IMR_S2_TIM 0x01000000 321*4882a593Smuzhiyun #define AR_IMR_S2_CABEND 0x02000000 322*4882a593Smuzhiyun #define AR_IMR_S2_DTIMSYNC 0x04000000 323*4882a593Smuzhiyun #define AR_IMR_S2_BCNTO 0x08000000 324*4882a593Smuzhiyun #define AR_IMR_S2_CABTO 0x10000000 325*4882a593Smuzhiyun #define AR_IMR_S2_DTIM 0x20000000 326*4882a593Smuzhiyun #define AR_IMR_S2_TSFOOR 0x40000000 327*4882a593Smuzhiyun 328*4882a593Smuzhiyun #define AR_IMR_S3 0x00b0 329*4882a593Smuzhiyun #define AR_IMR_S3_QCU_QCBROVF 0x000003FF 330*4882a593Smuzhiyun #define AR_IMR_S3_QCU_QCBRURN 0x03FF0000 331*4882a593Smuzhiyun #define AR_IMR_S3_QCU_QCBRURN_S 16 332*4882a593Smuzhiyun 333*4882a593Smuzhiyun #define AR_IMR_S4 0x00b4 334*4882a593Smuzhiyun #define AR_IMR_S4_QCU_QTRIG 0x000003FF 335*4882a593Smuzhiyun #define AR_IMR_S4_RESV0 0xFFFFFC00 336*4882a593Smuzhiyun 337*4882a593Smuzhiyun #define AR_IMR_S5 0x00b8 338*4882a593Smuzhiyun #define AR_IMR_S5_TIMER_TRIG 0x000000FF 339*4882a593Smuzhiyun #define AR_IMR_S5_TIMER_THRESH 0x0000FF00 340*4882a593Smuzhiyun 341*4882a593Smuzhiyun 342*4882a593Smuzhiyun #define AR_ISR_RAC 0x00c0 343*4882a593Smuzhiyun #define AR_ISR_S0_S 0x00c4 344*4882a593Smuzhiyun #define AR_ISR_S0_QCU_TXOK 0x000003FF 345*4882a593Smuzhiyun #define AR_ISR_S0_QCU_TXOK_S 0 346*4882a593Smuzhiyun #define AR_ISR_S0_QCU_TXDESC 0x03FF0000 347*4882a593Smuzhiyun #define AR_ISR_S0_QCU_TXDESC_S 16 348*4882a593Smuzhiyun 349*4882a593Smuzhiyun #define AR_ISR_S1_S 0x00c8 350*4882a593Smuzhiyun #define AR_ISR_S1_QCU_TXERR 0x000003FF 351*4882a593Smuzhiyun #define AR_ISR_S1_QCU_TXERR_S 0 352*4882a593Smuzhiyun #define AR_ISR_S1_QCU_TXEOL 0x03FF0000 353*4882a593Smuzhiyun #define AR_ISR_S1_QCU_TXEOL_S 16 354*4882a593Smuzhiyun 355*4882a593Smuzhiyun #define AR_ISR_S2_S (AR_SREV_9300_20_OR_LATER(ah) ? 0x00d0 : 0x00cc) 356*4882a593Smuzhiyun #define AR_ISR_S3_S (AR_SREV_9300_20_OR_LATER(ah) ? 0x00d4 : 0x00d0) 357*4882a593Smuzhiyun #define AR_ISR_S4_S (AR_SREV_9300_20_OR_LATER(ah) ? 0x00d8 : 0x00d4) 358*4882a593Smuzhiyun #define AR_ISR_S5_S (AR_SREV_9300_20_OR_LATER(ah) ? 0x00dc : 0x00d8) 359*4882a593Smuzhiyun #define AR_DMADBG_0 0x00e0 360*4882a593Smuzhiyun #define AR_DMADBG_1 0x00e4 361*4882a593Smuzhiyun #define AR_DMADBG_2 0x00e8 362*4882a593Smuzhiyun #define AR_DMADBG_3 0x00ec 363*4882a593Smuzhiyun #define AR_DMADBG_4 0x00f0 364*4882a593Smuzhiyun #define AR_DMADBG_5 0x00f4 365*4882a593Smuzhiyun #define AR_DMADBG_6 0x00f8 366*4882a593Smuzhiyun #define AR_DMADBG_7 0x00fc 367*4882a593Smuzhiyun 368*4882a593Smuzhiyun #define AR_NUM_QCU 10 369*4882a593Smuzhiyun #define AR_QCU_0 0x0001 370*4882a593Smuzhiyun #define AR_QCU_1 0x0002 371*4882a593Smuzhiyun #define AR_QCU_2 0x0004 372*4882a593Smuzhiyun #define AR_QCU_3 0x0008 373*4882a593Smuzhiyun #define AR_QCU_4 0x0010 374*4882a593Smuzhiyun #define AR_QCU_5 0x0020 375*4882a593Smuzhiyun #define AR_QCU_6 0x0040 376*4882a593Smuzhiyun #define AR_QCU_7 0x0080 377*4882a593Smuzhiyun #define AR_QCU_8 0x0100 378*4882a593Smuzhiyun #define AR_QCU_9 0x0200 379*4882a593Smuzhiyun 380*4882a593Smuzhiyun #define AR_Q0_TXDP 0x0800 381*4882a593Smuzhiyun #define AR_Q1_TXDP 0x0804 382*4882a593Smuzhiyun #define AR_Q2_TXDP 0x0808 383*4882a593Smuzhiyun #define AR_Q3_TXDP 0x080c 384*4882a593Smuzhiyun #define AR_Q4_TXDP 0x0810 385*4882a593Smuzhiyun #define AR_Q5_TXDP 0x0814 386*4882a593Smuzhiyun #define AR_Q6_TXDP 0x0818 387*4882a593Smuzhiyun #define AR_Q7_TXDP 0x081c 388*4882a593Smuzhiyun #define AR_Q8_TXDP 0x0820 389*4882a593Smuzhiyun #define AR_Q9_TXDP 0x0824 390*4882a593Smuzhiyun #define AR_QTXDP(_i) (AR_Q0_TXDP + ((_i)<<2)) 391*4882a593Smuzhiyun 392*4882a593Smuzhiyun #define AR_Q_STATUS_RING_START 0x830 393*4882a593Smuzhiyun #define AR_Q_STATUS_RING_END 0x834 394*4882a593Smuzhiyun 395*4882a593Smuzhiyun #define AR_Q_TXE 0x0840 396*4882a593Smuzhiyun #define AR_Q_TXE_M 0x000003FF 397*4882a593Smuzhiyun 398*4882a593Smuzhiyun #define AR_Q_TXD 0x0880 399*4882a593Smuzhiyun #define AR_Q_TXD_M 0x000003FF 400*4882a593Smuzhiyun 401*4882a593Smuzhiyun #define AR_Q0_CBRCFG 0x08c0 402*4882a593Smuzhiyun #define AR_Q1_CBRCFG 0x08c4 403*4882a593Smuzhiyun #define AR_Q2_CBRCFG 0x08c8 404*4882a593Smuzhiyun #define AR_Q3_CBRCFG 0x08cc 405*4882a593Smuzhiyun #define AR_Q4_CBRCFG 0x08d0 406*4882a593Smuzhiyun #define AR_Q5_CBRCFG 0x08d4 407*4882a593Smuzhiyun #define AR_Q6_CBRCFG 0x08d8 408*4882a593Smuzhiyun #define AR_Q7_CBRCFG 0x08dc 409*4882a593Smuzhiyun #define AR_Q8_CBRCFG 0x08e0 410*4882a593Smuzhiyun #define AR_Q9_CBRCFG 0x08e4 411*4882a593Smuzhiyun #define AR_QCBRCFG(_i) (AR_Q0_CBRCFG + ((_i)<<2)) 412*4882a593Smuzhiyun #define AR_Q_CBRCFG_INTERVAL 0x00FFFFFF 413*4882a593Smuzhiyun #define AR_Q_CBRCFG_INTERVAL_S 0 414*4882a593Smuzhiyun #define AR_Q_CBRCFG_OVF_THRESH 0xFF000000 415*4882a593Smuzhiyun #define AR_Q_CBRCFG_OVF_THRESH_S 24 416*4882a593Smuzhiyun 417*4882a593Smuzhiyun #define AR_Q0_RDYTIMECFG 0x0900 418*4882a593Smuzhiyun #define AR_Q1_RDYTIMECFG 0x0904 419*4882a593Smuzhiyun #define AR_Q2_RDYTIMECFG 0x0908 420*4882a593Smuzhiyun #define AR_Q3_RDYTIMECFG 0x090c 421*4882a593Smuzhiyun #define AR_Q4_RDYTIMECFG 0x0910 422*4882a593Smuzhiyun #define AR_Q5_RDYTIMECFG 0x0914 423*4882a593Smuzhiyun #define AR_Q6_RDYTIMECFG 0x0918 424*4882a593Smuzhiyun #define AR_Q7_RDYTIMECFG 0x091c 425*4882a593Smuzhiyun #define AR_Q8_RDYTIMECFG 0x0920 426*4882a593Smuzhiyun #define AR_Q9_RDYTIMECFG 0x0924 427*4882a593Smuzhiyun #define AR_QRDYTIMECFG(_i) (AR_Q0_RDYTIMECFG + ((_i)<<2)) 428*4882a593Smuzhiyun #define AR_Q_RDYTIMECFG_DURATION 0x00FFFFFF 429*4882a593Smuzhiyun #define AR_Q_RDYTIMECFG_DURATION_S 0 430*4882a593Smuzhiyun #define AR_Q_RDYTIMECFG_EN 0x01000000 431*4882a593Smuzhiyun 432*4882a593Smuzhiyun #define AR_Q_ONESHOTARM_SC 0x0940 433*4882a593Smuzhiyun #define AR_Q_ONESHOTARM_SC_M 0x000003FF 434*4882a593Smuzhiyun #define AR_Q_ONESHOTARM_SC_RESV0 0xFFFFFC00 435*4882a593Smuzhiyun 436*4882a593Smuzhiyun #define AR_Q_ONESHOTARM_CC 0x0980 437*4882a593Smuzhiyun #define AR_Q_ONESHOTARM_CC_M 0x000003FF 438*4882a593Smuzhiyun #define AR_Q_ONESHOTARM_CC_RESV0 0xFFFFFC00 439*4882a593Smuzhiyun 440*4882a593Smuzhiyun #define AR_Q0_MISC 0x09c0 441*4882a593Smuzhiyun #define AR_Q1_MISC 0x09c4 442*4882a593Smuzhiyun #define AR_Q2_MISC 0x09c8 443*4882a593Smuzhiyun #define AR_Q3_MISC 0x09cc 444*4882a593Smuzhiyun #define AR_Q4_MISC 0x09d0 445*4882a593Smuzhiyun #define AR_Q5_MISC 0x09d4 446*4882a593Smuzhiyun #define AR_Q6_MISC 0x09d8 447*4882a593Smuzhiyun #define AR_Q7_MISC 0x09dc 448*4882a593Smuzhiyun #define AR_Q8_MISC 0x09e0 449*4882a593Smuzhiyun #define AR_Q9_MISC 0x09e4 450*4882a593Smuzhiyun #define AR_QMISC(_i) (AR_Q0_MISC + ((_i)<<2)) 451*4882a593Smuzhiyun #define AR_Q_MISC_FSP 0x0000000F 452*4882a593Smuzhiyun #define AR_Q_MISC_FSP_ASAP 0 453*4882a593Smuzhiyun #define AR_Q_MISC_FSP_CBR 1 454*4882a593Smuzhiyun #define AR_Q_MISC_FSP_DBA_GATED 2 455*4882a593Smuzhiyun #define AR_Q_MISC_FSP_TIM_GATED 3 456*4882a593Smuzhiyun #define AR_Q_MISC_FSP_BEACON_SENT_GATED 4 457*4882a593Smuzhiyun #define AR_Q_MISC_FSP_BEACON_RCVD_GATED 5 458*4882a593Smuzhiyun #define AR_Q_MISC_ONE_SHOT_EN 0x00000010 459*4882a593Smuzhiyun #define AR_Q_MISC_CBR_INCR_DIS1 0x00000020 460*4882a593Smuzhiyun #define AR_Q_MISC_CBR_INCR_DIS0 0x00000040 461*4882a593Smuzhiyun #define AR_Q_MISC_BEACON_USE 0x00000080 462*4882a593Smuzhiyun #define AR_Q_MISC_CBR_EXP_CNTR_LIMIT_EN 0x00000100 463*4882a593Smuzhiyun #define AR_Q_MISC_RDYTIME_EXP_POLICY 0x00000200 464*4882a593Smuzhiyun #define AR_Q_MISC_RESET_CBR_EXP_CTR 0x00000400 465*4882a593Smuzhiyun #define AR_Q_MISC_DCU_EARLY_TERM_REQ 0x00000800 466*4882a593Smuzhiyun #define AR_Q_MISC_RESV0 0xFFFFF000 467*4882a593Smuzhiyun 468*4882a593Smuzhiyun #define AR_Q0_STS 0x0a00 469*4882a593Smuzhiyun #define AR_Q1_STS 0x0a04 470*4882a593Smuzhiyun #define AR_Q2_STS 0x0a08 471*4882a593Smuzhiyun #define AR_Q3_STS 0x0a0c 472*4882a593Smuzhiyun #define AR_Q4_STS 0x0a10 473*4882a593Smuzhiyun #define AR_Q5_STS 0x0a14 474*4882a593Smuzhiyun #define AR_Q6_STS 0x0a18 475*4882a593Smuzhiyun #define AR_Q7_STS 0x0a1c 476*4882a593Smuzhiyun #define AR_Q8_STS 0x0a20 477*4882a593Smuzhiyun #define AR_Q9_STS 0x0a24 478*4882a593Smuzhiyun #define AR_QSTS(_i) (AR_Q0_STS + ((_i)<<2)) 479*4882a593Smuzhiyun #define AR_Q_STS_PEND_FR_CNT 0x00000003 480*4882a593Smuzhiyun #define AR_Q_STS_RESV0 0x000000FC 481*4882a593Smuzhiyun #define AR_Q_STS_CBR_EXP_CNT 0x0000FF00 482*4882a593Smuzhiyun #define AR_Q_STS_RESV1 0xFFFF0000 483*4882a593Smuzhiyun 484*4882a593Smuzhiyun #define AR_Q_RDYTIMESHDN 0x0a40 485*4882a593Smuzhiyun #define AR_Q_RDYTIMESHDN_M 0x000003FF 486*4882a593Smuzhiyun 487*4882a593Smuzhiyun /* MAC Descriptor CRC check */ 488*4882a593Smuzhiyun #define AR_Q_DESC_CRCCHK 0xa44 489*4882a593Smuzhiyun /* Enable CRC check on the descriptor fetched from host */ 490*4882a593Smuzhiyun #define AR_Q_DESC_CRCCHK_EN 1 491*4882a593Smuzhiyun 492*4882a593Smuzhiyun #define AR_NUM_DCU 10 493*4882a593Smuzhiyun #define AR_DCU_0 0x0001 494*4882a593Smuzhiyun #define AR_DCU_1 0x0002 495*4882a593Smuzhiyun #define AR_DCU_2 0x0004 496*4882a593Smuzhiyun #define AR_DCU_3 0x0008 497*4882a593Smuzhiyun #define AR_DCU_4 0x0010 498*4882a593Smuzhiyun #define AR_DCU_5 0x0020 499*4882a593Smuzhiyun #define AR_DCU_6 0x0040 500*4882a593Smuzhiyun #define AR_DCU_7 0x0080 501*4882a593Smuzhiyun #define AR_DCU_8 0x0100 502*4882a593Smuzhiyun #define AR_DCU_9 0x0200 503*4882a593Smuzhiyun 504*4882a593Smuzhiyun #define AR_D0_QCUMASK 0x1000 505*4882a593Smuzhiyun #define AR_D1_QCUMASK 0x1004 506*4882a593Smuzhiyun #define AR_D2_QCUMASK 0x1008 507*4882a593Smuzhiyun #define AR_D3_QCUMASK 0x100c 508*4882a593Smuzhiyun #define AR_D4_QCUMASK 0x1010 509*4882a593Smuzhiyun #define AR_D5_QCUMASK 0x1014 510*4882a593Smuzhiyun #define AR_D6_QCUMASK 0x1018 511*4882a593Smuzhiyun #define AR_D7_QCUMASK 0x101c 512*4882a593Smuzhiyun #define AR_D8_QCUMASK 0x1020 513*4882a593Smuzhiyun #define AR_D9_QCUMASK 0x1024 514*4882a593Smuzhiyun #define AR_DQCUMASK(_i) (AR_D0_QCUMASK + ((_i)<<2)) 515*4882a593Smuzhiyun #define AR_D_QCUMASK 0x000003FF 516*4882a593Smuzhiyun #define AR_D_QCUMASK_RESV0 0xFFFFFC00 517*4882a593Smuzhiyun 518*4882a593Smuzhiyun #define AR_D0_LCL_IFS 0x1040 519*4882a593Smuzhiyun #define AR_D1_LCL_IFS 0x1044 520*4882a593Smuzhiyun #define AR_D2_LCL_IFS 0x1048 521*4882a593Smuzhiyun #define AR_D3_LCL_IFS 0x104c 522*4882a593Smuzhiyun #define AR_D4_LCL_IFS 0x1050 523*4882a593Smuzhiyun #define AR_D5_LCL_IFS 0x1054 524*4882a593Smuzhiyun #define AR_D6_LCL_IFS 0x1058 525*4882a593Smuzhiyun #define AR_D7_LCL_IFS 0x105c 526*4882a593Smuzhiyun #define AR_D8_LCL_IFS 0x1060 527*4882a593Smuzhiyun #define AR_D9_LCL_IFS 0x1064 528*4882a593Smuzhiyun #define AR_DLCL_IFS(_i) (AR_D0_LCL_IFS + ((_i)<<2)) 529*4882a593Smuzhiyun #define AR_D_LCL_IFS_CWMIN 0x000003FF 530*4882a593Smuzhiyun #define AR_D_LCL_IFS_CWMIN_S 0 531*4882a593Smuzhiyun #define AR_D_LCL_IFS_CWMAX 0x000FFC00 532*4882a593Smuzhiyun #define AR_D_LCL_IFS_CWMAX_S 10 533*4882a593Smuzhiyun #define AR_D_LCL_IFS_AIFS 0x0FF00000 534*4882a593Smuzhiyun #define AR_D_LCL_IFS_AIFS_S 20 535*4882a593Smuzhiyun 536*4882a593Smuzhiyun #define AR_D_LCL_IFS_RESV0 0xF0000000 537*4882a593Smuzhiyun 538*4882a593Smuzhiyun #define AR_D0_RETRY_LIMIT 0x1080 539*4882a593Smuzhiyun #define AR_D1_RETRY_LIMIT 0x1084 540*4882a593Smuzhiyun #define AR_D2_RETRY_LIMIT 0x1088 541*4882a593Smuzhiyun #define AR_D3_RETRY_LIMIT 0x108c 542*4882a593Smuzhiyun #define AR_D4_RETRY_LIMIT 0x1090 543*4882a593Smuzhiyun #define AR_D5_RETRY_LIMIT 0x1094 544*4882a593Smuzhiyun #define AR_D6_RETRY_LIMIT 0x1098 545*4882a593Smuzhiyun #define AR_D7_RETRY_LIMIT 0x109c 546*4882a593Smuzhiyun #define AR_D8_RETRY_LIMIT 0x10a0 547*4882a593Smuzhiyun #define AR_D9_RETRY_LIMIT 0x10a4 548*4882a593Smuzhiyun #define AR_DRETRY_LIMIT(_i) (AR_D0_RETRY_LIMIT + ((_i)<<2)) 549*4882a593Smuzhiyun #define AR_D_RETRY_LIMIT_FR_SH 0x0000000F 550*4882a593Smuzhiyun #define AR_D_RETRY_LIMIT_FR_SH_S 0 551*4882a593Smuzhiyun #define AR_D_RETRY_LIMIT_STA_SH 0x00003F00 552*4882a593Smuzhiyun #define AR_D_RETRY_LIMIT_STA_SH_S 8 553*4882a593Smuzhiyun #define AR_D_RETRY_LIMIT_STA_LG 0x000FC000 554*4882a593Smuzhiyun #define AR_D_RETRY_LIMIT_STA_LG_S 14 555*4882a593Smuzhiyun #define AR_D_RETRY_LIMIT_RESV0 0xFFF00000 556*4882a593Smuzhiyun 557*4882a593Smuzhiyun #define AR_D0_CHNTIME 0x10c0 558*4882a593Smuzhiyun #define AR_D1_CHNTIME 0x10c4 559*4882a593Smuzhiyun #define AR_D2_CHNTIME 0x10c8 560*4882a593Smuzhiyun #define AR_D3_CHNTIME 0x10cc 561*4882a593Smuzhiyun #define AR_D4_CHNTIME 0x10d0 562*4882a593Smuzhiyun #define AR_D5_CHNTIME 0x10d4 563*4882a593Smuzhiyun #define AR_D6_CHNTIME 0x10d8 564*4882a593Smuzhiyun #define AR_D7_CHNTIME 0x10dc 565*4882a593Smuzhiyun #define AR_D8_CHNTIME 0x10e0 566*4882a593Smuzhiyun #define AR_D9_CHNTIME 0x10e4 567*4882a593Smuzhiyun #define AR_DCHNTIME(_i) (AR_D0_CHNTIME + ((_i)<<2)) 568*4882a593Smuzhiyun #define AR_D_CHNTIME_DUR 0x000FFFFF 569*4882a593Smuzhiyun #define AR_D_CHNTIME_DUR_S 0 570*4882a593Smuzhiyun #define AR_D_CHNTIME_EN 0x00100000 571*4882a593Smuzhiyun #define AR_D_CHNTIME_RESV0 0xFFE00000 572*4882a593Smuzhiyun 573*4882a593Smuzhiyun #define AR_D0_MISC 0x1100 574*4882a593Smuzhiyun #define AR_D1_MISC 0x1104 575*4882a593Smuzhiyun #define AR_D2_MISC 0x1108 576*4882a593Smuzhiyun #define AR_D3_MISC 0x110c 577*4882a593Smuzhiyun #define AR_D4_MISC 0x1110 578*4882a593Smuzhiyun #define AR_D5_MISC 0x1114 579*4882a593Smuzhiyun #define AR_D6_MISC 0x1118 580*4882a593Smuzhiyun #define AR_D7_MISC 0x111c 581*4882a593Smuzhiyun #define AR_D8_MISC 0x1120 582*4882a593Smuzhiyun #define AR_D9_MISC 0x1124 583*4882a593Smuzhiyun #define AR_DMISC(_i) (AR_D0_MISC + ((_i)<<2)) 584*4882a593Smuzhiyun #define AR_D_MISC_BKOFF_THRESH 0x0000003F 585*4882a593Smuzhiyun #define AR_D_MISC_RETRY_CNT_RESET_EN 0x00000040 586*4882a593Smuzhiyun #define AR_D_MISC_CW_RESET_EN 0x00000080 587*4882a593Smuzhiyun #define AR_D_MISC_FRAG_WAIT_EN 0x00000100 588*4882a593Smuzhiyun #define AR_D_MISC_FRAG_BKOFF_EN 0x00000200 589*4882a593Smuzhiyun #define AR_D_MISC_CW_BKOFF_EN 0x00001000 590*4882a593Smuzhiyun #define AR_D_MISC_VIR_COL_HANDLING 0x0000C000 591*4882a593Smuzhiyun #define AR_D_MISC_VIR_COL_HANDLING_S 14 592*4882a593Smuzhiyun #define AR_D_MISC_VIR_COL_HANDLING_DEFAULT 0 593*4882a593Smuzhiyun #define AR_D_MISC_VIR_COL_HANDLING_IGNORE 1 594*4882a593Smuzhiyun #define AR_D_MISC_BEACON_USE 0x00010000 595*4882a593Smuzhiyun #define AR_D_MISC_ARB_LOCKOUT_CNTRL 0x00060000 596*4882a593Smuzhiyun #define AR_D_MISC_ARB_LOCKOUT_CNTRL_S 17 597*4882a593Smuzhiyun #define AR_D_MISC_ARB_LOCKOUT_CNTRL_NONE 0 598*4882a593Smuzhiyun #define AR_D_MISC_ARB_LOCKOUT_CNTRL_INTRA_FR 1 599*4882a593Smuzhiyun #define AR_D_MISC_ARB_LOCKOUT_CNTRL_GLOBAL 2 600*4882a593Smuzhiyun #define AR_D_MISC_ARB_LOCKOUT_IGNORE 0x00080000 601*4882a593Smuzhiyun #define AR_D_MISC_SEQ_NUM_INCR_DIS 0x00100000 602*4882a593Smuzhiyun #define AR_D_MISC_POST_FR_BKOFF_DIS 0x00200000 603*4882a593Smuzhiyun #define AR_D_MISC_VIT_COL_CW_BKOFF_EN 0x00400000 604*4882a593Smuzhiyun #define AR_D_MISC_BLOWN_IFS_RETRY_EN 0x00800000 605*4882a593Smuzhiyun #define AR_D_MISC_RESV0 0xFF000000 606*4882a593Smuzhiyun 607*4882a593Smuzhiyun #define AR_D_SEQNUM 0x1140 608*4882a593Smuzhiyun 609*4882a593Smuzhiyun #define AR_D_GBL_IFS_SIFS 0x1030 610*4882a593Smuzhiyun #define AR_D_GBL_IFS_SIFS_M 0x0000FFFF 611*4882a593Smuzhiyun #define AR_D_GBL_IFS_SIFS_RESV0 0xFFFFFFFF 612*4882a593Smuzhiyun 613*4882a593Smuzhiyun #define AR_D_TXBLK_BASE 0x1038 614*4882a593Smuzhiyun #define AR_D_TXBLK_WRITE_BITMASK 0x0000FFFF 615*4882a593Smuzhiyun #define AR_D_TXBLK_WRITE_BITMASK_S 0 616*4882a593Smuzhiyun #define AR_D_TXBLK_WRITE_SLICE 0x000F0000 617*4882a593Smuzhiyun #define AR_D_TXBLK_WRITE_SLICE_S 16 618*4882a593Smuzhiyun #define AR_D_TXBLK_WRITE_DCU 0x00F00000 619*4882a593Smuzhiyun #define AR_D_TXBLK_WRITE_DCU_S 20 620*4882a593Smuzhiyun #define AR_D_TXBLK_WRITE_COMMAND 0x0F000000 621*4882a593Smuzhiyun #define AR_D_TXBLK_WRITE_COMMAND_S 24 622*4882a593Smuzhiyun 623*4882a593Smuzhiyun #define AR_D_GBL_IFS_SLOT 0x1070 624*4882a593Smuzhiyun #define AR_D_GBL_IFS_SLOT_M 0x0000FFFF 625*4882a593Smuzhiyun #define AR_D_GBL_IFS_SLOT_RESV0 0xFFFF0000 626*4882a593Smuzhiyun 627*4882a593Smuzhiyun #define AR_D_GBL_IFS_EIFS 0x10b0 628*4882a593Smuzhiyun #define AR_D_GBL_IFS_EIFS_M 0x0000FFFF 629*4882a593Smuzhiyun #define AR_D_GBL_IFS_EIFS_RESV0 0xFFFF0000 630*4882a593Smuzhiyun #define AR_D_GBL_IFS_EIFS_ASYNC_FIFO 363 631*4882a593Smuzhiyun 632*4882a593Smuzhiyun #define AR_D_GBL_IFS_MISC 0x10f0 633*4882a593Smuzhiyun #define AR_D_GBL_IFS_MISC_LFSR_SLICE_SEL 0x00000007 634*4882a593Smuzhiyun #define AR_D_GBL_IFS_MISC_TURBO_MODE 0x00000008 635*4882a593Smuzhiyun #define AR_D_GBL_IFS_MISC_USEC_DURATION 0x000FFC00 636*4882a593Smuzhiyun #define AR_D_GBL_IFS_MISC_DCU_ARBITER_DLY 0x00300000 637*4882a593Smuzhiyun #define AR_D_GBL_IFS_MISC_RANDOM_LFSR_SLICE_DIS 0x01000000 638*4882a593Smuzhiyun #define AR_D_GBL_IFS_MISC_SLOT_XMIT_WIND_LEN 0x06000000 639*4882a593Smuzhiyun #define AR_D_GBL_IFS_MISC_FORCE_XMIT_SLOT_BOUND 0x08000000 640*4882a593Smuzhiyun #define AR_D_GBL_IFS_MISC_IGNORE_BACKOFF 0x10000000 641*4882a593Smuzhiyun 642*4882a593Smuzhiyun #define AR_D_FPCTL 0x1230 643*4882a593Smuzhiyun #define AR_D_FPCTL_DCU 0x0000000F 644*4882a593Smuzhiyun #define AR_D_FPCTL_DCU_S 0 645*4882a593Smuzhiyun #define AR_D_FPCTL_PREFETCH_EN 0x00000010 646*4882a593Smuzhiyun #define AR_D_FPCTL_BURST_PREFETCH 0x00007FE0 647*4882a593Smuzhiyun #define AR_D_FPCTL_BURST_PREFETCH_S 5 648*4882a593Smuzhiyun 649*4882a593Smuzhiyun #define AR_D_TXPSE 0x1270 650*4882a593Smuzhiyun #define AR_D_TXPSE_CTRL 0x000003FF 651*4882a593Smuzhiyun #define AR_D_TXPSE_RESV0 0x0000FC00 652*4882a593Smuzhiyun #define AR_D_TXPSE_STATUS 0x00010000 653*4882a593Smuzhiyun #define AR_D_TXPSE_RESV1 0xFFFE0000 654*4882a593Smuzhiyun 655*4882a593Smuzhiyun #define AR_D_TXSLOTMASK 0x12f0 656*4882a593Smuzhiyun #define AR_D_TXSLOTMASK_NUM 0x0000000F 657*4882a593Smuzhiyun 658*4882a593Smuzhiyun #define AR_CFG_LED 0x1f04 659*4882a593Smuzhiyun #define AR_CFG_SCLK_RATE_IND 0x00000003 660*4882a593Smuzhiyun #define AR_CFG_SCLK_RATE_IND_S 0 661*4882a593Smuzhiyun #define AR_CFG_SCLK_32MHZ 0x00000000 662*4882a593Smuzhiyun #define AR_CFG_SCLK_4MHZ 0x00000001 663*4882a593Smuzhiyun #define AR_CFG_SCLK_1MHZ 0x00000002 664*4882a593Smuzhiyun #define AR_CFG_SCLK_32KHZ 0x00000003 665*4882a593Smuzhiyun #define AR_CFG_LED_BLINK_SLOW 0x00000008 666*4882a593Smuzhiyun #define AR_CFG_LED_BLINK_THRESH_SEL 0x00000070 667*4882a593Smuzhiyun #define AR_CFG_LED_MODE_SEL 0x00000380 668*4882a593Smuzhiyun #define AR_CFG_LED_MODE_SEL_S 7 669*4882a593Smuzhiyun #define AR_CFG_LED_POWER 0x00000280 670*4882a593Smuzhiyun #define AR_CFG_LED_POWER_S 7 671*4882a593Smuzhiyun #define AR_CFG_LED_NETWORK 0x00000300 672*4882a593Smuzhiyun #define AR_CFG_LED_NETWORK_S 7 673*4882a593Smuzhiyun #define AR_CFG_LED_MODE_PROP 0x0 674*4882a593Smuzhiyun #define AR_CFG_LED_MODE_RPROP 0x1 675*4882a593Smuzhiyun #define AR_CFG_LED_MODE_SPLIT 0x2 676*4882a593Smuzhiyun #define AR_CFG_LED_MODE_RAND 0x3 677*4882a593Smuzhiyun #define AR_CFG_LED_MODE_POWER_OFF 0x4 678*4882a593Smuzhiyun #define AR_CFG_LED_MODE_POWER_ON 0x5 679*4882a593Smuzhiyun #define AR_CFG_LED_MODE_NETWORK_OFF 0x4 680*4882a593Smuzhiyun #define AR_CFG_LED_MODE_NETWORK_ON 0x6 681*4882a593Smuzhiyun #define AR_CFG_LED_ASSOC_CTL 0x00000c00 682*4882a593Smuzhiyun #define AR_CFG_LED_ASSOC_CTL_S 10 683*4882a593Smuzhiyun #define AR_CFG_LED_ASSOC_NONE 0x0 684*4882a593Smuzhiyun #define AR_CFG_LED_ASSOC_ACTIVE 0x1 685*4882a593Smuzhiyun #define AR_CFG_LED_ASSOC_PENDING 0x2 686*4882a593Smuzhiyun 687*4882a593Smuzhiyun #define AR_CFG_LED_BLINK_SLOW 0x00000008 688*4882a593Smuzhiyun #define AR_CFG_LED_BLINK_SLOW_S 3 689*4882a593Smuzhiyun 690*4882a593Smuzhiyun #define AR_CFG_LED_BLINK_THRESH_SEL 0x00000070 691*4882a593Smuzhiyun #define AR_CFG_LED_BLINK_THRESH_SEL_S 4 692*4882a593Smuzhiyun 693*4882a593Smuzhiyun #define AR_MAC_SLEEP 0x1f00 694*4882a593Smuzhiyun #define AR_MAC_SLEEP_MAC_AWAKE 0x00000000 695*4882a593Smuzhiyun #define AR_MAC_SLEEP_MAC_ASLEEP 0x00000001 696*4882a593Smuzhiyun 697*4882a593Smuzhiyun #define AR_RC 0x4000 698*4882a593Smuzhiyun #define AR_RC_AHB 0x00000001 699*4882a593Smuzhiyun #define AR_RC_APB 0x00000002 700*4882a593Smuzhiyun #define AR_RC_HOSTIF 0x00000100 701*4882a593Smuzhiyun 702*4882a593Smuzhiyun #define AR_WA (AR_SREV_9340(ah) ? 0x40c4 : 0x4004) 703*4882a593Smuzhiyun #define AR_WA_BIT6 (1 << 6) 704*4882a593Smuzhiyun #define AR_WA_BIT7 (1 << 7) 705*4882a593Smuzhiyun #define AR_WA_BIT23 (1 << 23) 706*4882a593Smuzhiyun #define AR_WA_D3_L1_DISABLE (1 << 14) 707*4882a593Smuzhiyun #define AR_WA_UNTIE_RESET_EN (1 << 15) /* Enable PCI Reset 708*4882a593Smuzhiyun to POR (power-on-reset) */ 709*4882a593Smuzhiyun #define AR_WA_D3_TO_L1_DISABLE_REAL (1 << 16) 710*4882a593Smuzhiyun #define AR_WA_ASPM_TIMER_BASED_DISABLE (1 << 17) 711*4882a593Smuzhiyun #define AR_WA_RESET_EN (1 << 18) /* Enable PCI-Reset to 712*4882a593Smuzhiyun POR (bit 15) */ 713*4882a593Smuzhiyun #define AR_WA_ANALOG_SHIFT (1 << 20) 714*4882a593Smuzhiyun #define AR_WA_POR_SHORT (1 << 21) /* PCI-E Phy reset control */ 715*4882a593Smuzhiyun #define AR_WA_BIT22 (1 << 22) 716*4882a593Smuzhiyun #define AR9285_WA_DEFAULT 0x004a050b 717*4882a593Smuzhiyun #define AR9280_WA_DEFAULT 0x0040073b 718*4882a593Smuzhiyun #define AR_WA_DEFAULT 0x0000073f 719*4882a593Smuzhiyun 720*4882a593Smuzhiyun 721*4882a593Smuzhiyun #define AR_PM_STATE 0x4008 722*4882a593Smuzhiyun #define AR_PM_STATE_PME_D3COLD_VAUX 0x00100000 723*4882a593Smuzhiyun 724*4882a593Smuzhiyun #define AR_HOST_TIMEOUT (AR_SREV_9340(ah) ? 0x4008 : 0x4018) 725*4882a593Smuzhiyun #define AR_HOST_TIMEOUT_APB_CNTR 0x0000FFFF 726*4882a593Smuzhiyun #define AR_HOST_TIMEOUT_APB_CNTR_S 0 727*4882a593Smuzhiyun #define AR_HOST_TIMEOUT_LCL_CNTR 0xFFFF0000 728*4882a593Smuzhiyun #define AR_HOST_TIMEOUT_LCL_CNTR_S 16 729*4882a593Smuzhiyun 730*4882a593Smuzhiyun #define AR_EEPROM 0x401c 731*4882a593Smuzhiyun #define AR_EEPROM_ABSENT 0x00000100 732*4882a593Smuzhiyun #define AR_EEPROM_CORRUPT 0x00000200 733*4882a593Smuzhiyun #define AR_EEPROM_PROT_MASK 0x03FFFC00 734*4882a593Smuzhiyun #define AR_EEPROM_PROT_MASK_S 10 735*4882a593Smuzhiyun 736*4882a593Smuzhiyun #define EEPROM_PROTECT_RP_0_31 0x0001 737*4882a593Smuzhiyun #define EEPROM_PROTECT_WP_0_31 0x0002 738*4882a593Smuzhiyun #define EEPROM_PROTECT_RP_32_63 0x0004 739*4882a593Smuzhiyun #define EEPROM_PROTECT_WP_32_63 0x0008 740*4882a593Smuzhiyun #define EEPROM_PROTECT_RP_64_127 0x0010 741*4882a593Smuzhiyun #define EEPROM_PROTECT_WP_64_127 0x0020 742*4882a593Smuzhiyun #define EEPROM_PROTECT_RP_128_191 0x0040 743*4882a593Smuzhiyun #define EEPROM_PROTECT_WP_128_191 0x0080 744*4882a593Smuzhiyun #define EEPROM_PROTECT_RP_192_255 0x0100 745*4882a593Smuzhiyun #define EEPROM_PROTECT_WP_192_255 0x0200 746*4882a593Smuzhiyun #define EEPROM_PROTECT_RP_256_511 0x0400 747*4882a593Smuzhiyun #define EEPROM_PROTECT_WP_256_511 0x0800 748*4882a593Smuzhiyun #define EEPROM_PROTECT_RP_512_1023 0x1000 749*4882a593Smuzhiyun #define EEPROM_PROTECT_WP_512_1023 0x2000 750*4882a593Smuzhiyun #define EEPROM_PROTECT_RP_1024_2047 0x4000 751*4882a593Smuzhiyun #define EEPROM_PROTECT_WP_1024_2047 0x8000 752*4882a593Smuzhiyun 753*4882a593Smuzhiyun #define AR_SREV \ 754*4882a593Smuzhiyun ((AR_SREV_9100(ah)) ? 0x0600 : (AR_SREV_9340(ah) \ 755*4882a593Smuzhiyun ? 0x400c : 0x4020)) 756*4882a593Smuzhiyun 757*4882a593Smuzhiyun #define AR_SREV_ID \ 758*4882a593Smuzhiyun ((AR_SREV_9100(ah)) ? 0x00000FFF : 0x000000FF) 759*4882a593Smuzhiyun #define AR_SREV_VERSION 0x000000F0 760*4882a593Smuzhiyun #define AR_SREV_VERSION_S 4 761*4882a593Smuzhiyun #define AR_SREV_REVISION 0x00000007 762*4882a593Smuzhiyun 763*4882a593Smuzhiyun #define AR_SREV_ID2 0xFFFFFFFF 764*4882a593Smuzhiyun #define AR_SREV_VERSION2 0xFFFC0000 765*4882a593Smuzhiyun #define AR_SREV_VERSION2_S 18 766*4882a593Smuzhiyun #define AR_SREV_TYPE2 0x0003F000 767*4882a593Smuzhiyun #define AR_SREV_TYPE2_S 12 768*4882a593Smuzhiyun #define AR_SREV_TYPE2_CHAIN 0x00001000 769*4882a593Smuzhiyun #define AR_SREV_TYPE2_HOST_MODE 0x00002000 770*4882a593Smuzhiyun #define AR_SREV_REVISION2 0x00000F00 771*4882a593Smuzhiyun #define AR_SREV_REVISION2_S 8 772*4882a593Smuzhiyun 773*4882a593Smuzhiyun #define AR_SREV_VERSION_5416_PCI 0xD 774*4882a593Smuzhiyun #define AR_SREV_VERSION_5416_PCIE 0xC 775*4882a593Smuzhiyun #define AR_SREV_REVISION_5416_10 0 776*4882a593Smuzhiyun #define AR_SREV_REVISION_5416_20 1 777*4882a593Smuzhiyun #define AR_SREV_REVISION_5416_22 2 778*4882a593Smuzhiyun #define AR_SREV_VERSION_9100 0x14 779*4882a593Smuzhiyun #define AR_SREV_VERSION_9160 0x40 780*4882a593Smuzhiyun #define AR_SREV_REVISION_9160_10 0 781*4882a593Smuzhiyun #define AR_SREV_REVISION_9160_11 1 782*4882a593Smuzhiyun #define AR_SREV_VERSION_9280 0x80 783*4882a593Smuzhiyun #define AR_SREV_REVISION_9280_10 0 784*4882a593Smuzhiyun #define AR_SREV_REVISION_9280_20 1 785*4882a593Smuzhiyun #define AR_SREV_REVISION_9280_21 2 786*4882a593Smuzhiyun #define AR_SREV_VERSION_9285 0xC0 787*4882a593Smuzhiyun #define AR_SREV_REVISION_9285_10 0 788*4882a593Smuzhiyun #define AR_SREV_REVISION_9285_11 1 789*4882a593Smuzhiyun #define AR_SREV_REVISION_9285_12 2 790*4882a593Smuzhiyun #define AR_SREV_VERSION_9287 0x180 791*4882a593Smuzhiyun #define AR_SREV_REVISION_9287_10 0 792*4882a593Smuzhiyun #define AR_SREV_REVISION_9287_11 1 793*4882a593Smuzhiyun #define AR_SREV_REVISION_9287_12 2 794*4882a593Smuzhiyun #define AR_SREV_REVISION_9287_13 3 795*4882a593Smuzhiyun #define AR_SREV_VERSION_9271 0x140 796*4882a593Smuzhiyun #define AR_SREV_REVISION_9271_10 0 797*4882a593Smuzhiyun #define AR_SREV_REVISION_9271_11 1 798*4882a593Smuzhiyun #define AR_SREV_VERSION_9300 0x1c0 799*4882a593Smuzhiyun #define AR_SREV_REVISION_9300_20 2 /* 2.0 and 2.1 */ 800*4882a593Smuzhiyun #define AR_SREV_REVISION_9300_22 3 801*4882a593Smuzhiyun #define AR_SREV_VERSION_9330 0x200 802*4882a593Smuzhiyun #define AR_SREV_REVISION_9330_10 0 803*4882a593Smuzhiyun #define AR_SREV_REVISION_9330_11 1 804*4882a593Smuzhiyun #define AR_SREV_REVISION_9330_12 2 805*4882a593Smuzhiyun #define AR_SREV_VERSION_9485 0x240 806*4882a593Smuzhiyun #define AR_SREV_REVISION_9485_10 0 807*4882a593Smuzhiyun #define AR_SREV_REVISION_9485_11 1 808*4882a593Smuzhiyun #define AR_SREV_VERSION_9340 0x300 809*4882a593Smuzhiyun #define AR_SREV_REVISION_9340_10 0 810*4882a593Smuzhiyun #define AR_SREV_REVISION_9340_11 1 811*4882a593Smuzhiyun #define AR_SREV_REVISION_9340_12 2 812*4882a593Smuzhiyun #define AR_SREV_REVISION_9340_13 3 813*4882a593Smuzhiyun #define AR_SREV_VERSION_9580 0x1C0 814*4882a593Smuzhiyun #define AR_SREV_REVISION_9580_10 4 /* AR9580 1.0 */ 815*4882a593Smuzhiyun #define AR_SREV_VERSION_9462 0x280 816*4882a593Smuzhiyun #define AR_SREV_REVISION_9462_20 2 817*4882a593Smuzhiyun #define AR_SREV_REVISION_9462_21 3 818*4882a593Smuzhiyun #define AR_SREV_VERSION_9565 0x2C0 819*4882a593Smuzhiyun #define AR_SREV_REVISION_9565_10 0 820*4882a593Smuzhiyun #define AR_SREV_REVISION_9565_101 1 821*4882a593Smuzhiyun #define AR_SREV_REVISION_9565_11 2 822*4882a593Smuzhiyun #define AR_SREV_VERSION_9550 0x400 823*4882a593Smuzhiyun #define AR_SREV_VERSION_9531 0x500 824*4882a593Smuzhiyun #define AR_SREV_REVISION_9531_10 0 825*4882a593Smuzhiyun #define AR_SREV_REVISION_9531_11 1 826*4882a593Smuzhiyun #define AR_SREV_REVISION_9531_20 2 827*4882a593Smuzhiyun #define AR_SREV_VERSION_9561 0x600 828*4882a593Smuzhiyun 829*4882a593Smuzhiyun #define AR_SREV_5416(_ah) \ 830*4882a593Smuzhiyun (((_ah)->hw_version.macVersion == AR_SREV_VERSION_5416_PCI) || \ 831*4882a593Smuzhiyun ((_ah)->hw_version.macVersion == AR_SREV_VERSION_5416_PCIE)) 832*4882a593Smuzhiyun #define AR_SREV_5416_22_OR_LATER(_ah) \ 833*4882a593Smuzhiyun (((AR_SREV_5416(_ah)) && \ 834*4882a593Smuzhiyun ((_ah)->hw_version.macRev >= AR_SREV_REVISION_5416_22)) || \ 835*4882a593Smuzhiyun ((_ah)->hw_version.macVersion >= AR_SREV_VERSION_9100)) 836*4882a593Smuzhiyun 837*4882a593Smuzhiyun #define AR_SREV_9100(ah) \ 838*4882a593Smuzhiyun ((ah->hw_version.macVersion) == AR_SREV_VERSION_9100) 839*4882a593Smuzhiyun #define AR_SREV_9100_OR_LATER(_ah) \ 840*4882a593Smuzhiyun (((_ah)->hw_version.macVersion >= AR_SREV_VERSION_9100)) 841*4882a593Smuzhiyun 842*4882a593Smuzhiyun #define AR_SREV_9160(_ah) \ 843*4882a593Smuzhiyun (((_ah)->hw_version.macVersion == AR_SREV_VERSION_9160)) 844*4882a593Smuzhiyun #define AR_SREV_9160_10_OR_LATER(_ah) \ 845*4882a593Smuzhiyun (((_ah)->hw_version.macVersion >= AR_SREV_VERSION_9160)) 846*4882a593Smuzhiyun #define AR_SREV_9160_11(_ah) \ 847*4882a593Smuzhiyun (AR_SREV_9160(_ah) && \ 848*4882a593Smuzhiyun ((_ah)->hw_version.macRev == AR_SREV_REVISION_9160_11)) 849*4882a593Smuzhiyun #define AR_SREV_9280(_ah) \ 850*4882a593Smuzhiyun (((_ah)->hw_version.macVersion == AR_SREV_VERSION_9280)) 851*4882a593Smuzhiyun #define AR_SREV_9280_20_OR_LATER(_ah) \ 852*4882a593Smuzhiyun (((_ah)->hw_version.macVersion >= AR_SREV_VERSION_9280)) 853*4882a593Smuzhiyun #define AR_SREV_9280_20(_ah) \ 854*4882a593Smuzhiyun (((_ah)->hw_version.macVersion == AR_SREV_VERSION_9280)) 855*4882a593Smuzhiyun 856*4882a593Smuzhiyun #define AR_SREV_9285(_ah) \ 857*4882a593Smuzhiyun (((_ah)->hw_version.macVersion == AR_SREV_VERSION_9285)) 858*4882a593Smuzhiyun #define AR_SREV_9285_12_OR_LATER(_ah) \ 859*4882a593Smuzhiyun (((_ah)->hw_version.macVersion >= AR_SREV_VERSION_9285)) 860*4882a593Smuzhiyun 861*4882a593Smuzhiyun #define AR_SREV_9287(_ah) \ 862*4882a593Smuzhiyun (((_ah)->hw_version.macVersion == AR_SREV_VERSION_9287)) 863*4882a593Smuzhiyun #define AR_SREV_9287_11_OR_LATER(_ah) \ 864*4882a593Smuzhiyun (((_ah)->hw_version.macVersion >= AR_SREV_VERSION_9287)) 865*4882a593Smuzhiyun #define AR_SREV_9287_11(_ah) \ 866*4882a593Smuzhiyun (((_ah)->hw_version.macVersion == AR_SREV_VERSION_9287) && \ 867*4882a593Smuzhiyun ((_ah)->hw_version.macRev == AR_SREV_REVISION_9287_11)) 868*4882a593Smuzhiyun #define AR_SREV_9287_12(_ah) \ 869*4882a593Smuzhiyun (((_ah)->hw_version.macVersion == AR_SREV_VERSION_9287) && \ 870*4882a593Smuzhiyun ((_ah)->hw_version.macRev == AR_SREV_REVISION_9287_12)) 871*4882a593Smuzhiyun #define AR_SREV_9287_12_OR_LATER(_ah) \ 872*4882a593Smuzhiyun (((_ah)->hw_version.macVersion > AR_SREV_VERSION_9287) || \ 873*4882a593Smuzhiyun (((_ah)->hw_version.macVersion == AR_SREV_VERSION_9287) && \ 874*4882a593Smuzhiyun ((_ah)->hw_version.macRev >= AR_SREV_REVISION_9287_12))) 875*4882a593Smuzhiyun #define AR_SREV_9287_13_OR_LATER(_ah) \ 876*4882a593Smuzhiyun (((_ah)->hw_version.macVersion > AR_SREV_VERSION_9287) || \ 877*4882a593Smuzhiyun (((_ah)->hw_version.macVersion == AR_SREV_VERSION_9287) && \ 878*4882a593Smuzhiyun ((_ah)->hw_version.macRev >= AR_SREV_REVISION_9287_13))) 879*4882a593Smuzhiyun 880*4882a593Smuzhiyun #define AR_SREV_9271(_ah) \ 881*4882a593Smuzhiyun (((_ah))->hw_version.macVersion == AR_SREV_VERSION_9271) 882*4882a593Smuzhiyun #define AR_SREV_9271_10(_ah) \ 883*4882a593Smuzhiyun (AR_SREV_9271(_ah) && \ 884*4882a593Smuzhiyun ((_ah)->hw_version.macRev == AR_SREV_REVISION_9271_10)) 885*4882a593Smuzhiyun #define AR_SREV_9271_11(_ah) \ 886*4882a593Smuzhiyun (AR_SREV_9271(_ah) && \ 887*4882a593Smuzhiyun ((_ah)->hw_version.macRev == AR_SREV_REVISION_9271_11)) 888*4882a593Smuzhiyun 889*4882a593Smuzhiyun #define AR_SREV_9300(_ah) \ 890*4882a593Smuzhiyun (((_ah)->hw_version.macVersion == AR_SREV_VERSION_9300)) 891*4882a593Smuzhiyun #define AR_SREV_9300_20_OR_LATER(_ah) \ 892*4882a593Smuzhiyun ((_ah)->hw_version.macVersion >= AR_SREV_VERSION_9300) 893*4882a593Smuzhiyun #define AR_SREV_9300_22(_ah) \ 894*4882a593Smuzhiyun (AR_SREV_9300(ah) && \ 895*4882a593Smuzhiyun ((_ah)->hw_version.macRev == AR_SREV_REVISION_9300_22)) 896*4882a593Smuzhiyun 897*4882a593Smuzhiyun #define AR_SREV_9330(_ah) \ 898*4882a593Smuzhiyun (((_ah)->hw_version.macVersion == AR_SREV_VERSION_9330)) 899*4882a593Smuzhiyun #define AR_SREV_9330_11(_ah) \ 900*4882a593Smuzhiyun (AR_SREV_9330((_ah)) && \ 901*4882a593Smuzhiyun ((_ah)->hw_version.macRev == AR_SREV_REVISION_9330_11)) 902*4882a593Smuzhiyun #define AR_SREV_9330_12(_ah) \ 903*4882a593Smuzhiyun (AR_SREV_9330((_ah)) && \ 904*4882a593Smuzhiyun ((_ah)->hw_version.macRev == AR_SREV_REVISION_9330_12)) 905*4882a593Smuzhiyun 906*4882a593Smuzhiyun #ifdef CONFIG_ATH9K_PCOEM 907*4882a593Smuzhiyun #define AR_SREV_9462(_ah) \ 908*4882a593Smuzhiyun (((_ah)->hw_version.macVersion == AR_SREV_VERSION_9462)) 909*4882a593Smuzhiyun #define AR_SREV_9485(_ah) \ 910*4882a593Smuzhiyun (((_ah)->hw_version.macVersion == AR_SREV_VERSION_9485)) 911*4882a593Smuzhiyun #define AR_SREV_9565(_ah) \ 912*4882a593Smuzhiyun (((_ah)->hw_version.macVersion == AR_SREV_VERSION_9565)) 913*4882a593Smuzhiyun #define AR_SREV_9003_PCOEM(_ah) \ 914*4882a593Smuzhiyun (AR_SREV_9462(_ah) || AR_SREV_9485(_ah) || AR_SREV_9565(_ah)) 915*4882a593Smuzhiyun #else 916*4882a593Smuzhiyun #define AR_SREV_9462(_ah) 0 917*4882a593Smuzhiyun #define AR_SREV_9485(_ah) 0 918*4882a593Smuzhiyun #define AR_SREV_9565(_ah) 0 919*4882a593Smuzhiyun #define AR_SREV_9003_PCOEM(_ah) 0 920*4882a593Smuzhiyun #endif 921*4882a593Smuzhiyun 922*4882a593Smuzhiyun #define AR_SREV_9485_11_OR_LATER(_ah) \ 923*4882a593Smuzhiyun (AR_SREV_9485(_ah) && \ 924*4882a593Smuzhiyun ((_ah)->hw_version.macRev >= AR_SREV_REVISION_9485_11)) 925*4882a593Smuzhiyun #define AR_SREV_9485_OR_LATER(_ah) \ 926*4882a593Smuzhiyun (((_ah)->hw_version.macVersion >= AR_SREV_VERSION_9485)) 927*4882a593Smuzhiyun 928*4882a593Smuzhiyun #define AR_SREV_9340(_ah) \ 929*4882a593Smuzhiyun (((_ah)->hw_version.macVersion == AR_SREV_VERSION_9340)) 930*4882a593Smuzhiyun 931*4882a593Smuzhiyun #define AR_SREV_9340_13(_ah) \ 932*4882a593Smuzhiyun (AR_SREV_9340((_ah)) && \ 933*4882a593Smuzhiyun ((_ah)->hw_version.macRev == AR_SREV_REVISION_9340_13)) 934*4882a593Smuzhiyun 935*4882a593Smuzhiyun #define AR_SREV_9340_13_OR_LATER(_ah) \ 936*4882a593Smuzhiyun (AR_SREV_9340((_ah)) && \ 937*4882a593Smuzhiyun ((_ah)->hw_version.macRev >= AR_SREV_REVISION_9340_13)) 938*4882a593Smuzhiyun 939*4882a593Smuzhiyun #define AR_SREV_9285E_20(_ah) \ 940*4882a593Smuzhiyun (AR_SREV_9285_12_OR_LATER(_ah) && \ 941*4882a593Smuzhiyun ((REG_READ(_ah, AR_AN_SYNTH9) & 0x7) == 0x1)) 942*4882a593Smuzhiyun 943*4882a593Smuzhiyun #define AR_SREV_9462_20(_ah) \ 944*4882a593Smuzhiyun (AR_SREV_9462(_ah) && \ 945*4882a593Smuzhiyun ((_ah)->hw_version.macRev == AR_SREV_REVISION_9462_20)) 946*4882a593Smuzhiyun #define AR_SREV_9462_21(_ah) \ 947*4882a593Smuzhiyun (AR_SREV_9462(_ah) && \ 948*4882a593Smuzhiyun ((_ah)->hw_version.macRev == AR_SREV_REVISION_9462_21)) 949*4882a593Smuzhiyun #define AR_SREV_9462_20_OR_LATER(_ah) \ 950*4882a593Smuzhiyun (AR_SREV_9462(_ah) && \ 951*4882a593Smuzhiyun ((_ah)->hw_version.macRev >= AR_SREV_REVISION_9462_20)) 952*4882a593Smuzhiyun #define AR_SREV_9462_21_OR_LATER(_ah) \ 953*4882a593Smuzhiyun (AR_SREV_9462(_ah) && \ 954*4882a593Smuzhiyun ((_ah)->hw_version.macRev >= AR_SREV_REVISION_9462_21)) 955*4882a593Smuzhiyun 956*4882a593Smuzhiyun #define AR_SREV_9565_10(_ah) \ 957*4882a593Smuzhiyun (AR_SREV_9565(_ah) && \ 958*4882a593Smuzhiyun ((_ah)->hw_version.macRev == AR_SREV_REVISION_9565_10)) 959*4882a593Smuzhiyun #define AR_SREV_9565_101(_ah) \ 960*4882a593Smuzhiyun (AR_SREV_9565(_ah) && \ 961*4882a593Smuzhiyun ((_ah)->hw_version.macRev == AR_SREV_REVISION_9565_101)) 962*4882a593Smuzhiyun #define AR_SREV_9565_11(_ah) \ 963*4882a593Smuzhiyun (AR_SREV_9565(_ah) && \ 964*4882a593Smuzhiyun ((_ah)->hw_version.macRev == AR_SREV_REVISION_9565_11)) 965*4882a593Smuzhiyun #define AR_SREV_9565_11_OR_LATER(_ah) \ 966*4882a593Smuzhiyun (AR_SREV_9565(_ah) && \ 967*4882a593Smuzhiyun ((_ah)->hw_version.macRev >= AR_SREV_REVISION_9565_11)) 968*4882a593Smuzhiyun 969*4882a593Smuzhiyun #define AR_SREV_9550(_ah) \ 970*4882a593Smuzhiyun (((_ah)->hw_version.macVersion == AR_SREV_VERSION_9550)) 971*4882a593Smuzhiyun #define AR_SREV_9550_OR_LATER(_ah) \ 972*4882a593Smuzhiyun (((_ah)->hw_version.macVersion >= AR_SREV_VERSION_9550)) 973*4882a593Smuzhiyun 974*4882a593Smuzhiyun #define AR_SREV_9580(_ah) \ 975*4882a593Smuzhiyun (((_ah)->hw_version.macVersion == AR_SREV_VERSION_9580) && \ 976*4882a593Smuzhiyun ((_ah)->hw_version.macRev >= AR_SREV_REVISION_9580_10)) 977*4882a593Smuzhiyun #define AR_SREV_9580_10(_ah) \ 978*4882a593Smuzhiyun (((_ah)->hw_version.macVersion == AR_SREV_VERSION_9580) && \ 979*4882a593Smuzhiyun ((_ah)->hw_version.macRev == AR_SREV_REVISION_9580_10)) 980*4882a593Smuzhiyun 981*4882a593Smuzhiyun #define AR_SREV_9531(_ah) \ 982*4882a593Smuzhiyun (((_ah)->hw_version.macVersion == AR_SREV_VERSION_9531)) 983*4882a593Smuzhiyun #define AR_SREV_9531_10(_ah) \ 984*4882a593Smuzhiyun (((_ah)->hw_version.macVersion == AR_SREV_VERSION_9531) && \ 985*4882a593Smuzhiyun ((_ah)->hw_version.macRev == AR_SREV_REVISION_9531_10)) 986*4882a593Smuzhiyun #define AR_SREV_9531_11(_ah) \ 987*4882a593Smuzhiyun (((_ah)->hw_version.macVersion == AR_SREV_VERSION_9531) && \ 988*4882a593Smuzhiyun ((_ah)->hw_version.macRev == AR_SREV_REVISION_9531_11)) 989*4882a593Smuzhiyun #define AR_SREV_9531_20(_ah) \ 990*4882a593Smuzhiyun (((_ah)->hw_version.macVersion == AR_SREV_VERSION_9531) && \ 991*4882a593Smuzhiyun ((_ah)->hw_version.macRev == AR_SREV_REVISION_9531_20)) 992*4882a593Smuzhiyun 993*4882a593Smuzhiyun #define AR_SREV_9561(_ah) \ 994*4882a593Smuzhiyun (((_ah)->hw_version.macVersion == AR_SREV_VERSION_9561)) 995*4882a593Smuzhiyun 996*4882a593Smuzhiyun #define AR_SREV_SOC(_ah) \ 997*4882a593Smuzhiyun (AR_SREV_9340(_ah) || AR_SREV_9531(_ah) || AR_SREV_9550(ah) || \ 998*4882a593Smuzhiyun AR_SREV_9561(ah)) 999*4882a593Smuzhiyun 1000*4882a593Smuzhiyun /* NOTE: When adding chips newer than Peacock, add chip check here */ 1001*4882a593Smuzhiyun #define AR_SREV_9580_10_OR_LATER(_ah) \ 1002*4882a593Smuzhiyun (AR_SREV_9580(_ah)) 1003*4882a593Smuzhiyun 1004*4882a593Smuzhiyun enum ath_usb_dev { 1005*4882a593Smuzhiyun AR9280_USB = 1, /* AR7010 + AR9280, UB94 */ 1006*4882a593Smuzhiyun AR9287_USB = 2, /* AR7010 + AR9287, UB95 */ 1007*4882a593Smuzhiyun STORAGE_DEVICE = 3, 1008*4882a593Smuzhiyun }; 1009*4882a593Smuzhiyun 1010*4882a593Smuzhiyun #define AR_DEVID_7010(_ah) \ 1011*4882a593Smuzhiyun (((_ah)->hw_version.usbdev == AR9280_USB) || \ 1012*4882a593Smuzhiyun ((_ah)->hw_version.usbdev == AR9287_USB)) 1013*4882a593Smuzhiyun 1014*4882a593Smuzhiyun #define AR_RADIO_SREV_MAJOR 0xf0 1015*4882a593Smuzhiyun #define AR_RAD5133_SREV_MAJOR 0xc0 1016*4882a593Smuzhiyun #define AR_RAD2133_SREV_MAJOR 0xd0 1017*4882a593Smuzhiyun #define AR_RAD5122_SREV_MAJOR 0xe0 1018*4882a593Smuzhiyun #define AR_RAD2122_SREV_MAJOR 0xf0 1019*4882a593Smuzhiyun 1020*4882a593Smuzhiyun #define AR_AHB_MODE 0x4024 1021*4882a593Smuzhiyun #define AR_AHB_EXACT_WR_EN 0x00000000 1022*4882a593Smuzhiyun #define AR_AHB_BUF_WR_EN 0x00000001 1023*4882a593Smuzhiyun #define AR_AHB_EXACT_RD_EN 0x00000000 1024*4882a593Smuzhiyun #define AR_AHB_CACHELINE_RD_EN 0x00000002 1025*4882a593Smuzhiyun #define AR_AHB_PREFETCH_RD_EN 0x00000004 1026*4882a593Smuzhiyun #define AR_AHB_PAGE_SIZE_1K 0x00000000 1027*4882a593Smuzhiyun #define AR_AHB_PAGE_SIZE_2K 0x00000008 1028*4882a593Smuzhiyun #define AR_AHB_PAGE_SIZE_4K 0x00000010 1029*4882a593Smuzhiyun #define AR_AHB_CUSTOM_BURST_EN 0x000000C0 1030*4882a593Smuzhiyun #define AR_AHB_CUSTOM_BURST_EN_S 6 1031*4882a593Smuzhiyun #define AR_AHB_CUSTOM_BURST_ASYNC_FIFO_VAL 3 1032*4882a593Smuzhiyun 1033*4882a593Smuzhiyun #define AR_INTR_RTC_IRQ 0x00000001 1034*4882a593Smuzhiyun #define AR_INTR_MAC_IRQ 0x00000002 1035*4882a593Smuzhiyun #define AR_INTR_EEP_PROT_ACCESS 0x00000004 1036*4882a593Smuzhiyun #define AR_INTR_MAC_AWAKE 0x00020000 1037*4882a593Smuzhiyun #define AR_INTR_MAC_ASLEEP 0x00040000 1038*4882a593Smuzhiyun #define AR_INTR_SPURIOUS 0xFFFFFFFF 1039*4882a593Smuzhiyun 1040*4882a593Smuzhiyun 1041*4882a593Smuzhiyun #define AR_INTR_SYNC_CAUSE (AR_SREV_9340(ah) ? 0x4010 : 0x4028) 1042*4882a593Smuzhiyun #define AR_INTR_SYNC_CAUSE_CLR (AR_SREV_9340(ah) ? 0x4010 : 0x4028) 1043*4882a593Smuzhiyun 1044*4882a593Smuzhiyun 1045*4882a593Smuzhiyun #define AR_INTR_SYNC_ENABLE (AR_SREV_9340(ah) ? 0x4014 : 0x402c) 1046*4882a593Smuzhiyun #define AR_INTR_SYNC_ENABLE_GPIO 0xFFFC0000 1047*4882a593Smuzhiyun #define AR_INTR_SYNC_ENABLE_GPIO_S 18 1048*4882a593Smuzhiyun 1049*4882a593Smuzhiyun enum { 1050*4882a593Smuzhiyun AR_INTR_SYNC_RTC_IRQ = 0x00000001, 1051*4882a593Smuzhiyun AR_INTR_SYNC_MAC_IRQ = 0x00000002, 1052*4882a593Smuzhiyun AR_INTR_SYNC_EEPROM_ILLEGAL_ACCESS = 0x00000004, 1053*4882a593Smuzhiyun AR_INTR_SYNC_APB_TIMEOUT = 0x00000008, 1054*4882a593Smuzhiyun AR_INTR_SYNC_PCI_MODE_CONFLICT = 0x00000010, 1055*4882a593Smuzhiyun AR_INTR_SYNC_HOST1_FATAL = 0x00000020, 1056*4882a593Smuzhiyun AR_INTR_SYNC_HOST1_PERR = 0x00000040, 1057*4882a593Smuzhiyun AR_INTR_SYNC_TRCV_FIFO_PERR = 0x00000080, 1058*4882a593Smuzhiyun AR_INTR_SYNC_RADM_CPL_EP = 0x00000100, 1059*4882a593Smuzhiyun AR_INTR_SYNC_RADM_CPL_DLLP_ABORT = 0x00000200, 1060*4882a593Smuzhiyun AR_INTR_SYNC_RADM_CPL_TLP_ABORT = 0x00000400, 1061*4882a593Smuzhiyun AR_INTR_SYNC_RADM_CPL_ECRC_ERR = 0x00000800, 1062*4882a593Smuzhiyun AR_INTR_SYNC_RADM_CPL_TIMEOUT = 0x00001000, 1063*4882a593Smuzhiyun AR_INTR_SYNC_LOCAL_TIMEOUT = 0x00002000, 1064*4882a593Smuzhiyun AR_INTR_SYNC_PM_ACCESS = 0x00004000, 1065*4882a593Smuzhiyun AR_INTR_SYNC_MAC_AWAKE = 0x00008000, 1066*4882a593Smuzhiyun AR_INTR_SYNC_MAC_ASLEEP = 0x00010000, 1067*4882a593Smuzhiyun AR_INTR_SYNC_MAC_SLEEP_ACCESS = 0x00020000, 1068*4882a593Smuzhiyun AR_INTR_SYNC_ALL = 0x0003FFFF, 1069*4882a593Smuzhiyun 1070*4882a593Smuzhiyun 1071*4882a593Smuzhiyun AR_INTR_SYNC_DEFAULT = (AR_INTR_SYNC_HOST1_FATAL | 1072*4882a593Smuzhiyun AR_INTR_SYNC_HOST1_PERR | 1073*4882a593Smuzhiyun AR_INTR_SYNC_RADM_CPL_EP | 1074*4882a593Smuzhiyun AR_INTR_SYNC_RADM_CPL_DLLP_ABORT | 1075*4882a593Smuzhiyun AR_INTR_SYNC_RADM_CPL_TLP_ABORT | 1076*4882a593Smuzhiyun AR_INTR_SYNC_RADM_CPL_ECRC_ERR | 1077*4882a593Smuzhiyun AR_INTR_SYNC_RADM_CPL_TIMEOUT | 1078*4882a593Smuzhiyun AR_INTR_SYNC_LOCAL_TIMEOUT | 1079*4882a593Smuzhiyun AR_INTR_SYNC_MAC_SLEEP_ACCESS), 1080*4882a593Smuzhiyun 1081*4882a593Smuzhiyun AR9340_INTR_SYNC_LOCAL_TIMEOUT = 0x00000010, 1082*4882a593Smuzhiyun 1083*4882a593Smuzhiyun AR_INTR_SYNC_SPURIOUS = 0xFFFFFFFF, 1084*4882a593Smuzhiyun 1085*4882a593Smuzhiyun }; 1086*4882a593Smuzhiyun 1087*4882a593Smuzhiyun #define AR_INTR_ASYNC_MASK (AR_SREV_9340(ah) ? 0x4018 : 0x4030) 1088*4882a593Smuzhiyun #define AR_INTR_ASYNC_MASK_GPIO 0xFFFC0000 1089*4882a593Smuzhiyun #define AR_INTR_ASYNC_MASK_GPIO_S 18 1090*4882a593Smuzhiyun #define AR_INTR_ASYNC_MASK_MCI 0x00000080 1091*4882a593Smuzhiyun #define AR_INTR_ASYNC_MASK_MCI_S 7 1092*4882a593Smuzhiyun 1093*4882a593Smuzhiyun #define AR_INTR_SYNC_MASK (AR_SREV_9340(ah) ? 0x401c : 0x4034) 1094*4882a593Smuzhiyun #define AR_INTR_SYNC_MASK_GPIO 0xFFFC0000 1095*4882a593Smuzhiyun #define AR_INTR_SYNC_MASK_GPIO_S 18 1096*4882a593Smuzhiyun 1097*4882a593Smuzhiyun #define AR_INTR_ASYNC_CAUSE_CLR (AR_SREV_9340(ah) ? 0x4020 : 0x4038) 1098*4882a593Smuzhiyun #define AR_INTR_ASYNC_CAUSE (AR_SREV_9340(ah) ? 0x4020 : 0x4038) 1099*4882a593Smuzhiyun #define AR_INTR_ASYNC_CAUSE_MCI 0x00000080 1100*4882a593Smuzhiyun #define AR_INTR_ASYNC_USED (AR_INTR_MAC_IRQ | \ 1101*4882a593Smuzhiyun AR_INTR_ASYNC_CAUSE_MCI) 1102*4882a593Smuzhiyun 1103*4882a593Smuzhiyun /* Asynchronous Interrupt Enable Register */ 1104*4882a593Smuzhiyun #define AR_INTR_ASYNC_ENABLE_MCI 0x00000080 1105*4882a593Smuzhiyun #define AR_INTR_ASYNC_ENABLE_MCI_S 7 1106*4882a593Smuzhiyun 1107*4882a593Smuzhiyun 1108*4882a593Smuzhiyun #define AR_INTR_ASYNC_ENABLE (AR_SREV_9340(ah) ? 0x4024 : 0x403c) 1109*4882a593Smuzhiyun #define AR_INTR_ASYNC_ENABLE_GPIO 0xFFFC0000 1110*4882a593Smuzhiyun #define AR_INTR_ASYNC_ENABLE_GPIO_S 18 1111*4882a593Smuzhiyun 1112*4882a593Smuzhiyun #define AR_PCIE_SERDES 0x4040 1113*4882a593Smuzhiyun #define AR_PCIE_SERDES2 0x4044 1114*4882a593Smuzhiyun #define AR_PCIE_PM_CTRL (AR_SREV_9340(ah) ? 0x4004 : 0x4014) 1115*4882a593Smuzhiyun #define AR_PCIE_PM_CTRL_ENA 0x00080000 1116*4882a593Smuzhiyun 1117*4882a593Smuzhiyun #define AR_PCIE_PHY_REG3 0x18c08 1118*4882a593Smuzhiyun 1119*4882a593Smuzhiyun /* Define correct GPIO numbers and MASK bits to indicate the WMAC 1120*4882a593Smuzhiyun * GPIO resource. 1121*4882a593Smuzhiyun * Allow SOC chips(AR9340, AR9531, AR9550, AR9561) to access all GPIOs 1122*4882a593Smuzhiyun * which rely on gpiolib framework. But restrict SOC AR9330 only to 1123*4882a593Smuzhiyun * access WMAC GPIO which has the same design with the old chips. 1124*4882a593Smuzhiyun */ 1125*4882a593Smuzhiyun #define AR_NUM_GPIO 14 1126*4882a593Smuzhiyun #define AR9280_NUM_GPIO 10 1127*4882a593Smuzhiyun #define AR9285_NUM_GPIO 12 1128*4882a593Smuzhiyun #define AR9287_NUM_GPIO 10 1129*4882a593Smuzhiyun #define AR9271_NUM_GPIO 16 1130*4882a593Smuzhiyun #define AR9300_NUM_GPIO 16 1131*4882a593Smuzhiyun #define AR9330_NUM_GPIO 16 1132*4882a593Smuzhiyun #define AR9340_NUM_GPIO 23 1133*4882a593Smuzhiyun #define AR9462_NUM_GPIO 14 1134*4882a593Smuzhiyun #define AR9485_NUM_GPIO 12 1135*4882a593Smuzhiyun #define AR9531_NUM_GPIO 18 1136*4882a593Smuzhiyun #define AR9550_NUM_GPIO 24 1137*4882a593Smuzhiyun #define AR9561_NUM_GPIO 23 1138*4882a593Smuzhiyun #define AR9565_NUM_GPIO 14 1139*4882a593Smuzhiyun #define AR9580_NUM_GPIO 16 1140*4882a593Smuzhiyun #define AR7010_NUM_GPIO 16 1141*4882a593Smuzhiyun 1142*4882a593Smuzhiyun #define AR_GPIO_MASK 0x00003FFF 1143*4882a593Smuzhiyun #define AR9271_GPIO_MASK 0x0000FFFF 1144*4882a593Smuzhiyun #define AR9280_GPIO_MASK 0x000003FF 1145*4882a593Smuzhiyun #define AR9285_GPIO_MASK 0x00000FFF 1146*4882a593Smuzhiyun #define AR9287_GPIO_MASK 0x000003FF 1147*4882a593Smuzhiyun #define AR9300_GPIO_MASK 0x0000F4FF 1148*4882a593Smuzhiyun #define AR9330_GPIO_MASK 0x0000F4FF 1149*4882a593Smuzhiyun #define AR9340_GPIO_MASK 0x0000000F 1150*4882a593Smuzhiyun #define AR9462_GPIO_MASK 0x00003FFF 1151*4882a593Smuzhiyun #define AR9485_GPIO_MASK 0x00000FFF 1152*4882a593Smuzhiyun #define AR9531_GPIO_MASK 0x0000000F 1153*4882a593Smuzhiyun #define AR9550_GPIO_MASK 0x0000000F 1154*4882a593Smuzhiyun #define AR9561_GPIO_MASK 0x0000000F 1155*4882a593Smuzhiyun #define AR9565_GPIO_MASK 0x00003FFF 1156*4882a593Smuzhiyun #define AR9580_GPIO_MASK 0x0000F4FF 1157*4882a593Smuzhiyun #define AR7010_GPIO_MASK 0x0000FFFF 1158*4882a593Smuzhiyun 1159*4882a593Smuzhiyun #define AR_GPIO_IN_OUT (AR_SREV_9340(ah) ? 0x4028 : 0x4048) 1160*4882a593Smuzhiyun #define AR_GPIO_IN_VAL 0x0FFFC000 1161*4882a593Smuzhiyun #define AR_GPIO_IN_VAL_S 14 1162*4882a593Smuzhiyun #define AR928X_GPIO_IN_VAL 0x000FFC00 1163*4882a593Smuzhiyun #define AR928X_GPIO_IN_VAL_S 10 1164*4882a593Smuzhiyun #define AR9285_GPIO_IN_VAL 0x00FFF000 1165*4882a593Smuzhiyun #define AR9285_GPIO_IN_VAL_S 12 1166*4882a593Smuzhiyun #define AR9287_GPIO_IN_VAL 0x003FF800 1167*4882a593Smuzhiyun #define AR9287_GPIO_IN_VAL_S 11 1168*4882a593Smuzhiyun #define AR9271_GPIO_IN_VAL 0xFFFF0000 1169*4882a593Smuzhiyun #define AR9271_GPIO_IN_VAL_S 16 1170*4882a593Smuzhiyun #define AR7010_GPIO_IN_VAL 0x0000FFFF 1171*4882a593Smuzhiyun #define AR7010_GPIO_IN_VAL_S 0 1172*4882a593Smuzhiyun 1173*4882a593Smuzhiyun #define AR_GPIO_IN (AR_SREV_9340(ah) ? 0x402c : 0x404c) 1174*4882a593Smuzhiyun #define AR9300_GPIO_IN_VAL 0x0001FFFF 1175*4882a593Smuzhiyun #define AR9300_GPIO_IN_VAL_S 0 1176*4882a593Smuzhiyun 1177*4882a593Smuzhiyun #define AR_GPIO_OE_OUT (AR_SREV_9340(ah) ? 0x4030 : \ 1178*4882a593Smuzhiyun (AR_SREV_9300_20_OR_LATER(ah) ? 0x4050 : 0x404c)) 1179*4882a593Smuzhiyun #define AR_GPIO_OE_OUT_DRV 0x3 1180*4882a593Smuzhiyun #define AR_GPIO_OE_OUT_DRV_NO 0x0 1181*4882a593Smuzhiyun #define AR_GPIO_OE_OUT_DRV_LOW 0x1 1182*4882a593Smuzhiyun #define AR_GPIO_OE_OUT_DRV_HI 0x2 1183*4882a593Smuzhiyun #define AR_GPIO_OE_OUT_DRV_ALL 0x3 1184*4882a593Smuzhiyun 1185*4882a593Smuzhiyun #define AR7010_GPIO_OE 0x52000 1186*4882a593Smuzhiyun #define AR7010_GPIO_OE_MASK 0x1 1187*4882a593Smuzhiyun #define AR7010_GPIO_OE_AS_OUTPUT 0x0 1188*4882a593Smuzhiyun #define AR7010_GPIO_OE_AS_INPUT 0x1 1189*4882a593Smuzhiyun #define AR7010_GPIO_IN 0x52004 1190*4882a593Smuzhiyun #define AR7010_GPIO_OUT 0x52008 1191*4882a593Smuzhiyun #define AR7010_GPIO_SET 0x5200C 1192*4882a593Smuzhiyun #define AR7010_GPIO_CLEAR 0x52010 1193*4882a593Smuzhiyun #define AR7010_GPIO_INT 0x52014 1194*4882a593Smuzhiyun #define AR7010_GPIO_INT_TYPE 0x52018 1195*4882a593Smuzhiyun #define AR7010_GPIO_INT_POLARITY 0x5201C 1196*4882a593Smuzhiyun #define AR7010_GPIO_PENDING 0x52020 1197*4882a593Smuzhiyun #define AR7010_GPIO_INT_MASK 0x52024 1198*4882a593Smuzhiyun #define AR7010_GPIO_FUNCTION 0x52028 1199*4882a593Smuzhiyun 1200*4882a593Smuzhiyun #define AR_GPIO_INTR_POL (AR_SREV_9340(ah) ? 0x4038 : \ 1201*4882a593Smuzhiyun (AR_SREV_9300_20_OR_LATER(ah) ? 0x4058 : 0x4050)) 1202*4882a593Smuzhiyun #define AR_GPIO_INTR_POL_VAL 0x0001FFFF 1203*4882a593Smuzhiyun #define AR_GPIO_INTR_POL_VAL_S 0 1204*4882a593Smuzhiyun 1205*4882a593Smuzhiyun #define AR_GPIO_INPUT_EN_VAL (AR_SREV_9340(ah) ? 0x403c : \ 1206*4882a593Smuzhiyun (AR_SREV_9300_20_OR_LATER(ah) ? 0x405c : 0x4054)) 1207*4882a593Smuzhiyun #define AR_GPIO_INPUT_EN_VAL_BT_PRIORITY_DEF 0x00000004 1208*4882a593Smuzhiyun #define AR_GPIO_INPUT_EN_VAL_BT_PRIORITY_S 2 1209*4882a593Smuzhiyun #define AR_GPIO_INPUT_EN_VAL_BT_FREQUENCY_DEF 0x00000008 1210*4882a593Smuzhiyun #define AR_GPIO_INPUT_EN_VAL_BT_FREQUENCY_S 3 1211*4882a593Smuzhiyun #define AR_GPIO_INPUT_EN_VAL_BT_ACTIVE_DEF 0x00000010 1212*4882a593Smuzhiyun #define AR_GPIO_INPUT_EN_VAL_BT_ACTIVE_S 4 1213*4882a593Smuzhiyun #define AR_GPIO_INPUT_EN_VAL_RFSILENT_DEF 0x00000080 1214*4882a593Smuzhiyun #define AR_GPIO_INPUT_EN_VAL_RFSILENT_DEF_S 7 1215*4882a593Smuzhiyun #define AR_GPIO_INPUT_EN_VAL_BT_PRIORITY_BB 0x00000400 1216*4882a593Smuzhiyun #define AR_GPIO_INPUT_EN_VAL_BT_PRIORITY_BB_S 10 1217*4882a593Smuzhiyun #define AR_GPIO_INPUT_EN_VAL_BT_ACTIVE_BB 0x00001000 1218*4882a593Smuzhiyun #define AR_GPIO_INPUT_EN_VAL_BT_ACTIVE_BB_S 12 1219*4882a593Smuzhiyun #define AR_GPIO_INPUT_EN_VAL_RFSILENT_BB 0x00008000 1220*4882a593Smuzhiyun #define AR_GPIO_INPUT_EN_VAL_RFSILENT_BB_S 15 1221*4882a593Smuzhiyun #define AR_GPIO_RTC_RESET_OVERRIDE_ENABLE 0x00010000 1222*4882a593Smuzhiyun #define AR_GPIO_JTAG_DISABLE 0x00020000 1223*4882a593Smuzhiyun 1224*4882a593Smuzhiyun #define AR_GPIO_INPUT_MUX1 (AR_SREV_9340(ah) ? 0x4040 : \ 1225*4882a593Smuzhiyun (AR_SREV_9300_20_OR_LATER(ah) ? 0x4060 : 0x4058)) 1226*4882a593Smuzhiyun #define AR_GPIO_INPUT_MUX1_BT_ACTIVE 0x000f0000 1227*4882a593Smuzhiyun #define AR_GPIO_INPUT_MUX1_BT_ACTIVE_S 16 1228*4882a593Smuzhiyun #define AR_GPIO_INPUT_MUX1_BT_PRIORITY 0x00000f00 1229*4882a593Smuzhiyun #define AR_GPIO_INPUT_MUX1_BT_PRIORITY_S 8 1230*4882a593Smuzhiyun 1231*4882a593Smuzhiyun #define AR_GPIO_INPUT_MUX2 (AR_SREV_9340(ah) ? 0x4044 : \ 1232*4882a593Smuzhiyun (AR_SREV_9300_20_OR_LATER(ah) ? 0x4064 : 0x405c)) 1233*4882a593Smuzhiyun #define AR_GPIO_INPUT_MUX2_CLK25 0x0000000f 1234*4882a593Smuzhiyun #define AR_GPIO_INPUT_MUX2_CLK25_S 0 1235*4882a593Smuzhiyun #define AR_GPIO_INPUT_MUX2_RFSILENT 0x000000f0 1236*4882a593Smuzhiyun #define AR_GPIO_INPUT_MUX2_RFSILENT_S 4 1237*4882a593Smuzhiyun #define AR_GPIO_INPUT_MUX2_RTC_RESET 0x00000f00 1238*4882a593Smuzhiyun #define AR_GPIO_INPUT_MUX2_RTC_RESET_S 8 1239*4882a593Smuzhiyun 1240*4882a593Smuzhiyun #define AR_GPIO_OUTPUT_MUX1 (AR_SREV_9340(ah) ? 0x4048 : \ 1241*4882a593Smuzhiyun (AR_SREV_9300_20_OR_LATER(ah) ? 0x4068 : 0x4060)) 1242*4882a593Smuzhiyun #define AR_GPIO_OUTPUT_MUX2 (AR_SREV_9340(ah) ? 0x404c : \ 1243*4882a593Smuzhiyun (AR_SREV_9300_20_OR_LATER(ah) ? 0x406c : 0x4064)) 1244*4882a593Smuzhiyun #define AR_GPIO_OUTPUT_MUX3 (AR_SREV_9340(ah) ? 0x4050 : \ 1245*4882a593Smuzhiyun (AR_SREV_9300_20_OR_LATER(ah) ? 0x4070 : 0x4068)) 1246*4882a593Smuzhiyun 1247*4882a593Smuzhiyun #define AR_INPUT_STATE (AR_SREV_9340(ah) ? 0x4054 : \ 1248*4882a593Smuzhiyun (AR_SREV_9300_20_OR_LATER(ah) ? 0x4074 : 0x406c)) 1249*4882a593Smuzhiyun 1250*4882a593Smuzhiyun #define AR_EEPROM_STATUS_DATA (AR_SREV_9340(ah) ? 0x40c8 : \ 1251*4882a593Smuzhiyun (AR_SREV_9300_20_OR_LATER(ah) ? 0x4084 : 0x407c)) 1252*4882a593Smuzhiyun #define AR_EEPROM_STATUS_DATA_VAL 0x0000ffff 1253*4882a593Smuzhiyun #define AR_EEPROM_STATUS_DATA_VAL_S 0 1254*4882a593Smuzhiyun #define AR_EEPROM_STATUS_DATA_BUSY 0x00010000 1255*4882a593Smuzhiyun #define AR_EEPROM_STATUS_DATA_BUSY_ACCESS 0x00020000 1256*4882a593Smuzhiyun #define AR_EEPROM_STATUS_DATA_PROT_ACCESS 0x00040000 1257*4882a593Smuzhiyun #define AR_EEPROM_STATUS_DATA_ABSENT_ACCESS 0x00080000 1258*4882a593Smuzhiyun 1259*4882a593Smuzhiyun #define AR_OBS (AR_SREV_9340(ah) ? 0x405c : \ 1260*4882a593Smuzhiyun (AR_SREV_9300_20_OR_LATER(ah) ? 0x4088 : 0x4080)) 1261*4882a593Smuzhiyun 1262*4882a593Smuzhiyun #define AR_GPIO_PDPU (AR_SREV_9300_20_OR_LATER(ah) ? 0x4090 : 0x4088) 1263*4882a593Smuzhiyun 1264*4882a593Smuzhiyun #define AR_PCIE_MSI (AR_SREV_9340(ah) ? 0x40d8 : \ 1265*4882a593Smuzhiyun (AR_SREV_9300_20_OR_LATER(ah) ? 0x40a4 : 0x4094)) 1266*4882a593Smuzhiyun #define AR_PCIE_MSI_ENABLE 0x00000001 1267*4882a593Smuzhiyun #define AR_PCIE_MSI_HW_DBI_WR_EN 0x02000000 1268*4882a593Smuzhiyun #define AR_PCIE_MSI_HW_INT_PENDING_ADDR 0xFFA0C1FF /* bits 8..11: value must be 0x5060 */ 1269*4882a593Smuzhiyun #define AR_PCIE_MSI_HW_INT_PENDING_ADDR_MSI_64 0xFFA0C9FF /* bits 8..11: value must be 0x5064 */ 1270*4882a593Smuzhiyun 1271*4882a593Smuzhiyun #define AR_INTR_PRIO_TX 0x00000001 1272*4882a593Smuzhiyun #define AR_INTR_PRIO_RXLP 0x00000002 1273*4882a593Smuzhiyun #define AR_INTR_PRIO_RXHP 0x00000004 1274*4882a593Smuzhiyun 1275*4882a593Smuzhiyun #define AR_INTR_PRIO_SYNC_ENABLE (AR_SREV_9340(ah) ? 0x4088 : 0x40c4) 1276*4882a593Smuzhiyun #define AR_INTR_PRIO_ASYNC_MASK (AR_SREV_9340(ah) ? 0x408c : 0x40c8) 1277*4882a593Smuzhiyun #define AR_INTR_PRIO_SYNC_MASK (AR_SREV_9340(ah) ? 0x4090 : 0x40cc) 1278*4882a593Smuzhiyun #define AR_INTR_PRIO_ASYNC_ENABLE (AR_SREV_9340(ah) ? 0x4094 : 0x40d4) 1279*4882a593Smuzhiyun #define AR_ENT_OTP 0x40d8 1280*4882a593Smuzhiyun #define AR_ENT_OTP_CHAIN2_DISABLE 0x00020000 1281*4882a593Smuzhiyun #define AR_ENT_OTP_49GHZ_DISABLE 0x00100000 1282*4882a593Smuzhiyun #define AR_ENT_OTP_MIN_PKT_SIZE_DISABLE 0x00800000 1283*4882a593Smuzhiyun 1284*4882a593Smuzhiyun #define AR_CH0_BB_DPLL1 0x16180 1285*4882a593Smuzhiyun #define AR_CH0_BB_DPLL1_REFDIV 0xF8000000 1286*4882a593Smuzhiyun #define AR_CH0_BB_DPLL1_REFDIV_S 27 1287*4882a593Smuzhiyun #define AR_CH0_BB_DPLL1_NINI 0x07FC0000 1288*4882a593Smuzhiyun #define AR_CH0_BB_DPLL1_NINI_S 18 1289*4882a593Smuzhiyun #define AR_CH0_BB_DPLL1_NFRAC 0x0003FFFF 1290*4882a593Smuzhiyun #define AR_CH0_BB_DPLL1_NFRAC_S 0 1291*4882a593Smuzhiyun 1292*4882a593Smuzhiyun #define AR_CH0_BB_DPLL2 0x16184 1293*4882a593Smuzhiyun #define AR_CH0_BB_DPLL2_LOCAL_PLL 0x40000000 1294*4882a593Smuzhiyun #define AR_CH0_BB_DPLL2_LOCAL_PLL_S 30 1295*4882a593Smuzhiyun #define AR_CH0_DPLL2_KI 0x3C000000 1296*4882a593Smuzhiyun #define AR_CH0_DPLL2_KI_S 26 1297*4882a593Smuzhiyun #define AR_CH0_DPLL2_KD 0x03F80000 1298*4882a593Smuzhiyun #define AR_CH0_DPLL2_KD_S 19 1299*4882a593Smuzhiyun #define AR_CH0_BB_DPLL2_EN_NEGTRIG 0x00040000 1300*4882a593Smuzhiyun #define AR_CH0_BB_DPLL2_EN_NEGTRIG_S 18 1301*4882a593Smuzhiyun #define AR_CH0_BB_DPLL2_PLL_PWD 0x00010000 1302*4882a593Smuzhiyun #define AR_CH0_BB_DPLL2_PLL_PWD_S 16 1303*4882a593Smuzhiyun #define AR_CH0_BB_DPLL2_OUTDIV 0x0000E000 1304*4882a593Smuzhiyun #define AR_CH0_BB_DPLL2_OUTDIV_S 13 1305*4882a593Smuzhiyun 1306*4882a593Smuzhiyun #define AR_CH0_BB_DPLL3 0x16188 1307*4882a593Smuzhiyun #define AR_CH0_BB_DPLL3_PHASE_SHIFT 0x3F800000 1308*4882a593Smuzhiyun #define AR_CH0_BB_DPLL3_PHASE_SHIFT_S 23 1309*4882a593Smuzhiyun 1310*4882a593Smuzhiyun #define AR_CH0_DDR_DPLL2 0x16244 1311*4882a593Smuzhiyun #define AR_CH0_DDR_DPLL3 0x16248 1312*4882a593Smuzhiyun #define AR_CH0_DPLL3_PHASE_SHIFT 0x3F800000 1313*4882a593Smuzhiyun #define AR_CH0_DPLL3_PHASE_SHIFT_S 23 1314*4882a593Smuzhiyun #define AR_PHY_CCA_NOM_VAL_2GHZ -118 1315*4882a593Smuzhiyun 1316*4882a593Smuzhiyun #define AR_RTC_9300_SOC_PLL_DIV_INT 0x0000003f 1317*4882a593Smuzhiyun #define AR_RTC_9300_SOC_PLL_DIV_INT_S 0 1318*4882a593Smuzhiyun #define AR_RTC_9300_SOC_PLL_DIV_FRAC 0x000fffc0 1319*4882a593Smuzhiyun #define AR_RTC_9300_SOC_PLL_DIV_FRAC_S 6 1320*4882a593Smuzhiyun #define AR_RTC_9300_SOC_PLL_REFDIV 0x01f00000 1321*4882a593Smuzhiyun #define AR_RTC_9300_SOC_PLL_REFDIV_S 20 1322*4882a593Smuzhiyun #define AR_RTC_9300_SOC_PLL_CLKSEL 0x06000000 1323*4882a593Smuzhiyun #define AR_RTC_9300_SOC_PLL_CLKSEL_S 25 1324*4882a593Smuzhiyun #define AR_RTC_9300_SOC_PLL_BYPASS 0x08000000 1325*4882a593Smuzhiyun 1326*4882a593Smuzhiyun #define AR_RTC_9300_PLL_DIV 0x000003ff 1327*4882a593Smuzhiyun #define AR_RTC_9300_PLL_DIV_S 0 1328*4882a593Smuzhiyun #define AR_RTC_9300_PLL_REFDIV 0x00003C00 1329*4882a593Smuzhiyun #define AR_RTC_9300_PLL_REFDIV_S 10 1330*4882a593Smuzhiyun #define AR_RTC_9300_PLL_CLKSEL 0x0000C000 1331*4882a593Smuzhiyun #define AR_RTC_9300_PLL_CLKSEL_S 14 1332*4882a593Smuzhiyun #define AR_RTC_9300_PLL_BYPASS 0x00010000 1333*4882a593Smuzhiyun 1334*4882a593Smuzhiyun #define AR_RTC_9160_PLL_DIV 0x000003ff 1335*4882a593Smuzhiyun #define AR_RTC_9160_PLL_DIV_S 0 1336*4882a593Smuzhiyun #define AR_RTC_9160_PLL_REFDIV 0x00003C00 1337*4882a593Smuzhiyun #define AR_RTC_9160_PLL_REFDIV_S 10 1338*4882a593Smuzhiyun #define AR_RTC_9160_PLL_CLKSEL 0x0000C000 1339*4882a593Smuzhiyun #define AR_RTC_9160_PLL_CLKSEL_S 14 1340*4882a593Smuzhiyun 1341*4882a593Smuzhiyun #define AR_RTC_BASE 0x00020000 1342*4882a593Smuzhiyun #define AR_RTC_RC \ 1343*4882a593Smuzhiyun ((AR_SREV_9100(ah)) ? (AR_RTC_BASE + 0x0000) : 0x7000) 1344*4882a593Smuzhiyun #define AR_RTC_RC_M 0x00000003 1345*4882a593Smuzhiyun #define AR_RTC_RC_MAC_WARM 0x00000001 1346*4882a593Smuzhiyun #define AR_RTC_RC_MAC_COLD 0x00000002 1347*4882a593Smuzhiyun #define AR_RTC_RC_COLD_RESET 0x00000004 1348*4882a593Smuzhiyun #define AR_RTC_RC_WARM_RESET 0x00000008 1349*4882a593Smuzhiyun 1350*4882a593Smuzhiyun /* Crystal Control */ 1351*4882a593Smuzhiyun #define AR_RTC_XTAL_CONTROL 0x7004 1352*4882a593Smuzhiyun 1353*4882a593Smuzhiyun /* Reg Control 0 */ 1354*4882a593Smuzhiyun #define AR_RTC_REG_CONTROL0 0x7008 1355*4882a593Smuzhiyun 1356*4882a593Smuzhiyun /* Reg Control 1 */ 1357*4882a593Smuzhiyun #define AR_RTC_REG_CONTROL1 0x700c 1358*4882a593Smuzhiyun #define AR_RTC_REG_CONTROL1_SWREG_PROGRAM 0x00000001 1359*4882a593Smuzhiyun 1360*4882a593Smuzhiyun #define AR_RTC_PLL_CONTROL \ 1361*4882a593Smuzhiyun ((AR_SREV_9100(ah)) ? (AR_RTC_BASE + 0x0014) : 0x7014) 1362*4882a593Smuzhiyun 1363*4882a593Smuzhiyun #define AR_RTC_PLL_CONTROL2 0x703c 1364*4882a593Smuzhiyun 1365*4882a593Smuzhiyun #define AR_RTC_PLL_DIV 0x0000001f 1366*4882a593Smuzhiyun #define AR_RTC_PLL_DIV_S 0 1367*4882a593Smuzhiyun #define AR_RTC_PLL_DIV2 0x00000020 1368*4882a593Smuzhiyun #define AR_RTC_PLL_REFDIV_5 0x000000c0 1369*4882a593Smuzhiyun #define AR_RTC_PLL_CLKSEL 0x00000300 1370*4882a593Smuzhiyun #define AR_RTC_PLL_CLKSEL_S 8 1371*4882a593Smuzhiyun #define AR_RTC_PLL_BYPASS 0x00010000 1372*4882a593Smuzhiyun #define AR_RTC_PLL_NOPWD 0x00040000 1373*4882a593Smuzhiyun #define AR_RTC_PLL_NOPWD_S 18 1374*4882a593Smuzhiyun 1375*4882a593Smuzhiyun #define PLL3 0x16188 1376*4882a593Smuzhiyun #define PLL3_DO_MEAS_MASK 0x40000000 1377*4882a593Smuzhiyun #define PLL4 0x1618c 1378*4882a593Smuzhiyun #define PLL4_MEAS_DONE 0x8 1379*4882a593Smuzhiyun #define SQSUM_DVC_MASK 0x007ffff8 1380*4882a593Smuzhiyun 1381*4882a593Smuzhiyun #define AR_RTC_RESET \ 1382*4882a593Smuzhiyun ((AR_SREV_9100(ah)) ? (AR_RTC_BASE + 0x0040) : 0x7040) 1383*4882a593Smuzhiyun #define AR_RTC_RESET_EN (0x00000001) 1384*4882a593Smuzhiyun 1385*4882a593Smuzhiyun #define AR_RTC_STATUS \ 1386*4882a593Smuzhiyun ((AR_SREV_9100(ah)) ? (AR_RTC_BASE + 0x0044) : 0x7044) 1387*4882a593Smuzhiyun 1388*4882a593Smuzhiyun #define AR_RTC_STATUS_M \ 1389*4882a593Smuzhiyun ((AR_SREV_9100(ah)) ? 0x0000003f : 0x0000000f) 1390*4882a593Smuzhiyun 1391*4882a593Smuzhiyun #define AR_RTC_PM_STATUS_M 0x0000000f 1392*4882a593Smuzhiyun 1393*4882a593Smuzhiyun #define AR_RTC_STATUS_SHUTDOWN 0x00000001 1394*4882a593Smuzhiyun #define AR_RTC_STATUS_ON 0x00000002 1395*4882a593Smuzhiyun #define AR_RTC_STATUS_SLEEP 0x00000004 1396*4882a593Smuzhiyun #define AR_RTC_STATUS_WAKEUP 0x00000008 1397*4882a593Smuzhiyun 1398*4882a593Smuzhiyun #define AR_RTC_SLEEP_CLK \ 1399*4882a593Smuzhiyun ((AR_SREV_9100(ah)) ? (AR_RTC_BASE + 0x0048) : 0x7048) 1400*4882a593Smuzhiyun #define AR_RTC_FORCE_DERIVED_CLK 0x2 1401*4882a593Smuzhiyun #define AR_RTC_FORCE_SWREG_PRD 0x00000004 1402*4882a593Smuzhiyun 1403*4882a593Smuzhiyun #define AR_RTC_FORCE_WAKE \ 1404*4882a593Smuzhiyun ((AR_SREV_9100(ah)) ? (AR_RTC_BASE + 0x004c) : 0x704c) 1405*4882a593Smuzhiyun #define AR_RTC_FORCE_WAKE_EN 0x00000001 1406*4882a593Smuzhiyun #define AR_RTC_FORCE_WAKE_ON_INT 0x00000002 1407*4882a593Smuzhiyun 1408*4882a593Smuzhiyun 1409*4882a593Smuzhiyun #define AR_RTC_INTR_CAUSE \ 1410*4882a593Smuzhiyun ((AR_SREV_9100(ah)) ? (AR_RTC_BASE + 0x0050) : 0x7050) 1411*4882a593Smuzhiyun 1412*4882a593Smuzhiyun #define AR_RTC_INTR_ENABLE \ 1413*4882a593Smuzhiyun ((AR_SREV_9100(ah)) ? (AR_RTC_BASE + 0x0054) : 0x7054) 1414*4882a593Smuzhiyun 1415*4882a593Smuzhiyun #define AR_RTC_INTR_MASK \ 1416*4882a593Smuzhiyun ((AR_SREV_9100(ah)) ? (AR_RTC_BASE + 0x0058) : 0x7058) 1417*4882a593Smuzhiyun 1418*4882a593Smuzhiyun #define AR_RTC_KEEP_AWAKE 0x7034 1419*4882a593Smuzhiyun 1420*4882a593Smuzhiyun /* RTC_DERIVED_* - only for AR9100 */ 1421*4882a593Smuzhiyun 1422*4882a593Smuzhiyun #define AR_RTC_DERIVED_CLK \ 1423*4882a593Smuzhiyun (AR_SREV_9100(ah) ? (AR_RTC_BASE + 0x0038) : 0x7038) 1424*4882a593Smuzhiyun #define AR_RTC_DERIVED_CLK_PERIOD 0x0000fffe 1425*4882a593Smuzhiyun #define AR_RTC_DERIVED_CLK_PERIOD_S 1 1426*4882a593Smuzhiyun 1427*4882a593Smuzhiyun #define AR_SEQ_MASK 0x8060 1428*4882a593Smuzhiyun 1429*4882a593Smuzhiyun #define AR_AN_RF2G1_CH0 0x7810 1430*4882a593Smuzhiyun #define AR_AN_RF2G1_CH0_OB 0x03800000 1431*4882a593Smuzhiyun #define AR_AN_RF2G1_CH0_OB_S 23 1432*4882a593Smuzhiyun #define AR_AN_RF2G1_CH0_DB 0x1C000000 1433*4882a593Smuzhiyun #define AR_AN_RF2G1_CH0_DB_S 26 1434*4882a593Smuzhiyun 1435*4882a593Smuzhiyun #define AR_AN_RF5G1_CH0 0x7818 1436*4882a593Smuzhiyun #define AR_AN_RF5G1_CH0_OB5 0x00070000 1437*4882a593Smuzhiyun #define AR_AN_RF5G1_CH0_OB5_S 16 1438*4882a593Smuzhiyun #define AR_AN_RF5G1_CH0_DB5 0x00380000 1439*4882a593Smuzhiyun #define AR_AN_RF5G1_CH0_DB5_S 19 1440*4882a593Smuzhiyun 1441*4882a593Smuzhiyun #define AR_AN_RF2G1_CH1 0x7834 1442*4882a593Smuzhiyun #define AR_AN_RF2G1_CH1_OB 0x03800000 1443*4882a593Smuzhiyun #define AR_AN_RF2G1_CH1_OB_S 23 1444*4882a593Smuzhiyun #define AR_AN_RF2G1_CH1_DB 0x1C000000 1445*4882a593Smuzhiyun #define AR_AN_RF2G1_CH1_DB_S 26 1446*4882a593Smuzhiyun 1447*4882a593Smuzhiyun #define AR_AN_RF5G1_CH1 0x783C 1448*4882a593Smuzhiyun #define AR_AN_RF5G1_CH1_OB5 0x00070000 1449*4882a593Smuzhiyun #define AR_AN_RF5G1_CH1_OB5_S 16 1450*4882a593Smuzhiyun #define AR_AN_RF5G1_CH1_DB5 0x00380000 1451*4882a593Smuzhiyun #define AR_AN_RF5G1_CH1_DB5_S 19 1452*4882a593Smuzhiyun 1453*4882a593Smuzhiyun #define AR_AN_TOP1 0x7890 1454*4882a593Smuzhiyun #define AR_AN_TOP1_DACIPMODE 0x00040000 1455*4882a593Smuzhiyun #define AR_AN_TOP1_DACIPMODE_S 18 1456*4882a593Smuzhiyun 1457*4882a593Smuzhiyun #define AR_AN_TOP2 0x7894 1458*4882a593Smuzhiyun #define AR_AN_TOP2_XPABIAS_LVL 0xC0000000 1459*4882a593Smuzhiyun #define AR_AN_TOP2_XPABIAS_LVL_S 30 1460*4882a593Smuzhiyun #define AR_AN_TOP2_LOCALBIAS 0x00200000 1461*4882a593Smuzhiyun #define AR_AN_TOP2_LOCALBIAS_S 21 1462*4882a593Smuzhiyun #define AR_AN_TOP2_PWDCLKIND 0x00400000 1463*4882a593Smuzhiyun #define AR_AN_TOP2_PWDCLKIND_S 22 1464*4882a593Smuzhiyun 1465*4882a593Smuzhiyun #define AR_AN_SYNTH9 0x7868 1466*4882a593Smuzhiyun #define AR_AN_SYNTH9_REFDIVA 0xf8000000 1467*4882a593Smuzhiyun #define AR_AN_SYNTH9_REFDIVA_S 27 1468*4882a593Smuzhiyun 1469*4882a593Smuzhiyun #define AR9285_AN_RF2G1 0x7820 1470*4882a593Smuzhiyun #define AR9285_AN_RF2G1_ENPACAL 0x00000800 1471*4882a593Smuzhiyun #define AR9285_AN_RF2G1_ENPACAL_S 11 1472*4882a593Smuzhiyun #define AR9285_AN_RF2G1_PDPADRV1 0x02000000 1473*4882a593Smuzhiyun #define AR9285_AN_RF2G1_PDPADRV1_S 25 1474*4882a593Smuzhiyun #define AR9285_AN_RF2G1_PDPADRV2 0x01000000 1475*4882a593Smuzhiyun #define AR9285_AN_RF2G1_PDPADRV2_S 24 1476*4882a593Smuzhiyun #define AR9285_AN_RF2G1_PDPAOUT 0x00800000 1477*4882a593Smuzhiyun #define AR9285_AN_RF2G1_PDPAOUT_S 23 1478*4882a593Smuzhiyun 1479*4882a593Smuzhiyun 1480*4882a593Smuzhiyun #define AR9285_AN_RF2G2 0x7824 1481*4882a593Smuzhiyun #define AR9285_AN_RF2G2_OFFCAL 0x00001000 1482*4882a593Smuzhiyun #define AR9285_AN_RF2G2_OFFCAL_S 12 1483*4882a593Smuzhiyun 1484*4882a593Smuzhiyun #define AR9285_AN_RF2G3 0x7828 1485*4882a593Smuzhiyun #define AR9285_AN_RF2G3_PDVCCOMP 0x02000000 1486*4882a593Smuzhiyun #define AR9285_AN_RF2G3_PDVCCOMP_S 25 1487*4882a593Smuzhiyun #define AR9285_AN_RF2G3_OB_0 0x00E00000 1488*4882a593Smuzhiyun #define AR9285_AN_RF2G3_OB_0_S 21 1489*4882a593Smuzhiyun #define AR9285_AN_RF2G3_OB_1 0x001C0000 1490*4882a593Smuzhiyun #define AR9285_AN_RF2G3_OB_1_S 18 1491*4882a593Smuzhiyun #define AR9285_AN_RF2G3_OB_2 0x00038000 1492*4882a593Smuzhiyun #define AR9285_AN_RF2G3_OB_2_S 15 1493*4882a593Smuzhiyun #define AR9285_AN_RF2G3_OB_3 0x00007000 1494*4882a593Smuzhiyun #define AR9285_AN_RF2G3_OB_3_S 12 1495*4882a593Smuzhiyun #define AR9285_AN_RF2G3_OB_4 0x00000E00 1496*4882a593Smuzhiyun #define AR9285_AN_RF2G3_OB_4_S 9 1497*4882a593Smuzhiyun 1498*4882a593Smuzhiyun #define AR9285_AN_RF2G3_DB1_0 0x000001C0 1499*4882a593Smuzhiyun #define AR9285_AN_RF2G3_DB1_0_S 6 1500*4882a593Smuzhiyun #define AR9285_AN_RF2G3_DB1_1 0x00000038 1501*4882a593Smuzhiyun #define AR9285_AN_RF2G3_DB1_1_S 3 1502*4882a593Smuzhiyun #define AR9285_AN_RF2G3_DB1_2 0x00000007 1503*4882a593Smuzhiyun #define AR9285_AN_RF2G3_DB1_2_S 0 1504*4882a593Smuzhiyun #define AR9285_AN_RF2G4 0x782C 1505*4882a593Smuzhiyun #define AR9285_AN_RF2G4_DB1_3 0xE0000000 1506*4882a593Smuzhiyun #define AR9285_AN_RF2G4_DB1_3_S 29 1507*4882a593Smuzhiyun #define AR9285_AN_RF2G4_DB1_4 0x1C000000 1508*4882a593Smuzhiyun #define AR9285_AN_RF2G4_DB1_4_S 26 1509*4882a593Smuzhiyun 1510*4882a593Smuzhiyun #define AR9285_AN_RF2G4_DB2_0 0x03800000 1511*4882a593Smuzhiyun #define AR9285_AN_RF2G4_DB2_0_S 23 1512*4882a593Smuzhiyun #define AR9285_AN_RF2G4_DB2_1 0x00700000 1513*4882a593Smuzhiyun #define AR9285_AN_RF2G4_DB2_1_S 20 1514*4882a593Smuzhiyun #define AR9285_AN_RF2G4_DB2_2 0x000E0000 1515*4882a593Smuzhiyun #define AR9285_AN_RF2G4_DB2_2_S 17 1516*4882a593Smuzhiyun #define AR9285_AN_RF2G4_DB2_3 0x0001C000 1517*4882a593Smuzhiyun #define AR9285_AN_RF2G4_DB2_3_S 14 1518*4882a593Smuzhiyun #define AR9285_AN_RF2G4_DB2_4 0x00003800 1519*4882a593Smuzhiyun #define AR9285_AN_RF2G4_DB2_4_S 11 1520*4882a593Smuzhiyun 1521*4882a593Smuzhiyun #define AR9285_RF2G5 0x7830 1522*4882a593Smuzhiyun #define AR9285_RF2G5_IC50TX 0xfffff8ff 1523*4882a593Smuzhiyun #define AR9285_RF2G5_IC50TX_SET 0x00000400 1524*4882a593Smuzhiyun #define AR9285_RF2G5_IC50TX_XE_SET 0x00000500 1525*4882a593Smuzhiyun #define AR9285_RF2G5_IC50TX_CLEAR 0x00000700 1526*4882a593Smuzhiyun #define AR9285_RF2G5_IC50TX_CLEAR_S 8 1527*4882a593Smuzhiyun 1528*4882a593Smuzhiyun /* AR9271 : 0x7828, 0x782c different setting from AR9285 */ 1529*4882a593Smuzhiyun #define AR9271_AN_RF2G3_OB_cck 0x001C0000 1530*4882a593Smuzhiyun #define AR9271_AN_RF2G3_OB_cck_S 18 1531*4882a593Smuzhiyun #define AR9271_AN_RF2G3_OB_psk 0x00038000 1532*4882a593Smuzhiyun #define AR9271_AN_RF2G3_OB_psk_S 15 1533*4882a593Smuzhiyun #define AR9271_AN_RF2G3_OB_qam 0x00007000 1534*4882a593Smuzhiyun #define AR9271_AN_RF2G3_OB_qam_S 12 1535*4882a593Smuzhiyun 1536*4882a593Smuzhiyun #define AR9271_AN_RF2G3_DB_1 0x00E00000 1537*4882a593Smuzhiyun #define AR9271_AN_RF2G3_DB_1_S 21 1538*4882a593Smuzhiyun 1539*4882a593Smuzhiyun #define AR9271_AN_RF2G3_CCOMP 0xFFF 1540*4882a593Smuzhiyun #define AR9271_AN_RF2G3_CCOMP_S 0 1541*4882a593Smuzhiyun 1542*4882a593Smuzhiyun #define AR9271_AN_RF2G4_DB_2 0xE0000000 1543*4882a593Smuzhiyun #define AR9271_AN_RF2G4_DB_2_S 29 1544*4882a593Smuzhiyun 1545*4882a593Smuzhiyun #define AR9285_AN_RF2G6 0x7834 1546*4882a593Smuzhiyun #define AR9285_AN_RF2G6_CCOMP 0x00007800 1547*4882a593Smuzhiyun #define AR9285_AN_RF2G6_CCOMP_S 11 1548*4882a593Smuzhiyun #define AR9285_AN_RF2G6_OFFS 0x03f00000 1549*4882a593Smuzhiyun #define AR9285_AN_RF2G6_OFFS_S 20 1550*4882a593Smuzhiyun 1551*4882a593Smuzhiyun #define AR9271_AN_RF2G6_OFFS 0x07f00000 1552*4882a593Smuzhiyun #define AR9271_AN_RF2G6_OFFS_S 20 1553*4882a593Smuzhiyun 1554*4882a593Smuzhiyun #define AR9285_AN_RF2G7 0x7838 1555*4882a593Smuzhiyun #define AR9285_AN_RF2G7_PWDDB 0x00000002 1556*4882a593Smuzhiyun #define AR9285_AN_RF2G7_PWDDB_S 1 1557*4882a593Smuzhiyun #define AR9285_AN_RF2G7_PADRVGN2TAB0 0xE0000000 1558*4882a593Smuzhiyun #define AR9285_AN_RF2G7_PADRVGN2TAB0_S 29 1559*4882a593Smuzhiyun 1560*4882a593Smuzhiyun #define AR9285_AN_RF2G8 0x783C 1561*4882a593Smuzhiyun #define AR9285_AN_RF2G8_PADRVGN2TAB0 0x0001C000 1562*4882a593Smuzhiyun #define AR9285_AN_RF2G8_PADRVGN2TAB0_S 14 1563*4882a593Smuzhiyun 1564*4882a593Smuzhiyun 1565*4882a593Smuzhiyun #define AR9285_AN_RF2G9 0x7840 1566*4882a593Smuzhiyun #define AR9285_AN_RXTXBB1 0x7854 1567*4882a593Smuzhiyun #define AR9285_AN_RXTXBB1_PDRXTXBB1 0x00000020 1568*4882a593Smuzhiyun #define AR9285_AN_RXTXBB1_PDRXTXBB1_S 5 1569*4882a593Smuzhiyun #define AR9285_AN_RXTXBB1_PDV2I 0x00000080 1570*4882a593Smuzhiyun #define AR9285_AN_RXTXBB1_PDV2I_S 7 1571*4882a593Smuzhiyun #define AR9285_AN_RXTXBB1_PDDACIF 0x00000100 1572*4882a593Smuzhiyun #define AR9285_AN_RXTXBB1_PDDACIF_S 8 1573*4882a593Smuzhiyun #define AR9285_AN_RXTXBB1_SPARE9 0x00000001 1574*4882a593Smuzhiyun #define AR9285_AN_RXTXBB1_SPARE9_S 0 1575*4882a593Smuzhiyun 1576*4882a593Smuzhiyun #define AR9285_AN_TOP2 0x7868 1577*4882a593Smuzhiyun 1578*4882a593Smuzhiyun #define AR9285_AN_TOP3 0x786c 1579*4882a593Smuzhiyun #define AR9285_AN_TOP3_XPABIAS_LVL 0x0000000C 1580*4882a593Smuzhiyun #define AR9285_AN_TOP3_XPABIAS_LVL_S 2 1581*4882a593Smuzhiyun #define AR9285_AN_TOP3_PWDDAC 0x00800000 1582*4882a593Smuzhiyun #define AR9285_AN_TOP3_PWDDAC_S 23 1583*4882a593Smuzhiyun 1584*4882a593Smuzhiyun #define AR9285_AN_TOP4 0x7870 1585*4882a593Smuzhiyun #define AR9285_AN_TOP4_DEFAULT 0x10142c00 1586*4882a593Smuzhiyun 1587*4882a593Smuzhiyun #define AR9287_AN_RF2G3_CH0 0x7808 1588*4882a593Smuzhiyun #define AR9287_AN_RF2G3_CH1 0x785c 1589*4882a593Smuzhiyun #define AR9287_AN_RF2G3_DB1 0xE0000000 1590*4882a593Smuzhiyun #define AR9287_AN_RF2G3_DB1_S 29 1591*4882a593Smuzhiyun #define AR9287_AN_RF2G3_DB2 0x1C000000 1592*4882a593Smuzhiyun #define AR9287_AN_RF2G3_DB2_S 26 1593*4882a593Smuzhiyun #define AR9287_AN_RF2G3_OB_CCK 0x03800000 1594*4882a593Smuzhiyun #define AR9287_AN_RF2G3_OB_CCK_S 23 1595*4882a593Smuzhiyun #define AR9287_AN_RF2G3_OB_PSK 0x00700000 1596*4882a593Smuzhiyun #define AR9287_AN_RF2G3_OB_PSK_S 20 1597*4882a593Smuzhiyun #define AR9287_AN_RF2G3_OB_QAM 0x000E0000 1598*4882a593Smuzhiyun #define AR9287_AN_RF2G3_OB_QAM_S 17 1599*4882a593Smuzhiyun #define AR9287_AN_RF2G3_OB_PAL_OFF 0x0001C000 1600*4882a593Smuzhiyun #define AR9287_AN_RF2G3_OB_PAL_OFF_S 14 1601*4882a593Smuzhiyun 1602*4882a593Smuzhiyun #define AR9287_AN_TXPC0 0x7898 1603*4882a593Smuzhiyun #define AR9287_AN_TXPC0_TXPCMODE 0x0000C000 1604*4882a593Smuzhiyun #define AR9287_AN_TXPC0_TXPCMODE_S 14 1605*4882a593Smuzhiyun #define AR9287_AN_TXPC0_TXPCMODE_NORMAL 0 1606*4882a593Smuzhiyun #define AR9287_AN_TXPC0_TXPCMODE_TEST 1 1607*4882a593Smuzhiyun #define AR9287_AN_TXPC0_TXPCMODE_TEMPSENSE 2 1608*4882a593Smuzhiyun #define AR9287_AN_TXPC0_TXPCMODE_ATBTEST 3 1609*4882a593Smuzhiyun 1610*4882a593Smuzhiyun #define AR9287_AN_TOP2 0x78b4 1611*4882a593Smuzhiyun #define AR9287_AN_TOP2_XPABIAS_LVL 0xC0000000 1612*4882a593Smuzhiyun #define AR9287_AN_TOP2_XPABIAS_LVL_S 30 1613*4882a593Smuzhiyun 1614*4882a593Smuzhiyun /* AR9271 specific stuff */ 1615*4882a593Smuzhiyun #define AR9271_RESET_POWER_DOWN_CONTROL 0x50044 1616*4882a593Smuzhiyun #define AR9271_RADIO_RF_RST 0x20 1617*4882a593Smuzhiyun #define AR9271_GATE_MAC_CTL 0x4000 1618*4882a593Smuzhiyun 1619*4882a593Smuzhiyun #define AR_STA_ID1_STA_AP 0x00010000 1620*4882a593Smuzhiyun #define AR_STA_ID1_ADHOC 0x00020000 1621*4882a593Smuzhiyun #define AR_STA_ID1_PWR_SAV 0x00040000 1622*4882a593Smuzhiyun #define AR_STA_ID1_KSRCHDIS 0x00080000 1623*4882a593Smuzhiyun #define AR_STA_ID1_PCF 0x00100000 1624*4882a593Smuzhiyun #define AR_STA_ID1_USE_DEFANT 0x00200000 1625*4882a593Smuzhiyun #define AR_STA_ID1_DEFANT_UPDATE 0x00400000 1626*4882a593Smuzhiyun #define AR_STA_ID1_AR9100_BA_FIX 0x00400000 1627*4882a593Smuzhiyun #define AR_STA_ID1_RTS_USE_DEF 0x00800000 1628*4882a593Smuzhiyun #define AR_STA_ID1_ACKCTS_6MB 0x01000000 1629*4882a593Smuzhiyun #define AR_STA_ID1_BASE_RATE_11B 0x02000000 1630*4882a593Smuzhiyun #define AR_STA_ID1_SECTOR_SELF_GEN 0x04000000 1631*4882a593Smuzhiyun #define AR_STA_ID1_CRPT_MIC_ENABLE 0x08000000 1632*4882a593Smuzhiyun #define AR_STA_ID1_KSRCH_MODE 0x10000000 1633*4882a593Smuzhiyun #define AR_STA_ID1_PRESERVE_SEQNUM 0x20000000 1634*4882a593Smuzhiyun #define AR_STA_ID1_CBCIV_ENDIAN 0x40000000 1635*4882a593Smuzhiyun #define AR_STA_ID1_MCAST_KSRCH 0x80000000 1636*4882a593Smuzhiyun 1637*4882a593Smuzhiyun #define AR_BSS_ID0 0x8008 1638*4882a593Smuzhiyun #define AR_BSS_ID1 0x800C 1639*4882a593Smuzhiyun #define AR_BSS_ID1_U16 0x0000FFFF 1640*4882a593Smuzhiyun #define AR_BSS_ID1_AID 0x07FF0000 1641*4882a593Smuzhiyun #define AR_BSS_ID1_AID_S 16 1642*4882a593Smuzhiyun 1643*4882a593Smuzhiyun #define AR_BCN_RSSI_AVE 0x8010 1644*4882a593Smuzhiyun #define AR_BCN_RSSI_AVE_MASK 0x00000FFF 1645*4882a593Smuzhiyun 1646*4882a593Smuzhiyun #define AR_TIME_OUT 0x8014 1647*4882a593Smuzhiyun #define AR_TIME_OUT_ACK 0x00003FFF 1648*4882a593Smuzhiyun #define AR_TIME_OUT_ACK_S 0 1649*4882a593Smuzhiyun #define AR_TIME_OUT_CTS 0x3FFF0000 1650*4882a593Smuzhiyun #define AR_TIME_OUT_CTS_S 16 1651*4882a593Smuzhiyun 1652*4882a593Smuzhiyun #define AR_RSSI_THR 0x8018 1653*4882a593Smuzhiyun #define AR_RSSI_THR_MASK 0x000000FF 1654*4882a593Smuzhiyun #define AR_RSSI_THR_BM_THR 0x0000FF00 1655*4882a593Smuzhiyun #define AR_RSSI_THR_BM_THR_S 8 1656*4882a593Smuzhiyun #define AR_RSSI_BCN_WEIGHT 0x1F000000 1657*4882a593Smuzhiyun #define AR_RSSI_BCN_WEIGHT_S 24 1658*4882a593Smuzhiyun #define AR_RSSI_BCN_RSSI_RST 0x20000000 1659*4882a593Smuzhiyun 1660*4882a593Smuzhiyun #define AR_USEC 0x801c 1661*4882a593Smuzhiyun #define AR_USEC_USEC 0x0000007F 1662*4882a593Smuzhiyun #define AR_USEC_TX_LAT 0x007FC000 1663*4882a593Smuzhiyun #define AR_USEC_TX_LAT_S 14 1664*4882a593Smuzhiyun #define AR_USEC_RX_LAT 0x1F800000 1665*4882a593Smuzhiyun #define AR_USEC_RX_LAT_S 23 1666*4882a593Smuzhiyun #define AR_USEC_ASYNC_FIFO 0x12E00074 1667*4882a593Smuzhiyun 1668*4882a593Smuzhiyun #define AR_RESET_TSF 0x8020 1669*4882a593Smuzhiyun #define AR_RESET_TSF_ONCE 0x01000000 1670*4882a593Smuzhiyun #define AR_RESET_TSF2_ONCE 0x02000000 1671*4882a593Smuzhiyun 1672*4882a593Smuzhiyun #define AR_MAX_CFP_DUR 0x8038 1673*4882a593Smuzhiyun #define AR_CFP_VAL 0x0000FFFF 1674*4882a593Smuzhiyun 1675*4882a593Smuzhiyun #define AR_RX_FILTER 0x803C 1676*4882a593Smuzhiyun 1677*4882a593Smuzhiyun #define AR_MCAST_FIL0 0x8040 1678*4882a593Smuzhiyun #define AR_MCAST_FIL1 0x8044 1679*4882a593Smuzhiyun 1680*4882a593Smuzhiyun /* 1681*4882a593Smuzhiyun * AR_DIAG_SW - Register which can be used for diagnostics and testing purposes. 1682*4882a593Smuzhiyun * 1683*4882a593Smuzhiyun * The force RX abort (AR_DIAG_RX_ABORT, bit 25) can be used in conjunction with 1684*4882a593Smuzhiyun * RX block (AR_DIAG_RX_DIS, bit 5) to help fast channel change to shut down 1685*4882a593Smuzhiyun * receive. The force RX abort bit will kill any frame which is currently being 1686*4882a593Smuzhiyun * transferred between the MAC and baseband. The RX block bit (AR_DIAG_RX_DIS) 1687*4882a593Smuzhiyun * will prevent any new frames from getting started. 1688*4882a593Smuzhiyun */ 1689*4882a593Smuzhiyun #define AR_DIAG_SW 0x8048 1690*4882a593Smuzhiyun #define AR_DIAG_CACHE_ACK 0x00000001 1691*4882a593Smuzhiyun #define AR_DIAG_ACK_DIS 0x00000002 1692*4882a593Smuzhiyun #define AR_DIAG_CTS_DIS 0x00000004 1693*4882a593Smuzhiyun #define AR_DIAG_ENCRYPT_DIS 0x00000008 1694*4882a593Smuzhiyun #define AR_DIAG_DECRYPT_DIS 0x00000010 1695*4882a593Smuzhiyun #define AR_DIAG_RX_DIS 0x00000020 /* RX block */ 1696*4882a593Smuzhiyun #define AR_DIAG_LOOP_BACK 0x00000040 1697*4882a593Smuzhiyun #define AR_DIAG_CORR_FCS 0x00000080 1698*4882a593Smuzhiyun #define AR_DIAG_CHAN_INFO 0x00000100 1699*4882a593Smuzhiyun #define AR_DIAG_SCRAM_SEED 0x0001FE00 1700*4882a593Smuzhiyun #define AR_DIAG_SCRAM_SEED_S 8 1701*4882a593Smuzhiyun #define AR_DIAG_FRAME_NV0 0x00020000 1702*4882a593Smuzhiyun #define AR_DIAG_OBS_PT_SEL1 0x000C0000 1703*4882a593Smuzhiyun #define AR_DIAG_OBS_PT_SEL1_S 18 1704*4882a593Smuzhiyun #define AR_DIAG_OBS_PT_SEL2 0x08000000 1705*4882a593Smuzhiyun #define AR_DIAG_OBS_PT_SEL2_S 27 1706*4882a593Smuzhiyun #define AR_DIAG_FORCE_RX_CLEAR 0x00100000 /* force rx_clear high */ 1707*4882a593Smuzhiyun #define AR_DIAG_IGNORE_VIRT_CS 0x00200000 1708*4882a593Smuzhiyun #define AR_DIAG_FORCE_CH_IDLE_HIGH 0x00400000 1709*4882a593Smuzhiyun #define AR_DIAG_EIFS_CTRL_ENA 0x00800000 1710*4882a593Smuzhiyun #define AR_DIAG_DUAL_CHAIN_INFO 0x01000000 1711*4882a593Smuzhiyun #define AR_DIAG_RX_ABORT 0x02000000 /* Force RX abort */ 1712*4882a593Smuzhiyun #define AR_DIAG_SATURATE_CYCLE_CNT 0x04000000 1713*4882a593Smuzhiyun #define AR_DIAG_OBS_PT_SEL2 0x08000000 1714*4882a593Smuzhiyun #define AR_DIAG_RX_CLEAR_CTL_LOW 0x10000000 1715*4882a593Smuzhiyun #define AR_DIAG_RX_CLEAR_EXT_LOW 0x20000000 1716*4882a593Smuzhiyun 1717*4882a593Smuzhiyun #define AR_TSF_L32 0x804c 1718*4882a593Smuzhiyun #define AR_TSF_U32 0x8050 1719*4882a593Smuzhiyun 1720*4882a593Smuzhiyun #define AR_TST_ADDAC 0x8054 1721*4882a593Smuzhiyun #define AR_DEF_ANTENNA 0x8058 1722*4882a593Smuzhiyun 1723*4882a593Smuzhiyun #define AR_AES_MUTE_MASK0 0x805c 1724*4882a593Smuzhiyun #define AR_AES_MUTE_MASK0_FC 0x0000FFFF 1725*4882a593Smuzhiyun #define AR_AES_MUTE_MASK0_QOS 0xFFFF0000 1726*4882a593Smuzhiyun #define AR_AES_MUTE_MASK0_QOS_S 16 1727*4882a593Smuzhiyun 1728*4882a593Smuzhiyun #define AR_AES_MUTE_MASK1 0x8060 1729*4882a593Smuzhiyun #define AR_AES_MUTE_MASK1_SEQ 0x0000FFFF 1730*4882a593Smuzhiyun #define AR_AES_MUTE_MASK1_FC_MGMT 0xFFFF0000 1731*4882a593Smuzhiyun #define AR_AES_MUTE_MASK1_FC_MGMT_S 16 1732*4882a593Smuzhiyun 1733*4882a593Smuzhiyun #define AR_GATED_CLKS 0x8064 1734*4882a593Smuzhiyun #define AR_GATED_CLKS_TX 0x00000002 1735*4882a593Smuzhiyun #define AR_GATED_CLKS_RX 0x00000004 1736*4882a593Smuzhiyun #define AR_GATED_CLKS_REG 0x00000008 1737*4882a593Smuzhiyun 1738*4882a593Smuzhiyun #define AR_OBS_BUS_CTRL 0x8068 1739*4882a593Smuzhiyun #define AR_OBS_BUS_SEL_1 0x00040000 1740*4882a593Smuzhiyun #define AR_OBS_BUS_SEL_2 0x00080000 1741*4882a593Smuzhiyun #define AR_OBS_BUS_SEL_3 0x000C0000 1742*4882a593Smuzhiyun #define AR_OBS_BUS_SEL_4 0x08040000 1743*4882a593Smuzhiyun #define AR_OBS_BUS_SEL_5 0x08080000 1744*4882a593Smuzhiyun 1745*4882a593Smuzhiyun #define AR_OBS_BUS_1 0x806c 1746*4882a593Smuzhiyun #define AR_OBS_BUS_1_PCU 0x00000001 1747*4882a593Smuzhiyun #define AR_OBS_BUS_1_RX_END 0x00000002 1748*4882a593Smuzhiyun #define AR_OBS_BUS_1_RX_WEP 0x00000004 1749*4882a593Smuzhiyun #define AR_OBS_BUS_1_RX_BEACON 0x00000008 1750*4882a593Smuzhiyun #define AR_OBS_BUS_1_RX_FILTER 0x00000010 1751*4882a593Smuzhiyun #define AR_OBS_BUS_1_TX_HCF 0x00000020 1752*4882a593Smuzhiyun #define AR_OBS_BUS_1_QUIET_TIME 0x00000040 1753*4882a593Smuzhiyun #define AR_OBS_BUS_1_CHAN_IDLE 0x00000080 1754*4882a593Smuzhiyun #define AR_OBS_BUS_1_TX_HOLD 0x00000100 1755*4882a593Smuzhiyun #define AR_OBS_BUS_1_TX_FRAME 0x00000200 1756*4882a593Smuzhiyun #define AR_OBS_BUS_1_RX_FRAME 0x00000400 1757*4882a593Smuzhiyun #define AR_OBS_BUS_1_RX_CLEAR 0x00000800 1758*4882a593Smuzhiyun #define AR_OBS_BUS_1_WEP_STATE 0x0003F000 1759*4882a593Smuzhiyun #define AR_OBS_BUS_1_WEP_STATE_S 12 1760*4882a593Smuzhiyun #define AR_OBS_BUS_1_RX_STATE 0x01F00000 1761*4882a593Smuzhiyun #define AR_OBS_BUS_1_RX_STATE_S 20 1762*4882a593Smuzhiyun #define AR_OBS_BUS_1_TX_STATE 0x7E000000 1763*4882a593Smuzhiyun #define AR_OBS_BUS_1_TX_STATE_S 25 1764*4882a593Smuzhiyun 1765*4882a593Smuzhiyun #define AR_LAST_TSTP 0x8080 1766*4882a593Smuzhiyun #define AR_NAV 0x8084 1767*4882a593Smuzhiyun #define AR_RTS_OK 0x8088 1768*4882a593Smuzhiyun #define AR_RTS_FAIL 0x808c 1769*4882a593Smuzhiyun #define AR_ACK_FAIL 0x8090 1770*4882a593Smuzhiyun #define AR_FCS_FAIL 0x8094 1771*4882a593Smuzhiyun #define AR_BEACON_CNT 0x8098 1772*4882a593Smuzhiyun 1773*4882a593Smuzhiyun #define AR_SLEEP1 0x80d4 1774*4882a593Smuzhiyun #define AR_SLEEP1_ASSUME_DTIM 0x00080000 1775*4882a593Smuzhiyun #define AR_SLEEP1_CAB_TIMEOUT 0xFFE00000 1776*4882a593Smuzhiyun #define AR_SLEEP1_CAB_TIMEOUT_S 21 1777*4882a593Smuzhiyun 1778*4882a593Smuzhiyun #define AR_SLEEP2 0x80d8 1779*4882a593Smuzhiyun #define AR_SLEEP2_BEACON_TIMEOUT 0xFFE00000 1780*4882a593Smuzhiyun #define AR_SLEEP2_BEACON_TIMEOUT_S 21 1781*4882a593Smuzhiyun 1782*4882a593Smuzhiyun #define AR_TPC 0x80e8 1783*4882a593Smuzhiyun #define AR_TPC_ACK 0x0000003f 1784*4882a593Smuzhiyun #define AR_TPC_ACK_S 0 1785*4882a593Smuzhiyun #define AR_TPC_CTS 0x00003f00 1786*4882a593Smuzhiyun #define AR_TPC_CTS_S 8 1787*4882a593Smuzhiyun #define AR_TPC_CHIRP 0x003f0000 1788*4882a593Smuzhiyun #define AR_TPC_CHIRP_S 16 1789*4882a593Smuzhiyun #define AR_TPC_RPT 0x3f000000 1790*4882a593Smuzhiyun #define AR_TPC_RPT_S 24 1791*4882a593Smuzhiyun 1792*4882a593Smuzhiyun #define AR_QUIET1 0x80fc 1793*4882a593Smuzhiyun #define AR_QUIET1_NEXT_QUIET_S 0 1794*4882a593Smuzhiyun #define AR_QUIET1_NEXT_QUIET_M 0x0000ffff 1795*4882a593Smuzhiyun #define AR_QUIET1_QUIET_ENABLE 0x00010000 1796*4882a593Smuzhiyun #define AR_QUIET1_QUIET_ACK_CTS_ENABLE 0x00020000 1797*4882a593Smuzhiyun #define AR_QUIET1_QUIET_ACK_CTS_ENABLE_S 17 1798*4882a593Smuzhiyun #define AR_QUIET2 0x8100 1799*4882a593Smuzhiyun #define AR_QUIET2_QUIET_PERIOD_S 0 1800*4882a593Smuzhiyun #define AR_QUIET2_QUIET_PERIOD_M 0x0000ffff 1801*4882a593Smuzhiyun #define AR_QUIET2_QUIET_DUR_S 16 1802*4882a593Smuzhiyun #define AR_QUIET2_QUIET_DUR 0xffff0000 1803*4882a593Smuzhiyun 1804*4882a593Smuzhiyun #define AR_TSF_PARM 0x8104 1805*4882a593Smuzhiyun #define AR_TSF_INCREMENT_M 0x000000ff 1806*4882a593Smuzhiyun #define AR_TSF_INCREMENT_S 0x00 1807*4882a593Smuzhiyun 1808*4882a593Smuzhiyun #define AR_QOS_NO_ACK 0x8108 1809*4882a593Smuzhiyun #define AR_QOS_NO_ACK_TWO_BIT 0x0000000f 1810*4882a593Smuzhiyun #define AR_QOS_NO_ACK_TWO_BIT_S 0 1811*4882a593Smuzhiyun #define AR_QOS_NO_ACK_BIT_OFF 0x00000070 1812*4882a593Smuzhiyun #define AR_QOS_NO_ACK_BIT_OFF_S 4 1813*4882a593Smuzhiyun #define AR_QOS_NO_ACK_BYTE_OFF 0x00000180 1814*4882a593Smuzhiyun #define AR_QOS_NO_ACK_BYTE_OFF_S 7 1815*4882a593Smuzhiyun 1816*4882a593Smuzhiyun #define AR_PHY_ERR 0x810c 1817*4882a593Smuzhiyun 1818*4882a593Smuzhiyun #define AR_PHY_ERR_DCHIRP 0x00000008 1819*4882a593Smuzhiyun #define AR_PHY_ERR_RADAR 0x00000020 1820*4882a593Smuzhiyun #define AR_PHY_ERR_OFDM_TIMING 0x00020000 1821*4882a593Smuzhiyun #define AR_PHY_ERR_CCK_TIMING 0x02000000 1822*4882a593Smuzhiyun 1823*4882a593Smuzhiyun #define AR_RXFIFO_CFG 0x8114 1824*4882a593Smuzhiyun 1825*4882a593Smuzhiyun 1826*4882a593Smuzhiyun #define AR_MIC_QOS_CONTROL 0x8118 1827*4882a593Smuzhiyun #define AR_MIC_QOS_SELECT 0x811c 1828*4882a593Smuzhiyun 1829*4882a593Smuzhiyun #define AR_PCU_MISC 0x8120 1830*4882a593Smuzhiyun #define AR_PCU_FORCE_BSSID_MATCH 0x00000001 1831*4882a593Smuzhiyun #define AR_PCU_MIC_NEW_LOC_ENA 0x00000004 1832*4882a593Smuzhiyun #define AR_PCU_TX_ADD_TSF 0x00000008 1833*4882a593Smuzhiyun #define AR_PCU_CCK_SIFS_MODE 0x00000010 1834*4882a593Smuzhiyun #define AR_PCU_RX_ANT_UPDT 0x00000800 1835*4882a593Smuzhiyun #define AR_PCU_TXOP_TBTT_LIMIT_ENA 0x00001000 1836*4882a593Smuzhiyun #define AR_PCU_MISS_BCN_IN_SLEEP 0x00004000 1837*4882a593Smuzhiyun #define AR_PCU_BUG_12306_FIX_ENA 0x00020000 1838*4882a593Smuzhiyun #define AR_PCU_FORCE_QUIET_COLL 0x00040000 1839*4882a593Smuzhiyun #define AR_PCU_TBTT_PROTECT 0x00200000 1840*4882a593Smuzhiyun #define AR_PCU_CLEAR_VMF 0x01000000 1841*4882a593Smuzhiyun #define AR_PCU_CLEAR_BA_VALID 0x04000000 1842*4882a593Smuzhiyun #define AR_PCU_ALWAYS_PERFORM_KEYSEARCH 0x10000000 1843*4882a593Smuzhiyun 1844*4882a593Smuzhiyun #define AR_PCU_BT_ANT_PREVENT_RX 0x00100000 1845*4882a593Smuzhiyun #define AR_PCU_BT_ANT_PREVENT_RX_S 20 1846*4882a593Smuzhiyun 1847*4882a593Smuzhiyun #define AR_FILT_OFDM 0x8124 1848*4882a593Smuzhiyun #define AR_FILT_OFDM_COUNT 0x00FFFFFF 1849*4882a593Smuzhiyun 1850*4882a593Smuzhiyun #define AR_FILT_CCK 0x8128 1851*4882a593Smuzhiyun #define AR_FILT_CCK_COUNT 0x00FFFFFF 1852*4882a593Smuzhiyun 1853*4882a593Smuzhiyun #define AR_PHY_ERR_1 0x812c 1854*4882a593Smuzhiyun #define AR_PHY_ERR_1_COUNT 0x00FFFFFF 1855*4882a593Smuzhiyun #define AR_PHY_ERR_MASK_1 0x8130 1856*4882a593Smuzhiyun 1857*4882a593Smuzhiyun #define AR_PHY_ERR_2 0x8134 1858*4882a593Smuzhiyun #define AR_PHY_ERR_2_COUNT 0x00FFFFFF 1859*4882a593Smuzhiyun #define AR_PHY_ERR_MASK_2 0x8138 1860*4882a593Smuzhiyun 1861*4882a593Smuzhiyun #define AR_PHY_COUNTMAX (3 << 22) 1862*4882a593Smuzhiyun #define AR_MIBCNT_INTRMASK (3 << 22) 1863*4882a593Smuzhiyun 1864*4882a593Smuzhiyun #define AR_TSFOOR_THRESHOLD 0x813c 1865*4882a593Smuzhiyun #define AR_TSFOOR_THRESHOLD_VAL 0x0000FFFF 1866*4882a593Smuzhiyun 1867*4882a593Smuzhiyun #define AR_PHY_ERR_EIFS_MASK 0x8144 1868*4882a593Smuzhiyun 1869*4882a593Smuzhiyun #define AR_PHY_ERR_3 0x8168 1870*4882a593Smuzhiyun #define AR_PHY_ERR_3_COUNT 0x00FFFFFF 1871*4882a593Smuzhiyun #define AR_PHY_ERR_MASK_3 0x816c 1872*4882a593Smuzhiyun 1873*4882a593Smuzhiyun #define AR_BT_COEX_MODE 0x8170 1874*4882a593Smuzhiyun #define AR_BT_TIME_EXTEND 0x000000ff 1875*4882a593Smuzhiyun #define AR_BT_TIME_EXTEND_S 0 1876*4882a593Smuzhiyun #define AR_BT_TXSTATE_EXTEND 0x00000100 1877*4882a593Smuzhiyun #define AR_BT_TXSTATE_EXTEND_S 8 1878*4882a593Smuzhiyun #define AR_BT_TX_FRAME_EXTEND 0x00000200 1879*4882a593Smuzhiyun #define AR_BT_TX_FRAME_EXTEND_S 9 1880*4882a593Smuzhiyun #define AR_BT_MODE 0x00000c00 1881*4882a593Smuzhiyun #define AR_BT_MODE_S 10 1882*4882a593Smuzhiyun #define AR_BT_QUIET 0x00001000 1883*4882a593Smuzhiyun #define AR_BT_QUIET_S 12 1884*4882a593Smuzhiyun #define AR_BT_QCU_THRESH 0x0001e000 1885*4882a593Smuzhiyun #define AR_BT_QCU_THRESH_S 13 1886*4882a593Smuzhiyun #define AR_BT_RX_CLEAR_POLARITY 0x00020000 1887*4882a593Smuzhiyun #define AR_BT_RX_CLEAR_POLARITY_S 17 1888*4882a593Smuzhiyun #define AR_BT_PRIORITY_TIME 0x00fc0000 1889*4882a593Smuzhiyun #define AR_BT_PRIORITY_TIME_S 18 1890*4882a593Smuzhiyun #define AR_BT_FIRST_SLOT_TIME 0xff000000 1891*4882a593Smuzhiyun #define AR_BT_FIRST_SLOT_TIME_S 24 1892*4882a593Smuzhiyun 1893*4882a593Smuzhiyun #define AR_BT_COEX_WEIGHT 0x8174 1894*4882a593Smuzhiyun #define AR_BT_COEX_WGHT 0xff55 1895*4882a593Smuzhiyun #define AR_STOMP_ALL_WLAN_WGHT 0xfcfc 1896*4882a593Smuzhiyun #define AR_STOMP_LOW_WLAN_WGHT 0xa8a8 1897*4882a593Smuzhiyun #define AR_STOMP_NONE_WLAN_WGHT 0x0000 1898*4882a593Smuzhiyun #define AR_BTCOEX_BT_WGHT 0x0000ffff 1899*4882a593Smuzhiyun #define AR_BTCOEX_BT_WGHT_S 0 1900*4882a593Smuzhiyun #define AR_BTCOEX_WL_WGHT 0xffff0000 1901*4882a593Smuzhiyun #define AR_BTCOEX_WL_WGHT_S 16 1902*4882a593Smuzhiyun 1903*4882a593Smuzhiyun #define AR_BT_COEX_WL_WEIGHTS0 0x8174 1904*4882a593Smuzhiyun #define AR_BT_COEX_WL_WEIGHTS1 0x81c4 1905*4882a593Smuzhiyun #define AR_MCI_COEX_WL_WEIGHTS(_i) (0x18b0 + (_i << 2)) 1906*4882a593Smuzhiyun #define AR_BT_COEX_BT_WEIGHTS(_i) (0x83ac + (_i << 2)) 1907*4882a593Smuzhiyun 1908*4882a593Smuzhiyun #define AR9300_BT_WGHT 0xcccc4444 1909*4882a593Smuzhiyun 1910*4882a593Smuzhiyun #define AR_BT_COEX_MODE2 0x817c 1911*4882a593Smuzhiyun #define AR_BT_BCN_MISS_THRESH 0x000000ff 1912*4882a593Smuzhiyun #define AR_BT_BCN_MISS_THRESH_S 0 1913*4882a593Smuzhiyun #define AR_BT_BCN_MISS_CNT 0x0000ff00 1914*4882a593Smuzhiyun #define AR_BT_BCN_MISS_CNT_S 8 1915*4882a593Smuzhiyun #define AR_BT_HOLD_RX_CLEAR 0x00010000 1916*4882a593Smuzhiyun #define AR_BT_HOLD_RX_CLEAR_S 16 1917*4882a593Smuzhiyun #define AR_BT_PROTECT_BT_AFTER_WAKEUP 0x00080000 1918*4882a593Smuzhiyun #define AR_BT_PROTECT_BT_AFTER_WAKEUP_S 19 1919*4882a593Smuzhiyun #define AR_BT_DISABLE_BT_ANT 0x00100000 1920*4882a593Smuzhiyun #define AR_BT_DISABLE_BT_ANT_S 20 1921*4882a593Smuzhiyun #define AR_BT_QUIET_2_WIRE 0x00200000 1922*4882a593Smuzhiyun #define AR_BT_QUIET_2_WIRE_S 21 1923*4882a593Smuzhiyun #define AR_BT_WL_ACTIVE_MODE 0x00c00000 1924*4882a593Smuzhiyun #define AR_BT_WL_ACTIVE_MODE_S 22 1925*4882a593Smuzhiyun #define AR_BT_WL_TXRX_SEPARATE 0x01000000 1926*4882a593Smuzhiyun #define AR_BT_WL_TXRX_SEPARATE_S 24 1927*4882a593Smuzhiyun #define AR_BT_RS_DISCARD_EXTEND 0x02000000 1928*4882a593Smuzhiyun #define AR_BT_RS_DISCARD_EXTEND_S 25 1929*4882a593Smuzhiyun #define AR_BT_TSF_BT_ACTIVE_CTRL 0x0c000000 1930*4882a593Smuzhiyun #define AR_BT_TSF_BT_ACTIVE_CTRL_S 26 1931*4882a593Smuzhiyun #define AR_BT_TSF_BT_PRIORITY_CTRL 0x30000000 1932*4882a593Smuzhiyun #define AR_BT_TSF_BT_PRIORITY_CTRL_S 28 1933*4882a593Smuzhiyun #define AR_BT_INTERRUPT_ENABLE 0x40000000 1934*4882a593Smuzhiyun #define AR_BT_INTERRUPT_ENABLE_S 30 1935*4882a593Smuzhiyun #define AR_BT_PHY_ERR_BT_COLL_ENABLE 0x80000000 1936*4882a593Smuzhiyun #define AR_BT_PHY_ERR_BT_COLL_ENABLE_S 31 1937*4882a593Smuzhiyun 1938*4882a593Smuzhiyun #define AR_TXSIFS 0x81d0 1939*4882a593Smuzhiyun #define AR_TXSIFS_TIME 0x000000FF 1940*4882a593Smuzhiyun #define AR_TXSIFS_TX_LATENCY 0x00000F00 1941*4882a593Smuzhiyun #define AR_TXSIFS_TX_LATENCY_S 8 1942*4882a593Smuzhiyun #define AR_TXSIFS_ACK_SHIFT 0x00007000 1943*4882a593Smuzhiyun #define AR_TXSIFS_ACK_SHIFT_S 12 1944*4882a593Smuzhiyun 1945*4882a593Smuzhiyun #define AR_BT_COEX_MODE3 0x81d4 1946*4882a593Smuzhiyun #define AR_BT_WL_ACTIVE_TIME 0x000000ff 1947*4882a593Smuzhiyun #define AR_BT_WL_ACTIVE_TIME_S 0 1948*4882a593Smuzhiyun #define AR_BT_WL_QC_TIME 0x0000ff00 1949*4882a593Smuzhiyun #define AR_BT_WL_QC_TIME_S 8 1950*4882a593Smuzhiyun #define AR_BT_ALLOW_CONCURRENT_ACCESS 0x000f0000 1951*4882a593Smuzhiyun #define AR_BT_ALLOW_CONCURRENT_ACCESS_S 16 1952*4882a593Smuzhiyun #define AR_BT_AGC_SATURATION_CNT_ENABLE 0x00100000 1953*4882a593Smuzhiyun #define AR_BT_AGC_SATURATION_CNT_ENABLE_S 20 1954*4882a593Smuzhiyun 1955*4882a593Smuzhiyun #define AR_TXOP_X 0x81ec 1956*4882a593Smuzhiyun #define AR_TXOP_X_VAL 0x000000FF 1957*4882a593Smuzhiyun 1958*4882a593Smuzhiyun 1959*4882a593Smuzhiyun #define AR_TXOP_0_3 0x81f0 1960*4882a593Smuzhiyun #define AR_TXOP_4_7 0x81f4 1961*4882a593Smuzhiyun #define AR_TXOP_8_11 0x81f8 1962*4882a593Smuzhiyun #define AR_TXOP_12_15 0x81fc 1963*4882a593Smuzhiyun 1964*4882a593Smuzhiyun #define AR_NEXT_NDP2_TIMER 0x8180 1965*4882a593Smuzhiyun #define AR_GEN_TIMER_BANK_1_LEN 8 1966*4882a593Smuzhiyun #define AR_FIRST_NDP_TIMER 7 1967*4882a593Smuzhiyun #define AR_NDP2_PERIOD 0x81a0 1968*4882a593Smuzhiyun #define AR_NDP2_TIMER_MODE 0x81c0 1969*4882a593Smuzhiyun #define AR_GEN_TIMERS2_MODE_ENABLE_MASK 0x000000FF 1970*4882a593Smuzhiyun 1971*4882a593Smuzhiyun #define AR_GEN_TIMERS(_i) (0x8200 + ((_i) << 2)) 1972*4882a593Smuzhiyun #define AR_NEXT_TBTT_TIMER AR_GEN_TIMERS(0) 1973*4882a593Smuzhiyun #define AR_NEXT_DMA_BEACON_ALERT AR_GEN_TIMERS(1) 1974*4882a593Smuzhiyun #define AR_NEXT_SWBA AR_GEN_TIMERS(2) 1975*4882a593Smuzhiyun #define AR_NEXT_CFP AR_GEN_TIMERS(2) 1976*4882a593Smuzhiyun #define AR_NEXT_HCF AR_GEN_TIMERS(3) 1977*4882a593Smuzhiyun #define AR_NEXT_TIM AR_GEN_TIMERS(4) 1978*4882a593Smuzhiyun #define AR_NEXT_DTIM AR_GEN_TIMERS(5) 1979*4882a593Smuzhiyun #define AR_NEXT_QUIET_TIMER AR_GEN_TIMERS(6) 1980*4882a593Smuzhiyun #define AR_NEXT_NDP_TIMER AR_GEN_TIMERS(7) 1981*4882a593Smuzhiyun 1982*4882a593Smuzhiyun #define AR_BEACON_PERIOD AR_GEN_TIMERS(8) 1983*4882a593Smuzhiyun #define AR_DMA_BEACON_PERIOD AR_GEN_TIMERS(9) 1984*4882a593Smuzhiyun #define AR_SWBA_PERIOD AR_GEN_TIMERS(10) 1985*4882a593Smuzhiyun #define AR_HCF_PERIOD AR_GEN_TIMERS(11) 1986*4882a593Smuzhiyun #define AR_TIM_PERIOD AR_GEN_TIMERS(12) 1987*4882a593Smuzhiyun #define AR_DTIM_PERIOD AR_GEN_TIMERS(13) 1988*4882a593Smuzhiyun #define AR_QUIET_PERIOD AR_GEN_TIMERS(14) 1989*4882a593Smuzhiyun #define AR_NDP_PERIOD AR_GEN_TIMERS(15) 1990*4882a593Smuzhiyun 1991*4882a593Smuzhiyun #define AR_TIMER_MODE 0x8240 1992*4882a593Smuzhiyun #define AR_TBTT_TIMER_EN 0x00000001 1993*4882a593Smuzhiyun #define AR_DBA_TIMER_EN 0x00000002 1994*4882a593Smuzhiyun #define AR_SWBA_TIMER_EN 0x00000004 1995*4882a593Smuzhiyun #define AR_HCF_TIMER_EN 0x00000008 1996*4882a593Smuzhiyun #define AR_TIM_TIMER_EN 0x00000010 1997*4882a593Smuzhiyun #define AR_DTIM_TIMER_EN 0x00000020 1998*4882a593Smuzhiyun #define AR_QUIET_TIMER_EN 0x00000040 1999*4882a593Smuzhiyun #define AR_NDP_TIMER_EN 0x00000080 2000*4882a593Smuzhiyun #define AR_TIMER_OVERFLOW_INDEX 0x00000700 2001*4882a593Smuzhiyun #define AR_TIMER_OVERFLOW_INDEX_S 8 2002*4882a593Smuzhiyun #define AR_TIMER_THRESH 0xFFFFF000 2003*4882a593Smuzhiyun #define AR_TIMER_THRESH_S 12 2004*4882a593Smuzhiyun 2005*4882a593Smuzhiyun #define AR_SLP32_MODE 0x8244 2006*4882a593Smuzhiyun #define AR_SLP32_HALF_CLK_LATENCY 0x000FFFFF 2007*4882a593Smuzhiyun #define AR_SLP32_ENA 0x00100000 2008*4882a593Smuzhiyun #define AR_SLP32_TSF_WRITE_STATUS 0x00200000 2009*4882a593Smuzhiyun 2010*4882a593Smuzhiyun #define AR_SLP32_WAKE 0x8248 2011*4882a593Smuzhiyun #define AR_SLP32_WAKE_XTL_TIME 0x0000FFFF 2012*4882a593Smuzhiyun 2013*4882a593Smuzhiyun #define AR_SLP32_INC 0x824c 2014*4882a593Smuzhiyun #define AR_SLP32_TST_INC 0x000FFFFF 2015*4882a593Smuzhiyun 2016*4882a593Smuzhiyun #define AR_SLP_CNT 0x8250 2017*4882a593Smuzhiyun #define AR_SLP_CYCLE_CNT 0x8254 2018*4882a593Smuzhiyun 2019*4882a593Smuzhiyun #define AR_SLP_MIB_CTRL 0x8258 2020*4882a593Smuzhiyun #define AR_SLP_MIB_CLEAR 0x00000001 2021*4882a593Smuzhiyun #define AR_SLP_MIB_PENDING 0x00000002 2022*4882a593Smuzhiyun 2023*4882a593Smuzhiyun #define AR_MAC_PCU_LOGIC_ANALYZER 0x8264 2024*4882a593Smuzhiyun #define AR_MAC_PCU_LOGIC_ANALYZER_DISBUG20768 0x20000000 2025*4882a593Smuzhiyun 2026*4882a593Smuzhiyun 2027*4882a593Smuzhiyun #define AR_2040_MODE 0x8318 2028*4882a593Smuzhiyun #define AR_2040_JOINED_RX_CLEAR 0x00000001 2029*4882a593Smuzhiyun 2030*4882a593Smuzhiyun 2031*4882a593Smuzhiyun #define AR_EXTRCCNT 0x8328 2032*4882a593Smuzhiyun 2033*4882a593Smuzhiyun #define AR_SELFGEN_MASK 0x832c 2034*4882a593Smuzhiyun 2035*4882a593Smuzhiyun #define AR_PCU_TXBUF_CTRL 0x8340 2036*4882a593Smuzhiyun #define AR_PCU_TXBUF_CTRL_SIZE_MASK 0x7FF 2037*4882a593Smuzhiyun #define AR_PCU_TXBUF_CTRL_USABLE_SIZE 0x700 2038*4882a593Smuzhiyun #define AR_9285_PCU_TXBUF_CTRL_USABLE_SIZE 0x380 2039*4882a593Smuzhiyun #define AR_9340_PCU_TXBUF_CTRL_USABLE_SIZE 0x500 2040*4882a593Smuzhiyun 2041*4882a593Smuzhiyun #define AR_PCU_MISC_MODE2 0x8344 2042*4882a593Smuzhiyun #define AR_PCU_MISC_MODE2_MGMT_CRYPTO_ENABLE 0x00000002 2043*4882a593Smuzhiyun #define AR_PCU_MISC_MODE2_NO_CRYPTO_FOR_NON_DATA_PKT 0x00000004 2044*4882a593Smuzhiyun 2045*4882a593Smuzhiyun #define AR_PCU_MISC_MODE2_RESERVED 0x00000038 2046*4882a593Smuzhiyun #define AR_PCU_MISC_MODE2_ADHOC_MCAST_KEYID_ENABLE 0x00000040 2047*4882a593Smuzhiyun #define AR_PCU_MISC_MODE2_CFP_IGNORE 0x00000080 2048*4882a593Smuzhiyun #define AR_PCU_MISC_MODE2_MGMT_QOS 0x0000FF00 2049*4882a593Smuzhiyun #define AR_PCU_MISC_MODE2_MGMT_QOS_S 8 2050*4882a593Smuzhiyun #define AR_PCU_MISC_MODE2_ENABLE_LOAD_NAV_BEACON_DURATION 0x00010000 2051*4882a593Smuzhiyun #define AR_PCU_MISC_MODE2_ENABLE_AGGWEP 0x00020000 2052*4882a593Smuzhiyun #define AR_PCU_MISC_MODE2_HWWAR1 0x00100000 2053*4882a593Smuzhiyun #define AR_PCU_MISC_MODE2_HWWAR2 0x02000000 2054*4882a593Smuzhiyun #define AR_PCU_MISC_MODE2_RESERVED2 0xFFFE0000 2055*4882a593Smuzhiyun 2056*4882a593Smuzhiyun #define AR_PCU_MISC_MODE3 0x83d0 2057*4882a593Smuzhiyun 2058*4882a593Smuzhiyun #define AR_MAC_PCU_ASYNC_FIFO_REG3 0x8358 2059*4882a593Smuzhiyun #define AR_MAC_PCU_ASYNC_FIFO_REG3_DATAPATH_SEL 0x00000400 2060*4882a593Smuzhiyun #define AR_MAC_PCU_ASYNC_FIFO_REG3_SOFT_RESET 0x80000000 2061*4882a593Smuzhiyun #define AR_MAC_PCU_GEN_TIMER_TSF_SEL 0x83d8 2062*4882a593Smuzhiyun 2063*4882a593Smuzhiyun #define AR_DIRECT_CONNECT 0x83a0 2064*4882a593Smuzhiyun #define AR_DC_AP_STA_EN 0x00000001 2065*4882a593Smuzhiyun #define AR_DC_TSF2_ENABLE 0x00000001 2066*4882a593Smuzhiyun 2067*4882a593Smuzhiyun #define AR_AES_MUTE_MASK0 0x805c 2068*4882a593Smuzhiyun #define AR_AES_MUTE_MASK0_FC 0x0000FFFF 2069*4882a593Smuzhiyun #define AR_AES_MUTE_MASK0_QOS 0xFFFF0000 2070*4882a593Smuzhiyun #define AR_AES_MUTE_MASK0_QOS_S 16 2071*4882a593Smuzhiyun 2072*4882a593Smuzhiyun #define AR_AES_MUTE_MASK1 0x8060 2073*4882a593Smuzhiyun #define AR_AES_MUTE_MASK1_SEQ 0x0000FFFF 2074*4882a593Smuzhiyun #define AR_AES_MUTE_MASK1_SEQ_S 0 2075*4882a593Smuzhiyun #define AR_AES_MUTE_MASK1_FC_MGMT 0xFFFF0000 2076*4882a593Smuzhiyun #define AR_AES_MUTE_MASK1_FC_MGMT_S 16 2077*4882a593Smuzhiyun 2078*4882a593Smuzhiyun #define AR_RATE_DURATION_0 0x8700 2079*4882a593Smuzhiyun #define AR_RATE_DURATION_31 0x87CC 2080*4882a593Smuzhiyun #define AR_RATE_DURATION_32 0x8780 2081*4882a593Smuzhiyun #define AR_RATE_DURATION(_n) (AR_RATE_DURATION_0 + ((_n)<<2)) 2082*4882a593Smuzhiyun 2083*4882a593Smuzhiyun /* WoW - Wake On Wireless */ 2084*4882a593Smuzhiyun 2085*4882a593Smuzhiyun #define AR_PMCTRL_AUX_PWR_DET 0x10000000 /* Puts Chip in L2 state */ 2086*4882a593Smuzhiyun #define AR_PMCTRL_D3COLD_VAUX 0x00800000 2087*4882a593Smuzhiyun #define AR_PMCTRL_HOST_PME_EN 0x00400000 /* Send OOB WAKE_L on WoW 2088*4882a593Smuzhiyun event */ 2089*4882a593Smuzhiyun #define AR_PMCTRL_WOW_PME_CLR 0x00200000 /* Clear WoW event */ 2090*4882a593Smuzhiyun #define AR_PMCTRL_PWR_STATE_MASK 0x0f000000 /* Power State Mask */ 2091*4882a593Smuzhiyun #define AR_PMCTRL_PWR_STATE_D1D3 0x0f000000 /* Activate D1 and D3 */ 2092*4882a593Smuzhiyun #define AR_PMCTRL_PWR_STATE_D1D3_REAL 0x0f000000 /* Activate D1 and D3 */ 2093*4882a593Smuzhiyun #define AR_PMCTRL_PWR_STATE_D0 0x08000000 /* Activate D0 */ 2094*4882a593Smuzhiyun #define AR_PMCTRL_PWR_PM_CTRL_ENA 0x00008000 /* Enable power mgmt */ 2095*4882a593Smuzhiyun 2096*4882a593Smuzhiyun #define AR_WOW_BEACON_TIMO_MAX 0xffffffff 2097*4882a593Smuzhiyun 2098*4882a593Smuzhiyun #define AR9271_CORE_CLOCK 117 /* clock to 117Mhz */ 2099*4882a593Smuzhiyun #define AR9271_TARGET_BAUD_RATE 19200 /* 115200 */ 2100*4882a593Smuzhiyun 2101*4882a593Smuzhiyun #define AR_AGG_WEP_ENABLE_FIX 0x00000008 /* This allows the use of AR_AGG_WEP_ENABLE */ 2102*4882a593Smuzhiyun #define AR_ADHOC_MCAST_KEYID_ENABLE 0x00000040 /* This bit enables the Multicast search 2103*4882a593Smuzhiyun * based on both MAC Address and Key ID. 2104*4882a593Smuzhiyun * If bit is 0, then Multicast search is 2105*4882a593Smuzhiyun * based on MAC address only. 2106*4882a593Smuzhiyun * For Merlin and above only. 2107*4882a593Smuzhiyun */ 2108*4882a593Smuzhiyun #define AR_AGG_WEP_ENABLE 0x00020000 /* This field enables AGG_WEP feature, 2109*4882a593Smuzhiyun * when it is enable, AGG_WEP would takes 2110*4882a593Smuzhiyun * charge of the encryption interface of 2111*4882a593Smuzhiyun * pcu_txsm. 2112*4882a593Smuzhiyun */ 2113*4882a593Smuzhiyun 2114*4882a593Smuzhiyun #define AR9300_SM_BASE 0xa200 2115*4882a593Smuzhiyun #define AR9002_PHY_AGC_CONTROL 0x9860 2116*4882a593Smuzhiyun #define AR9003_PHY_AGC_CONTROL AR9300_SM_BASE + 0xc4 2117*4882a593Smuzhiyun #define AR_PHY_AGC_CONTROL (AR_SREV_9300_20_OR_LATER(ah) ? AR9003_PHY_AGC_CONTROL : AR9002_PHY_AGC_CONTROL) 2118*4882a593Smuzhiyun #define AR_PHY_AGC_CONTROL_CAL 0x00000001 /* do internal calibration */ 2119*4882a593Smuzhiyun #define AR_PHY_AGC_CONTROL_NF 0x00000002 /* do noise-floor calibration */ 2120*4882a593Smuzhiyun #define AR_PHY_AGC_CONTROL_OFFSET_CAL 0x00000800 /* allow offset calibration */ 2121*4882a593Smuzhiyun #define AR_PHY_AGC_CONTROL_ENABLE_NF 0x00008000 /* enable noise floor calibration to happen */ 2122*4882a593Smuzhiyun #define AR_PHY_AGC_CONTROL_FLTR_CAL 0x00010000 /* allow tx filter calibration */ 2123*4882a593Smuzhiyun #define AR_PHY_AGC_CONTROL_NO_UPDATE_NF 0x00020000 /* don't update noise floor automatically */ 2124*4882a593Smuzhiyun #define AR_PHY_AGC_CONTROL_EXT_NF_PWR_MEAS 0x00040000 /* extend noise floor power measurement */ 2125*4882a593Smuzhiyun #define AR_PHY_AGC_CONTROL_CLC_SUCCESS 0x00080000 /* carrier leak calibration done */ 2126*4882a593Smuzhiyun #define AR_PHY_AGC_CONTROL_PKDET_CAL 0x00100000 2127*4882a593Smuzhiyun #define AR_PHY_AGC_CONTROL_YCOK_MAX 0x000003c0 2128*4882a593Smuzhiyun #define AR_PHY_AGC_CONTROL_YCOK_MAX_S 6 2129*4882a593Smuzhiyun 2130*4882a593Smuzhiyun #endif 2131