Path: blob/main/sys/contrib/dev/ath/ath_hal/ar9300/ar9300reg.h
48525 views
/*1* Copyright (c) 2013 Qualcomm Atheros, Inc.2*3* Permission to use, copy, modify, and/or distribute this software for any4* purpose with or without fee is hereby granted, provided that the above5* copyright notice and this permission notice appear in all copies.6*7* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH8* REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY9* AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,10* INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM11* LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR12* OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR13* PERFORMANCE OF THIS SOFTWARE.14*/1516#ifndef _DEV_ATH_AR9300REG_H17#define _DEV_ATH_AR9300REG_H1819#include "osprey_reg_map.h"20#include "wasp_reg_map.h"2122/******************************************************************************23* MAC Register Map24******************************************************************************/25#define AR_MAC_DMA_OFFSET(_x) offsetof(struct mac_dma_reg, _x)2627/*28* MAC DMA Registers29*/3031/* MAC Control Register - only write values of 1 have effect */32#define AR_CR AR_MAC_DMA_OFFSET(MAC_DMA_CR)33#define AR_CR_LP_RXE 0x00000004 // Receive LPQ enable34#define AR_CR_HP_RXE 0x00000008 // Receive HPQ enable35#define AR_CR_RXD 0x00000020 // Receive disable36#define AR_CR_SWI 0x00000040 // One-shot software interrupt37#define AR_CR_RXE (AR_CR_LP_RXE|AR_CR_HP_RXE)3839/* MAC configuration and status register */40#define AR_CFG AR_MAC_DMA_OFFSET(MAC_DMA_CFG)41#define AR_CFG_SWTD 0x00000001 // byteswap tx descriptor words42#define AR_CFG_SWTB 0x00000002 // byteswap tx data buffer words43#define AR_CFG_SWRD 0x00000004 // byteswap rx descriptor words44#define AR_CFG_SWRB 0x00000008 // byteswap rx data buffer words45#define AR_CFG_SWRG 0x00000010 // byteswap register access data words46#define AR_CFG_AP_ADHOC_INDICATION 0x00000020 // AP/adhoc indication (0-AP 1-Adhoc)47#define AR_CFG_PHOK 0x00000100 // PHY OK status48#define AR_CFG_CLK_GATE_DIS 0x00000400 // Clock gating disable49#define AR_CFG_EEBS 0x00000200 // EEPROM busy50#define AR_CFG_PCI_MASTER_REQ_Q_THRESH 0x00060000 // Mask of PCI core master request queue full threshold51#define AR_CFG_PCI_MASTER_REQ_Q_THRESH_S 17 // Shift for PCI core master request queue full threshold52#define AR_CFG_MISSING_TX_INTR_FIX_ENABLE 0x00080000 // See EV 61133 for details.5354/* Rx DMA Data Buffer Pointer Threshold - High and Low Priority register */55#define AR_RXBP_THRESH AR_MAC_DMA_OFFSET(MAC_DMA_RXBUFPTR_THRESH)56#define AR_RXBP_THRESH_HP 0x0000000f57#define AR_RXBP_THRESH_HP_S 058#define AR_RXBP_THRESH_LP 0x00003f0059#define AR_RXBP_THRESH_LP_S 86061/* Tx DMA Descriptor Pointer Threshold register */62#define AR_TXDP_THRESH AR_MAC_DMA_OFFSET(MAC_DMA_TXDPPTR_THRESH)6364/* Mac Interrupt rate threshold register */65#define AR_MIRT AR_MAC_DMA_OFFSET(MAC_DMA_MIRT)66#define AR_MIRT_VAL 0x0000ffff // in uS67#define AR_MIRT_VAL_S 166869/* MAC Global Interrupt enable register */70#define AR_IER AR_MAC_DMA_OFFSET(MAC_DMA_GLOBAL_IER)71#define AR_IER_ENABLE 0x00000001 // Global interrupt enable72#define AR_IER_DISABLE 0x00000000 // Global interrupt disable7374/* Mac Tx Interrupt mitigation threshold */75#define AR_TIMT AR_MAC_DMA_OFFSET(MAC_DMA_TIMT)76#define AR_TIMT_LAST 0x0000ffff // Last packet threshold77#define AR_TIMT_LAST_S 078#define AR_TIMT_FIRST 0xffff0000 // First packet threshold79#define AR_TIMT_FIRST_S 168081/* Mac Rx Interrupt mitigation threshold */82#define AR_RIMT AR_MAC_DMA_OFFSET(MAC_DMA_RIMT)83#define AR_RIMT_LAST 0x0000ffff // Last packet threshold84#define AR_RIMT_LAST_S 085#define AR_RIMT_FIRST 0xffff0000 // First packet threshold86#define AR_RIMT_FIRST_S 168788#define AR_DMASIZE_4B 0x00000000 // DMA size 4 bytes (TXCFG + RXCFG)89#define AR_DMASIZE_8B 0x00000001 // DMA size 8 bytes90#define AR_DMASIZE_16B 0x00000002 // DMA size 16 bytes91#define AR_DMASIZE_32B 0x00000003 // DMA size 32 bytes92#define AR_DMASIZE_64B 0x00000004 // DMA size 64 bytes93#define AR_DMASIZE_128B 0x00000005 // DMA size 128 bytes94#define AR_DMASIZE_256B 0x00000006 // DMA size 256 bytes95#define AR_DMASIZE_512B 0x00000007 // DMA size 512 bytes9697/* MAC Tx DMA size config register */98#define AR_TXCFG AR_MAC_DMA_OFFSET(MAC_DMA_TXCFG)99#define AR_TXCFG_DMASZ_MASK 0x00000007100#define AR_TXCFG_DMASZ_4B 0101#define AR_TXCFG_DMASZ_8B 1102#define AR_TXCFG_DMASZ_16B 2103#define AR_TXCFG_DMASZ_32B 3104#define AR_TXCFG_DMASZ_64B 4105#define AR_TXCFG_DMASZ_128B 5106#define AR_TXCFG_DMASZ_256B 6107#define AR_TXCFG_DMASZ_512B 7108#define AR_FTRIG 0x000003F0 // Mask for Frame trigger level109#define AR_FTRIG_S 4 // Shift for Frame trigger level110#define AR_FTRIG_IMMED 0x00000000 // bytes in PCU TX FIFO before air111#define AR_FTRIG_64B 0x00000010 // default112#define AR_FTRIG_128B 0x00000020113#define AR_FTRIG_192B 0x00000030114#define AR_FTRIG_256B 0x00000040 // 5 bits total115#define AR_FTRIG_512B 0x00000080 // 5 bits total116#define AR_TXCFG_ADHOC_BEACON_ATIM_TX_POLICY 0x00000800117#define AR_TXCFG_RTS_FAIL_EXCESSIVE_RETRIES 0x00080000118#define AR_TXCFG_RTS_FAIL_EXCESSIVE_RETRIES_S 19119120/* MAC Rx DMA size config register */121#define AR_RXCFG AR_MAC_DMA_OFFSET(MAC_DMA_RXCFG)122#define AR_RXCFG_CHIRP 0x00000008 // Only double chirps123#define AR_RXCFG_ZLFDMA 0x00000010 // Enable DMA of zero-length frame124#define AR_RXCFG_DMASZ_MASK 0x00000007125#define AR_RXCFG_DMASZ_4B 0126#define AR_RXCFG_DMASZ_8B 1127#define AR_RXCFG_DMASZ_16B 2128#define AR_RXCFG_DMASZ_32B 3129#define AR_RXCFG_DMASZ_64B 4130#define AR_RXCFG_DMASZ_128B 5131#define AR_RXCFG_DMASZ_256B 6132#define AR_RXCFG_DMASZ_512B 7133134/* MAC Rx jumbo descriptor last address register */135#define AR_RXJLA AR_MAC_DMA_OFFSET(MAC_DMA_RXJLA)136137138/* MAC MIB control register */139#define AR_MIBC AR_MAC_DMA_OFFSET(MAC_DMA_MIBC)140#define AR_MIBC_COW 0x00000001 // counter overflow warning141#define AR_MIBC_FMC 0x00000002 // freeze MIB counters142#define AR_MIBC_CMC 0x00000004 // clear MIB counters143#define AR_MIBC_MCS 0x00000008 // MIB counter strobe increment all144145/* MAC timeout prescale count */146#define AR_TOPS AR_MAC_DMA_OFFSET(MAC_DMA_TOPS)147#define AR_TOPS_MASK 0x0000FFFF // Mask for timeout prescale148149/* MAC no frame received timeout */150#define AR_RXNPTO AR_MAC_DMA_OFFSET(MAC_DMA_RXNPTO)151#define AR_RXNPTO_MASK 0x000003FF // Mask for no frame received timeout152153/* MAC no frame trasmitted timeout */154#define AR_TXNPTO AR_MAC_DMA_OFFSET(MAC_DMA_TXNPTO)155#define AR_TXNPTO_MASK 0x000003FF // Mask for no frame transmitted timeout156#define AR_TXNPTO_QCU_MASK 0x000FFC00 // Mask indicating the set of QCUs157// for which frame completions will cause158// a reset of the no frame transmitted timeout159160/* MAC receive frame gap timeout */161#define AR_RPGTO AR_MAC_DMA_OFFSET(MAC_DMA_RPGTO)162#define AR_RPGTO_MASK 0x000003FF // Mask for receive frame gap timeout163164/* MAC miscellaneous control/status register */165#define AR_MACMISC AR_MAC_DMA_OFFSET(MAC_DMA_MACMISC)166#define AR_MACMISC_PCI_EXT_FORCE 0x00000010 //force msb to 10 to ahb167#define AR_MACMISC_DMA_OBS 0x000001E0 // Mask for DMA observation bus mux select168#define AR_MACMISC_DMA_OBS_S 5 // Shift for DMA observation bus mux select169#define AR_MACMISC_DMA_OBS_LINE_0 0 // Observation DMA line 0170#define AR_MACMISC_DMA_OBS_LINE_1 1 // Observation DMA line 1171#define AR_MACMISC_DMA_OBS_LINE_2 2 // Observation DMA line 2172#define AR_MACMISC_DMA_OBS_LINE_3 3 // Observation DMA line 3173#define AR_MACMISC_DMA_OBS_LINE_4 4 // Observation DMA line 4174#define AR_MACMISC_DMA_OBS_LINE_5 5 // Observation DMA line 5175#define AR_MACMISC_DMA_OBS_LINE_6 6 // Observation DMA line 6176#define AR_MACMISC_DMA_OBS_LINE_7 7 // Observation DMA line 7177#define AR_MACMISC_DMA_OBS_LINE_8 8 // Observation DMA line 8178#define AR_MACMISC_MISC_OBS 0x00000E00 // Mask for MISC observation bus mux select179#define AR_MACMISC_MISC_OBS_S 9 // Shift for MISC observation bus mux select180#define AR_MACMISC_MISC_OBS_BUS_LSB 0x00007000 // Mask for MAC observation bus mux select (lsb)181#define AR_MACMISC_MISC_OBS_BUS_LSB_S 12 // Shift for MAC observation bus mux select (lsb)182#define AR_MACMISC_MISC_OBS_BUS_MSB 0x00038000 // Mask for MAC observation bus mux select (msb)183#define AR_MACMISC_MISC_OBS_BUS_MSB_S 15 // Shift for MAC observation bus mux select (msb)184#define AR_MACMISC_MISC_OBS_BUS_1 1 // MAC observation bus mux select185186/* MAC Interrupt Config register */187#define AR_INTCFG AR_MAC_DMA_OFFSET(MAC_DMA_INTER)188#define AR_INTCFG_REQ 0x00000001 // Interrupt request flag189// Indicates whether the DMA engine should generate190// an interrupt upon completion of the frame191#define AR_INTCFG_MSI_RXOK 0x00000000 // Rx interrupt for MSI logic is RXOK192#define AR_INTCFG_MSI_RXINTM 0x00000004 // Rx interrupt for MSI logic is RXINTM193#define AR_INTCFG_MSI_RXMINTR 0x00000006 // Rx interrupt for MSI logic is RXMINTR194#define AR_INTCFG_MSI_TXOK 0x00000000 // Rx interrupt for MSI logic is TXOK195#define AR_INTCFG_MSI_TXINTM 0x00000010 // Rx interrupt for MSI logic is TXINTM196#define AR_INTCFG_MSI_TXMINTR 0x00000018 // Rx interrupt for MSI logic is TXMINTR197198/* MAC DMA Data Buffer length, in bytes */199#define AR_DATABUF AR_MAC_DMA_OFFSET(MAC_DMA_DATABUF)200#define AR_DATABUF_MASK 0x00000FFF201202/* MAC global transmit timeout */203#define AR_GTXTO AR_MAC_DMA_OFFSET(MAC_DMA_GTT)204#define AR_GTXTO_TIMEOUT_COUNTER 0x0000FFFF // Mask for timeout counter (in TUs)205#define AR_GTXTO_TIMEOUT_LIMIT 0xFFFF0000 // Mask for timeout limit (in TUs)206#define AR_GTXTO_TIMEOUT_LIMIT_S 16 // Shift for timeout limit207208/* MAC global transmit timeout mode */209#define AR_GTTM AR_MAC_DMA_OFFSET(MAC_DMA_GTTM)210#define AR_GTTM_USEC 0x00000001 // usec strobe211#define AR_GTTM_IGNORE_IDLE 0x00000002 // ignore channel idle212#define AR_GTTM_RESET_IDLE 0x00000004 // reset counter on channel idle low213#define AR_GTTM_CST_USEC 0x00000008 // CST usec strobe214215/* MAC carrier sense timeout */216#define AR_CST AR_MAC_DMA_OFFSET(MAC_DMA_CST)217#define AR_CST_TIMEOUT_COUNTER 0x0000FFFF // Mask for timeout counter (in TUs)218#define AR_CST_TIMEOUT_LIMIT 0xFFFF0000 // Mask for timeout limit (in TUs)219#define AR_CST_TIMEOUT_LIMIT_S 16 // Shift for timeout limit220221/* MAC Indicates the size of High and Low priority rx_dp FIFOs */222#define AR_RXDP_SIZE AR_MAC_DMA_OFFSET(MAC_DMA_RXDP_SIZE)223#define AR_RXDP_LP_SZ_MASK 0x0000007f224#define AR_RXDP_LP_SZ_S 0225#define AR_RXDP_HP_SZ_MASK 0x00001f00226#define AR_RXDP_HP_SZ_S 8227228/* MAC Rx High Priority Queue RXDP Pointer (lower 32 bits) */229#define AR_HP_RXDP AR_MAC_DMA_OFFSET(MAC_DMA_RX_QUEUE_HP_RXDP)230231/* MAC Rx Low Priority Queue RXDP Pointer (lower 32 bits) */232#define AR_LP_RXDP AR_MAC_DMA_OFFSET(MAC_DMA_RX_QUEUE_LP_RXDP)233234235/* Primary Interrupt Status Register */236#define AR_ISR AR_MAC_DMA_OFFSET(MAC_DMA_ISR_P)237#define AR_ISR_HP_RXOK 0x00000001 // At least one frame rx on high-priority queue sans errors238#define AR_ISR_LP_RXOK 0x00000002 // At least one frame rx on low-priority queue sans errors239#define AR_ISR_RXERR 0x00000004 // Receive error interrupt240#define AR_ISR_RXNOPKT 0x00000008 // No frame received within timeout clock241#define AR_ISR_RXEOL 0x00000010 // Received descriptor empty interrupt242#define AR_ISR_RXORN 0x00000020 // Receive FIFO overrun interrupt243#define AR_ISR_TXOK 0x00000040 // Transmit okay interrupt244#define AR_ISR_TXERR 0x00000100 // Transmit error interrupt245#define AR_ISR_TXNOPKT 0x00000200 // No frame transmitted interrupt246#define AR_ISR_TXEOL 0x00000400 // Transmit descriptor empty interrupt247#define AR_ISR_TXURN 0x00000800 // Transmit FIFO underrun interrupt248#define AR_ISR_MIB 0x00001000 // MIB interrupt - see MIBC249#define AR_ISR_SWI 0x00002000 // Software interrupt250#define AR_ISR_RXPHY 0x00004000 // PHY receive error interrupt251#define AR_ISR_RXKCM 0x00008000 // Key-cache miss interrupt252#define AR_ISR_SWBA 0x00010000 // Software beacon alert interrupt253#define AR_ISR_BRSSI 0x00020000 // Beacon threshold interrupt254#define AR_ISR_BMISS 0x00040000 // Beacon missed interrupt255#define AR_ISR_TXMINTR 0x00080000 // Maximum interrupt transmit rate256#define AR_ISR_BNR 0x00100000 // Beacon not ready interrupt257#define AR_ISR_RXCHIRP 0x00200000 // Phy received a 'chirp'258#define AR_ISR_HCFPOLL 0x00400000 // Received directed HCF poll259#define AR_ISR_BCNMISC 0x00800000 // CST, GTT, TIM, CABEND, DTIMSYNC, BCNTO, CABTO,260// TSFOOR, DTIM, and TBTT_TIME bits bits from ISR_S2261#define AR_ISR_TIM 0x00800000 // TIM interrupt262#define AR_ISR_RXMINTR 0x01000000 // Maximum interrupt receive rate263#define AR_ISR_QCBROVF 0x02000000 // QCU CBR overflow interrupt264#define AR_ISR_QCBRURN 0x04000000 // QCU CBR underrun interrupt265#define AR_ISR_QTRIG 0x08000000 // QCU scheduling trigger interrupt266#define AR_ISR_GENTMR 0x10000000 // OR of generic timer bits in ISR 5267#define AR_ISR_HCFTO 0x20000000 // HCF poll timeout268#define AR_ISR_TXINTM 0x40000000 // Tx interrupt after mitigation269#define AR_ISR_RXINTM 0x80000000 // Rx interrupt after mitigation270271/* MAC Secondary interrupt status register 0 */272#define AR_ISR_S0 AR_MAC_DMA_OFFSET(MAC_DMA_ISR_S0)273#define AR_ISR_S0_QCU_TXOK 0x000003FF // Mask for TXOK (QCU 0-9)274#define AR_ISR_S0_QCU_TXOK_S 0 // Shift for TXOK (QCU 0-9)275276/* MAC Secondary interrupt status register 1 */277#define AR_ISR_S1 AR_MAC_DMA_OFFSET(MAC_DMA_ISR_S1)278#define AR_ISR_S1_QCU_TXERR 0x000003FF // Mask for TXERR (QCU 0-9)279#define AR_ISR_S1_QCU_TXERR_S 0 // Shift for TXERR (QCU 0-9)280#define AR_ISR_S1_QCU_TXEOL 0x03FF0000 // Mask for TXEOL (QCU 0-9)281#define AR_ISR_S1_QCU_TXEOL_S 16 // Shift for TXEOL (QCU 0-9)282283/* MAC Secondary interrupt status register 2 */284#define AR_ISR_S2 AR_MAC_DMA_OFFSET(MAC_DMA_ISR_S2)285#define AR_ISR_S2_QCU_TXURN 0x000003FF // Mask for TXURN (QCU 0-9)286#define AR_ISR_S2_BBPANIC 0x00010000 // Panic watchdog IRQ from BB287#define AR_ISR_S2_CST 0x00400000 // Carrier sense timeout288#define AR_ISR_S2_GTT 0x00800000 // Global transmit timeout289#define AR_ISR_S2_TIM 0x01000000 // TIM290#define AR_ISR_S2_CABEND 0x02000000 // CABEND291#define AR_ISR_S2_DTIMSYNC 0x04000000 // DTIMSYNC292#define AR_ISR_S2_BCNTO 0x08000000 // BCNTO293#define AR_ISR_S2_CABTO 0x10000000 // CABTO294#define AR_ISR_S2_DTIM 0x20000000 // DTIM295#define AR_ISR_S2_TSFOOR 0x40000000 // Rx TSF out of range296#define AR_ISR_S2_TBTT_TIME 0x80000000 // TBTT-referenced timer297298/* MAC Secondary interrupt status register 3 */299#define AR_ISR_S3 AR_MAC_DMA_OFFSET(MAC_DMA_ISR_S3)300#define AR_ISR_S3_QCU_QCBROVF 0x000003FF // Mask for QCBROVF (QCU 0-9)301#define AR_ISR_S3_QCU_QCBRURN 0x03FF0000 // Mask for QCBRURN (QCU 0-9)302303/* MAC Secondary interrupt status register 4 */304#define AR_ISR_S4 AR_MAC_DMA_OFFSET(MAC_DMA_ISR_S4)305#define AR_ISR_S4_QCU_QTRIG 0x000003FF // Mask for QTRIG (QCU 0-9)306#define AR_ISR_S4_RESV0 0xFFFFFC00 // Reserved307308/* MAC Secondary interrupt status register 5 */309#define AR_ISR_S5 AR_MAC_DMA_OFFSET(MAC_DMA_ISR_S5)310#define AR_ISR_S5_TIMER_TRIG 0x000000FF // Mask for timer trigger (0-7)311#define AR_ISR_S5_TIMER_THRESH 0x0007FE00 // Mask for timer threshold(0-7)312#define AR_ISR_S5_TIM_TIMER 0x00000010 // TIM Timer ISR313#define AR_ISR_S5_DTIM_TIMER 0x00000020 // DTIM Timer ISR314#define AR_ISR_S5_GENTIMER_TRIG 0x0000FF80 // ISR for generic timer trigger 7315#define AR_ISR_S5_GENTIMER_TRIG_S 0316#define AR_ISR_S5_GENTIMER_THRESH 0xFF800000 // ISR for generic timer threshold 7317#define AR_ISR_S5_GENTIMER_THRESH_S 16318319/* Primary Interrupt Mask Register */320#define AR_IMR AR_MAC_DMA_OFFSET(MAC_DMA_IMR_P)321#define AR_IMR_RXOK_HP 0x00000001 // Receive high-priority interrupt enable mask322#define AR_IMR_RXOK_LP 0x00000002 // Receive low-priority interrupt enable mask323#define AR_IMR_RXERR 0x00000004 // Receive error interrupt324#define AR_IMR_RXNOPKT 0x00000008 // No frame received within timeout clock325#define AR_IMR_RXEOL 0x00000010 // Received descriptor empty interrupt326#define AR_IMR_RXORN 0x00000020 // Receive FIFO overrun interrupt327#define AR_IMR_TXOK 0x00000040 // Transmit okay interrupt328#define AR_IMR_TXERR 0x00000100 // Transmit error interrupt329#define AR_IMR_TXNOPKT 0x00000200 // No frame transmitted interrupt330#define AR_IMR_TXEOL 0x00000400 // Transmit descriptor empty interrupt331#define AR_IMR_TXURN 0x00000800 // Transmit FIFO underrun interrupt332#define AR_IMR_MIB 0x00001000 // MIB interrupt - see MIBC333#define AR_IMR_SWI 0x00002000 // Software interrupt334#define AR_IMR_RXPHY 0x00004000 // PHY receive error interrupt335#define AR_IMR_RXKCM 0x00008000 // Key-cache miss interrupt336#define AR_IMR_SWBA 0x00010000 // Software beacon alert interrupt337#define AR_IMR_BRSSI 0x00020000 // Beacon threshold interrupt338#define AR_IMR_BMISS 0x00040000 // Beacon missed interrupt339#define AR_IMR_TXMINTR 0x00080000 // Maximum interrupt transmit rate340#define AR_IMR_BNR 0x00100000 // BNR interrupt341#define AR_IMR_RXCHIRP 0x00200000 // RXCHIRP interrupt342#define AR_IMR_BCNMISC 0x00800000 // Venice: BCNMISC343#define AR_IMR_TIM 0x00800000 // TIM interrupt344#define AR_IMR_RXMINTR 0x01000000 // Maximum interrupt receive rate345#define AR_IMR_QCBROVF 0x02000000 // QCU CBR overflow interrupt346#define AR_IMR_QCBRURN 0x04000000 // QCU CBR underrun interrupt347#define AR_IMR_QTRIG 0x08000000 // QCU scheduling trigger interrupt348#define AR_IMR_GENTMR 0x10000000 // Generic timer interrupt349#define AR_IMR_TXINTM 0x40000000 // Tx interrupt after mitigation350#define AR_IMR_RXINTM 0x80000000 // Rx interrupt after mitigation351352/* MAC Secondary interrupt mask register 0 */353#define AR_IMR_S0 AR_MAC_DMA_OFFSET(MAC_DMA_IMR_S0)354#define AR_IMR_S0_QCU_TXOK 0x000003FF // Mask for TXOK (QCU 0-9)355#define AR_IMR_S0_QCU_TXOK_S 0 // Shift for TXOK (QCU 0-9)356357/* MAC Secondary interrupt mask register 1 */358#define AR_IMR_S1 AR_MAC_DMA_OFFSET(MAC_DMA_IMR_S1)359#define AR_IMR_S1_QCU_TXERR 0x000003FF // Mask for TXERR (QCU 0-9)360#define AR_IMR_S1_QCU_TXERR_S 0 // Shift for TXERR (QCU 0-9)361#define AR_IMR_S1_QCU_TXEOL 0x03FF0000 // Mask for TXEOL (QCU 0-9)362#define AR_IMR_S1_QCU_TXEOL_S 16 // Shift for TXEOL (QCU 0-9)363364/* MAC Secondary interrupt mask register 2 */365#define AR_IMR_S2 AR_MAC_DMA_OFFSET(MAC_DMA_IMR_S2)366#define AR_IMR_S2_QCU_TXURN 0x000003FF // Mask for TXURN (QCU 0-9)367#define AR_IMR_S2_QCU_TXURN_S 0 // Shift for TXURN (QCU 0-9)368#define AR_IMR_S2_BBPANIC 0x00010000 // Panic watchdog IRQ from BB369#define AR_IMR_S2_CST 0x00400000 // Carrier sense timeout370#define AR_IMR_S2_GTT 0x00800000 // Global transmit timeout371#define AR_IMR_S2_TIM 0x01000000 // TIM372#define AR_IMR_S2_CABEND 0x02000000 // CABEND373#define AR_IMR_S2_DTIMSYNC 0x04000000 // DTIMSYNC374#define AR_IMR_S2_BCNTO 0x08000000 // BCNTO375#define AR_IMR_S2_CABTO 0x10000000 // CABTO376#define AR_IMR_S2_DTIM 0x20000000 // DTIM377#define AR_IMR_S2_TSFOOR 0x40000000 // TSF out of range378379/* MAC Secondary interrupt mask register 3 */380#define AR_IMR_S3 AR_MAC_DMA_OFFSET(MAC_DMA_IMR_S3)381#define AR_IMR_S3_QCU_QCBROVF 0x000003FF // Mask for QCBROVF (QCU 0-9)382#define AR_IMR_S3_QCU_QCBRURN 0x03FF0000 // Mask for QCBRURN (QCU 0-9)383#define AR_IMR_S3_QCU_QCBRURN_S 16 // Shift for QCBRURN (QCU 0-9)384385/* MAC Secondary interrupt mask register 4 */386#define AR_IMR_S4 AR_MAC_DMA_OFFSET(MAC_DMA_IMR_S4)387#define AR_IMR_S4_QCU_QTRIG 0x000003FF // Mask for QTRIG (QCU 0-9)388#define AR_IMR_S4_RESV0 0xFFFFFC00 // Reserved389390/* MAC Secondary interrupt mask register 5 */391#define AR_IMR_S5 AR_MAC_DMA_OFFSET(MAC_DMA_IMR_S5)392#define AR_IMR_S5_TIMER_TRIG 0x000000FF // Mask for timer trigger (0-7)393#define AR_IMR_S5_TIMER_THRESH 0x0000FF00 // Mask for timer threshold(0-7)394#define AR_IMR_S5_TIM_TIMER 0x00000010 // TIM Timer Mask395#define AR_IMR_S5_DTIM_TIMER 0x00000020 // DTIM Timer Mask396#define AR_IMR_S5_GENTIMER7 0x00000080 // Mask for timer 7 trigger397#define AR_IMR_S5_GENTIMER_TRIG 0x0000FF80 // Mask for generic timer trigger 7-15398#define AR_IMR_S5_GENTIMER_TRIG_S 0399#define AR_IMR_S5_GENTIMER_THRESH 0xFF800000 // Mask for generic timer threshold 7-15400#define AR_IMR_S5_GENTIMER_THRESH_S 16401402403/* Interrupt status registers (read-and-clear access secondary shadow copies) */404405/* MAC Primary interrupt status register read-and-clear access */406#define AR_ISR_RAC AR_MAC_DMA_OFFSET(MAC_DMA_ISR_P_RAC)407/* MAC Secondary interrupt status register 0 - shadow copy */408#define AR_ISR_S0_S AR_MAC_DMA_OFFSET(MAC_DMA_ISR_S0_S)409#define AR_ISR_S0_QCU_TXOK 0x000003FF // Mask for TXOK (QCU 0-9)410#define AR_ISR_S0_QCU_TXOK_S 0 // Shift for TXOK (QCU 0-9)411412/* MAC Secondary interrupt status register 1 - shadow copy */413#define AR_ISR_S1_S AR_MAC_DMA_OFFSET(MAC_DMA_ISR_S1_S)414#define AR_ISR_S1_QCU_TXERR 0x000003FF // Mask for TXERR (QCU 0-9)415#define AR_ISR_S1_QCU_TXERR_S 0 // Shift for TXERR (QCU 0-9)416#define AR_ISR_S1_QCU_TXEOL 0x03FF0000 // Mask for TXEOL (QCU 0-9)417#define AR_ISR_S1_QCU_TXEOL_S 16 // Shift for TXEOL (QCU 0-9)418419/* MAC Secondary interrupt status register 2 - shadow copy */420#define AR_ISR_S2_S AR_MAC_DMA_OFFSET(MAC_DMA_ISR_S2_S)421/* MAC Secondary interrupt status register 3 - shadow copy */422#define AR_ISR_S3_S AR_MAC_DMA_OFFSET(MAC_DMA_ISR_S3_S)423/* MAC Secondary interrupt status register 4 - shadow copy */424#define AR_ISR_S4_S AR_MAC_DMA_OFFSET(MAC_DMA_ISR_S4_S)425/* MAC Secondary interrupt status register 5 - shadow copy */426#define AR_ISR_S5_S AR_MAC_DMA_OFFSET(MAC_DMA_ISR_S5_S)427428/* MAC DMA Debug Registers */429#define AR_DMADBG_0 AR_MAC_DMA_OFFSET(MAC_DMA_DMADBG_0)430#define AR_DMADBG_1 AR_MAC_DMA_OFFSET(MAC_DMA_DMADBG_1)431#define AR_DMADBG_2 AR_MAC_DMA_OFFSET(MAC_DMA_DMADBG_2)432#define AR_DMADBG_3 AR_MAC_DMA_OFFSET(MAC_DMA_DMADBG_3)433#define AR_DMADBG_4 AR_MAC_DMA_OFFSET(MAC_DMA_DMADBG_4)434#define AR_DMADBG_5 AR_MAC_DMA_OFFSET(MAC_DMA_DMADBG_5)435#define AR_DMADBG_6 AR_MAC_DMA_OFFSET(MAC_DMA_DMADBG_6)436#define AR_DMADBG_7 AR_MAC_DMA_OFFSET(MAC_DMA_DMADBG_7)437#define AR_DMATXDP_QCU_7_0 AR_MAC_DMA_OFFSET(MAC_DMA_QCU_TXDP_REMAINING_QCU_7_0)438#define AR_DMATXDP_QCU_9_8 AR_MAC_DMA_OFFSET(MAC_DMA_QCU_TXDP_REMAINING_QCU_9_8)439440#define AR_DMADBG_RX_STATE 0x00000F00 // Mask for Rx DMA State machine441442443/*444* MAC QCU Registers445*/446#define AR_MAC_QCU_OFFSET(_x) offsetof(struct mac_qcu_reg, _x)447448#define AR_NUM_QCU 10 // Only use QCU 0-9 for forward QCU compatibility449#define AR_QCU_0 0x0001450#define AR_QCU_1 0x0002451#define AR_QCU_2 0x0004452#define AR_QCU_3 0x0008453#define AR_QCU_4 0x0010454#define AR_QCU_5 0x0020455#define AR_QCU_6 0x0040456#define AR_QCU_7 0x0080457#define AR_QCU_8 0x0100458#define AR_QCU_9 0x0200459460/* MAC Transmit Queue descriptor pointer */461#define AR_Q0_TXDP AR_MAC_QCU_OFFSET(MAC_QCU_TXDP)462#define AR_QTXDP(_i) (AR_Q0_TXDP + ((_i)<<2))463464/* MAC Transmit Status Ring Start Address */465#define AR_Q_STATUS_RING_START AR_MAC_QCU_OFFSET(MAC_QCU_STATUS_RING_START)466/* MAC Transmit Status Ring End Address */467#define AR_Q_STATUS_RING_END AR_MAC_QCU_OFFSET(MAC_QCU_STATUS_RING_END)468/* Current Address in the Transmit Status Ring pointed to by the MAC */469#define AR_Q_STATUS_RING_CURRENT AR_MAC_QCU_OFFSET(MAC_QCU_STATUS_RING_CURRENT)470471/* MAC Transmit Queue enable */472#define AR_Q_TXE AR_MAC_QCU_OFFSET(MAC_QCU_TXE)473#define AR_Q_TXE_M 0x000003FF // Mask for TXE (QCU 0-9)474475/* MAC Transmit Queue disable */476#define AR_Q_TXD AR_MAC_QCU_OFFSET(MAC_QCU_TXD)477#define AR_Q_TXD_M 0x000003FF // Mask for TXD (QCU 0-9)478479/* MAC CBR configuration */480#define AR_Q0_CBRCFG AR_MAC_QCU_OFFSET(MAC_QCU_CBR)481#define AR_QCBRCFG(_i) (AR_Q0_CBRCFG + ((_i)<<2))482#define AR_Q_CBRCFG_INTERVAL 0x00FFFFFF // Mask for CBR interval (us)483#define AR_Q_CBRCFG_INTERVAL_S 0 // Shift for CBR interval (us)484#define AR_Q_CBRCFG_OVF_THRESH 0xFF000000 // Mask for CBR overflow threshold485#define AR_Q_CBRCFG_OVF_THRESH_S 24 // Shift for CBR overflow threshold486487/* MAC ready_time configuration */488#define AR_Q0_RDYTIMECFG AR_MAC_QCU_OFFSET(MAC_QCU_RDYTIME)489#define AR_QRDYTIMECFG(_i) (AR_Q0_RDYTIMECFG + ((_i)<<2))490#define AR_Q_RDYTIMECFG_DURATION 0x00FFFFFF // Mask for ready_time duration (us)491#define AR_Q_RDYTIMECFG_DURATION_S 0 // Shift for ready_time duration (us)492#define AR_Q_RDYTIMECFG_EN 0x01000000 // ready_time enable493494/* MAC OneShotArm set control */495#define AR_Q_ONESHOTARM_SC AR_MAC_QCU_OFFSET(MAC_QCU_ONESHOT_ARM_SC)496#define AR_Q_ONESHOTARM_SC_M 0x000003FF // Mask for #define AR_Q_ONESHOTARM_SC (QCU 0-9)497#define AR_Q_ONESHOTARM_SC_RESV0 0xFFFFFC00 // Reserved498499/* MAC OneShotArm clear control */500#define AR_Q_ONESHOTARM_CC AR_MAC_QCU_OFFSET(MAC_QCU_ONESHOT_ARM_CC)501#define AR_Q_ONESHOTARM_CC_M 0x000003FF // Mask for #define AR_Q_ONESHOTARM_CC (QCU 0-9)502#define AR_Q_ONESHOTARM_CC_RESV0 0xFFFFFC00 // Reserved503504/* MAC Miscellaneous QCU settings */505#define AR_Q0_MISC AR_MAC_QCU_OFFSET(MAC_QCU_MISC)506#define AR_QMISC(_i) (AR_Q0_MISC + ((_i)<<2))507#define AR_Q_MISC_FSP 0x0000000F // Mask for Frame Scheduling Policy508#define AR_Q_MISC_FSP_S 0509#define AR_Q_MISC_FSP_ASAP 0 // ASAP510#define AR_Q_MISC_FSP_CBR 1 // CBR511#define AR_Q_MISC_FSP_DBA_GATED 2 // DMA Beacon Alert gated512#define AR_Q_MISC_FSP_TIM_GATED 3 // TIM gated513#define AR_Q_MISC_FSP_BEACON_SENT_GATED 4 // Beacon-sent-gated514#define AR_Q_MISC_FSP_BEACON_RCVD_GATED 5 // Beacon-received-gated515#define AR_Q_MISC_ONE_SHOT_EN 0x00000010 // OneShot enable516#define AR_Q_MISC_CBR_INCR_DIS1 0x00000020 // Disable CBR expired counter incr (empty q)517#define AR_Q_MISC_CBR_INCR_DIS0 0x00000040 // Disable CBR expired counter incr (empty beacon q)518#define AR_Q_MISC_BEACON_USE 0x00000080 // Beacon use indication519#define AR_Q_MISC_CBR_EXP_CNTR_LIMIT_EN 0x00000100 // CBR expired counter limit enable520#define AR_Q_MISC_RDYTIME_EXP_POLICY 0x00000200 // Enable TXE cleared on ready_time expired or VEOL521#define AR_Q_MISC_RESET_CBR_EXP_CTR 0x00000400 // Reset CBR expired counter522#define AR_Q_MISC_DCU_EARLY_TERM_REQ 0x00000800 // DCU frame early termination request control523#define AR_Q_MISC_RESV0 0xFFFFF000 // Reserved524525/* MAC Miscellaneous QCU status */526#define AR_Q0_STS AR_MAC_QCU_OFFSET(MAC_QCU_CNT)527#define AR_QSTS(_i) (AR_Q0_STS + ((_i)<<2))528#define AR_Q_STS_PEND_FR_CNT 0x00000003 // Mask for Pending Frame Count529#define AR_Q_STS_RESV0 0x000000FC // Reserved530#define AR_Q_STS_CBR_EXP_CNT 0x0000FF00 // Mask for CBR expired counter531#define AR_Q_STS_RESV1 0xFFFF0000 // Reserved532533/* MAC ReadyTimeShutdown status */534#define AR_Q_RDYTIMESHDN AR_MAC_QCU_OFFSET(MAC_QCU_RDYTIME_SHDN)535#define AR_Q_RDYTIMESHDN_M 0x000003FF // Mask for ReadyTimeShutdown status (QCU 0-9)536537/* MAC Descriptor CRC check */538#define AR_Q_DESC_CRCCHK AR_MAC_QCU_OFFSET(MAC_QCU_DESC_CRC_CHK)539#define AR_Q_DESC_CRCCHK_EN 1 // Enable CRC check on the descriptor fetched from HOST540541#define AR_MAC_QCU_EOL AR_MAC_QCU_OFFSET(MAC_QCU_EOL)542#define AR_MAC_QCU_EOL_DUR_CAL_EN 0x000003FF // Adjusts EOL for frame duration (QCU 0-9)543#define AR_MAC_QCU_EOL_DUR_CAL_EN_S 0544545/*546* MAC DCU Registers547*/548549#define AR_MAC_DCU_OFFSET(_x) offsetof(struct mac_dcu_reg, _x)550551#define AR_NUM_DCU 10 // Only use 10 DCU's for forward QCU/DCU compatibility552#define AR_DCU_0 0x0001553#define AR_DCU_1 0x0002554#define AR_DCU_2 0x0004555#define AR_DCU_3 0x0008556#define AR_DCU_4 0x0010557#define AR_DCU_5 0x0020558#define AR_DCU_6 0x0040559#define AR_DCU_7 0x0080560#define AR_DCU_8 0x0100561#define AR_DCU_9 0x0200562563/* MAC QCU Mask */564#define AR_D0_QCUMASK AR_MAC_DCU_OFFSET(MAC_DCU_QCUMASK)565#define AR_DQCUMASK(_i) (AR_D0_QCUMASK + ((_i)<<2))566#define AR_D_QCUMASK 0x000003FF // Mask for QCU Mask (QCU 0-9)567#define AR_D_QCUMASK_RESV0 0xFFFFFC00 // Reserved568569/* DCU transmit filter cmd (w/only) */570#define AR_D_TXBLK_CMD AR_MAC_DCU_OFFSET(MAC_DCU_TXFILTER_DCU0_31_0)571#define AR_D_TXBLK_DATA(i) (AR_D_TXBLK_CMD+(i)) // DCU transmit filter data572573574/* MAC DCU-global IFS settings: SIFS duration */575#define AR_D_GBL_IFS_SIFS AR_MAC_DCU_OFFSET(MAC_DCU_GBL_IFS_SIFS)576#define AR_D_GBL_IFS_SIFS_M 0x0000FFFF // Mask for SIFS duration (core clocks)577#define AR_D_GBL_IFS_SIFS_RESV0 0xFFFFFFFF // Reserved578579/* MAC DCU-global IFS settings: slot duration */580#define AR_D_GBL_IFS_SLOT AR_MAC_DCU_OFFSET(MAC_DCU_GBL_IFS_SLOT)581#define AR_D_GBL_IFS_SLOT_M 0x0000FFFF // Mask for Slot duration (core clocks)582#define AR_D_GBL_IFS_SLOT_RESV0 0xFFFF0000 // Reserved583584/* MAC Retry limits */585#define AR_D0_RETRY_LIMIT AR_MAC_DCU_OFFSET(MAC_DCU_RETRY_LIMIT)586#define AR_DRETRY_LIMIT(_i) (AR_D0_RETRY_LIMIT + ((_i)<<2))587#define AR_D_RETRY_LIMIT_FR_SH 0x0000000F // Mask for frame short retry limit588#define AR_D_RETRY_LIMIT_FR_SH_S 0 // Shift for frame short retry limit589#define AR_D_RETRY_LIMIT_STA_SH 0x00003F00 // Mask for station short retry limit590#define AR_D_RETRY_LIMIT_STA_SH_S 8 // Shift for station short retry limit591#define AR_D_RETRY_LIMIT_STA_LG 0x000FC000 // Mask for station short retry limit592#define AR_D_RETRY_LIMIT_STA_LG_S 14 // Shift for station short retry limit593#define AR_D_RETRY_LIMIT_RESV0 0xFFF00000 // Reserved594595/* MAC DCU-global IFS settings: EIFS duration */596#define AR_D_GBL_IFS_EIFS AR_MAC_DCU_OFFSET(MAC_DCU_GBL_IFS_EIFS)597#define AR_D_GBL_IFS_EIFS_M 0x0000FFFF // Mask for Slot duration (core clocks)598#define AR_D_GBL_IFS_EIFS_RESV0 0xFFFF0000 // Reserved599600/* MAC ChannelTime settings */601#define AR_D0_CHNTIME AR_MAC_DCU_OFFSET(MAC_DCU_CHANNEL_TIME)602#define AR_DCHNTIME(_i) (AR_D0_CHNTIME + ((_i)<<2))603#define AR_D_CHNTIME_DUR 0x000FFFFF // Mask for ChannelTime duration (us)604#define AR_D_CHNTIME_DUR_S 0 // Shift for ChannelTime duration (us)605#define AR_D_CHNTIME_EN 0x00100000 // ChannelTime enable606#define AR_D_CHNTIME_RESV0 0xFFE00000 // Reserved607608/* MAC DCU-global IFS settings: Miscellaneous */609#define AR_D_GBL_IFS_MISC AR_MAC_DCU_OFFSET(MAC_DCU_GBL_IFS_MISC)610#define AR_D_GBL_IFS_MISC_LFSR_SLICE_SEL 0x00000007 // Mask forLFSR slice select611#define AR_D_GBL_IFS_MISC_TURBO_MODE 0x00000008 // Turbo mode indication612#define AR_D_GBL_IFS_MISC_DCU_ARBITER_DLY 0x00300000 // Mask for DCU arbiter delay613#define AR_D_GBL_IFS_MISC_RANDOM_LFSR_SLICE_DIS 0x01000000 // Random LSFR slice disable614#define AR_D_GBL_IFS_MISC_SLOT_XMIT_WIND_LEN 0x06000000 // Slot transmission window length mask615#define AR_D_GBL_IFS_MISC_FORCE_XMIT_SLOT_BOUND 0x08000000 // Force transmission on slot boundaries616#define AR_D_GBL_IFS_MISC_IGNORE_BACKOFF 0x10000000 // Ignore backoff617618/* MAC Miscellaneous DCU-specific settings */619#define AR_D0_MISC AR_MAC_DCU_OFFSET(MAC_DCU_MISC)620#define AR_DMISC(_i) (AR_D0_MISC + ((_i)<<2))621#define AR_D_MISC_BKOFF_THRESH 0x0000003F // Mask for Backoff threshold setting622#define AR_D_MISC_RETRY_CNT_RESET_EN 0x00000040 // End of tx series station RTS/data failure count reset policy623#define AR_D_MISC_CW_RESET_EN 0x00000080 // End of tx series CW reset enable624#define AR_D_MISC_FRAG_WAIT_EN 0x00000100 // Fragment Starvation Policy625#define AR_D_MISC_FRAG_BKOFF_EN 0x00000200 // Backoff during a frag burst626#define AR_D_MISC_CW_BKOFF_EN 0x00001000 // Use binary exponential CW backoff627#define AR_D_MISC_VIR_COL_HANDLING 0x0000C000 // Mask for Virtual collision handling policy628#define AR_D_MISC_VIR_COL_HANDLING_S 14 // Shift for Virtual collision handling policy629#define AR_D_MISC_VIR_COL_HANDLING_DEFAULT 0 // Normal630#define AR_D_MISC_VIR_COL_HANDLING_IGNORE 1 // Ignore631#define AR_D_MISC_BEACON_USE 0x00010000 // Beacon use indication632#define AR_D_MISC_ARB_LOCKOUT_CNTRL 0x00060000 // Mask for DCU arbiter lockout control633#define AR_D_MISC_ARB_LOCKOUT_CNTRL_S 17 // Shift for DCU arbiter lockout control634#define AR_D_MISC_ARB_LOCKOUT_CNTRL_NONE 0 // No lockout635#define AR_D_MISC_ARB_LOCKOUT_CNTRL_INTRA_FR 1 // Intra-frame636#define AR_D_MISC_ARB_LOCKOUT_CNTRL_GLOBAL 2 // Global637#define AR_D_MISC_ARB_LOCKOUT_IGNORE 0x00080000 // DCU arbiter lockout ignore control638#define AR_D_MISC_SEQ_NUM_INCR_DIS 0x00100000 // Sequence number increment disable639#define AR_D_MISC_POST_FR_BKOFF_DIS 0x00200000 // Post-frame backoff disable640#define AR_D_MISC_VIT_COL_CW_BKOFF_EN 0x00400000 // Virtual coll. handling policy641#define AR_D_MISC_BLOWN_IFS_RETRY_EN 0x00800000 // Initiate Retry procedure on Blown IFS642#define AR_D_MISC_RESV0 0xFF000000 // Reserved643644/* MAC Frame sequence number control/status */645#define AR_D_SEQNUM AR_MAC_DCU_OFFSET(MAC_DCU_SEQ)646647/* MAC DCU transmit pause control/status */648#define AR_D_TXPSE AR_MAC_DCU_OFFSET(MAC_DCU_PAUSE)649#define AR_D_TXPSE_CTRL 0x000003FF // Mask of DCUs to pause (DCUs 0-9)650#define AR_D_TXPSE_RESV0 0x0000FC00 // Reserved651#define AR_D_TXPSE_STATUS 0x00010000 // Transmit pause status652#define AR_D_TXPSE_RESV1 0xFFFE0000 // Reserved653654/* MAC DCU WOW Keep-Alive Config register */655#define AR_D_WOW_KACFG AR_MAC_DCU_OFFSET(MAC_DCU_WOW_KACFG)656657/* MAC DCU transmission slot mask */658#define AR_D_TXSLOTMASK AR_MAC_DCU_OFFSET(MAC_DCU_TXSLOT)659#define AR_D_TXSLOTMASK_NUM 0x0000000F // slot numbers660661/* MAC DCU-specific IFS settings */662#define AR_D0_LCL_IFS AR_MAC_DCU_OFFSET(MAC_DCU_LCL_IFS)663#define AR_DLCL_IFS(_i) (AR_D0_LCL_IFS + ((_i)<<2))664#define AR_D9_LCL_IFS AR_DLCL_IFS(9)665#define AR_D_LCL_IFS_CWMIN 0x000003FF // Mask for CW_MIN666#define AR_D_LCL_IFS_CWMIN_S 0 // Shift for CW_MIN667#define AR_D_LCL_IFS_CWMAX 0x000FFC00 // Mask for CW_MAX668#define AR_D_LCL_IFS_CWMAX_S 10 // Shift for CW_MAX669#define AR_D_LCL_IFS_AIFS 0x0FF00000 // Mask for AIFS670#define AR_D_LCL_IFS_AIFS_S 20 // Shift for AIFS671/*672* Note: even though this field is 8 bits wide the673* maximum supported AIFS value is 0xfc. Setting the AIFS value674* to 0xfd 0xfe or 0xff will not work correctly and will cause675* the DCU to hang.676*/677#define AR_D_LCL_IFS_RESV0 0xF0000000 // Reserved678679680#define AR_CFG_LED 0x1f04 /* LED control */681#define AR_CFG_SCLK_RATE_IND 0x00000003 /* sleep clock indication */682#define AR_CFG_SCLK_RATE_IND_S 0683#define AR_CFG_SCLK_32MHZ 0x00000000 /* Sleep clock rate */684#define AR_CFG_SCLK_4MHZ 0x00000001 /* Sleep clock rate */685#define AR_CFG_SCLK_1MHZ 0x00000002 /* Sleep clock rate */686#define AR_CFG_SCLK_32KHZ 0x00000003 /* Sleep clock rate */687#define AR_CFG_LED_BLINK_SLOW 0x00000008 /* LED slowest blink rate mode */688#define AR_CFG_LED_BLINK_THRESH_SEL 0x00000070 /* LED blink threshold select */689#define AR_CFG_LED_MODE_SEL 0x00000380 /* LED mode: bits 7..9 */690#define AR_CFG_LED_MODE_SEL_S 7 /* LED mode: bits 7..9 */691#define AR_CFG_LED_POWER 0x00000280 /* Power LED: bit 9=1, bit 7=<LED State> */692#define AR_CFG_LED_POWER_S 7 /* LED mode: bits 7..9 */693#define AR_CFG_LED_NETWORK 0x00000300 /* Network LED: bit 9=1, bit 8=<LED State> */694#define AR_CFG_LED_NETWORK_S 7 /* LED mode: bits 7..9 */695#define AR_CFG_LED_MODE_PROP 0x0 /* Blink prop to filtered tx/rx */696#define AR_CFG_LED_MODE_RPROP 0x1 /* Blink prop to unfiltered tx/rx */697#define AR_CFG_LED_MODE_SPLIT 0x2 /* Blink power for tx/net for rx */698#define AR_CFG_LED_MODE_RAND 0x3 /* Blink randomly */699#define AR_CFG_LED_MODE_POWER_OFF 0x4 /* Power LED OFF */700#define AR_CFG_LED_MODE_POWER_ON 0x5 /* Power LED ON */701#define AR_CFG_LED_MODE_NETWORK_OFF 0x4 /* Network LED OFF */702#define AR_CFG_LED_MODE_NETWORK_ON 0x6 /* Network LED ON */703#define AR_CFG_LED_ASSOC_CTL 0x00000c00 /* LED control: bits 10..11 */704#define AR_CFG_LED_ASSOC_CTL_S 10 /* LED control: bits 10..11 */705#define AR_CFG_LED_ASSOC_NONE 0x0 /* 0x00000000: STA is not associated or trying */706#define AR_CFG_LED_ASSOC_ACTIVE 0x1 /* 0x00000400: STA is associated */707#define AR_CFG_LED_ASSOC_PENDING 0x2 /* 0x00000800: STA is trying to associate */708709#define AR_CFG_LED_BLINK_SLOW 0x00000008 /* LED slowest blink rate mode: bit 3 */710#define AR_CFG_LED_BLINK_SLOW_S 3 /* LED slowest blink rate mode: bit 3 */711712#define AR_CFG_LED_BLINK_THRESH_SEL 0x00000070 /* LED blink threshold select: bits 4..6 */713#define AR_CFG_LED_BLINK_THRESH_SEL_S 4 /* LED blink threshold select: bits 4..6 */714715#define AR_MAC_SLEEP 0x1f00716#define AR_MAC_SLEEP_MAC_AWAKE 0x00000000 // mac is now awake717#define AR_MAC_SLEEP_MAC_ASLEEP 0x00000001 // mac is now asleep718719720721/******************************************************************************722* Host Interface Register Map723******************************************************************************/724// DMA & PCI Registers in PCI space (usable during sleep)725726#define AR_HOSTIF_REG(_ah, _reg) (AH9300(_ah)->ah_hostifregs._reg)727#define AR9300_HOSTIF_OFFSET(_x) offsetof(struct host_intf_reg, _x)728#define AR9340_HOSTIF_OFFSET(_x) offsetof(struct host_intf_reg_ar9340, _x)729730/* Interface Reset Control Register */731#define AR_RC_AHB 0x00000001 // ahb reset732#define AR_RC_APB 0x00000002 // apb reset733#define AR_RC_HOSTIF 0x00000100 // host interface reset734735/* PCI express work-arounds */736#define AR_WA_D3_TO_L1_DISABLE (1 << 14)737#define AR_WA_UNTIE_RESET_EN (1 << 15) /* Enable PCI Reset to POR (power-on-reset) */738#define AR_WA_D3_TO_L1_DISABLE_REAL (1 << 16)739#define AR_WA_ASPM_TIMER_BASED_DISABLE (1 << 17)740#define AR_WA_RESET_EN (1 << 18) /* Sw Control to enable PCI-Reset to POR (bit 15) */741#define AR_WA_ANALOG_SHIFT (1 << 20)742#define AR_WA_POR_SHORT (1 << 21) /* PCI-E Phy reset control */743#define AR_WA_COLD_RESET_OVERRIDE (1 << 13) /* PCI-E Cold reset override */744745/* power management state */746#define AR_PM_STATE_PME_D3COLD_VAUX 0x00100000 //for wow747748/* CXPL Debug signals which help debug Link Negotiation */749/* CXPL Debug signals which help debug Link Negotiation */750751/* XXX check bit feilds */752/* Power Management Control Register */753#define AR_PCIE_PM_CTRL_ENA 0x00080000754#define AR_PMCTRL_WOW_PME_CLR 0x00200000 /* Clear WoW event */755#define AR_PMCTRL_HOST_PME_EN 0x00400000 /* Send OOB WAKE_L on WoW event */756#define AR_PMCTRL_D3COLD_VAUX 0x00800000757#define AR_PMCTRL_PWR_STATE_MASK 0x0F000000 /* Power State Mask */758#define AR_PMCTRL_PWR_STATE_D1D3 0x0F000000 /* Activate D1 and D3 */759#define AR_PMCTRL_PWR_STATE_D0 0x08000000 /* Activate D0 */760#define AR_PMCTRL_PWR_PM_CTRL_ENA 0x00008000 /* Enable power management */761#define AR_PMCTRL_AUX_PWR_DET 0x10000000 /* Puts Chip in L2 state */762763764765/* APB and Local Bus Timeout Counters */766#define AR_HOST_TIMEOUT_APB_CNTR 0x0000FFFF767#define AR_HOST_TIMEOUT_APB_CNTR_S 0768#define AR_HOST_TIMEOUT_LCL_CNTR 0xFFFF0000769#define AR_HOST_TIMEOUT_LCL_CNTR_S 16770771/* EEPROM Control Register */772#define AR_EEPROM_ABSENT 0x00000100773#define AR_EEPROM_CORRUPT 0x00000200774#define AR_EEPROM_PROT_MASK 0x03FFFC00775#define AR_EEPROM_PROT_MASK_S 10776777// Protect Bits RP is read protect WP is write protect778#define EEPROM_PROTECT_RP_0_31 0x0001779#define EEPROM_PROTECT_WP_0_31 0x0002780#define EEPROM_PROTECT_RP_32_63 0x0004781#define EEPROM_PROTECT_WP_32_63 0x0008782#define EEPROM_PROTECT_RP_64_127 0x0010783#define EEPROM_PROTECT_WP_64_127 0x0020784#define EEPROM_PROTECT_RP_128_191 0x0040785#define EEPROM_PROTECT_WP_128_191 0x0080786#define EEPROM_PROTECT_RP_192_255 0x0100787#define EEPROM_PROTECT_WP_192_255 0x0200788#define EEPROM_PROTECT_RP_256_511 0x0400789#define EEPROM_PROTECT_WP_256_511 0x0800790#define EEPROM_PROTECT_RP_512_1023 0x1000791#define EEPROM_PROTECT_WP_512_1023 0x2000792#define EEPROM_PROTECT_RP_1024_2047 0x4000793#define EEPROM_PROTECT_WP_1024_2047 0x8000794795/* RF silent */796#define AR_RFSILENT_FORCE 0x01797798/* MAC silicon Rev ID */799#define AR_SREV_ID 0x000000FF /* Mask to read SREV info */800#define AR_SREV_VERSION 0x000000F0 /* Mask for Chip version */801#define AR_SREV_VERSION_S 4 /* Mask to shift Major Rev Info */802#define AR_SREV_REVISION 0x00000007 /* Mask for Chip revision level */803804/* Sowl extension to SREV. AR_SREV_ID must be 0xFF */805#define AR_SREV_ID2 0xFFFFFFFF /* Mask to read SREV info */806#define AR_SREV_VERSION2 0xFFFC0000 /* Mask for Chip version */807#define AR_SREV_VERSION2_S 18 /* Mask to shift Major Rev Info */808#define AR_SREV_TYPE2 0x0003F000 /* Mask for Chip type */809#define AR_SREV_TYPE2_S 12 /* Mask to shift Major Rev Info */810#define AR_SREV_TYPE2_CHAIN 0x00001000 /* chain mode (1 = 3 chains, 0 = 2 chains) */811#define AR_SREV_TYPE2_HOST_MODE 0x00002000 /* host mode (1 = PCI, 0 = PCIe) */812/* Jupiter has a different TYPE2 definition. */813#define AR_SREV_TYPE2_JUPITER_CHAIN 0x00001000 /* chain (1 = 2 chains, 0 = 1 chain) */814#define AR_SREV_TYPE2_JUPITER_BAND 0x00002000 /* band (1 = dual band, 0 = single band) */815#define AR_SREV_TYPE2_JUPITER_BT 0x00004000 /* BT (1 = shared BT, 0 = no BT) */816#define AR_SREV_TYPE2_JUPITER_MODE 0x00008000 /* mode (1 = premium, 0 = standard) */817#define AR_SREV_REVISION2 0x00000F00818#define AR_SREV_REVISION2_S 8819820#define AR_RADIO_SREV_MAJOR 0xf0821#define AR_RAD5133_SREV_MAJOR 0xc0 /* Fowl: 2+5G/3x3 */822#define AR_RAD2133_SREV_MAJOR 0xd0 /* Fowl: 2G/3x3 */823#define AR_RAD5122_SREV_MAJOR 0xe0 /* Fowl: 5G/2x2 */824#define AR_RAD2122_SREV_MAJOR 0xf0 /* Fowl: 2+5G/2x2 */825826#if 0827#define AR_AHB_MODE 0x4024 // ahb mode for dma828#define AR_AHB_EXACT_WR_EN 0x00000000 // write exact bytes829#define AR_AHB_BUF_WR_EN 0x00000001 // buffer write upto cacheline830#define AR_AHB_EXACT_RD_EN 0x00000000 // read exact bytes831#define AR_AHB_CACHELINE_RD_EN 0x00000002 // read upto end of cacheline832#define AR_AHB_PREFETCH_RD_EN 0x00000004 // prefetch upto page boundary833#define AR_AHB_PAGE_SIZE_1K 0x00000000 // set page-size as 1k834#define AR_AHB_PAGE_SIZE_2K 0x00000008 // set page-size as 2k835#define AR_AHB_PAGE_SIZE_4K 0x00000010 // set page-size as 4k836#endif837838#define AR_INTR_RTC_IRQ 0x00000001 // rtc in shutdown state839#define AR_INTR_MAC_IRQ 0x00000002 // pending mac interrupt840#if 0841/*842* the following definitions might be differents for WASP so843* disable them to avoid improper use844*/845#define AR_INTR_EEP_PROT_ACCESS 0x00000004 // eeprom protected area access846#define AR_INTR_MAC_AWAKE 0x00020000 // mac is awake847#define AR_INTR_MAC_ASLEEP 0x00040000 // mac is asleep848#endif849#define AR_INTR_SPURIOUS 0xFFFFFFFF850851/* TODO: fill in other values */852853/* Synchronous Interrupt Cause Register */854855/* Synchronous Interrupt Enable Register */856#define AR_INTR_SYNC_ENABLE_GPIO 0xFFFC0000 // enable interrupts: bits 18..31857#define AR_INTR_SYNC_ENABLE_GPIO_S 18 // enable interrupts: bits 18..31858859/*860* synchronous interrupt signals861*/862enum {863AR9300_INTR_SYNC_RTC_IRQ = 0x00000001,864AR9300_INTR_SYNC_MAC_IRQ = 0x00000002,865AR9300_INTR_SYNC_EEPROM_ILLEGAL_ACCESS = 0x00000004,866AR9300_INTR_SYNC_APB_TIMEOUT = 0x00000008,867AR9300_INTR_SYNC_PCI_MODE_CONFLICT = 0x00000010,868AR9300_INTR_SYNC_HOST1_FATAL = 0x00000020,869AR9300_INTR_SYNC_HOST1_PERR = 0x00000040,870AR9300_INTR_SYNC_TRCV_FIFO_PERR = 0x00000080,871AR9300_INTR_SYNC_RADM_CPL_EP = 0x00000100,872AR9300_INTR_SYNC_RADM_CPL_DLLP_ABORT = 0x00000200,873AR9300_INTR_SYNC_RADM_CPL_TLP_ABORT = 0x00000400,874AR9300_INTR_SYNC_RADM_CPL_ECRC_ERR = 0x00000800,875AR9300_INTR_SYNC_RADM_CPL_TIMEOUT = 0x00001000,876AR9300_INTR_SYNC_LOCAL_TIMEOUT = 0x00002000,877AR9300_INTR_SYNC_PM_ACCESS = 0x00004000,878AR9300_INTR_SYNC_MAC_AWAKE = 0x00008000,879AR9300_INTR_SYNC_MAC_ASLEEP = 0x00010000,880AR9300_INTR_SYNC_MAC_SLEEP_ACCESS = 0x00020000,881AR9300_INTR_SYNC_ALL = 0x0003FFFF,882883/*884* Do not enable and turn on mask for both sync and async interrupt, since885* chip can generate interrupt storm.886*/887AR9300_INTR_SYNC_DEF_NO_HOST1_PERR = (AR9300_INTR_SYNC_HOST1_FATAL |888AR9300_INTR_SYNC_RADM_CPL_EP |889AR9300_INTR_SYNC_RADM_CPL_DLLP_ABORT |890AR9300_INTR_SYNC_RADM_CPL_TLP_ABORT |891AR9300_INTR_SYNC_RADM_CPL_ECRC_ERR |892AR9300_INTR_SYNC_RADM_CPL_TIMEOUT |893AR9300_INTR_SYNC_LOCAL_TIMEOUT |894AR9300_INTR_SYNC_MAC_SLEEP_ACCESS),895AR9300_INTR_SYNC_DEFAULT = (AR9300_INTR_SYNC_DEF_NO_HOST1_PERR |896AR9300_INTR_SYNC_HOST1_PERR),897898AR9300_INTR_SYNC_SPURIOUS = 0xFFFFFFFF,899900/* WASP */901AR9340_INTR_SYNC_RTC_IRQ = 0x00000001,902AR9340_INTR_SYNC_MAC_IRQ = 0x00000002,903AR9340_INTR_SYNC_HOST1_FATAL = 0x00000004,904AR9340_INTR_SYNC_HOST1_PERR = 0x00000008,905AR9340_INTR_SYNC_LOCAL_TIMEOUT = 0x00000010,906AR9340_INTR_SYNC_MAC_ASLEEP = 0x00000020,907AR9340_INTR_SYNC_MAC_SLEEP_ACCESS = 0x00000040,908909AR9340_INTR_SYNC_DEFAULT = (AR9340_INTR_SYNC_HOST1_FATAL |910AR9340_INTR_SYNC_HOST1_PERR |911AR9340_INTR_SYNC_LOCAL_TIMEOUT |912AR9340_INTR_SYNC_MAC_SLEEP_ACCESS),913914AR9340_INTR_SYNC_SPURIOUS = 0xFFFFFFFF,915};916917/* Asynchronous Interrupt Mask Register */918#define AR_INTR_ASYNC_MASK_GPIO 0xFFFC0000 // asynchronous interrupt mask: bits 18..31919#define AR_INTR_ASYNC_MASK_GPIO_S 18 // asynchronous interrupt mask: bits 18..31920#define AR_INTR_ASYNC_MASK_MCI 0x00000080921#define AR_INTR_ASYNC_MASK_MCI_S 7922923/* Synchronous Interrupt Mask Register */924#define AR_INTR_SYNC_MASK_GPIO 0xFFFC0000 // synchronous interrupt mask: bits 18..31925#define AR_INTR_SYNC_MASK_GPIO_S 18 // synchronous interrupt mask: bits 18..31926927/* Asynchronous Interrupt Cause Register */928#define AR_INTR_ASYNC_CAUSE_GPIO 0xFFFC0000 // GPIO interrupts: bits 18..31929#define AR_INTR_ASYNC_CAUSE_MCI 0x00000080930#define AR_INTR_ASYNC_USED (AR_INTR_MAC_IRQ | AR_INTR_ASYNC_CAUSE_GPIO | AR_INTR_ASYNC_CAUSE_MCI)931932/* Asynchronous Interrupt Enable Register */933#define AR_INTR_ASYNC_ENABLE_GPIO 0xFFFC0000 // enable interrupts: bits 18..31934#define AR_INTR_ASYNC_ENABLE_GPIO_S 18 // enable interrupts: bits 18..31935#define AR_INTR_ASYNC_ENABLE_MCI 0x00000080936#define AR_INTR_ASYNC_ENABLE_MCI_S 7937938/* PCIE PHY Data Register */939940/* PCIE PHY Load Register */941#define AR_PCIE_PM_CTRL_ENA 0x00080000942943#define AR93XX_NUM_GPIO 16 // 0 to 15944945/* GPIO Output Register */946#define AR_GPIO_OUT_VAL 0x000FFFF947#define AR_GPIO_OUT_VAL_S 0948949/* GPIO Input Register */950#define AR_GPIO_IN_VAL 0x000FFFF951#define AR_GPIO_IN_VAL_S 0952953/* Host GPIO output enable bits */954#define AR_GPIO_OE_OUT_DRV 0x3 // 2 bit field mask, shifted by 2*bitpos955#define AR_GPIO_OE_OUT_DRV_NO 0x0 // tristate956#define AR_GPIO_OE_OUT_DRV_LOW 0x1 // drive if low957#define AR_GPIO_OE_OUT_DRV_HI 0x2 // drive if high958#define AR_GPIO_OE_OUT_DRV_ALL 0x3 // drive always959960/* Host GPIO output enable bits */961962/* Host GPIO Interrupt Polarity */963#define AR_GPIO_INTR_POL_VAL 0x0001FFFF // bits 16:0 correspond to gpio 16:0964#define AR_GPIO_INTR_POL_VAL_S 0 // bits 16:0 correspond to gpio 16:0965966/* Host GPIO Input Value */967#define AR_GPIO_INPUT_EN_VAL_BT_PRIORITY_DEF 0x00000004 // default value for bt_priority_async968#define AR_GPIO_INPUT_EN_VAL_BT_PRIORITY_S 2969#define AR_GPIO_INPUT_EN_VAL_BT_FREQUENCY_DEF 0x00000008 // default value for bt_frequency_async970#define AR_GPIO_INPUT_EN_VAL_BT_FREQUENCY_S 3971#define AR_GPIO_INPUT_EN_VAL_BT_ACTIVE_DEF 0x00000010 // default value for bt_active_async972#define AR_GPIO_INPUT_EN_VAL_BT_ACTIVE_S 4973#define AR_GPIO_INPUT_EN_VAL_RFSILENT_DEF 0x00000080 // default value for rfsilent_bb_l974#define AR_GPIO_INPUT_EN_VAL_RFSILENT_DEF_S 7975#define AR_GPIO_INPUT_EN_VAL_BT_PRIORITY_BB 0x00000400 // 0 == set bt_priority_async to default, 1 == connect bt_prority_async to baseband976#define AR_GPIO_INPUT_EN_VAL_BT_PRIORITY_BB_S 10977#define AR_GPIO_INPUT_EN_VAL_BT_FREQUENCY_BB 0x00000800 // 0 == set bt_frequency_async to default, 1 == connect bt_frequency_async to baseband978#define AR_GPIO_INPUT_EN_VAL_BT_FREQUENCY_BB_S 11979#define AR_GPIO_INPUT_EN_VAL_BT_ACTIVE_BB 0x00001000 // 0 == set bt_active_async to default, 1 == connect bt_active_async to baseband980#define AR_GPIO_INPUT_EN_VAL_BT_ACTIVE_BB_S 12981#define AR_GPIO_INPUT_EN_VAL_RFSILENT_BB 0x00008000 // 0 == set rfsilent_bb_l to default, 1 == connect rfsilent_bb_l to baseband982#define AR_GPIO_INPUT_EN_VAL_RFSILENT_BB_S 15983#define AR_GPIO_RTC_RESET_OVERRIDE_ENABLE 0x00010000984#define AR_GPIO_JTAG_DISABLE 0x00020000 // 1 == disable JTAG985986/* GPIO Input Mux1 */987#define AR_GPIO_INPUT_MUX1_BT_PRIORITY 0x00000f00 /* bits 8..11: input mux for BT priority input */988#define AR_GPIO_INPUT_MUX1_BT_PRIORITY_S 8 /* bits 8..11: input mux for BT priority input */989#define AR_GPIO_INPUT_MUX1_BT_FREQUENCY 0x0000f000 /* bits 12..15: input mux for BT frequency input */990#define AR_GPIO_INPUT_MUX1_BT_FREQUENCY_S 12 /* bits 12..15: input mux for BT frequency input */991#define AR_GPIO_INPUT_MUX1_BT_ACTIVE 0x000f0000 /* bits 16..19: input mux for BT active input */992#define AR_GPIO_INPUT_MUX1_BT_ACTIVE_S 16 /* bits 16..19: input mux for BT active input */993994/* GPIO Input Mux2 */995#define AR_GPIO_INPUT_MUX2_CLK25 0x0000000f // bits 0..3: input mux for clk25 input996#define AR_GPIO_INPUT_MUX2_CLK25_S 0 // bits 0..3: input mux for clk25 input997#define AR_GPIO_INPUT_MUX2_RFSILENT 0x000000f0 // bits 4..7: input mux for rfsilent_bb_l input998#define AR_GPIO_INPUT_MUX2_RFSILENT_S 4 // bits 4..7: input mux for rfsilent_bb_l input999#define AR_GPIO_INPUT_MUX2_RTC_RESET 0x00000f00 // bits 8..11: input mux for RTC Reset input1000#define AR_GPIO_INPUT_MUX2_RTC_RESET_S 8 // bits 8..11: input mux for RTC Reset input10011002/* GPIO Output Mux1 */1003/* GPIO Output Mux2 */1004/* GPIO Output Mux3 */10051006#define AR_GPIO_OUTPUT_MUX_AS_OUTPUT 01007#define AR_GPIO_OUTPUT_MUX_AS_PCIE_ATTENTION_LED 11008#define AR_GPIO_OUTPUT_MUX_AS_PCIE_POWER_LED 21009#define AR_GPIO_OUTPUT_MUX_AS_TX_FRAME 31010#define AR_GPIO_OUTPUT_MUX_AS_RX_CLEAR_EXTERNAL 41011#define AR_GPIO_OUTPUT_MUX_AS_MAC_NETWORK_LED 51012#define AR_GPIO_OUTPUT_MUX_AS_MAC_POWER_LED 61013#define AR_GPIO_OUTPUT_MUX_AS_MCI_WLAN_DATA 0x161014#define AR_GPIO_OUTPUT_MUX_AS_MCI_WLAN_CLK 0x171015#define AR_GPIO_OUTPUT_MUX_AS_MCI_BT_DATA 0x181016#define AR_GPIO_OUTPUT_MUX_AS_MCI_BT_CLK 0x191017#define AR_GPIO_OUTPUT_MUX_AS_WL_IN_TX 0x141018#define AR_GPIO_OUTPUT_MUX_AS_WL_IN_RX 0x131019#define AR_GPIO_OUTPUT_MUX_AS_BT_IN_TX 91020#define AR_GPIO_OUTPUT_MUX_AS_BT_IN_RX 81021#define AR_GPIO_OUTPUT_MUX_AS_RUCKUS_STROBE 0x1d1022#define AR_GPIO_OUTPUT_MUX_AS_RUCKUS_DATA 0x1e10231024#define AR_GPIO_OUTPUT_MUX_AS_SMARTANT_CTRL0 0x1d1025#define AR_GPIO_OUTPUT_MUX_AS_SMARTANT_CTRL1 0x1e1026#define AR_GPIO_OUTPUT_MUX_AS_SMARTANT_CTRL2 0x1b1027/* The above three seems to be functional values for peacock chip. For some1028* reason these are continued for different boards as simple place holders.1029* Now continuing to use these and adding the extra definitions for Scropion1030*/1031#define AR_GPIO_OUTPUT_MUX_AS_SWCOM3 0x2610321033#define AR_ENABLE_SMARTANTENNA 0x0000000110341035/* Host GPIO Input State */10361037/* Host Spare */10381039/* Host PCIE Core Reset Enable */10401041/* Host CLKRUN */104210431044/* Host EEPROM Status */1045#define AR_EEPROM_STATUS_DATA_VAL 0x0000ffff1046#define AR_EEPROM_STATUS_DATA_VAL_S 01047#define AR_EEPROM_STATUS_DATA_BUSY 0x000100001048#define AR_EEPROM_STATUS_DATA_BUSY_ACCESS 0x000200001049#define AR_EEPROM_STATUS_DATA_PROT_ACCESS 0x000400001050#define AR_EEPROM_STATUS_DATA_ABSENT_ACCESS 0x0008000010511052/* Host Observation Control */10531054/* Host RF Silent */10551056/* Host GPIO PDPU */1057#define AR_GPIO_PDPU_OPTION 0x031058#define AR_GPIO_PULL_DOWN 0x0210591060/* Host GPIO Drive Strength */10611062/* Host Miscellaneous */10631064/* Host PCIE MSI Control Register */1065#define AR_PCIE_MSI_ENABLE 0x000000011066#define AR_PCIE_MSI_HW_DBI_WR_EN 0x020000001067#define AR_PCIE_MSI_HW_INT_PENDING_ADDR 0xFFA0C1FF // bits 8..11: value must be 0x50601068#define AR_PCIE_MSI_HW_INT_PENDING_ADDR_MSI_64 0xFFA0C9FF // bits 8..11: value must be 0x5064106910701071#define AR_INTR_PRIO_TX 0x000000011072#define AR_INTR_PRIO_RXLP 0x000000021073#define AR_INTR_PRIO_RXHP 0x0000000410741075/* OTP Interface Register */1076#define AR_ENT_OTP AR9300_HOSTIF_OFFSET(HOST_INTF_OTP)10771078#define AR_ENT_OTP_DUAL_BAND_DISABLE 0x000100001079#define AR_ENT_OTP_CHAIN2_DISABLE 0x000200001080#define AR_ENT_OTP_5MHZ_DISABLE 0x000400001081#define AR_ENT_OTP_10MHZ_DISABLE 0x000800001082#define AR_ENT_OTP_49GHZ_DISABLE 0x001000001083#define AR_ENT_OTP_LOOPBACK_DISABLE 0x002000001084#define AR_ENT_OTP_TPC_PERF_DISABLE 0x004000001085#define AR_ENT_OTP_MIN_PKT_SIZE_DISABLE 0x008000001086#define AR_ENT_OTP_SPECTRAL_PRECISION 0x0300000010871088/* OTP EFUSE registers */1089#define AR_OTP_EFUSE_OFFSET(_x) offsetof(struct efuse_reg_WLAN, _x)1090#define AR_OTP_EFUSE_INTF0 AR_OTP_EFUSE_OFFSET(OTP_INTF0)1091#define AR_OTP_EFUSE_INTF5 AR_OTP_EFUSE_OFFSET(OTP_INTF5)1092#define AR_OTP_EFUSE_PGENB_SETUP_HOLD_TIME AR_OTP_EFUSE_OFFSET(OTP_PGENB_SETUP_HOLD_TIME)1093#define AR_OTP_EFUSE_MEM AR_OTP_EFUSE_OFFSET(OTP_MEM)10941095/******************************************************************************1096* RTC Register Map1097******************************************************************************/10981099#define AR_RTC_OFFSET(_x) offsetof(struct rtc_reg, _x)11001101/* Reset Control */1102#define AR_RTC_RC AR_RTC_OFFSET(RESET_CONTROL)1103#define AR_RTC_RC_M 0x000000031104#define AR_RTC_RC_MAC_WARM 0x000000011105#define AR_RTC_RC_MAC_COLD 0x0000000211061107/* Crystal Control */1108#define AR_RTC_XTAL_CONTROL AR_RTC_OFFSET(XTAL_CONTROL)11091110/* Reg Control 0 */1111#define AR_RTC_REG_CONTROL0 AR_RTC_OFFSET(REG_CONTROL0)11121113/* Reg Control 1 */1114#define AR_RTC_REG_CONTROL1 AR_RTC_OFFSET(REG_CONTROL1)1115#define AR_RTC_REG_CONTROL1_SWREG_PROGRAM 0x0000000111161117/* TCXO Detect */1118#define AR_RTC_TCXO_DETECT AR_RTC_OFFSET(TCXO_DETECT)11191120/* Crystal Test */1121#define AR_RTC_XTAL_TEST AR_RTC_OFFSET(XTAL_TEST)11221123/* Sets the ADC/DAC clock quadrature */1124#define AR_RTC_QUADRATURE AR_RTC_OFFSET(QUADRATURE)11251126/* PLL Control */1127#define AR_RTC_PLL_CONTROL AR_RTC_OFFSET(PLL_CONTROL)1128#define AR_RTC_PLL_DIV 0x000003ff1129#define AR_RTC_PLL_DIV_S 01130#define AR_RTC_PLL_REFDIV 0x00003C001131#define AR_RTC_PLL_REFDIV_S 101132#define AR_RTC_PLL_CLKSEL 0x0000C0001133#define AR_RTC_PLL_CLKSEL_S 141134#define AR_RTC_PLL_BYPASS 0x000100001135#define AR_RTC_PLL_BYPASS_S 16113611371138/* PLL Control 2: for Hornet */1139#define AR_RTC_PLL_CONTROL2 AR_RTC_OFFSET(PLL_CONTROL2)11401141/* PLL Settle */1142#define AR_RTC_PLL_SETTLE AR_RTC_OFFSET(PLL_SETTLE)11431144/* Crystal Settle */1145#define AR_RTC_XTAL_SETTLE AR_RTC_OFFSET(XTAL_SETTLE)11461147/* Controls CLK_OUT pin clock speed */1148#define AR_RTC_CLOCK_OUT AR_RTC_OFFSET(CLOCK_OUT)11491150/* Forces bias block on at all times */1151#define AR_RTC_BIAS_OVERRIDE AR_RTC_OFFSET(BIAS_OVERRIDE)11521153/* System Sleep status bits */1154#define AR_RTC_SYSTEM_SLEEP AR_RTC_OFFSET(SYSTEM_SLEEP)11551156/* Controls sleep options for MAC */1157#define AR_RTC_MAC_SLEEP_CONTROL AR_RTC_OFFSET(MAC_SLEEP_CONTROL)11581159/* Keep Awake Timer */1160#define AR_RTC_KEEP_AWAKE AR_RTC_OFFSET(KEEP_AWAKE)11611162/* Create a 32kHz clock derived from HF */1163#define AR_RTC_DERIVED_RTC_CLK AR_RTC_OFFSET(DERIVED_RTC_CLK)116411651166/******************************************************************************1167* RTC SYNC Register Map1168******************************************************************************/11691170#define AR_RTC_SYNC_OFFSET(_x) offsetof(struct rtc_sync_reg, _x)11711172/* reset RTC */1173#define AR_RTC_RESET AR_RTC_SYNC_OFFSET(RTC_SYNC_RESET)1174#define AR_RTC_RESET_EN 0x00000001 /* Reset RTC bit */11751176/* system sleep status */1177#define AR_RTC_STATUS AR_RTC_SYNC_OFFSET(RTC_SYNC_STATUS)1178#define AR_RTC_STATUS_M 0x0000003f1179#define AR_RTC_STATUS_SHUTDOWN 0x000000011180#define AR_RTC_STATUS_ON 0x000000021181#define AR_RTC_STATUS_SLEEP 0x000000041182#define AR_RTC_STATUS_WAKEUP 0x000000081183#define AR_RTC_STATUS_SLEEP_ACCESS 0x000000101184#define AR_RTC_STATUS_PLL_CHANGING 0x0000002011851186/* RTC Derived Register */1187#define AR_RTC_SLEEP_CLK AR_RTC_SYNC_OFFSET(RTC_SYNC_DERIVED)1188#define AR_RTC_FORCE_DERIVED_CLK 0x000000021189#define AR_RTC_FORCE_SWREG_PRD 0x000000041190#define AR_RTC_PCIE_RST_PWDN_EN 0x0000000811911192/* RTC Force Wake Register */1193#define AR_RTC_FORCE_WAKE AR_RTC_SYNC_OFFSET(RTC_SYNC_FORCE_WAKE)1194#define AR_RTC_FORCE_WAKE_EN 0x00000001 /* enable force wake */1195#define AR_RTC_FORCE_WAKE_ON_INT 0x00000002 /* auto-wake on MAC interrupt */11961197/* RTC interrupt cause/clear */1198#define AR_RTC_INTR_CAUSE AR_RTC_SYNC_OFFSET(RTC_SYNC_INTR_CAUSE)1199/* RTC interrupt enable */1200#define AR_RTC_INTR_ENABLE AR_RTC_SYNC_OFFSET(RTC_SYNC_INTR_ENABLE)1201/* RTC interrupt mask */1202#define AR_RTC_INTR_MASK AR_RTC_SYNC_OFFSET(RTC_SYNC_INTR_MASK)1203120412051206/******************************************************************************1207* Analog Interface Register Map1208******************************************************************************/12091210#define AR_AN_OFFSET(_x) offsetof(struct analog_intf_reg_csr, _x)12111212/* XXX */1213#if 11214// AR9280: rf long shift registers1215#define AR_AN_RF2G1_CH0 0x78101216#define AR_AN_RF2G1_CH0_OB 0x038000001217#define AR_AN_RF2G1_CH0_OB_S 231218#define AR_AN_RF2G1_CH0_DB 0x1C0000001219#define AR_AN_RF2G1_CH0_DB_S 2612201221#define AR_AN_RF5G1_CH0 0x78181222#define AR_AN_RF5G1_CH0_OB5 0x000700001223#define AR_AN_RF5G1_CH0_OB5_S 161224#define AR_AN_RF5G1_CH0_DB5 0x003800001225#define AR_AN_RF5G1_CH0_DB5_S 1912261227#define AR_AN_RF2G1_CH1 0x78341228#define AR_AN_RF2G1_CH1_OB 0x038000001229#define AR_AN_RF2G1_CH1_OB_S 231230#define AR_AN_RF2G1_CH1_DB 0x1C0000001231#define AR_AN_RF2G1_CH1_DB_S 2612321233#define AR_AN_RF5G1_CH1 0x783C1234#define AR_AN_RF5G1_CH1_OB5 0x000700001235#define AR_AN_RF5G1_CH1_OB5_S 161236#define AR_AN_RF5G1_CH1_DB5 0x003800001237#define AR_AN_RF5G1_CH1_DB5_S 1912381239#define AR_AN_TOP2 0x78941240#define AR_AN_TOP2_XPABIAS_LVL 0xC00000001241#define AR_AN_TOP2_XPABIAS_LVL_S 301242#define AR_AN_TOP2_LOCALBIAS 0x002000001243#define AR_AN_TOP2_LOCALBIAS_S 211244#define AR_AN_TOP2_PWDCLKIND 0x004000001245#define AR_AN_TOP2_PWDCLKIND_S 2212461247#define AR_AN_SYNTH9 0x78681248#define AR_AN_SYNTH9_REFDIVA 0xf80000001249#define AR_AN_SYNTH9_REFDIVA_S 2712501251// AR9285 Analog registers1252#define AR9285_AN_RF2G1 0x78201253#define AR9285_AN_RF2G2 0x782412541255#define AR9285_AN_RF2G3 0x78281256#define AR9285_AN_RF2G3_OB_0 0x00E000001257#define AR9285_AN_RF2G3_OB_0_S 211258#define AR9285_AN_RF2G3_OB_1 0x001C00001259#define AR9285_AN_RF2G3_OB_1_S 181260#define AR9285_AN_RF2G3_OB_2 0x000380001261#define AR9285_AN_RF2G3_OB_2_S 151262#define AR9285_AN_RF2G3_OB_3 0x000070001263#define AR9285_AN_RF2G3_OB_3_S 121264#define AR9285_AN_RF2G3_OB_4 0x00000E001265#define AR9285_AN_RF2G3_OB_4_S 912661267#define AR9285_AN_RF2G3_DB1_0 0x000001C01268#define AR9285_AN_RF2G3_DB1_0_S 61269#define AR9285_AN_RF2G3_DB1_1 0x000000381270#define AR9285_AN_RF2G3_DB1_1_S 31271#define AR9285_AN_RF2G3_DB1_2 0x000000071272#define AR9285_AN_RF2G3_DB1_2_S 01273#define AR9285_AN_RF2G4 0x782C1274#define AR9285_AN_RF2G4_DB1_3 0xE00000001275#define AR9285_AN_RF2G4_DB1_3_S 291276#define AR9285_AN_RF2G4_DB1_4 0x1C0000001277#define AR9285_AN_RF2G4_DB1_4_S 2612781279#define AR9285_AN_RF2G4_DB2_0 0x038000001280#define AR9285_AN_RF2G4_DB2_0_S 231281#define AR9285_AN_RF2G4_DB2_1 0x007000001282#define AR9285_AN_RF2G4_DB2_1_S 201283#define AR9285_AN_RF2G4_DB2_2 0x000E00001284#define AR9285_AN_RF2G4_DB2_2_S 171285#define AR9285_AN_RF2G4_DB2_3 0x0001C0001286#define AR9285_AN_RF2G4_DB2_3_S 141287#define AR9285_AN_RF2G4_DB2_4 0x000038001288#define AR9285_AN_RF2G4_DB2_4_S 1112891290#define AR9285_AN_RF2G6 0x78341291#define AR9285_AN_RF2G7 0x78381292#define AR9285_AN_RF2G9 0x78401293#define AR9285_AN_RXTXBB1 0x78541294#define AR9285_AN_TOP2 0x786812951296#define AR9285_AN_TOP3 0x786c1297#define AR9285_AN_TOP3_XPABIAS_LVL 0x0000000C1298#define AR9285_AN_TOP3_XPABIAS_LVL_S 212991300#define AR9285_AN_TOP4 0x78701301#define AR9285_AN_TOP4_DEFAULT 0x10142c001302#endif130313041305/******************************************************************************1306* MAC PCU Register Map1307******************************************************************************/13081309#define AR_MAC_PCU_OFFSET(_x) offsetof(struct mac_pcu_reg, _x)13101311/* MAC station ID0 - low 32 bits */1312#define AR_STA_ID0 AR_MAC_PCU_OFFSET(MAC_PCU_STA_ADDR_L32)1313/* MAC station ID1 - upper 16 bits */1314#define AR_STA_ID1 AR_MAC_PCU_OFFSET(MAC_PCU_STA_ADDR_U16)1315#define AR_STA_ID1_SADH_MASK 0x0000FFFF // Mask for 16 msb of MAC addr1316#define AR_STA_ID1_STA_AP 0x00010000 // Device is AP1317#define AR_STA_ID1_ADHOC 0x00020000 // Device is ad-hoc1318#define AR_STA_ID1_PWR_SAV 0x00040000 // Power save in generated frames1319#define AR_STA_ID1_KSRCHDIS 0x00080000 // Key search disable1320#define AR_STA_ID1_PCF 0x00100000 // Observe PCF1321#define AR_STA_ID1_USE_DEFANT 0x00200000 // Use default antenna1322#define AR_STA_ID1_DEFANT_UPDATE 0x00400000 // Update default ant w/TX antenna1323#define AR_STA_ID1_RTS_USE_DEF 0x00800000 // Use default antenna to send RTS1324#define AR_STA_ID1_ACKCTS_6MB 0x01000000 // Use 6Mb/s rate for ACK & CTS1325#define AR_STA_ID1_BASE_RATE_11B 0x02000000 // Use 11b base rate for ACK & CTS1326#define AR_STA_ID1_SECTOR_SELF_GEN 0x04000000 // default ant for generated frames1327#define AR_STA_ID1_CRPT_MIC_ENABLE 0x08000000 // Enable Michael1328#define AR_STA_ID1_KSRCH_MODE 0x10000000 // Look-up unique key when !keyID1329#define AR_STA_ID1_PRESERVE_SEQNUM 0x20000000 // Don't replace seq num1330#define AR_STA_ID1_CBCIV_ENDIAN 0x40000000 // IV endian-ness in CBC nonce1331#define AR_STA_ID1_MCAST_KSRCH 0x80000000 // Adhoc key search enable13321333/* MAC BSSID low 32 bits */1334#define AR_BSS_ID0 AR_MAC_PCU_OFFSET(MAC_PCU_BSSID_L32)1335/* MAC BSSID upper 16 bits / AID */1336#define AR_BSS_ID1 AR_MAC_PCU_OFFSET(MAC_PCU_BSSID_U16)1337#define AR_BSS_ID1_U16 0x0000FFFF // Mask for upper 16 bits of BSSID1338#define AR_BSS_ID1_AID 0x07FF0000 // Mask for association ID1339#define AR_BSS_ID1_AID_S 16 // Shift for association ID13401341/*1342* Added to support dual BSSID/TSF which are needed in the application1343* of Mesh networking. See bug 35189. Note that the only function added1344* with this BSSID2 is to receive multi/broadcast from BSSID2 as well1345*/1346/* MAC BSSID low 32 bits */1347#define AR_BSS2_ID0 AR_MAC_PCU_OFFSET(MAC_PCU_BSSID2_L32)1348/* MAC BSSID upper 16 bits / AID */1349#define AR_BSS2_ID1 AR_MAC_PCU_OFFSET(MAC_PCU_BSSID2_U16)13501351/* MAC Beacon average RSSI1352*1353* This register holds the average RSSI with 1/16 dB resolution.1354* The RSSI is averaged over multiple beacons which matched our BSSID.1355* Note that AVE_VALUE is 12 bits with 4 bits below the normal 8 bits.1356* These lowest 4 bits provide for a resolution of 1/16 dB.1357*1358*/1359#define AR_BCN_RSSI_AVE AR_MAC_PCU_OFFSET(MAC_PCU_BCN_RSSI_AVE)1360#define AR_BCN_RSSI_AVE_VAL 0x00000FFF // Beacon RSSI value1361#define AR_BCN_RSSI_AVE_VAL_S 013621363/* MAC ACK & CTS time-out */1364#define AR_TIME_OUT AR_MAC_PCU_OFFSET(MAC_PCU_ACK_CTS_TIMEOUT)1365#define AR_TIME_OUT_ACK 0x00003FFF // Mask for ACK time-out1366#define AR_TIME_OUT_ACK_S 01367#define AR_TIME_OUT_CTS 0x3FFF0000 // Mask for CTS time-out1368#define AR_TIME_OUT_CTS_S 1613691370/* beacon RSSI warning / bmiss threshold */1371#define AR_RSSI_THR AR_MAC_PCU_OFFSET(MAC_PCU_BCN_RSSI_CTL)1372#define AR_RSSI_THR_VAL 0x000000FF // Beacon RSSI warning threshold1373#define AR_RSSI_THR_VAL_S 01374#define AR_RSSI_THR_BM_THR 0x0000FF00 // Mask for Missed beacon threshold1375#define AR_RSSI_THR_BM_THR_S 8 // Shift for Missed beacon threshold1376#define AR_RSSI_BCN_WEIGHT 0x1F000000 // RSSI average weight1377#define AR_RSSI_BCN_WEIGHT_S 241378#define AR_RSSI_BCN_RSSI_RST 0x20000000 // Reset RSSI value13791380/* MAC transmit latency register */1381#define AR_USEC AR_MAC_PCU_OFFSET(MAC_PCU_USEC_LATENCY)1382#define AR_USEC_USEC 0x000000FF // Mask for clock cycles in 1 usec1383#define AR_USEC_USEC_S 0 // Shift for clock cycles in 1 usec1384#define AR_USEC_TX_LAT 0x007FC000 // tx latency to start of SIGNAL (usec)1385#define AR_USEC_TX_LAT_S 14 // tx latency to start of SIGNAL (usec)1386#define AR_USEC_RX_LAT 0x1F800000 // rx latency to start of SIGNAL (usec)1387#define AR_USEC_RX_LAT_S 23 // rx latency to start of SIGNAL (usec)13881389#define AR_SLOT_HALF 131390#define AR_SLOT_QUARTER 2113911392#define AR_USEC_RX_LATENCY 0x1f8000001393#define AR_USEC_RX_LATENCY_S 231394#define AR_RX_LATENCY_FULL 371395#define AR_RX_LATENCY_HALF 741396#define AR_RX_LATENCY_QUARTER 1481397#define AR_RX_LATENCY_FULL_FAST_CLOCK 411398#define AR_RX_LATENCY_HALF_FAST_CLOCK 821399#define AR_RX_LATENCY_QUARTER_FAST_CLOCK 16314001401#define AR_USEC_TX_LATENCY 0x007fc0001402#define AR_USEC_TX_LATENCY_S 141403#define AR_TX_LATENCY_FULL 541404#define AR_TX_LATENCY_HALF 1081405#define AR_TX_LATENCY_QUARTER 2161406#define AR_TX_LATENCY_FULL_FAST_CLOCK 541407#define AR_TX_LATENCY_HALF_FAST_CLOCK 1191408#define AR_TX_LATENCY_QUARTER_FAST_CLOCK 23814091410#define AR_USEC_HALF 191411#define AR_USEC_QUARTER 91412#define AR_USEC_HALF_FAST_CLOCK 211413#define AR_USEC_QUARTER_FAST_CLOCK 1014141415#define AR_EIFS_HALF 1751416#define AR_EIFS_QUARTER 34014171418#define AR_RESET_TSF AR_MAC_PCU_OFFSET(MAC_PCU_RESET_TSF)1419#define AR_RESET_TSF_ONCE 0x01000000 // reset tsf once ; self-clears bit1420#define AR_RESET_TSF2_ONCE 0x02000000 // reset tsf2 once ; self-clears bit14211422/* MAC CFP Interval (TU/msec) */1423#define AR_CFP_PERIOD 0x8024 /* MAC CFP Interval (TU/msec) */1424#define AR_TIMER0 0x8028 /* MAC Next beacon time (TU/msec) */1425#define AR_TIMER1 0x802c /* MAC DMA beacon alert time (1/8 TU) */1426#define AR_TIMER2 0x8030 /* MAC Software beacon alert (1/8 TU) */1427#define AR_TIMER3 0x8034 /* MAC ATIM window time */14281429/* MAC maximum CFP duration */1430#define AR_MAX_CFP_DUR AR_MAC_PCU_OFFSET(MAC_PCU_MAX_CFP_DUR)1431#define AR_CFP_VAL 0x0000FFFF // CFP value in uS14321433/* MAC receive filter register */1434#define AR_RX_FILTER AR_MAC_PCU_OFFSET(MAC_PCU_RX_FILTER)1435#define AR_RX_FILTER_ALL 0x00000000 // Disallow all frames1436#define AR_RX_UCAST 0x00000001 // Allow unicast frames1437#define AR_RX_MCAST 0x00000002 // Allow multicast frames1438#define AR_RX_BCAST 0x00000004 // Allow broadcast frames1439#define AR_RX_CONTROL 0x00000008 // Allow control frames1440#define AR_RX_BEACON 0x00000010 // Allow beacon frames1441#define AR_RX_PROM 0x00000020 // Promiscuous mode all packets1442#define AR_RX_PROBE_REQ 0x00000080 // Any probe request frameA1443#define AR_RX_MY_BEACON 0x00000200 // Any beacon frame with matching BSSID1444#define AR_RX_COMPR_BAR 0x00000400 // Compressed directed block ack request1445#define AR_RX_COMPR_BA 0x00000800 // Compressed directed block ack1446#define AR_RX_UNCOM_BA_BAR 0x00001000 // Uncompressed directed BA or BAR1447#define AR_RX_HWBCNPROC_EN 0x00020000 // Enable hw beacon processing (see AR_HWBCNPROC1)1448#define AR_RX_CONTROL_WRAPPER 0x00080000 // Control wrapper. Jupiter only.1449#define AR_RX_4ADDRESS 0x00100000 // 4-Address frames14501451#define AR_PHY_ERR_MASK_REG AR_MAC_PCU_OFFSET(MAC_PCU_PHY_ERROR_MASK_CONT)145214531454/* MAC multicast filter lower 32 bits */1455#define AR_MCAST_FIL0 AR_MAC_PCU_OFFSET(MAC_PCU_MCAST_FILTER_L32)1456/* MAC multicast filter upper 32 bits */1457#define AR_MCAST_FIL1 AR_MAC_PCU_OFFSET(MAC_PCU_MCAST_FILTER_U32)14581459/* MAC PCU diagnostic switches */1460#define AR_DIAG_SW AR_MAC_PCU_OFFSET(MAC_PCU_DIAG_SW)1461#define AR_DIAG_CACHE_ACK 0x00000001 // disable ACK when no valid key1462#define AR_DIAG_ACK_DIS 0x00000002 // disable ACK generation1463#define AR_DIAG_CTS_DIS 0x00000004 // disable CTS generation1464#define AR_DIAG_ENCRYPT_DIS 0x00000008 // disable encryption1465#define AR_DIAG_DECRYPT_DIS 0x00000010 // disable decryption1466#define AR_DIAG_RX_DIS 0x00000020 // disable receive1467#define AR_DIAG_LOOP_BACK 0x00000040 // enable loopback1468#define AR_DIAG_CORR_FCS 0x00000080 // corrupt FCS1469#define AR_DIAG_CHAN_INFO 0x00000100 // dump channel info1470#define AR_DIAG_FRAME_NV0 0x00020000 // accept w/protocol version !01471#define AR_DIAG_OBS_PT_SEL1 0x000C0000 // observation point select1472#define AR_DIAG_OBS_PT_SEL1_S 18 // Shift for observation point select1473#define AR_DIAG_FORCE_RX_CLEAR 0x00100000 // force rx_clear high1474#define AR_DIAG_IGNORE_VIRT_CS 0x00200000 // ignore virtual carrier sense1475#define AR_DIAG_FORCE_CH_IDLE_HIGH 0x00400000 // force channel idle high1476#define AR_DIAG_EIFS_CTRL_ENA 0x00800000 // use framed and ~wait_wep if 01477#define AR_DIAG_DUAL_CHAIN_INFO 0x01000000 // dual chain channel info1478#define AR_DIAG_RX_ABORT 0x02000000 // abort rx1479#define AR_DIAG_SATURATE_CYCLE_CNT 0x04000000 // saturate cycle cnts (no shift)1480#define AR_DIAG_OBS_PT_SEL2 0x08000000 // Mask for observation point sel1481#define AR_DIAG_OBS_PT_SEL2_S 271482#define AR_DIAG_RX_CLEAR_CTL_LOW 0x10000000 // force rx_clear (ctl) low (i.e. busy)1483#define AR_DIAG_RX_CLEAR_EXT_LOW 0x20000000 // force rx_clear (ext) low (i.e. busy)14841485/* MAC local clock lower 32 bits */1486#define AR_TSF_L32 AR_MAC_PCU_OFFSET(MAC_PCU_TSF_L32)1487/* MAC local clock upper 32 bits */1488#define AR_TSF_U32 AR_MAC_PCU_OFFSET(MAC_PCU_TSF_U32)14891490/*1491* Secondary TSF support added for dual BSSID/TSF1492* which is needed in the application of DirectConnect or1493* Mesh networking1494*/1495/* MAC local clock lower 32 bits */1496#define AR_TSF2_L32 AR_MAC_PCU_OFFSET(MAC_PCU_TSF2_L32)1497/* MAC local clock upper 32 bits */1498#define AR_TSF2_U32 AR_MAC_PCU_OFFSET(MAC_PCU_TSF2_U32)14991500/* ADDAC test register */1501#define AR_TST_ADDAC AR_MAC_PCU_OFFSET(MAC_PCU_TST_ADDAC)15021503#define AR_TST_ADDAC_TST_MODE 0x11504#define AR_TST_ADDAC_TST_MODE_S 01505#define AR_TST_ADDAC_TST_LOOP_ENA 0x21506#define AR_TST_ADDAC_TST_LOOP_ENA_S 11507#define AR_TST_ADDAC_BEGIN_CAPTURE 0x800001508#define AR_TST_ADDAC_BEGIN_CAPTURE_S 1915091510/* default antenna register */1511#define AR_DEF_ANTENNA AR_MAC_PCU_OFFSET(MAC_PCU_DEF_ANTENNA)15121513/* MAC AES mute mask */1514#define AR_AES_MUTE_MASK0 AR_MAC_PCU_OFFSET(MAC_PCU_AES_MUTE_MASK_0)1515#define AR_AES_MUTE_MASK0_FC 0x0000FFFF // frame ctrl mask bits1516#define AR_AES_MUTE_MASK0_QOS 0xFFFF0000 // qos ctrl mask bits1517#define AR_AES_MUTE_MASK0_QOS_S 1615181519/* MAC AES mute mask 1 */1520#define AR_AES_MUTE_MASK1 AR_MAC_PCU_OFFSET(MAC_PCU_AES_MUTE_MASK_1)1521#define AR_AES_MUTE_MASK1_SEQ 0x0000FFFF // seq + frag mask bits1522#define AR_AES_MUTE_MASK1_FC_MGMT 0xFFFF0000 // frame ctrl mask for mgmt frames (Sowl)1523#define AR_AES_MUTE_MASK1_FC_MGMT_S 1615241525/* control clock domain */1526#define AR_GATED_CLKS AR_MAC_PCU_OFFSET(MAC_PCU_GATED_CLKS)1527#define AR_GATED_CLKS_TX 0x000000021528#define AR_GATED_CLKS_RX 0x000000041529#define AR_GATED_CLKS_REG 0x0000000815301531/* MAC PCU observation bus 2 */1532#define AR_OBS_BUS_CTRL AR_MAC_PCU_OFFSET(MAC_PCU_OBS_BUS_2)1533#define AR_OBS_BUS_SEL_1 0x000400001534#define AR_OBS_BUS_SEL_2 0x000800001535#define AR_OBS_BUS_SEL_3 0x000C00001536#define AR_OBS_BUS_SEL_4 0x080400001537#define AR_OBS_BUS_SEL_5 0x0808000015381539/* MAC PCU observation bus 1 */1540#define AR_OBS_BUS_1 AR_MAC_PCU_OFFSET(MAC_PCU_OBS_BUS_1)1541#define AR_OBS_BUS_1_PCU 0x000000011542#define AR_OBS_BUS_1_RX_END 0x000000021543#define AR_OBS_BUS_1_RX_WEP 0x000000041544#define AR_OBS_BUS_1_RX_BEACON 0x000000081545#define AR_OBS_BUS_1_RX_FILTER 0x000000101546#define AR_OBS_BUS_1_TX_HCF 0x000000201547#define AR_OBS_BUS_1_QUIET_TIME 0x000000401548#define AR_OBS_BUS_1_CHAN_IDLE 0x000000801549#define AR_OBS_BUS_1_TX_HOLD 0x000001001550#define AR_OBS_BUS_1_TX_FRAME 0x000002001551#define AR_OBS_BUS_1_RX_FRAME 0x000004001552#define AR_OBS_BUS_1_RX_CLEAR 0x000008001553#define AR_OBS_BUS_1_WEP_STATE 0x0003F0001554#define AR_OBS_BUS_1_WEP_STATE_S 121555#define AR_OBS_BUS_1_RX_STATE 0x01F000001556#define AR_OBS_BUS_1_RX_STATE_S 201557#define AR_OBS_BUS_1_TX_STATE 0x7E0000001558#define AR_OBS_BUS_1_TX_STATE_S 2515591560/* MAC PCU dynamic MIMO power save */1561#define AR_PCU_SMPS AR_MAC_PCU_OFFSET(MAC_PCU_DYM_MIMO_PWR_SAVE)1562#define AR_PCU_SMPS_MAC_CHAINMASK 0x00000001 // Use the Rx Chainmask of MAC's setting1563#define AR_PCU_SMPS_HW_CTRL_EN 0x00000002 // Enable hardware control of dynamic MIMO PS1564#define AR_PCU_SMPS_SW_CTRL_HPWR 0x00000004 // Software controlled High power chainmask setting1565#define AR_PCU_SMPS_LPWR_CHNMSK 0x00000070 // Low power setting of Rx Chainmask1566#define AR_PCU_SMPS_LPWR_CHNMSK_S 41567#define AR_PCU_SMPS_HPWR_CHNMSK 0x00000700 // High power setting of Rx Chainmask1568#define AR_PCU_SMPS_HPWR_CHNMSK_S 81569#define AR_PCU_SMPS_LPWR_CHNMSK_VAL 0x115701571/* MAC PCU frame start time trigger for the AP's Downlink Traffic in TDMA mode */1572#define AR_TDMA_TXSTARTTRIG_LSB AR_MAC_PCU_OFFSET(MAC_PCU_TDMA_TXFRAME_START_TIME_TRIGGER_LSB)1573#define AR_TDMA_TXSTARTTRIG_MSB AR_MAC_PCU_OFFSET(MAC_PCU_TDMA_TXFRAME_START_TIME_TRIGGER_MSB)15741575/* MAC Time stamp of the last beacon received */1576#define AR_LAST_TSTP AR_MAC_PCU_OFFSET(MAC_PCU_LAST_BEACON_TSF)1577/* MAC current NAV value */1578#define AR_NAV AR_MAC_PCU_OFFSET(MAC_PCU_NAV)1579/* MAC RTS exchange success counter */1580#define AR_RTS_OK AR_MAC_PCU_OFFSET(MAC_PCU_RTS_SUCCESS_CNT)1581/* MAC RTS exchange failure counter */1582#define AR_RTS_FAIL AR_MAC_PCU_OFFSET(MAC_PCU_RTS_FAIL_CNT)1583/* MAC ACK failure counter */1584#define AR_ACK_FAIL AR_MAC_PCU_OFFSET(MAC_PCU_ACK_FAIL_CNT)1585/* MAC FCS check failure counter */1586#define AR_FCS_FAIL AR_MAC_PCU_OFFSET(MAC_PCU_FCS_FAIL_CNT)1587/* MAC Valid beacon value */1588#define AR_BEACON_CNT AR_MAC_PCU_OFFSET(MAC_PCU_BEACON_CNT)15891590/* MAC PCU tdma slot alert control */1591#define AR_TDMA_SLOT_ALERT_CNTL AR_MAC_PCU_OFFSET(MAC_PCU_TDMA_SLOT_ALERT_CNTL)15921593/* MAC PCU Basic MCS set for MCS 0 to 31 */1594#define AR_BASIC_SET AR_MAC_PCU_OFFSET(MAC_PCU_BASIC_SET)1595#define ALL_RATE 0xff15961597/* MAC_PCU_ _SEQ */1598#define AR_MGMT_SEQ AR_MAC_PCU_OFFSET(MAC_PCU_MGMT_SEQ)1599#define AR_MGMT_SEQ_MIN 0xFFF /* sequence minimum value*/1600#define AR_MGMT_SEQ_MIN_S 01601#define AR_MIN_HW_SEQ 01602#define AR_MGMT_SEQ_MAX 0xFFF0000 /* sequence maximum value*/1603#define AR_MGMT_SEQ_MAX_S 161604#define AR_MAX_HW_SEQ 0xFF1605/*MAC PCU Key Cache Antenna 1 */1606#define AR_TX_ANT_1 AR_MAC_PCU_OFFSET(MAC_PCU_TX_ANT_1)1607/*MAC PCU Key Cache Antenna 2 */1608#define AR_TX_ANT_2 AR_MAC_PCU_OFFSET(MAC_PCU_TX_ANT_2)1609/*MAC PCU Key Cache Antenna 3 */1610#define AR_TX_ANT_3 AR_MAC_PCU_OFFSET(MAC_PCU_TX_ANT_3)1611/*MAC PCU Key Cache Antenna 4 */1612#define AR_TX_ANT_4 AR_MAC_PCU_OFFSET(MAC_PCU_TX_ANT_4)161316141615/* Extended range mode */1616#define AR_XRMODE AR_MAC_PCU_OFFSET(MAC_PCU_XRMODE)1617/* Extended range mode delay */1618#define AR_XRDEL AR_MAC_PCU_OFFSET(MAC_PCU_XRDEL)1619/* Extended range mode timeout */1620#define AR_XRTO AR_MAC_PCU_OFFSET(MAC_PCU_XRTO)1621/* Extended range mode chirp */1622#define AR_XRCRP AR_MAC_PCU_OFFSET(MAC_PCU_XRCRP)1623/* Extended range stomp */1624#define AR_XRSTMP AR_MAC_PCU_OFFSET(MAC_PCU_XRSTMP)162516261627/* Enhanced sleep control 1 */1628#define AR_SLEEP1 AR_MAC_PCU_OFFSET(MAC_PCU_SLP1)1629#define AR_SLEEP1_ASSUME_DTIM 0x00080000 // Assume DTIM on missed beacon1630#define AR_SLEEP1_CAB_TIMEOUT 0xFFE00000 // Cab timeout(TU) mask1631#define AR_SLEEP1_CAB_TIMEOUT_S 21 // Cab timeout(TU) shift16321633/* Enhanced sleep control 2 */1634#define AR_SLEEP2 AR_MAC_PCU_OFFSET(MAC_PCU_SLP2)1635#define AR_SLEEP2_BEACON_TIMEOUT 0xFFE00000 // Beacon timeout(TU) mask1636#define AR_SLEEP2_BEACON_TIMEOUT_S 21 // Beacon timeout(TU) shift16371638/*MAC_PCU_SELF_GEN_DEFAULT*/1639#define AR_SELFGEN AR_MAC_PCU_OFFSET(MAC_PCU_SELF_GEN_DEFAULT)1640#define AR_MMSS 0x000000071641#define AR_MMSS_S 01642#define AR_SELFGEN_MMSS_NO RESTRICTION 01643#define AR_SELFGEN_MMSS_ONEOVER4_us 11644#define AR_SELFGEN_MMSS_ONEOVER2_us 21645#define AR_SELFGEN_MMSS_ONE_us 31646#define AR_SELFGEN_MMSS_TWO_us 41647#define AR_SELFGEN_MMSS_FOUR_us 51648#define AR_SELFGEN_MMSS_EIGHT_us 61649#define AR_SELFGEN_MMSS_SIXTEEN_us 716501651#define AR_CEC 0x000000181652#define AR_CEC_S 31653/* Although in original standard 0 is for 1 stream and 1 is for 2 stream */1654/* due to H/W resaon, Here should set 1 for 1 stream and 2 for 2 stream */1655#define AR_SELFGEN_CEC_ONE_SPACETIMESTREAM 11656#define AR_SELFGEN_CEC_TWO_SPACETIMESTREAM 216571658/* BSSID mask lower 32 bits */1659#define AR_BSSMSKL AR_MAC_PCU_OFFSET(MAC_PCU_ADDR1_MASK_L32)1660/* BSSID mask upper 16 bits */1661#define AR_BSSMSKU AR_MAC_PCU_OFFSET(MAC_PCU_ADDR1_MASK_U16)16621663/* Transmit power control for gen frames */1664#define AR_TPC AR_MAC_PCU_OFFSET(MAC_PCU_TPC)1665#define AR_TPC_ACK 0x0000003f // ack frames mask1666#define AR_TPC_ACK_S 0x00 // ack frames shift1667#define AR_TPC_CTS 0x00003f00 // cts frames mask1668#define AR_TPC_CTS_S 0x08 // cts frames shift1669#define AR_TPC_CHIRP 0x003f0000 // chirp frames mask1670#define AR_TPC_CHIRP_S 16 // chirp frames shift1671#define AR_TPC_RPT 0x3f000000 // rpt frames mask1672#define AR_TPC_RPT_S 24 // rpt frames shift16731674/* Profile count transmit frames */1675#define AR_TFCNT AR_MAC_PCU_OFFSET(MAC_PCU_TX_FRAME_CNT)1676/* Profile count receive frames */1677#define AR_RFCNT AR_MAC_PCU_OFFSET(MAC_PCU_RX_FRAME_CNT)1678/* Profile count receive clear */1679#define AR_RCCNT AR_MAC_PCU_OFFSET(MAC_PCU_RX_CLEAR_CNT)1680/* Profile count cycle counter */1681#define AR_CCCNT AR_MAC_PCU_OFFSET(MAC_PCU_CYCLE_CNT)16821683/* Quiet time programming for TGh */1684#define AR_QUIET1 AR_MAC_PCU_OFFSET(MAC_PCU_QUIET_TIME_1)1685#define AR_QUIET1_NEXT_QUIET_S 0 // TSF of next quiet period (TU)1686#define AR_QUIET1_NEXT_QUIET_M 0x0000ffff1687#define AR_QUIET1_QUIET_ENABLE 0x00010000 // Enable Quiet time operation1688#define AR_QUIET1_QUIET_ACK_CTS_ENABLE 0x00020000 // ack/cts in quiet period1689#define AR_QUIET1_QUIET_ACK_CTS_ENABLE_S 171690#define AR_QUIET2 AR_MAC_PCU_OFFSET(MAC_PCU_QUIET_TIME_2)1691#define AR_QUIET2_QUIET_PERIOD_S 0 // Periodicity of quiet period (TU)1692#define AR_QUIET2_QUIET_PERIOD_M 0x0000ffff1693#define AR_QUIET2_QUIET_DUR_S 16 // quiet period (TU)1694#define AR_QUIET2_QUIET_DUR 0xffff000016951696/* locate no_ack in qos */1697#define AR_QOS_NO_ACK AR_MAC_PCU_OFFSET(MAC_PCU_QOS_NO_ACK)1698#define AR_QOS_NO_ACK_TWO_BIT 0x0000000f // 2 bit sentinel for no-ack1699#define AR_QOS_NO_ACK_TWO_BIT_S 01700#define AR_QOS_NO_ACK_BIT_OFF 0x00000070 // offset for no-ack1701#define AR_QOS_NO_ACK_BIT_OFF_S 41702#define AR_QOS_NO_ACK_BYTE_OFF 0x00000180 // from end of header1703#define AR_QOS_NO_ACK_BYTE_OFF_S 717041705/* Phy errors to be filtered */1706#define AR_PHY_ERR AR_MAC_PCU_OFFSET(MAC_PCU_PHY_ERROR_MASK)1707/* XXX validate! XXX */1708#define AR_PHY_ERR_DCHIRP 0x00000008 // Bit 3 enables double chirp1709#define AR_PHY_ERR_RADAR 0x00000020 // Bit 5 is Radar signal1710#define AR_PHY_ERR_OFDM_TIMING 0x00020000 // Bit 17 is AH_FALSE detect for OFDM1711#define AR_PHY_ERR_CCK_TIMING 0x02000000 // Bit 25 is AH_FALSE detect for CCK17121713/* MAC PCU extended range latency */1714#define AR_XRLAT AR_MAC_PCU_OFFSET(MAC_PCU_XRLAT)17151716/* MAC PCU Receive Buffer settings */1717#define AR_RXFIFO_CFG AR_MAC_PCU_OFFSET(MAC_PCU_RXBUF)1718#define AR_RXFIFO_CFG_REG_RD_ENA_S 111719#define AR_RXFIFO_CFG_REG_RD_ENA (0x1 << AR_RXFIFO_CFG_REG_RD_ENA_S)17201721/* MAC PCU QoS control */1722#define AR_MIC_QOS_CONTROL AR_MAC_PCU_OFFSET(MAC_PCU_MIC_QOS_CONTROL)1723/* MAC PCU Michael QoS select */1724#define AR_MIC_QOS_SELECT AR_MAC_PCU_OFFSET(MAC_PCU_MIC_QOS_SELECT)17251726/* PCU Miscellaneous Mode */1727#define AR_PCU_MISC AR_MAC_PCU_OFFSET(MAC_PCU_MISC_MODE)1728#define AR_PCU_FORCE_BSSID_MATCH 0x00000001 // force bssid to match1729#define AR_PCU_MIC_NEW_LOC_ENA 0x00000004 // tx/rx mic key are together1730#define AR_PCU_TX_ADD_TSF 0x00000008 // add tx_tsf + int_tsf1731#define AR_PCU_CCK_SIFS_MODE 0x00000010 // assume 11b sifs programmed1732#define AR_PCU_RX_ANT_UPDT 0x00000800 // KC_RX_ANT_UPDATE1733#define AR_PCU_TXOP_TBTT_LIMIT_ENA 0x00001000 // enforce txop / tbtt1734#define AR_PCU_MISS_BCN_IN_SLEEP 0x00004000 // count bmiss's when sleeping1735#define AR_PCU_BUG_12306_FIX_ENA 0x00020000 // use rx_clear to count sifs1736#define AR_PCU_FORCE_QUIET_COLL 0x00040000 // kill xmit for channel change1737#define AR_PCU_BT_ANT_PREVENT_RX 0x001000001738#define AR_PCU_BT_ANT_PREVENT_RX_S 201739#define AR_PCU_TBTT_PROTECT 0x00200000 // no xmit upto tbtt + 20 uS1740#define AR_PCU_CLEAR_VMF 0x01000000 // clear vmf mode (fast cc)1741#define AR_PCU_CLEAR_BA_VALID 0x04000000 // clear ba state1742#define AR_PCU_SEL_EVM 0x08000000 // select EVM data or PLCP header1743#define AR_PCU_ALWAYS_PERFORM_KEYSEARCH 0x10000000 /* always perform key search */1744/* count of filtered ofdm */1745#define AR_FILT_OFDM AR_MAC_PCU_OFFSET(MAC_PCU_FILTER_OFDM_CNT)1746#define AR_FILT_OFDM_COUNT 0x00FFFFFF // count of filtered ofdm17471748/* count of filtered cck */1749#define AR_FILT_CCK AR_MAC_PCU_OFFSET(MAC_PCU_FILTER_CCK_CNT)1750#define AR_FILT_CCK_COUNT 0x00FFFFFF // count of filtered cck17511752/* MAC PCU PHY error counter 1 */1753#define AR_PHY_ERR_1 AR_MAC_PCU_OFFSET(MAC_PCU_PHY_ERR_CNT_1)1754#define AR_PHY_ERR_1_COUNT 0x00FFFFFF // phy errs that pass mask_11755/* MAC PCU PHY error mask 1 */1756#define AR_PHY_ERR_MASK_1 AR_MAC_PCU_OFFSET(MAC_PCU_PHY_ERR_CNT_1_MASK)17571758/* MAC PCU PHY error counter 2 */1759#define AR_PHY_ERR_2 AR_MAC_PCU_OFFSET(MAC_PCU_PHY_ERR_CNT_2)1760#define AR_PHY_ERR_2_COUNT 0x00FFFFFF // phy errs that pass mask_21761/* MAC PCU PHY error mask 2 */1762#define AR_PHY_ERR_MASK_2 AR_MAC_PCU_OFFSET(MAC_PCU_PHY_ERR_CNT_2_MASK)17631764#define AR_PHY_COUNTMAX (3 << 22) // Max counted before intr1765#define AR_MIBCNT_INTRMASK (3 << 22) // Mask top 2 bits of counters17661767/* interrupt if rx_tsf-int_tsf */1768#define AR_TSFOOR_THRESHOLD AR_MAC_PCU_OFFSET(MAC_PCU_TSF_THRESHOLD)1769#define AR_TSFOOR_THRESHOLD_VAL 0x0000FFFF // field width17701771/* MAC PCU PHY error counter 3 */1772#define AR_PHY_ERR_3 AR_MAC_PCU_OFFSET(MAC_PCU_PHY_ERR_CNT_3)1773#define AR_PHY_ERR_3_COUNT 0x00FFFFFF // phy errs that pass mask_31774/* MAC PCU PHY error mask 3 */1775#define AR_PHY_ERR_MASK_3 AR_MAC_PCU_OFFSET(MAC_PCU_PHY_ERR_CNT_3_MASK)17761777/* Bluetooth coexistance mode */1778#define AR_BT_COEX_MODE AR_MAC_PCU_OFFSET(MAC_PCU_BLUETOOTH_MODE)1779#define AR_BT_TIME_EXTEND 0x000000ff1780#define AR_BT_TIME_EXTEND_S 01781#define AR_BT_TXSTATE_EXTEND 0x000001001782#define AR_BT_TXSTATE_EXTEND_S 81783#define AR_BT_TX_FRAME_EXTEND 0x000002001784#define AR_BT_TX_FRAME_EXTEND_S 91785#define AR_BT_MODE 0x00000c001786#define AR_BT_MODE_S 101787#define AR_BT_QUIET 0x000010001788#define AR_BT_QUIET_S 121789#define AR_BT_QCU_THRESH 0x0001e0001790#define AR_BT_QCU_THRESH_S 131791#define AR_BT_RX_CLEAR_POLARITY 0x000200001792#define AR_BT_RX_CLEAR_POLARITY_S 171793#define AR_BT_PRIORITY_TIME 0x00fc00001794#define AR_BT_PRIORITY_TIME_S 181795#define AR_BT_FIRST_SLOT_TIME 0xff0000001796#define AR_BT_FIRST_SLOT_TIME_S 2417971798/* BlueTooth coexistance WLAN weights */1799#define AR_BT_COEX_WL_WEIGHTS0 AR_MAC_PCU_OFFSET(MAC_PCU_BLUETOOTH_WL_WEIGHTS0)1800#define AR_BT_BT_WGHT 0x0000ffff1801#define AR_BT_BT_WGHT_S 01802#define AR_BT_WL_WGHT 0xffff00001803#define AR_BT_WL_WGHT_S 1618041805/* HCF timeout: Slotted behavior */1806#define AR_HCFTO AR_MAC_PCU_OFFSET(MAC_PCU_HCF_TIMEOUT)18071808/* BlueTooth mode 2: Slotted behavior */1809#define AR_BT_COEX_MODE2 AR_MAC_PCU_OFFSET(MAC_PCU_BLUETOOTH_MODE2)1810#define AR_BT_BCN_MISS_THRESH 0x000000ff1811#define AR_BT_BCN_MISS_THRESH_S 01812#define AR_BT_BCN_MISS_CNT 0x0000ff001813#define AR_BT_BCN_MISS_CNT_S 81814#define AR_BT_HOLD_RX_CLEAR 0x000100001815#define AR_BT_HOLD_RX_CLEAR_S 161816#define AR_BT_SLEEP_ALLOW_BT 0x000200001817#define AR_BT_SLEEP_ALLOW_BT_S 171818#define AR_BT_PROTECT_AFTER_WAKE 0x000800001819#define AR_BT_PROTECT_AFTER_WAKE_S 191820#define AR_BT_DISABLE_BT_ANT 0x001000001821#define AR_BT_DISABLE_BT_ANT_S 201822#define AR_BT_QUIET_2_WIRE 0x002000001823#define AR_BT_QUIET_2_WIRE_S 211824#define AR_BT_WL_ACTIVE_MODE 0x00c000001825#define AR_BT_WL_ACTIVE_MODE_S 221826#define AR_BT_WL_TXRX_SEPARATE 0x010000001827#define AR_BT_WL_TXRX_SEPARATE_S 241828#define AR_BT_RS_DISCARD_EXTEND 0x020000001829#define AR_BT_RS_DISCARD_EXTEND_S 251830#define AR_BT_TSF_BT_ACTIVE_CTRL 0x0c0000001831#define AR_BT_TSF_BT_ACTIVE_CTRL_S 261832#define AR_BT_TSF_BT_PRIORITY_CTRL 0x300000001833#define AR_BT_TSF_BT_PRIORITY_CTRL_S 281834#define AR_BT_INTERRUPT_ENABLE 0x400000001835#define AR_BT_INTERRUPT_ENABLE_S 301836#define AR_BT_PHY_ERR_BT_COLL_ENABLE 0x800000001837#define AR_BT_PHY_ERR_BT_COLL_ENABLE_S 3118381839/* Generic Timers 2 */1840#define AR_GEN_TIMERS2_0 AR_MAC_PCU_OFFSET(MAC_PCU_GENERIC_TIMERS2)1841#define AR_GEN_TIMERS2_NEXT(_i) (AR_GEN_TIMERS2_0 + ((_i)<<2))1842#define AR_GEN_TIMERS2_PERIOD(_i) (AR_GEN_TIMERS2_NEXT(8) + ((_i)<<2))18431844#define AR_GEN_TIMERS2_0_NEXT AR_GEN_TIMERS2_NEXT(0)1845#define AR_GEN_TIMERS2_1_NEXT AR_GEN_TIMERS2_NEXT(1)1846#define AR_GEN_TIMERS2_2_NEXT AR_GEN_TIMERS2_NEXT(2)1847#define AR_GEN_TIMERS2_3_NEXT AR_GEN_TIMERS2_NEXT(3)1848#define AR_GEN_TIMERS2_4_NEXT AR_GEN_TIMERS2_NEXT(4)1849#define AR_GEN_TIMERS2_5_NEXT AR_GEN_TIMERS2_NEXT(5)1850#define AR_GEN_TIMERS2_6_NEXT AR_GEN_TIMERS2_NEXT(6)1851#define AR_GEN_TIMERS2_7_NEXT AR_GEN_TIMERS2_NEXT(7)1852#define AR_GEN_TIMERS2_0_PERIOD AR_GEN_TIMERS2_PERIOD(0)1853#define AR_GEN_TIMERS2_1_PERIOD AR_GEN_TIMERS2_PERIOD(1)1854#define AR_GEN_TIMERS2_2_PERIOD AR_GEN_TIMERS2_PERIOD(2)1855#define AR_GEN_TIMERS2_3_PERIOD AR_GEN_TIMERS2_PERIOD(3)1856#define AR_GEN_TIMERS2_4_PERIOD AR_GEN_TIMERS2_PERIOD(4)1857#define AR_GEN_TIMERS2_5_PERIOD AR_GEN_TIMERS2_PERIOD(5)1858#define AR_GEN_TIMERS2_6_PERIOD AR_GEN_TIMERS2_PERIOD(6)1859#define AR_GEN_TIMERS2_7_PERIOD AR_GEN_TIMERS2_PERIOD(7)18601861#define AR_GEN_TIMER_BANK_1_LEN 81862#define AR_FIRST_NDP_TIMER 71863#define AR_NUM_GEN_TIMERS 161864#define AR_GEN_TIMER_RESERVED 818651866/* Generic Timers 2 Mode */1867#define AR_GEN_TIMERS2_MODE AR_MAC_PCU_OFFSET(MAC_PCU_GENERIC_TIMERS2_MODE)18681869/* BlueTooth coexistance WLAN weights 1 */1870#define AR_BT_COEX_WL_WEIGHTS1 AR_MAC_PCU_OFFSET(MAC_PCU_BLUETOOTH_WL_WEIGHTS1)18711872/* BlueTooth Coexistence TSF Snapshot for BT_ACTIVE */1873#define AR_BT_TSF_ACTIVE AR_MAC_PCU_OFFSET(MAC_PCU_BLUETOOTH_TSF_BT_ACTIVE)18741875/* BlueTooth Coexistence TSF Snapshot for BT_PRIORITY */1876#define AR_BT_TSF_PRIORITY AR_MAC_PCU_OFFSET(MAC_PCU_BLUETOOTH_TSF_BT_PRIORITY)18771878/* SIFS, TX latency and ACK shift */1879#define AR_TXSIFS AR_MAC_PCU_OFFSET(MAC_PCU_TXSIFS)1880#define AR_TXSIFS_TIME 0x000000FF // uS in SIFS1881#define AR_TXSIFS_TX_LATENCY 0x00000F00 // uS for transmission thru bb1882#define AR_TXSIFS_TX_LATENCY_S 81883#define AR_TXSIFS_ACK_SHIFT 0x00007000 // chan width for ack1884#define AR_TXSIFS_ACK_SHIFT_S 1218851886/* BlueTooth mode 3 */1887#define AR_BT_COEX_MODE3 AR_MAC_PCU_OFFSET(MAC_PCU_BLUETOOTH_MODE3)188818891890/* TXOP for legacy non-qos */1891#define AR_TXOP_X AR_MAC_PCU_OFFSET(MAC_PCU_TXOP_X)1892#define AR_TXOP_X_VAL 0x000000FF18931894/* TXOP for TID 0 to 3 */1895#define AR_TXOP_0_3 AR_MAC_PCU_OFFSET(MAC_PCU_TXOP_0_3)1896/* TXOP for TID 4 to 7 */1897#define AR_TXOP_4_7 AR_MAC_PCU_OFFSET(MAC_PCU_TXOP_4_7)1898/* TXOP for TID 8 to 11 */1899#define AR_TXOP_8_11 AR_MAC_PCU_OFFSET(MAC_PCU_TXOP_8_11)1900/* TXOP for TID 12 to 15 */1901#define AR_TXOP_12_15 AR_MAC_PCU_OFFSET(MAC_PCU_TXOP_12_15)19021903/* Generic Timers */1904#define AR_GEN_TIMERS_0 AR_MAC_PCU_OFFSET(MAC_PCU_GENERIC_TIMERS)1905#define AR_GEN_TIMERS(_i) (AR_GEN_TIMERS_0 + ((_i)<<2))19061907/* generic timers based on tsf - all uS */1908#define AR_NEXT_TBTT_TIMER AR_GEN_TIMERS(0)1909#define AR_NEXT_DMA_BEACON_ALERT AR_GEN_TIMERS(1)1910#define AR_NEXT_SWBA AR_GEN_TIMERS(2)1911#define AR_NEXT_HCF AR_GEN_TIMERS(3)1912#define AR_NEXT_TIM AR_GEN_TIMERS(4)1913#define AR_NEXT_DTIM AR_GEN_TIMERS(5)1914#define AR_NEXT_QUIET_TIMER AR_GEN_TIMERS(6)1915#define AR_NEXT_NDP_TIMER AR_GEN_TIMERS(7)1916#define AR_BEACON_PERIOD AR_GEN_TIMERS(8)1917#define AR_DMA_BEACON_PERIOD AR_GEN_TIMERS(9)1918#define AR_SWBA_PERIOD AR_GEN_TIMERS(10)1919#define AR_HCF_PERIOD AR_GEN_TIMERS(11)1920#define AR_TIM_PERIOD AR_GEN_TIMERS(12)1921#define AR_DTIM_PERIOD AR_GEN_TIMERS(13)1922#define AR_QUIET_PERIOD AR_GEN_TIMERS(14)1923#define AR_NDP_PERIOD AR_GEN_TIMERS(15)19241925/* Generic Timers Mode */1926#define AR_TIMER_MODE AR_MAC_PCU_OFFSET(MAC_PCU_GENERIC_TIMERS_MODE)1927#define AR_TBTT_TIMER_EN 0x000000011928#define AR_DBA_TIMER_EN 0x000000021929#define AR_SWBA_TIMER_EN 0x000000041930#define AR_HCF_TIMER_EN 0x000000081931#define AR_TIM_TIMER_EN 0x000000101932#define AR_DTIM_TIMER_EN 0x000000201933#define AR_QUIET_TIMER_EN 0x000000401934#define AR_NDP_TIMER_EN 0x000000801935#define AR_TIMER_OVERFLOW_INDEX 0x000007001936#define AR_TIMER_OVERFLOW_INDEX_S 81937#define AR_TIMER_THRESH 0xFFFFF0001938#define AR_TIMER_THRESH_S 1219391940#define AR_SLP32_MODE AR_MAC_PCU_OFFSET(MAC_PCU_SLP32_MODE)1941#define AR_SLP32_HALF_CLK_LATENCY 0x000FFFFF // rising <-> falling edge1942#define AR_SLP32_ENA 0x001000001943#define AR_SLP32_TSF_WRITE_STATUS 0x00200000 // tsf update in progress19441945#define AR_SLP32_WAKE AR_MAC_PCU_OFFSET(MAC_PCU_SLP32_WAKE)1946#define AR_SLP32_WAKE_XTL_TIME 0x0000FFFF // time to wake crystal19471948#define AR_SLP32_INC AR_MAC_PCU_OFFSET(MAC_PCU_SLP32_INC)1949#define AR_SLP32_TST_INC 0x000FFFFF19501951/* Sleep MIB cycle count 32kHz cycles for which mac is asleep */1952#define AR_SLP_CNT AR_MAC_PCU_OFFSET(MAC_PCU_SLP_MIB1)1953#define AR_SLP_CYCLE_CNT 0x8254 // absolute number of 32kHz cycles19541955/* Sleep MIB cycle count 2 */1956#define AR_SLP_MIB2 AR_MAC_PCU_OFFSET(MAC_PCU_SLP_MIB2)19571958/* Sleep MIB control status */1959#define AR_SLP_MIB_CTRL AR_MAC_PCU_OFFSET(MAC_PCU_SLP_MIB3)1960#define AR_SLP_MIB_CLEAR 0x00000001 // clear pending1961#define AR_SLP_MIB_PENDING 0x00000002 // clear counters19621963//#ifdef AR9300_EMULATION1964// MAC trace buffer registers (emulation only)1965#define AR_MAC_PCU_LOGIC_ANALYZER AR_MAC_PCU_OFFSET(MAC_PCU_LOGIC_ANALYZER)1966#define AR_MAC_PCU_LOGIC_ANALYZER_CTL 0x0000000F1967#define AR_MAC_PCU_LOGIC_ANALYZER_HOLD 0x000000011968#define AR_MAC_PCU_LOGIC_ANALYZER_CLEAR 0x000000021969#define AR_MAC_PCU_LOGIC_ANALYZER_STATE 0x000000041970#define AR_MAC_PCU_LOGIC_ANALYZER_ENABLE 0x000000081971#define AR_MAC_PCU_LOGIC_ANALYZER_QCU_SEL 0x000000F01972#define AR_MAC_PCU_LOGIC_ANALYZER_QCU_SEL_S 41973#define AR_MAC_PCU_LOGIC_ANALYZER_INT_ADDR 0x0003FF001974#define AR_MAC_PCU_LOGIC_ANALYZER_INT_ADDR_S 819751976#define AR_MAC_PCU_LOGIC_ANALYZER_DIAG_MODE 0xFFFC00001977#define AR_MAC_PCU_LOGIC_ANALYZER_DIAG_MODE_S 181978#define AR_MAC_PCU_LOGIC_ANALYZER_DISBUG20614 0x000400001979#define AR_MAC_PCU_LOGIC_ANALYZER_DISBUG20768 0x200000001980#define AR_MAC_PCU_LOGIC_ANALYZER_DISBUG20803 0x400000001981#define AR_MAC_PCU_LOGIC_ANALYZER_PSTABUG75996 0x9d5000101982#define AR_MAC_PCU_LOGIC_ANALYZER_VC_MODE 0x9d40001019831984#define AR_MAC_PCU_LOGIC_ANALYZER_32L AR_MAC_PCU_OFFSET(MAC_PCU_LOGIC_ANALYZER_32L)1985#define AR_MAC_PCU_LOGIC_ANALYZER_16U AR_MAC_PCU_OFFSET(MAC_PCU_LOGIC_ANALYZER_16U)19861987#define AR_MAC_PCU_TRACE_REG_START 0xE0001988#define AR_MAC_PCU_TRACE_REG_END 0xFFFC1989#define AR_MAC_PCU_TRACE_BUFFER_LENGTH (AR_MAC_PCU_TRACE_REG_END - AR_MAC_PCU_TRACE_REG_START + sizeof(uint32_t))1990//#endif // AR9300_EMULATION19911992/* MAC PCU global mode register */1993#define AR_2040_MODE AR_MAC_PCU_OFFSET(MAC_PCU_20_40_MODE)1994#define AR_2040_JOINED_RX_CLEAR 0x00000001 // use ctl + ext rx_clear for cca19951996/* MAC PCU H transfer timeout register */1997#define AR_H_XFER_TIMEOUT AR_MAC_PCU_OFFSET(MAC_PCU_H_XFER_TIMEOUT)1998#define AR_EXBF_IMMDIATE_RESP 0x000000401999#define AR_EXBF_NOACK_NO_RPT 0x000001002000#define AR_H_XFER_TIMEOUT_COUNT 0xf2001#define AR_H_XFER_TIMEOUT_COUNT_S 020022003/*2004* Additional cycle counter. See also AR_CCCNT2005* extension channel rx clear count2006* counts number of cycles rx_clear (ext) is low (i.e. busy)2007* when the MAC is not actively transmitting/receiving2008*/2009#define AR_EXTRCCNT AR_MAC_PCU_OFFSET(MAC_PCU_RX_CLEAR_DIFF_CNT)20102011/* antenna mask for self generated files */2012#define AR_SELFGEN_MASK AR_MAC_PCU_OFFSET(MAC_PCU_SELF_GEN_ANTENNA_MASK)20132014/* control registers for block BA control fields */2015#define AR_BA_BAR_CONTROL AR_MAC_PCU_OFFSET(MAC_PCU_BA_BAR_CONTROL)20162017/* legacy PLCP spoof */2018#define AR_LEG_PLCP_SPOOF AR_MAC_PCU_OFFSET(MAC_PCU_LEGACY_PLCP_SPOOF)20192020/* PHY error mask and EIFS mask continued */2021#define AR_PHY_ERR_MASK_CONT AR_MAC_PCU_OFFSET(MAC_PCU_PHY_ERROR_MASK_CONT)20222023/* MAC PCU transmit timer */2024#define AR_TX_TIMER AR_MAC_PCU_OFFSET(MAC_PCU_TX_TIMER)20252026/* MAC PCU transmit buffer control */2027#define AR_PCU_TXBUF_CTRL AR_MAC_PCU_OFFSET(MAC_PCU_TXBUF_CTRL)2028#define AR_PCU_TXBUF_CTRL_SIZE_MASK 0x7FF2029#define AR_PCU_TXBUF_CTRL_USABLE_SIZE 0x70020302031/*2032* MAC PCU miscellaneous mode 22033* WAR flags for various bugs, see mac_pcu_reg documentation.2034*/2035#define AR_PCU_MISC_MODE2 AR_MAC_PCU_OFFSET(MAC_PCU_MISC_MODE2)2036#define AR_PCU_MISC_MODE2_BUG_21532_ENABLE 0x000000012037#define AR_PCU_MISC_MODE2_MGMT_CRYPTO_ENABLE 0x00000002 /* Decrypt MGT frames using MFP method */2038#define AR_PCU_MISC_MODE2_NO_CRYPTO_FOR_NON_DATA_PKT 0x00000004 /* Don't decrypt MGT frames at all */20392040#define AR_BUG_58603_FIX_ENABLE 0x00000008 /* Enable fix for bug 58603. This allows2041* the use of AR_AGG_WEP_ENABLE.2042*/20432044#define AR_PCU_MISC_MODE2_PROM_VC_MODE 0xa148103b /* Enable promiscous in azimuth mode */20452046#define AR_PCU_MISC_MODE2_RESERVED 0x0000003820472048#define AR_ADHOC_MCAST_KEYID_ENABLE 0x00000040 /* This bit enables the Multicast search2049* based on both MAC Address and Key ID.2050* If bit is 0, then Multicast search is2051* based on MAC address only.2052* For Merlin and above only.2053*/20542055#define AR_PCU_MISC_MODE2_CFP_IGNORE 0x000000802056#define AR_PCU_MISC_MODE2_MGMT_QOS 0x0000FF002057#define AR_PCU_MISC_MODE2_MGMT_QOS_S 82058#define AR_PCU_MISC_MODE2_ENABLE_LOAD_NAV_BEACON_DURATION 0x000100002059#define AR_AGG_WEP_ENABLE 0x00020000 /* This field enables AGG_WEP feature,2060* when it is enable, AGG_WEP would takes2061* charge of the encryption interface of2062* pcu_txsm.2063*/2064#define AR_PCU_MISC_MODE2_HWWAR1 0x001000002065#define AR_PCU_MISC_MODE2_PROXY_STA 0x01000000 /* see EV 75996 */2066#define AR_PCU_MISC_MODE2_HWWAR2 0x020000002067#define AR_DECOUPLE_DECRYPTION 0x0800000020682069#define AR_PCU_MISC_MODE2_RESERVED2 0xFFFE000020702071/* MAC PCU Alternate AES QoS mute mask */2072#define AR_ALT_AES_MUTE_MASK AR_MAC_PCU_OFFSET(MAC_PCU_ALT_AES_MUTE_MASK)20732074/* Async Fifo registers - debug only */2075#define AR_ASYNC_FIFO_1 AR_MAC_PCU_OFFSET(ASYNC_FIFO_REG1)2076#define AR_ASYNC_FIFO_2 AR_MAC_PCU_OFFSET(ASYNC_FIFO_REG2)2077#define AR_ASYNC_FIFO_3 AR_MAC_PCU_OFFSET(ASYNC_FIFO_REG3)20782079/* Maps the 16 user priority TID values to Access categories */2080#define AR_TID_TO_AC_MAP AR_MAC_PCU_OFFSET(MAC_PCU_TID_TO_AC)20812082/* High Priority Queue Control */2083#define AR_HP_Q_CONTROL AR_MAC_PCU_OFFSET(MAC_PCU_HP_QUEUE)20842085/* Rx High Priority Queue Control */2086#define AR_HPQ_CONTROL AR_MAC_PCU_OFFSET(MAC_PCU_HP_QUEUE)2087#define AR_HPQ_ENABLE 0x000000012088#define AR_HPQ_MASK_BE 0x000000022089#define AR_HPQ_MASK_BK 0x000000042090#define AR_HPQ_MASK_VI 0x000000082091#define AR_HPQ_MASK_VO 0x000000102092#define AR_HPQ_UAPSD 0x000000202093#define AR_HPQ_FRAME_FILTER_0 0x000000402094#define AR_HPQ_FRAME_BSSID_MATCH_0 0x000000802095#define AR_HPQ_UAPSD_TRIGGER_EN 0x0010000020962097#define AR_BT_COEX_BT_WEIGHTS0 AR_MAC_PCU_OFFSET(MAC_PCU_BLUETOOTH_BT_WEIGHTS0)2098#define AR_BT_COEX_BT_WEIGHTS1 AR_MAC_PCU_OFFSET(MAC_PCU_BLUETOOTH_BT_WEIGHTS1)2099#define AR_BT_COEX_BT_WEIGHTS2 AR_MAC_PCU_OFFSET(MAC_PCU_BLUETOOTH_BT_WEIGHTS2)2100#define AR_BT_COEX_BT_WEIGHTS3 AR_MAC_PCU_OFFSET(MAC_PCU_BLUETOOTH_BT_WEIGHTS3)21012102#define AR_AGC_SATURATION_CNT0 AR_MAC_PCU_OFFSET(MAC_PCU_AGC_SATURATION_CNT0)2103#define AR_AGC_SATURATION_CNT1 AR_MAC_PCU_OFFSET(MAC_PCU_AGC_SATURATION_CNT1)2104#define AR_AGC_SATURATION_CNT2 AR_MAC_PCU_OFFSET(MAC_PCU_AGC_SATURATION_CNT2)21052106/* Hardware beacon processing */2107#define AR_HWBCNPROC1 AR_MAC_PCU_OFFSET(MAC_PCU_HW_BCN_PROC1)2108#define AR_HWBCNPROC1_CRC_ENABLE 0x00000001 /* Enable hw beacon processing */2109#define AR_HWBCNPROC1_RESET_CRC 0x00000002 /* Reset the last beacon CRC calculated */2110#define AR_HWBCNPROC1_EXCLUDE_BCN_INTVL 0x00000004 /* Exclude Beacon interval in CRC calculation */2111#define AR_HWBCNPROC1_EXCLUDE_CAP_INFO 0x00000008 /* Exclude Beacon capability information in CRC calculation */2112#define AR_HWBCNPROC1_EXCLUDE_TIM_ELM 0x00000010 /* Exclude Beacon TIM element in CRC calculation */2113#define AR_HWBCNPROC1_EXCLUDE_ELM0 0x00000020 /* Exclude element ID ELM0 in CRC calculation */2114#define AR_HWBCNPROC1_EXCLUDE_ELM1 0x00000040 /* Exclude element ID ELM1 in CRC calculation */2115#define AR_HWBCNPROC1_EXCLUDE_ELM2 0x00000080 /* Exclude element ID ELM2 in CRC calculation */2116#define AR_HWBCNPROC1_ELM0_ID 0x0000FF00 /* Element ID 0 */2117#define AR_HWBCNPROC1_ELM0_ID_S 82118#define AR_HWBCNPROC1_ELM1_ID 0x00FF0000 /* Element ID 1 */2119#define AR_HWBCNPROC1_ELM1_ID_S 162120#define AR_HWBCNPROC1_ELM2_ID 0xFF000000 /* Element ID 2 */2121#define AR_HWBCNPROC1_ELM2_ID_S 2421222123#define AR_HWBCNPROC2 AR_MAC_PCU_OFFSET(MAC_PCU_HW_BCN_PROC2)2124#define AR_HWBCNPROC2_FILTER_INTERVAL_ENABLE 0x00000001 /* Enable filtering beacons based on filter interval */2125#define AR_HWBCNPROC2_RESET_INTERVAL 0x00000002 /* Reset internal interval counter interval */2126#define AR_HWBCNPROC2_EXCLUDE_ELM3 0x00000004 /* Exclude element ID ELM3 in CRC calculation */2127#define AR_HWBCNPROC2_RSVD 0x000000F8 /* reserved */2128#define AR_HWBCNPROC2_FILTER_INTERVAL 0x0000FF00 /* Filter interval for beacons */2129#define AR_HWBCNPROC2_FILTER_INTERVAL_S 82130#define AR_HWBCNPROC2_ELM3_ID 0x00FF0000 /* Element ID 3 */2131#define AR_HWBCNPROC2_ELM3_ID_S 162132#define AR_HWBCNPROC2_RSVD2 0xFF000000 /* reserved */21332134#define AR_MAC_PCU_MISC_MODE3 AR_MAC_PCU_OFFSET(MAC_PCU_MISC_MODE3)2135#define AR_BUG_61936_FIX_ENABLE 0x00000040 /* EV61936 - rx descriptor corruption */2136#define AR_TIME_BASED_DISCARD_EN 0x800000002137#define AR_TIME_BASED_DISCARD_EN_S 3121382139#define AR_MAC_PCU_GEN_TIMER_TSF_SEL AR_MAC_PCU_OFFSET(MAC_PCU_GENERIC_TIMERS_TSF_SEL)21402141#define AR_MAC_PCU_TBD_FILTER AR_MAC_PCU_OFFSET(MAC_PCU_TBD_FILTER)2142#define AR_MAC_PCU_USE_WBTIMER_TX_TS 0x000000012143#define AR_MAC_PCU_USE_WBTIMER_TX_TS_S 02144#define AR_MAC_PCU_USE_WBTIMER_RX_TS 0x000000022145#define AR_MAC_PCU_USE_WBTIMER_RX_TS_S 121462147#define AR_TXBUF_BA AR_MAC_PCU_OFFSET(MAC_PCU_TXBUF_BA)214821492150/* MAC Key Cache */2151#define AR_KEYTABLE_0 AR_MAC_PCU_OFFSET(MAC_PCU_KEY_CACHE)2152#define AR_KEYTABLE(_n) (AR_KEYTABLE_0 + ((_n)*32))2153#define AR_KEY_CACHE_SIZE 1282154#define AR_RSVD_KEYTABLE_ENTRIES 42155#define AR_KEY_TYPE 0x00000007 // MAC Key Type Mask2156#define AR_KEYTABLE_TYPE_40 0x00000000 /* WEP 40 bit key */2157#define AR_KEYTABLE_TYPE_104 0x00000001 /* WEP 104 bit key */2158#define AR_KEYTABLE_TYPE_128 0x00000003 /* WEP 128 bit key */2159#define AR_KEYTABLE_TYPE_TKIP 0x00000004 /* TKIP and Michael */2160#define AR_KEYTABLE_TYPE_AES 0x00000005 /* AES/OCB 128 bit key */2161#define AR_KEYTABLE_TYPE_CCM 0x00000006 /* AES/CCM 128 bit key */2162#define AR_KEYTABLE_TYPE_CLR 0x00000007 /* no encryption */2163#define AR_KEYTABLE_ANT 0x00000008 /* previous transmit antenna */2164#define AR_KEYTABLE_UAPSD 0x000001E0 /* UAPSD AC mask */2165#define AR_KEYTABLE_UAPSD_S 52166#define AR_KEYTABLE_PWRMGT 0x00000200 /* hw managed PowerMgt bit */21672168#define AR_KEYTABLE_MMSS 0x00001c00 /* remote's MMSS*/2169#define AR_KEYTABLE_MMSS_S 102170#define AR_KEYTABLE_CEC 0x00006000 /* remote's CEC*/2171#define AR_KEYTABLE_CEC_S 132172#define AR_KEYTABLE_STAGGED 0x00010000 /* remote's stagged sounding*/2173#define AR_KEYTABLE_STAGGED_S 1621742175#define AR_KEYTABLE_VALID 0x00008000 /* key and MAC address valid */2176#define AR_KEYTABLE_KEY0(_n) (AR_KEYTABLE(_n) + 0) /* key bit 0-31 */2177#define AR_KEYTABLE_KEY1(_n) (AR_KEYTABLE(_n) + 4) /* key bit 32-47 */2178#define AR_KEYTABLE_KEY2(_n) (AR_KEYTABLE(_n) + 8) /* key bit 48-79 */2179#define AR_KEYTABLE_KEY3(_n) (AR_KEYTABLE(_n) + 12) /* key bit 80-95 */2180#define AR_KEYTABLE_KEY4(_n) (AR_KEYTABLE(_n) + 16) /* key bit 96-127 */2181#define AR_KEYTABLE_TYPE(_n) (AR_KEYTABLE(_n) + 20) /* key type */2182#define AR_KEYTABLE_MAC0(_n) (AR_KEYTABLE(_n) + 24) /* MAC address 1-32 */2183#define AR_KEYTABLE_MAC1(_n) (AR_KEYTABLE(_n) + 28) /* MAC address 33-47 */2184#define AR_KEYTABLE_DIR_ACK_BIT 0x00000010 /* Directed ACK bit */2185218621872188/*2189* MAC WoW Registers.2190*/2191#define AR_WOW_PATTERN_REG AR_MAC_PCU_OFFSET(MAC_PCU_WOW1)2192#define AR_WOW_PAT_BACKOFF 0x000000042193#define AR_WOW_BACK_OFF_SHIFT(x) ((x & 0xf) << 27) /* in usecs */2194#define AR_WOW_MAC_INTR_EN 0x000400002195#define AR_WOW_MAGIC_EN 0x000100002196#define AR_WOW_PATTERN_EN(x) ((x & 0xff) << 0)2197#define AR_WOW_PATTERN_FOUND_SHIFT 82198#define AR_WOW_PATTERN_FOUND(x) (x & (0xff << AR_WOW_PATTERN_FOUND_SHIFT))2199#define AR_WOW_PATTERN_FOUND_MASK ((0xff) << AR_WOW_PATTERN_FOUND_SHIFT)2200#define AR_WOW_MAGIC_PAT_FOUND 0x000200002201#define AR_WOW_MAC_INTR 0x000800002202#define AR_WOW_KEEP_ALIVE_FAIL 0x001000002203#define AR_WOW_BEACON_FAIL 0x00200000220422052206#define AR_WOW_COUNT_REG AR_MAC_PCU_OFFSET(MAC_PCU_WOW2)2207#define AR_WOW_AIFS_CNT(x) ((x & 0xff) << 0)2208#define AR_WOW_SLOT_CNT(x) ((x & 0xff) << 8)2209#define AR_WOW_KEEP_ALIVE_CNT(x) ((x & 0xff) << 16)2210/*2211* Default values for Wow Configuration for backoff, aifs, slot, keep-alive, etc.2212* to be programmed into various registers.2213*/2214#define AR_WOW_CNT_AIFS_CNT 0x00000022 // AR_WOW_COUNT_REG2215#define AR_WOW_CNT_SLOT_CNT 0x00000009 // AR_WOW_COUNT_REG2216/*2217* Keepalive count applicable for Merlin 2.0 and above.2218*/2219#define AR_WOW_CNT_KA_CNT 0x00000008 // AR_WOW_COUNT_REG222022212222#define AR_WOW_BCN_EN_REG AR_MAC_PCU_OFFSET(MAC_PCU_WOW3_BEACON_FAIL)2223#define AR_WOW_BEACON_FAIL_EN 0x0000000122242225#define AR_WOW_BCN_TIMO_REG AR_MAC_PCU_OFFSET(MAC_PCU_WOW3_BEACON)2226#define AR_WOW_BEACON_TIMO 0x40000000 /* Valid if BCN_EN is set */2227#define AR_WOW_BEACON_TIMO_MAX 0xFFFFFFFF /* Max. value for Beacon Timeout */22282229#define AR_WOW_KEEP_ALIVE_TIMO_REG AR_MAC_PCU_OFFSET(MAC_PCU_WOW3_KEEP_ALIVE)2230#define AR_WOW_KEEP_ALIVE_TIMO 0x00007A122231#define AR_WOW_KEEP_ALIVE_NEVER 0xFFFFFFFF22322233#define AR_WOW_KEEP_ALIVE_REG AR_MAC_PCU_OFFSET(MAC_PCU_WOW_KA)2234#define AR_WOW_KEEP_ALIVE_AUTO_DIS 0x000000012235#define AR_WOW_KEEP_ALIVE_FAIL_DIS 0x0000000222362237#define AR_WOW_US_SCALAR_REG AR_MAC_PCU_OFFSET(PCU_1US)22382239#define AR_WOW_KEEP_ALIVE_DELAY_REG AR_MAC_PCU_OFFSET(PCU_KA)2240#define AR_WOW_KEEP_ALIVE_DELAY 0x000003E8 // 1 msec22412242#define AR_WOW_PATTERN_MATCH_REG AR_MAC_PCU_OFFSET(WOW_EXACT)2243#define AR_WOW_PAT_END_OF_PKT(x) ((x & 0xf) << 0)2244#define AR_WOW_PAT_OFF_MATCH(x) ((x & 0xf) << 8)22452246#define AR_WOW_PATTERN_MATCH_REG_2 AR_MAC_PCU_OFFSET(WOW2_EXACT)2247#define AR_WOW_PATTERN_OFF1_REG AR_MAC_PCU_OFFSET(PCU_WOW4) /* Pattern bytes 0 -> 3 */2248#define AR_WOW_PATTERN_OFF2_REG AR_MAC_PCU_OFFSET(PCU_WOW5) /* Pattern bytes 4 -> 7 */2249#define AR_WOW_PATTERN_OFF3_REG AR_MAC_PCU_OFFSET(PCU_WOW6) /* Pattern bytes 8 -> 11 */2250#define AR_WOW_PATTERN_OFF4_REG AR_MAC_PCU_OFFSET(PCU_WOW7) /* Pattern bytes 12 -> 15 */22512252/* start address of the frame in RxBUF */2253#define AR_WOW_RXBUF_START_ADDR AR_MAC_PCU_OFFSET(MAC_PCU_WOW6)22542255/* Pattern detect and enable bits */2256#define AR_WOW_PATTERN_DETECT_ENABLE AR_MAC_PCU_OFFSET(MAC_PCU_WOW4)22572258/* Rx Abort Enable */2259#define AR_WOW_RX_ABORT_ENABLE AR_MAC_PCU_OFFSET(MAC_PCU_WOW5)22602261/* PHY error counter 1, 2, and 3 mask continued */2262#define AR_PHY_ERR_CNT_MASK_CONT AR_MAC_PCU_OFFSET(MAC_PCU_PHY_ERR_CNT_MASK_CONT)22632264/* AZIMUTH mode reg can be used for proxySTA */2265#define AR_AZIMUTH_MODE AR_MAC_PCU_OFFSET(MAC_PCU_AZIMUTH_MODE)2266#define AR_AZIMUTH_KEY_SEARCH_AD1 0x000000022267#define AR_AZIMUTH_CTS_MATCH_TX_AD2 0x000000402268#define AR_AZIMUTH_BA_USES_AD1 0x000000802269#define AR_AZIMUTH_FILTER_PASS_HOLD 0x0000020022702271/* Length of Pattern Match for Pattern */2272#define AR_WOW_LENGTH1_REG AR_MAC_PCU_OFFSET(MAC_PCU_WOW_LENGTH1)2273#define AR_WOW_LENGTH2_REG AR_MAC_PCU_OFFSET(MAC_PCU_WOW_LENGTH2)2274#define AR_WOW_LENGTH3_REG AR_MAC_PCU_OFFSET(MAC_PCU_WOW_LENGTH3)2275#define AR_WOW_LENGTH4_REG AR_MAC_PCU_OFFSET(MAC_PCU_WOW_LENGTH4)22762277#define AR_LOC_CTL_REG AR_MAC_PCU_OFFSET(MAC_PCU_LOCATION_MODE_CONTROL)2278#define AR_LOC_TIMER_REG AR_MAC_PCU_OFFSET(MAC_PCU_LOCATION_MODE_TIMER)2279#define AR_LOC_CTL_REG_FS 0x122802281/* Register to enable pattern match for less than 256 bytes packets */2282#define AR_WOW_PATTERN_MATCH_LT_256B_REG AR_MAC_PCU_OFFSET(WOW_PATTERN_MATCH_LESS_THAN_256_BYTES)228322842285#define AR_WOW_STATUS(x) (x & (AR_WOW_PATTERN_FOUND_MASK | AR_WOW_MAGIC_PAT_FOUND | \2286AR_WOW_KEEP_ALIVE_FAIL | AR_WOW_BEACON_FAIL))2287#define AR_WOW_CLEAR_EVENTS(x) (x & ~(AR_WOW_PATTERN_EN(0xff) | \2288AR_WOW_MAGIC_EN | AR_WOW_MAC_INTR_EN | AR_WOW_BEACON_FAIL | \2289AR_WOW_KEEP_ALIVE_FAIL))229022912292/*2293* Keep it long for Beacon workaround - ensures no AH_FALSE alarm2294*/2295#define AR_WOW_BMISSTHRESHOLD 0x20229622972298/* WoW - Transmit buffer for keep alive frames */2299#define AR_WOW_TRANSMIT_BUFFER AR_MAC_PCU_OFFSET(MAC_PCU_BUF)2300#define AR_WOW_TXBUF(_i) (AR_WOW_TRANSMIT_BUFFER + ((_i)<<2))23012302#define AR_WOW_KA_DESC_WORD2 AR_WOW_TXBUF(0)2303#define AR_WOW_KA_DESC_WORD3 AR_WOW_TXBUF(1)2304#define AR_WOW_KA_DESC_WORD4 AR_WOW_TXBUF(2)2305#define AR_WOW_KA_DESC_WORD5 AR_WOW_TXBUF(3)2306#define AR_WOW_KA_DESC_WORD6 AR_WOW_TXBUF(4)2307#define AR_WOW_KA_DESC_WORD7 AR_WOW_TXBUF(5)2308#define AR_WOW_KA_DESC_WORD8 AR_WOW_TXBUF(6)2309#define AR_WOW_KA_DESC_WORD9 AR_WOW_TXBUF(7)2310#define AR_WOW_KA_DESC_WORD10 AR_WOW_TXBUF(8)2311#define AR_WOW_KA_DESC_WORD11 AR_WOW_TXBUF(9)2312#define AR_WOW_KA_DESC_WORD12 AR_WOW_TXBUF(10)2313#define AR_WOW_KA_DESC_WORD13 AR_WOW_TXBUF(11)23142315/* KA_DATA_WORD = 6 words. Depending on the number of2316* descriptor words, it can start at AR_WOW_TXBUF(12)2317* or AR_WOW_TXBUF(13) */23182319#define AR_WOW_OFFLOAD_GTK_DATA_START AR_WOW_TXBUF(19)23202321#define AR_WOW_KA_DATA_WORD_END_JUPITER AR_WOW_TXBUF(60)23222323#define AR_WOW_SW_NULL_PARAMETER AR_WOW_TXBUF(61)2324#define AR_WOW_SW_NULL_LONG_PERIOD_MASK 0x0000FFFF2325#define AR_WOW_SW_NULL_LONG_PERIOD_MASK_S 02326#define AR_WOW_SW_NULL_SHORT_PERIOD_MASK 0xFFFF00002327#define AR_WOW_SW_NULL_SHORT_PERIOD_MASK_S 1623282329#define AR_WOW_OFFLOAD_COMMAND_JUPITER AR_WOW_TXBUF(62)2330#define AR_WOW_OFFLOAD_ENA_GTK 0x800000002331#define AR_WOW_OFFLOAD_ENA_ACER_MAGIC 0x400000002332#define AR_WOW_OFFLOAD_ENA_STD_MAGIC 0x200000002333#define AR_WOW_OFFLOAD_ENA_SWKA 0x100000002334#define AR_WOW_OFFLOAD_ENA_ARP_OFFLOAD 0x080000002335#define AR_WOW_OFFLOAD_ENA_NS_OFFLOAD 0x040000002336#define AR_WOW_OFFLOAD_ENA_4WAY_WAKE 0x020000002337#define AR_WOW_OFFLOAD_ENA_GTK_ERROR_WAKE 0x010000002338#define AR_WOW_OFFLOAD_ENA_AP_LOSS_WAKE 0x008000002339#define AR_WOW_OFFLOAD_ENA_BT_SLEEP 0x000800002340#define AR_WOW_OFFLOAD_ENA_SW_NULL 0x000400002341#define AR_WOW_OFFLOAD_ENA_HWKA_FAIL 0x000200002342#define AR_WOW_OFFLOAD_ENA_DEVID_SWAR 0x0001000023432344#define AR_WOW_OFFLOAD_STATUS_JUPITER AR_WOW_TXBUF(63)23452346/* WoW Transmit Buffer for patterns */2347#define AR_WOW_TB_PATTERN0 AR_WOW_TXBUF(64)2348#define AR_WOW_TB_PATTERN1 AR_WOW_TXBUF(128)2349#define AR_WOW_TB_PATTERN2 AR_WOW_TXBUF(192)2350#define AR_WOW_TB_PATTERN3 AR_WOW_TXBUF(256)2351#define AR_WOW_TB_PATTERN4 AR_WOW_TXBUF(320)2352#define AR_WOW_TB_PATTERN5 AR_WOW_TXBUF(384)2353#define AR_WOW_TB_PATTERN6 AR_WOW_TXBUF(448)2354#define AR_WOW_TB_PATTERN7 AR_WOW_TXBUF(512)2355#define AR_WOW_TB_MASK0 AR_WOW_TXBUF(768)2356#define AR_WOW_TB_MASK1 AR_WOW_TXBUF(776)2357#define AR_WOW_TB_MASK2 AR_WOW_TXBUF(784)2358#define AR_WOW_TB_MASK3 AR_WOW_TXBUF(792)2359#define AR_WOW_TB_MASK4 AR_WOW_TXBUF(800)2360#define AR_WOW_TB_MASK5 AR_WOW_TXBUF(808)2361#define AR_WOW_TB_MASK6 AR_WOW_TXBUF(816)2362#define AR_WOW_TB_MASK7 AR_WOW_TXBUF(824)236323642365#define AR_WOW_OFFLOAD_GTK_TXDESC_PARAM_START AR_WOW_TXBUF(825)2366#define AR_WOW_OFFLOAD_GTK_TXDESC_PARAM_START_JUPITER AR_WOW_TXBUF(832)2367#define AR_WOW_OFFLOAD_GTK_TXDESC_PARAM_WORDS 423682369#define AR_WOW_OFFLOAD_GTK_DATA_START_JUPITER AR_WOW_TXBUF(836)2370#define AR_WOW_OFFLOAD_GTK_DATA_WORDS_JUPITER 2023712372#define AR_WOW_OFFLOAD_ACER_MAGIC_START AR_WOW_TXBUF(856)2373#define AR_WOW_OFFLOAD_ACER_MAGIC_WORDS 223742375#define AR_WOW_OFFLOAD_ACER_KA0_START AR_WOW_TXBUF(858)2376#define AR_WOW_OFFLOAD_ACER_KA0_PERIOD_MS AR_WOW_TXBUF(858)2377#define AR_WOW_OFFLOAD_ACER_KA0_SIZE AR_WOW_TXBUF(859)2378#define AR_WOW_OFFLOAD_ACER_KA0_DATA AR_WOW_TXBUF(860)2379#define AR_WOW_OFFLOAD_ACER_KA0_DATA_WORDS 202380#define AR_WOW_OFFLOAD_ACER_KA0_WORDS 2223812382#define AR_WOW_OFFLOAD_ACER_KA1_START AR_WOW_TXBUF(880)2383#define AR_WOW_OFFLOAD_ACER_KA1_PERIOD_MS AR_WOW_TXBUF(880)2384#define AR_WOW_OFFLOAD_ACER_KA1_SIZE AR_WOW_TXBUF(881)2385#define AR_WOW_OFFLOAD_ACER_KA1_DATA AR_WOW_TXBUF(882)2386#define AR_WOW_OFFLOAD_ACER_KA1_DATA_WORDS 202387#define AR_WOW_OFFLOAD_ACER_KA1_WORDS 2223882389#define AR_WOW_OFFLOAD_ARP0_START AR_WOW_TXBUF(902)2390#define AR_WOW_OFFLOAD_ARP0_VALID AR_WOW_TXBUF(902)2391#define AR_WOW_OFFLOAD_ARP0_RMT_IP AR_WOW_TXBUF(903)2392#define AR_WOW_OFFLOAD_ARP0_HOST_IP AR_WOW_TXBUF(904)2393#define AR_WOW_OFFLOAD_ARP0_MAC_L AR_WOW_TXBUF(905)2394#define AR_WOW_OFFLOAD_ARP0_MAC_H AR_WOW_TXBUF(906)2395#define AR_WOW_OFFLOAD_ARP0_WORDS 523962397#define AR_WOW_OFFLOAD_ARP1_START AR_WOW_TXBUF(907)2398#define AR_WOW_OFFLOAD_ARP1_VALID AR_WOW_TXBUF(907)2399#define AR_WOW_OFFLOAD_ARP1_RMT_IP AR_WOW_TXBUF(908)2400#define AR_WOW_OFFLOAD_ARP1_HOST_IP AR_WOW_TXBUF(909)2401#define AR_WOW_OFFLOAD_ARP1_MAC_L AR_WOW_TXBUF(910)2402#define AR_WOW_OFFLOAD_ARP1_MAC_H AR_WOW_TXBUF(911)2403#define AR_WOW_OFFLOAD_ARP1_WORDS 524042405#define AR_WOW_OFFLOAD_NS0_START AR_WOW_TXBUF(912)2406#define AR_WOW_OFFLOAD_NS0_VALID AR_WOW_TXBUF(912)2407#define AR_WOW_OFFLOAD_NS0_RMT_IPV6 AR_WOW_TXBUF(913)2408#define AR_WOW_OFFLOAD_NS0_SOLICIT_IPV6 AR_WOW_TXBUF(917)2409#define AR_WOW_OFFLOAD_NS0_MAC_L AR_WOW_TXBUF(921)2410#define AR_WOW_OFFLOAD_NS0_MAC_H AR_WOW_TXBUF(922)2411#define AR_WOW_OFFLOAD_NS0_TGT0_IPV6 AR_WOW_TXBUF(923)2412#define AR_WOW_OFFLOAD_NS0_TGT1_IPV6 AR_WOW_TXBUF(927)2413#define AR_WOW_OFFLOAD_NS0_WORDS 1924142415#define AR_WOW_OFFLOAD_NS1_START AR_WOW_TXBUF(931)2416#define AR_WOW_OFFLOAD_NS1_VALID AR_WOW_TXBUF(931)2417#define AR_WOW_OFFLOAD_NS1_RMT_IPV6 AR_WOW_TXBUF(932)2418#define AR_WOW_OFFLOAD_NS1_SOLICIT_IPV6 AR_WOW_TXBUF(936)2419#define AR_WOW_OFFLOAD_NS1_MAC_L AR_WOW_TXBUF(940)2420#define AR_WOW_OFFLOAD_NS1_MAC_H AR_WOW_TXBUF(941)2421#define AR_WOW_OFFLOAD_NS1_TGT0_IPV6 AR_WOW_TXBUF(942)2422#define AR_WOW_OFFLOAD_NS1_TGT1_IPV6 AR_WOW_TXBUF(946)2423#define AR_WOW_OFFLOAD_NS1_WORDS 1924242425#define AR_WOW_OFFLOAD_WLAN_REGSET_START AR_WOW_TXBUF(950)2426#define AR_WOW_OFFLOAD_WLAN_REGSET_NUM AR_WOW_TXBUF(950)2427#define AR_WOW_OFFLOAD_WLAN_REGSET_REGVAL AR_WOW_TXBUF(951)2428#define AR_WOW_OFFLOAD_WLAN_REGSET_MAX_PAIR 322429#define AR_WOW_OFFLOAD_WLAN_REGSET_WORDS 65 //(1 + AR_WOW_OFFLOAD_WLAN_REGSET_MAX_PAIR * 2)24302431/* Currently Pattern 0-7 are supported - so bit 0-7 are set */2432#define AR_WOW_PATTERN_SUPPORTED 0xFF2433#define AR_WOW_LENGTH_MAX 0xFF2434#define AR_WOW_LENGTH1_SHIFT(_i) ((0x3 - ((_i) & 0x3)) << 0x3)2435#define AR_WOW_LENGTH1_MASK(_i) (AR_WOW_LENGTH_MAX << AR_WOW_LENGTH1_SHIFT(_i))2436#define AR_WOW_LENGTH2_SHIFT(_i) ((0x7 - ((_i) & 0x7)) << 0x3)2437#define AR_WOW_LENGTH2_MASK(_i) (AR_WOW_LENGTH_MAX << AR_WOW_LENGTH2_SHIFT(_i))24382439/*2440* MAC Direct Connect registers2441*2442* Added to support dual BSSID/TSF which are needed in the application2443* of Mesh networking or Direct Connect.2444*/24452446/*2447* Note that the only function added with this BSSID2 is to receive2448* multi/broadcast from BSSID2 as well2449*/2450/* MAC BSSID low 32 bits */2451#define AR_BSS2_ID0 AR_MAC_PCU_OFFSET(MAC_PCU_BSSID2_L32)2452/* MAC BSSID upper 16 bits / AID */2453#define AR_BSS2_ID1 AR_MAC_PCU_OFFSET(MAC_PCU_BSSID2_U16)24542455/*2456* Secondary TSF support added for dual BSSID/TSF2457*/2458/* MAC local clock lower 32 bits */2459#define AR_TSF2_L32 AR_MAC_PCU_OFFSET(MAC_PCU_TSF2_L32)2460/* MAC local clock upper 32 bits */2461#define AR_TSF2_U32 AR_MAC_PCU_OFFSET(MAC_PCU_TSF2_U32)24622463/* MAC Direct Connect Control */2464#define AR_DIRECT_CONNECT AR_MAC_PCU_OFFSET(MAC_PCU_DIRECT_CONNECT)2465#define AR_DC_AP_STA_EN 0x000000012466#define AR_DC_AP_STA_EN_S 024672468/*2469* tx_bf Register2470*/2471#define AR_SVD_OFFSET(_x) offsetof(struct svd_reg, _x)24722473#define AR_TXBF_DBG AR_SVD_OFFSET(TXBF_DBG)24742475#define AR_TXBF AR_SVD_OFFSET(TXBF)2476#define AR_TXBF_CB_TX 0x000000032477#define AR_TXBF_CB_TX_S 02478#define AR_TXBF_PSI_1_PHI_3 02479#define AR_TXBF_PSI_2_PHI_4 12480#define AR_TXBF_PSI_3_PHI_5 22481#define AR_TXBF_PSI_4_PHI_6 324822483#define AR_TXBF_NB_TX 0x0000000C2484#define AR_TXBF_NB_TX_S 22485#define AR_TXBF_NUMBEROFBIT_4 02486#define AR_TXBF_NUMBEROFBIT_2 12487#define AR_TXBF_NUMBEROFBIT_6 22488#define AR_TXBF_NUMBEROFBIT_8 324892490#define AR_TXBF_NG_RPT_TX 0x000000302491#define AR_TXBF_NG_RPT_TX_S 42492#define AR_TXBF_No_GROUP 02493#define AR_TXBF_TWO_GROUP 12494#define AR_TXBF_FOUR_GROUP 224952496#define AR_TXBF_NG_CVCACHE 0x000000C02497#define AR_TXBF_NG_CVCACHE_S 62498#define AR_TXBF_FOUR_CLIENTS 02499#define AR_TXBF_EIGHT_CLIENTS 12500#define AR_TXBF_SIXTEEN_CLIENTS 225012502#define AR_TXBF_TXCV_BFWEIGHT_METHOD 0x000006002503#define AR_TXBF_TXCV_BFWEIGHT_METHOD_S 92504#define AR_TXBF_NO_WEIGHTING 02505#define AR_TXBF_MAX_POWER 12506#define AR_TXBF_KEEP_RATIO 225072508#define AR_TXBF_RLR_EN 0x000008002509#define AR_TXBF_RC_20_U_DONE 0x000010002510#define AR_TXBF_RC_20_L_DONE 0x000020002511#define AR_TXBF_RC_40_DONE 0x000040002512#define AR_TXBF_FORCE_UPDATE_V2BB 0x0000800025132514#define AR_TXBF_TIMER AR_SVD_OFFSET(TXBF_TIMER)2515#define AR_TXBF_TIMER_TIMEOUT 0x000000FF2516#define AR_TXBF_TIMER_TIMEOUT_S 02517#define AR_TXBF_TIMER_ATIMEOU 0x0000FF002518#define AR_TXBF_TIMER_ATIMEOUT_S 825192520/* for SVD cache update */2521#define AR_TXBF_SW AR_SVD_OFFSET(TXBF_SW)2522#define AR_LRU_ACK 0x000000012523#define AR_LRU_ADDR 0x000003FE2524#define AR_LRU_ADDR_S 12525#define AR_LRU_EN 0x000008002526#define AR_LRU_EN_S 112527#define AR_DEST_IDX 0x0007f0002528#define AR_DEST_IDX_S 122529#define AR_LRU_WR_ACK 0x000800002530#define AR_LRU_WR_ACK_S 192531#define AR_LRU_RD_ACK 0x001000002532#define AR_LRU_RD_ACK_S 2025332534#define AR_RC0_0 AR_SVD_OFFSET(RC0)2535#define AR_RC0(_idx) (AR_RC0_0+(_idx))2536#define AR_RC1_0 AR_SVD_OFFSET(RC1)2537#define AR_RC1(_idx) (AR_RC1_0+(_idx))25382539#define AR_CVCACHE_0 AR_SVD_OFFSET(CVCACHE)2540#define AR_CVCACHE(_idx) (AR_CVCACHE_0+(_idx))2541/* for CV CACHE Header */2542#define AR_CVCACHE_Ng_IDX 0x0000C0002543#define AR_CVCACHE_Ng_IDX_S 142544#define AR_CVCACHE_BW40 0x000100002545#define AR_CVCACHE_BW40_S 162546#define AR_CVCACHE_IMPLICIT 0x000200002547#define AR_CVCACHE_IMPLICIT_S 172548#define AR_CVCACHE_DEST_IDX 0x01FC00002549#define AR_CVCACHE_DEST_IDX_S 182550#define AR_CVCACHE_Nc_IDX 0x060000002551#define AR_CVCACHE_Nc_IDX_S 252552#define AR_CVCACHE_Nr_IDX 0x180000002553#define AR_CVCACHE_Nr_IDX_S 272554#define AR_CVCACHE_EXPIRED 0x200000002555#define AR_CVCACHE_EXPIRED_S 292556#define AR_CVCACHE_WRITE 0x800000002557/* for CV cache data*/2558#define AR_CVCACHE_RD_EN 0x400000002559#define AR_CVCACHE_DATA 0x3fffffff2560/*2561* ANT DIV setting2562*/2563#define ANT_DIV_CONTROL_ALL (0x7e000000)2564#define ANT_DIV_CONTROL_ALL_S (25)2565#define ANT_DIV_ENABLE (0x1000000)2566#define ANT_DIV_ENABLE_S (24)2567#define FAST_DIV_ENABLE (0x2000)2568#define FAST_DIV_ENABLE_S (13)25692570/* Global register */2571#define AR_GLB_REG_OFFSET(_x) offsetof(struct wlan_bt_glb_reg_pcie, _x)25722573#define AR_MBOX_CTRL_STATUS AR_GLB_REG_OFFSET(GLB_MBOX_CONTROL_STATUS)2574#define AR_MBOX_INT_EMB_CPU 0x00012575#define AR_MBOX_INT_WLAN 0x00022576#define AR_MBOX_RESET 0x00042577#define AR_MBOX_RAM_REQ_MASK 0x00182578#define AR_MBOX_RAM_REQ_NO_RAM 0x00002579#define AR_MBOX_RAM_REQ_USB 0x00082580#define AR_MBOX_RAM_REQ_WLAN_BUF 0x00102581#define AR_MBOX_RAM_REQ_PATCH_REAPPY 0x00182582#define AR_MBOX_RAM_CONF 0x00202583#define AR_MBOX_WLAN_BUF 0x00402584#define AR_MBOX_WOW_REQ 0x00802585#define AR_MBOX_WOW_CONF 0x01002586#define AR_MBOX_WOW_ERROR_MASK 0x1e002587#define AR_MBOX_WOW_ERROR_NONE 0x00002588#define AR_MBOX_WOW_ERROR_INVALID_MSG 0x02002589#define AR_MBOX_WOW_ERROR_MALFORMED_MSG 0x04002590#define AR_MBOX_WOW_ERROR_INVALID_RAM_IMAGE 0x060025912592#define AR_WLAN_WOW_STATUS AR_GLB_REG_OFFSET(GLB_WLAN_WOW_STATUS)25932594#define AR_WLAN_WOW_ENABLE AR_GLB_REG_OFFSET(GLB_WLAN_WOW_ENABLE)25952596#define AR_EMB_CPU_WOW_STATUS AR_GLB_REG_OFFSET(GLB_EMB_CPU_WOW_STATUS)2597#define AR_EMB_CPU_WOW_STATUS_KEEP_ALIVE_FAIL 0x12598#define AR_EMB_CPU_WOW_STATUS_BEACON_MISS 0x22599#define AR_EMB_CPU_WOW_STATUS_PATTERN_MATCH 0x42600#define AR_EMB_CPU_WOW_STATUS_MAGIC_PATTERN 0x826012602#define AR_EMB_CPU_WOW_ENABLE AR_GLB_REG_OFFSET(GLB_EMB_CPU_WOW_ENABLE)2603#define AR_EMB_CPU_WOW_ENABLE_KEEP_ALIVE_FAIL 0x12604#define AR_EMB_CPU_WOW_ENABLE_BEACON_MISS 0x22605#define AR_EMB_CPU_WOW_ENABLE_PATTERN_MATCH 0x42606#define AR_EMB_CPU_WOW_ENABLE_MAGIC_PATTERN 0x826072608#define AR_SW_WOW_CONTROL AR_GLB_REG_OFFSET(GLB_SW_WOW_CONTROL)2609#define AR_SW_WOW_ENABLE 0x12610#define AR_SWITCH_TO_REFCLK 0x22611#define AR_RESET_CONTROL 0x42612#define AR_RESET_VALUE_MASK 0x82613#define AR_HW_WOW_DISABLE 0x102614#define AR_CLR_MAC_INTERRUPT 0x202615#define AR_CLR_KA_INTERRUPT 0x4026162617/*2618* WLAN coex registers2619*/2620#define AR_WLAN_COEX_OFFSET(_x) offsetof(struct wlan_coex_reg, _x)26212622#define AR_MCI_COMMAND0 AR_WLAN_COEX_OFFSET(MCI_COMMAND0)2623#define AR_MCI_COMMAND0_HEADER 0xFF2624#define AR_MCI_COMMAND0_HEADER_S 02625#define AR_MCI_COMMAND0_LEN 0x1f002626#define AR_MCI_COMMAND0_LEN_S 82627#define AR_MCI_COMMAND0_DISABLE_TIMESTAMP 0x20002628#define AR_MCI_COMMAND0_DISABLE_TIMESTAMP_S 1326292630#define AR_MCI_COMMAND1 AR_WLAN_COEX_OFFSET(MCI_COMMAND1)26312632#define AR_MCI_COMMAND2 AR_WLAN_COEX_OFFSET(MCI_COMMAND2)2633#define AR_MCI_COMMAND2_RESET_TX 0x012634#define AR_MCI_COMMAND2_RESET_TX_S 02635#define AR_MCI_COMMAND2_RESET_RX 0x022636#define AR_MCI_COMMAND2_RESET_RX_S 12637#define AR_MCI_COMMAND2_RESET_RX_NUM_CYCLES 0x3FC2638#define AR_MCI_COMMAND2_RESET_RX_NUM_CYCLES_S 22639#define AR_MCI_COMMAND2_RESET_REQ_WAKEUP 0x4002640#define AR_MCI_COMMAND2_RESET_REQ_WAKEUP_S 1026412642#define AR_MCI_RX_CTRL AR_WLAN_COEX_OFFSET(MCI_RX_CTRL)26432644#define AR_MCI_TX_CTRL AR_WLAN_COEX_OFFSET(MCI_TX_CTRL)2645/* 0 = no division, 1 = divide by 2, 2 = divide by 4, 3 = divide by 8 */2646#define AR_MCI_TX_CTRL_CLK_DIV 0x032647#define AR_MCI_TX_CTRL_CLK_DIV_S 02648#define AR_MCI_TX_CTRL_DISABLE_LNA_UPDATE 0x042649#define AR_MCI_TX_CTRL_DISABLE_LNA_UPDATE_S 22650#define AR_MCI_TX_CTRL_GAIN_UPDATE_FREQ 0xFFFFF82651#define AR_MCI_TX_CTRL_GAIN_UPDATE_FREQ_S 32652#define AR_MCI_TX_CTRL_GAIN_UPDATE_NUM 0xF0000002653#define AR_MCI_TX_CTRL_GAIN_UPDATE_NUM_S 2426542655#define AR_MCI_MSG_ATTRIBUTES_TABLE AR_WLAN_COEX_OFFSET(MCI_MSG_ATTRIBUTES_TABLE)2656#define AR_MCI_MSG_ATTRIBUTES_TABLE_CHECKSUM 0xFFFF2657#define AR_MCI_MSG_ATTRIBUTES_TABLE_CHECKSUM_S 02658#define AR_MCI_MSG_ATTRIBUTES_TABLE_INVALID_HDR 0xFFFF00002659#define AR_MCI_MSG_ATTRIBUTES_TABLE_INVALID_HDR_S 1626602661#define AR_MCI_SCHD_TABLE_0 AR_WLAN_COEX_OFFSET(MCI_SCHD_TABLE_0)2662#define AR_MCI_SCHD_TABLE_1 AR_WLAN_COEX_OFFSET(MCI_SCHD_TABLE_1)2663#define AR_MCI_GPM_0 AR_WLAN_COEX_OFFSET(MCI_GPM_0)2664#define AR_MCI_GPM_1 AR_WLAN_COEX_OFFSET(MCI_GPM_1)2665#define AR_MCI_GPM_WRITE_PTR 0xFFFF00002666#define AR_MCI_GPM_WRITE_PTR_S 162667#define AR_MCI_GPM_BUF_LEN 0x0000FFFF2668#define AR_MCI_GPM_BUF_LEN_S 026692670#define AR_MCI_INTERRUPT_RAW AR_WLAN_COEX_OFFSET(MCI_INTERRUPT_RAW)2671#define AR_MCI_INTERRUPT_EN AR_WLAN_COEX_OFFSET(MCI_INTERRUPT_EN)2672#define AR_MCI_INTERRUPT_SW_MSG_DONE 0x000000012673#define AR_MCI_INTERRUPT_SW_MSG_DONE_S 02674#define AR_MCI_INTERRUPT_CPU_INT_MSG 0x000000022675#define AR_MCI_INTERRUPT_CPU_INT_MSG_S 12676#define AR_MCI_INTERRUPT_RX_CKSUM_FAIL 0x000000042677#define AR_MCI_INTERRUPT_RX_CKSUM_FAIL_S 22678#define AR_MCI_INTERRUPT_RX_INVALID_HDR 0x000000082679#define AR_MCI_INTERRUPT_RX_INVALID_HDR_S 32680#define AR_MCI_INTERRUPT_RX_HW_MSG_FAIL 0x000000102681#define AR_MCI_INTERRUPT_RX_HW_MSG_FAIL_S 42682#define AR_MCI_INTERRUPT_RX_SW_MSG_FAIL 0x000000202683#define AR_MCI_INTERRUPT_RX_SW_MSG_FAIL_S 52684#define AR_MCI_INTERRUPT_TX_HW_MSG_FAIL 0x000000802685#define AR_MCI_INTERRUPT_TX_HW_MSG_FAIL_S 72686#define AR_MCI_INTERRUPT_TX_SW_MSG_FAIL 0x000001002687#define AR_MCI_INTERRUPT_TX_SW_MSG_FAIL_S 82688#define AR_MCI_INTERRUPT_RX_MSG 0x000002002689#define AR_MCI_INTERRUPT_RX_MSG_S 92690#define AR_MCI_INTERRUPT_REMOTE_SLEEP_UPDATE 0x000004002691#define AR_MCI_INTERRUPT_REMOTE_SLEEP_UPDATE_S 102692#define AR_MCI_INTERRUPT_BT_PRI 0x07fff8002693#define AR_MCI_INTERRUPT_BT_PRI_S 112694#define AR_MCI_INTERRUPT_BT_PRI_THRESH 0x080000002695#define AR_MCI_INTERRUPT_BT_PRI_THRESH_S 272696#define AR_MCI_INTERRUPT_BT_FREQ 0x100000002697#define AR_MCI_INTERRUPT_BT_FREQ_S 282698#define AR_MCI_INTERRUPT_BT_STOMP 0x200000002699#define AR_MCI_INTERRUPT_BT_STOMP_S 292700#define AR_MCI_INTERRUPT_BB_AIC_IRQ 0x400000002701#define AR_MCI_INTERRUPT_BB_AIC_IRQ_S 302702#define AR_MCI_INTERRUPT_CONT_INFO_TIMEOUT 0x800000002703#define AR_MCI_INTERRUPT_CONT_INFO_TIMEOUT_S 3127042705#define AR_MCI_INTERRUPT_MSG_FAIL_MASK ( AR_MCI_INTERRUPT_RX_HW_MSG_FAIL | \2706AR_MCI_INTERRUPT_RX_SW_MSG_FAIL | \2707AR_MCI_INTERRUPT_TX_HW_MSG_FAIL | \2708AR_MCI_INTERRUPT_TX_SW_MSG_FAIL )27092710#define AR_MCI_INTERRUPT_DEFAULT ( AR_MCI_INTERRUPT_SW_MSG_DONE | \2711AR_MCI_INTERRUPT_RX_INVALID_HDR | \2712AR_MCI_INTERRUPT_RX_HW_MSG_FAIL | \2713AR_MCI_INTERRUPT_RX_SW_MSG_FAIL | \2714AR_MCI_INTERRUPT_TX_HW_MSG_FAIL | \2715AR_MCI_INTERRUPT_TX_SW_MSG_FAIL | \2716AR_MCI_INTERRUPT_RX_MSG | \2717AR_MCI_INTERRUPT_REMOTE_SLEEP_UPDATE | \2718AR_MCI_INTERRUPT_CONT_INFO_TIMEOUT )27192720#define AR_MCI_REMOTE_CPU_INT AR_WLAN_COEX_OFFSET(MCI_REMOTE_CPU_INT)2721#define AR_MCI_REMOTE_CPU_INT_EN AR_WLAN_COEX_OFFSET(MCI_REMOTE_CPU_INT_EN)27222723#define AR_MCI_INTERRUPT_RX_MSG_RAW AR_WLAN_COEX_OFFSET(MCI_INTERRUPT_RX_MSG_RAW)2724#define AR_MCI_INTERRUPT_RX_MSG_EN AR_WLAN_COEX_OFFSET(MCI_INTERRUPT_RX_MSG_EN)2725#define AR_MCI_INTERRUPT_RX_MSG_REMOTE_RESET 0x000000012726#define AR_MCI_INTERRUPT_RX_MSG_REMOTE_RESET_S 02727#define AR_MCI_INTERRUPT_RX_MSG_LNA_CONTROL 0x000000022728#define AR_MCI_INTERRUPT_RX_MSG_LNA_CONTROL_S 12729#define AR_MCI_INTERRUPT_RX_MSG_CONT_NACK 0x000000042730#define AR_MCI_INTERRUPT_RX_MSG_CONT_NACK_S 22731#define AR_MCI_INTERRUPT_RX_MSG_CONT_INFO 0x000000082732#define AR_MCI_INTERRUPT_RX_MSG_CONT_INFO_S 32733#define AR_MCI_INTERRUPT_RX_MSG_CONT_RST 0x000000102734#define AR_MCI_INTERRUPT_RX_MSG_CONT_RST_S 42735#define AR_MCI_INTERRUPT_RX_MSG_SCHD_INFO 0x000000202736#define AR_MCI_INTERRUPT_RX_MSG_SCHD_INFO_S 52737#define AR_MCI_INTERRUPT_RX_MSG_CPU_INT 0x000000402738#define AR_MCI_INTERRUPT_RX_MSG_CPU_INT_S 62739#define AR_MCI_INTERRUPT_RX_MSG_GPM 0x000001002740#define AR_MCI_INTERRUPT_RX_MSG_GPM_S 82741#define AR_MCI_INTERRUPT_RX_MSG_LNA_INFO 0x000002002742#define AR_MCI_INTERRUPT_RX_MSG_LNA_INFO_S 92743#define AR_MCI_INTERRUPT_RX_MSG_SYS_SLEEPING 0x000004002744#define AR_MCI_INTERRUPT_RX_MSG_SYS_SLEEPING_S 102745#define AR_MCI_INTERRUPT_RX_MSG_SYS_WAKING 0x000008002746#define AR_MCI_INTERRUPT_RX_MSG_SYS_WAKING_S 112747#define AR_MCI_INTERRUPT_RX_MSG_REQ_WAKE 0x000010002748#define AR_MCI_INTERRUPT_RX_MSG_REQ_WAKE_S 122749#ifdef AH_DEBUG2750#define AR_MCI_INTERRUPT_RX_MSG_DEFAULT ( AR_MCI_INTERRUPT_RX_MSG_GPM | \2751AR_MCI_INTERRUPT_RX_MSG_REMOTE_RESET | \2752AR_MCI_INTERRUPT_RX_MSG_SYS_WAKING | \2753AR_MCI_INTERRUPT_RX_MSG_SYS_SLEEPING | \2754AR_MCI_INTERRUPT_RX_MSG_SCHD_INFO | \2755AR_MCI_INTERRUPT_RX_MSG_LNA_CONTROL | \2756AR_MCI_INTERRUPT_RX_MSG_LNA_INFO | \2757AR_MCI_INTERRUPT_RX_MSG_CONT_NACK | \2758AR_MCI_INTERRUPT_RX_MSG_CONT_INFO | \2759AR_MCI_INTERRUPT_RX_MSG_CONT_RST | \2760AR_MCI_INTERRUPT_RX_MSG_REQ_WAKE )2761#else2762#define AR_MCI_INTERRUPT_RX_MSG_DEFAULT ( AR_MCI_INTERRUPT_RX_MSG_GPM | \2763AR_MCI_INTERRUPT_RX_MSG_REMOTE_RESET | \2764AR_MCI_INTERRUPT_RX_MSG_SYS_WAKING | \2765AR_MCI_INTERRUPT_RX_MSG_SYS_SLEEPING | \2766AR_MCI_INTERRUPT_RX_MSG_REQ_WAKE )2767#endif2768#define AR_MCI_INTERRUPT_RX_HW_MSG_MASK ( AR_MCI_INTERRUPT_RX_MSG_SCHD_INFO | \2769AR_MCI_INTERRUPT_RX_MSG_LNA_CONTROL | \2770AR_MCI_INTERRUPT_RX_MSG_LNA_INFO | \2771AR_MCI_INTERRUPT_RX_MSG_CONT_NACK | \2772AR_MCI_INTERRUPT_RX_MSG_CONT_INFO | \2773AR_MCI_INTERRUPT_RX_MSG_CONT_RST )27742775#define AR_MCI_CPU_INT AR_WLAN_COEX_OFFSET(MCI_CPU_INT)27762777#define AR_MCI_RX_STATUS AR_WLAN_COEX_OFFSET(MCI_RX_STATUS)2778#define AR_MCI_RX_LAST_SCHD_MSG_INDEX 0x00000F002779#define AR_MCI_RX_LAST_SCHD_MSG_INDEX_S 82780#define AR_MCI_RX_REMOTE_SLEEP 0x000010002781#define AR_MCI_RX_REMOTE_SLEEP_S 122782#define AR_MCI_RX_MCI_CLK_REQ 0x000020002783#define AR_MCI_RX_MCI_CLK_REQ_S 1327842785#define AR_MCI_CONT_STATUS AR_WLAN_COEX_OFFSET(MCI_CONT_STATUS)2786#define AR_MCI_CONT_RSSI_POWER 0x000000FF2787#define AR_MCI_CONT_RSSI_POWER_S 02788#define AR_MCI_CONT_RRIORITY 0x0000FF002789#define AR_MCI_CONT_RRIORITY_S 82790#define AR_MCI_CONT_TXRX 0x000100002791#define AR_MCI_CONT_TXRX_S 1627922793#define AR_MCI_BT_PRI0 AR_WLAN_COEX_OFFSET(MCI_BT_PRI0)2794#define AR_MCI_BT_PRI1 AR_WLAN_COEX_OFFSET(MCI_BT_PRI1)2795#define AR_MCI_BT_PRI2 AR_WLAN_COEX_OFFSET(MCI_BT_PRI2)2796#define AR_MCI_BT_PRI3 AR_WLAN_COEX_OFFSET(MCI_BT_PRI3)2797#define AR_MCI_BT_PRI AR_WLAN_COEX_OFFSET(MCI_BT_PRI)2798#define AR_MCI_WL_FREQ0 AR_WLAN_COEX_OFFSET(MCI_WL_FREQ0)2799#define AR_MCI_WL_FREQ1 AR_WLAN_COEX_OFFSET(MCI_WL_FREQ1)2800#define AR_MCI_WL_FREQ2 AR_WLAN_COEX_OFFSET(MCI_WL_FREQ2)2801#define AR_MCI_GAIN AR_WLAN_COEX_OFFSET(MCI_GAIN)2802#define AR_MCI_WBTIMER1 AR_WLAN_COEX_OFFSET(MCI_WBTIMER1)2803#define AR_MCI_WBTIMER2 AR_WLAN_COEX_OFFSET(MCI_WBTIMER2)2804#define AR_MCI_WBTIMER3 AR_WLAN_COEX_OFFSET(MCI_WBTIMER3)2805#define AR_MCI_WBTIMER4 AR_WLAN_COEX_OFFSET(MCI_WBTIMER4)2806#define AR_MCI_MAXGAIN AR_WLAN_COEX_OFFSET(MCI_MAXGAIN)2807#define AR_MCI_HW_SCHD_TBL_CTL AR_WLAN_COEX_OFFSET(MCI_HW_SCHD_TBL_CTL)2808#define AR_MCI_HW_SCHD_TBL_D0 AR_WLAN_COEX_OFFSET(MCI_HW_SCHD_TBL_D0)2809#define AR_MCI_HW_SCHD_TBL_D1 AR_WLAN_COEX_OFFSET(MCI_HW_SCHD_TBL_D1)2810#define AR_MCI_HW_SCHD_TBL_D2 AR_WLAN_COEX_OFFSET(MCI_HW_SCHD_TBL_D2)2811#define AR_MCI_HW_SCHD_TBL_D3 AR_WLAN_COEX_OFFSET(MCI_HW_SCHD_TBL_D3)2812#define AR_MCI_TX_PAYLOAD0 AR_WLAN_COEX_OFFSET(MCI_TX_PAYLOAD0)2813#define AR_MCI_TX_PAYLOAD1 AR_WLAN_COEX_OFFSET(MCI_TX_PAYLOAD1)2814#define AR_MCI_TX_PAYLOAD2 AR_WLAN_COEX_OFFSET(MCI_TX_PAYLOAD2)2815#define AR_MCI_TX_PAYLOAD3 AR_WLAN_COEX_OFFSET(MCI_TX_PAYLOAD3)2816#define AR_BTCOEX_WBTIMER AR_WLAN_COEX_OFFSET(BTCOEX_WBTIMER)28172818#define AR_BTCOEX_CTRL AR_WLAN_COEX_OFFSET(BTCOEX_CTRL)2819#define AR_BTCOEX_CTRL_JUPITER_MODE 0x000000012820#define AR_BTCOEX_CTRL_JUPITER_MODE_S 02821#define AR_BTCOEX_CTRL_WBTIMER_EN 0x000000022822#define AR_BTCOEX_CTRL_WBTIMER_EN_S 12823#define AR_BTCOEX_CTRL_MCI_MODE_EN 0x000000042824#define AR_BTCOEX_CTRL_MCI_MODE_EN_S 22825#define AR_BTCOEX_CTRL_LNA_SHARED 0x000000082826#define AR_BTCOEX_CTRL_LNA_SHARED_S 32827#define AR_BTCOEX_CTRL_PA_SHARED 0x000000102828#define AR_BTCOEX_CTRL_PA_SHARED_S 42829#define AR_BTCOEX_CTRL_ONE_STEP_LOOK_AHEAD_EN 0x000000202830#define AR_BTCOEX_CTRL_ONE_STEP_LOOK_AHEAD_EN_S 52831#define AR_BTCOEX_CTRL_TIME_TO_NEXT_BT_THRESH_EN 0x000000402832#define AR_BTCOEX_CTRL_TIME_TO_NEXT_BT_THRESH_EN_S 62833#define AR_BTCOEX_CTRL_NUM_ANTENNAS 0x000001802834#define AR_BTCOEX_CTRL_NUM_ANTENNAS_S 72835#define AR_BTCOEX_CTRL_RX_CHAIN_MASK 0x00000E002836#define AR_BTCOEX_CTRL_RX_CHAIN_MASK_S 92837#define AR_BTCOEX_CTRL_AGGR_THRESH 0x000070002838#define AR_BTCOEX_CTRL_AGGR_THRESH_S 122839#define AR_BTCOEX_CTRL_1_CHAIN_BCN 0x000800002840#define AR_BTCOEX_CTRL_1_CHAIN_BCN_S 192841#define AR_BTCOEX_CTRL_1_CHAIN_ACK 0x001000002842#define AR_BTCOEX_CTRL_1_CHAIN_ACK_S 202843#define AR_BTCOEX_CTRL_WAIT_BA_MARGIN 0x1FE000002844#define AR_BTCOEX_CTRL_WAIT_BA_MARGIN_S 282845#define AR_BTCOEX_CTRL_REDUCE_TXPWR 0x200000002846#define AR_BTCOEX_CTRL_REDUCE_TXPWR_S 292847#define AR_BTCOEX_CTRL_SPDT_ENABLE_10 0x400000002848#define AR_BTCOEX_CTRL_SPDT_ENABLE_10_S 302849#define AR_BTCOEX_CTRL_SPDT_POLARITY 0x800000002850#define AR_BTCOEX_CTRL_SPDT_POLARITY_S 3128512852#define AR_BTCOEX_WL_WEIGHTS0 AR_WLAN_COEX_OFFSET(BTCOEX_WL_WEIGHTS0)2853#define AR_BTCOEX_WL_WEIGHTS1 AR_WLAN_COEX_OFFSET(BTCOEX_WL_WEIGHTS1)2854#define AR_BTCOEX_WL_WEIGHTS2 AR_WLAN_COEX_OFFSET(BTCOEX_WL_WEIGHTS2)2855#define AR_BTCOEX_WL_WEIGHTS3 AR_WLAN_COEX_OFFSET(BTCOEX_WL_WEIGHTS3)2856#define AR_BTCOEX_MAX_TXPWR(_x) (AR_WLAN_COEX_OFFSET(BTCOEX_MAX_TXPWR) + ((_x) << 2))2857#define AR_BTCOEX_WL_LNA AR_WLAN_COEX_OFFSET(BTCOEX_WL_LNA)2858#define AR_BTCOEX_WL_LNA_TIMEOUT 0x003FFFFF2859#define AR_BTCOEX_WL_LNA_TIMEOUT_S 028602861#define AR_BTCOEX_RFGAIN_CTRL AR_WLAN_COEX_OFFSET(BTCOEX_RFGAIN_CTRL)28622863#define AR_BTCOEX_CTRL2 AR_WLAN_COEX_OFFSET(BTCOEX_CTRL2)2864#define AR_BTCOEX_CTRL2_TXPWR_THRESH 0x0007F8002865#define AR_BTCOEX_CTRL2_TXPWR_THRESH_S 112866#define AR_BTCOEX_CTRL2_TX_CHAIN_MASK 0x003800002867#define AR_BTCOEX_CTRL2_TX_CHAIN_MASK_S 192868#define AR_BTCOEX_CTRL2_RX_DEWEIGHT 0x004000002869#define AR_BTCOEX_CTRL2_RX_DEWEIGHT_S 222870#define AR_BTCOEX_CTRL2_GPIO_OBS_SEL 0x008000002871#define AR_BTCOEX_CTRL2_GPIO_OBS_SEL_S 232872#define AR_BTCOEX_CTRL2_MAC_BB_OBS_SEL 0x010000002873#define AR_BTCOEX_CTRL2_MAC_BB_OBS_SEL_S 242874#define AR_BTCOEX_CTRL2_DESC_BASED_TXPWR_ENABLE 0x020000002875#define AR_BTCOEX_CTRL2_DESC_BASED_TXPWR_ENABLE_S 2528762877#define AR_BTCOEX_RC AR_WLAN_COEX_OFFSET(BTCOEX_RC)2878#define AR_BTCOEX_MAX_RFGAIN(_x) AR_WLAN_COEX_OFFSET(BTCOEX_MAX_RFGAIN[_x])2879#define AR_BTCOEX_DBG AR_WLAN_COEX_OFFSET(BTCOEX_DBG)2880#define AR_MCI_LAST_HW_MSG_HDR AR_WLAN_COEX_OFFSET(MCI_LAST_HW_MSG_HDR)2881#define AR_MCI_LAST_HW_MSG_BDY AR_WLAN_COEX_OFFSET(MCI_LAST_HW_MSG_BDY)28822883#define AR_MCI_SCHD_TABLE_2 AR_WLAN_COEX_OFFSET(MCI_SCHD_TABLE_2)2884#define AR_MCI_SCHD_TABLE_2_MEM_BASED 0x000000012885#define AR_MCI_SCHD_TABLE_2_MEM_BASED_S 02886#define AR_MCI_SCHD_TABLE_2_HW_BASED 0x000000022887#define AR_MCI_SCHD_TABLE_2_HW_BASED_S 128882889#define AR_BTCOEX_CTRL3 AR_WLAN_COEX_OFFSET(BTCOEX_CTRL3)2890#define AR_BTCOEX_CTRL3_CONT_INFO_TIMEOUT 0x00000FFF2891#define AR_BTCOEX_CTRL3_CONT_INFO_TIMEOUT_S 028922893/* QCA9565 */28942895#define AR_BTCOEX_WL_LNADIV 0x1a642896#define AR_BTCOEX_WL_LNADIV_PREDICTED_PERIOD 0x00003FFF2897#define AR_BTCOEX_WL_LNADIV_PREDICTED_PERIOD_S 02898#define AR_BTCOEX_WL_LNADIV_DPDT_IGNORE_PRIORITY 0x000040002899#define AR_BTCOEX_WL_LNADIV_DPDT_IGNORE_PRIORITY_S 142900#define AR_BTCOEX_WL_LNADIV_FORCE_ON 0x000080002901#define AR_BTCOEX_WL_LNADIV_FORCE_ON_S 152902#define AR_BTCOEX_WL_LNADIV_MODE_OPTION 0x000300002903#define AR_BTCOEX_WL_LNADIV_MODE_OPTION_S 162904#define AR_BTCOEX_WL_LNADIV_MODE 0x007c00002905#define AR_BTCOEX_WL_LNADIV_MODE_S 182906#define AR_BTCOEX_WL_LNADIV_ALLOWED_TX_ANTDIV_WL_TX_REQ 0x008000002907#define AR_BTCOEX_WL_LNADIV_ALLOWED_TX_ANTDIV_WL_TX_REQ_S 232908#define AR_BTCOEX_WL_LNADIV_DISABLE_TX_ANTDIV_ENABLE 0x010000002909#define AR_BTCOEX_WL_LNADIV_DISABLE_TX_ANTDIV_ENABLE_S 242910#define AR_BTCOEX_WL_LNADIV_CONTINUOUS_BT_ACTIVE_PROTECT 0x020000002911#define AR_BTCOEX_WL_LNADIV_CONTINUOUS_BT_ACTIVE_PROTECT_S 252912#define AR_BTCOEX_WL_LNADIV_BT_INACTIVE_THRESHOLD 0xFC0000002913#define AR_BTCOEX_WL_LNADIV_BT_INACTIVE_THRESHOLD_S 2629142915#define AR_MCI_MISC 0x1a742916#define AR_MCI_MISC_HW_FIX_EN 0x000000012917#define AR_MCI_MISC_HW_FIX_EN_S 029182919/******************************************************************************2920* WLAN BT Global Register Map2921******************************************************************************/2922#define AR_WLAN_BT_GLB_OFFSET(_x) offsetof(struct wlan_bt_glb_reg_pcie, _x)29232924/*2925* WLAN BT Global Registers2926*/29272928#define AR_GLB_GPIO_CONTROL AR_WLAN_BT_GLB_OFFSET(GLB_GPIO_CONTROL)2929#define AR_GLB_WLAN_WOW_STATUS AR_WLAN_BT_GLB_OFFSET(GLB_WLAN_WOW_STATUS)2930#define AR_GLB_WLAN_WOW_ENABLE AR_WLAN_BT_GLB_OFFSET(GLB_WLAN_WOW_ENABLE)2931#define AR_GLB_EMB_CPU_WOW_STATUS AR_WLAN_BT_GLB_OFFSET(GLB_EMB_CPU_WOW_STATUS)2932#define AR_GLB_EMB_CPU_WOW_ENABLE AR_WLAN_BT_GLB_OFFSET(GLB_EMB_CPU_WOW_ENABLE)2933#define AR_GLB_MBOX_CONTROL_STATUS AR_WLAN_BT_GLB_OFFSET(GLB_MBOX_CONTROL_STATUS)2934#define AR_GLB_SW_WOW_CLK_CONTROL AR_WLAN_BT_GLB_OFFSET(GLB_SW_WOW_CLK_CONTROL)2935#define AR_GLB_APB_TIMEOUT AR_WLAN_BT_GLB_OFFSET(GLB_APB_TIMEOUT)2936#define AR_GLB_OTP_LDO_CONTROL AR_WLAN_BT_GLB_OFFSET(GLB_OTP_LDO_CONTROL)2937#define AR_GLB_OTP_LDO_POWER_GOOD AR_WLAN_BT_GLB_OFFSET(GLB_OTP_LDO_POWER_GOOD)2938#define AR_GLB_OTP_LDO_STATUS AR_WLAN_BT_GLB_OFFSET(GLB_OTP_LDO_STATUS)2939#define AR_GLB_SWREG_DISCONT_MODE AR_WLAN_BT_GLB_OFFSET(GLB_SWREG_DISCONT_MODE)2940#define AR_GLB_BT_GPIO_REMAP_OUT_CONTROL0 AR_WLAN_BT_GLB_OFFSET(GLB_BT_GPIO_REMAP_OUT_CONTROL0)2941#define AR_GLB_BT_GPIO_REMAP_OUT_CONTROL1 AR_WLAN_BT_GLB_OFFSET(GLB_BT_GPIO_REMAP_OUT_CONTROL1)2942#define AR_GLB_BT_GPIO_REMAP_IN_CONTROL0 AR_WLAN_BT_GLB_OFFSET(GLB_BT_GPIO_REMAP_IN_CONTROL0)2943#define AR_GLB_BT_GPIO_REMAP_IN_CONTROL1 AR_WLAN_BT_GLB_OFFSET(GLB_BT_GPIO_REMAP_IN_CONTROL1)2944#define AR_GLB_BT_GPIO_REMAP_IN_CONTROL2 AR_WLAN_BT_GLB_OFFSET(GLB_BT_GPIO_REMAP_IN_CONTROL2)2945#define AR_GLB_SCRATCH(_ah) \2946(AR_SREV_APHRODITE(_ah)? \2947AR_WLAN_BT_GLB_OFFSET(overlay_0x20044.Aphrodite_10.GLB_SCRATCH) : \2948(AR_SREV_JUPITER_20(_ah) ? \2949AR_WLAN_BT_GLB_OFFSET(overlay_0x20044.Jupiter_20.GLB_SCRATCH) : \2950AR_WLAN_BT_GLB_OFFSET(overlay_0x20044.Jupiter_10.GLB_SCRATCH)))29512952#define AR_GLB_CONTROL AR_WLAN_BT_GLB_OFFSET(overlay_0x20044.Jupiter_20.GLB_CONTROL)2953#define AR_BTCOEX_CTRL_SPDT_ENABLE 0x000000012954#define AR_BTCOEX_CTRL_SPDT_ENABLE_S 02955#define AR_BTCOEX_CTRL_BT_OWN_SPDT_CTRL 0x000000022956#define AR_BTCOEX_CTRL_BT_OWN_SPDT_CTRL_S 12957#define AR_BTCOEX_CTRL_USE_LATCHED_BT_ANT 0x000000042958#define AR_BTCOEX_CTRL_USE_LATCHED_BT_ANT_S 22959#define AR_GLB_WLAN_UART_INTF_EN 0x000200002960#define AR_GLB_WLAN_UART_INTF_EN_S 172961#define AR_GLB_DS_JTAG_DISABLE 0x000400002962#define AR_GLB_DS_JTAG_DISABLE_S 1829632964#define AR_GLB_STATUS AR_WLAN_BT_GLB_OFFSET(overlay_0x20044.Jupiter_20.GLB_STATUS)29652966/*2967* MAC Version and Revision2968*/29692970#define AR_SREV_VERSION_OSPREY 0x1C02971#define AR_SREV_VERSION_AR9580 0x1C02972#define AR_SREV_VERSION_JUPITER 0x2802973#define AR_SREV_VERSION_HORNET 0x2002974#define AR_SREV_VERSION_WASP 0x300 /* XXX: Check Wasp version number */2975#define AR_SREV_VERSION_SCORPION 0x4002976#define AR_SREV_VERSION_POSEIDON 0x2402977#define AR_SREV_VERSION_HONEYBEE 0x5002978#define AR_SREV_VERSION_APHRODITE 0x2C029792980#define AR_SREV_REVISION_OSPREY_10 0 /* Osprey 1.0 */2981#define AR_SREV_REVISION_OSPREY_20 2 /* Osprey 2.0/2.1 */2982#define AR_SREV_REVISION_OSPREY_22 3 /* Osprey 2.2 */2983#define AR_SREV_REVISION_AR9580_10 4 /* AR9580/Peacock 1.0 */29842985#define AR_SREV_REVISION_HORNET_10 0 /* Hornet 1.0 */2986#define AR_SREV_REVISION_HORNET_11 1 /* Hornet 1.1 */2987#define AR_SREV_REVISION_HORNET_12 2 /* Hornet 1.2 */2988#define AR_SREV_REVISION_HORNET_11_MASK 0xf /* Hornet 1.1 revision mask */29892990#define AR_SREV_REVISION_POSEIDON_10 0 /* Poseidon 1.0 */2991#define AR_SREV_REVISION_POSEIDON_11 1 /* Poseidon 1.1 */29922993#define AR_SREV_REVISION_WASP_10 0 /* Wasp 1.0 */2994#define AR_SREV_REVISION_WASP_11 1 /* Wasp 1.1 */2995#define AR_SREV_REVISION_WASP_12 2 /* Wasp 1.2 */2996#define AR_SREV_REVISION_WASP_13 3 /* Wasp 1.3 */2997#define AR_SREV_REVISION_WASP_MASK 0xf /* Wasp revision mask */2998#define AR_SREV_REVISION_WASP_MINOR_MINOR_MASK 0x10000 /* Wasp minor minor revision mask */2999#define AR_SREV_REVISION_WASP_MINOR_MINOR_SHIFT 16 /* Wasp minor minor revision shift */30003001#define AR_SREV_REVISION_JUPITER_10 0 /* Jupiter 1.0 */3002#define AR_SREV_REVISION_JUPITER_20 2 /* Jupiter 2.0 */3003#define AR_SREV_REVISION_JUPITER_21 3 /* Jupiter 2.1 */30043005#define AR_SREV_REVISION_HONEYBEE_10 0 /* Honeybee 1.0 */3006#define AR_SREV_REVISION_HONEYBEE_11 1 /* Honeybee 1.1 */3007#define AR_SREV_REVISION_HONEYBEE_MASK 0xf /* Honeybee revision mask */30083009#define AR_SREV_REVISION_APHRODITE_10 0 /* Aphrodite 1.0 */30103011#if defined(AH_SUPPORT_OSPREY)3012#define AR_SREV_OSPREY(_ah) \3013((AH_PRIVATE((_ah))->ah_macVersion == AR_SREV_VERSION_OSPREY))30143015#define AR_SREV_OSPREY_22(_ah) \3016((AH_PRIVATE((_ah))->ah_macVersion == AR_SREV_VERSION_OSPREY) && \3017(AH_PRIVATE((_ah))->ah_macRev == AR_SREV_REVISION_OSPREY_22))3018#else3019#define AR_SREV_OSPREY(_ah) 03020#define AR_SREV_OSPREY_10(_ah) 03021#define AR_SREV_OSPREY_20(_ah) 03022#define AR_SREV_OSPREY_22(_ah) 03023#define AR_SREV_OSPREY_20_OR_LATER(_ah) 03024#define AR_SREV_OSPREY_22_OR_LATER(_ah) 03025#endif /* #if defined(AH_SUPPORT_OSPREY) */30263027#define AR_SREV_AR9580(_ah) \3028((AH_PRIVATE((_ah))->ah_macVersion == AR_SREV_VERSION_AR9580) && \3029(AH_PRIVATE((_ah))->ah_macRev >= AR_SREV_REVISION_AR9580_10))30303031#define AR_SREV_AR9580_10(_ah) \3032((AH_PRIVATE((_ah))->ah_macVersion == AR_SREV_VERSION_AR9580) && \3033(AH_PRIVATE((_ah))->ah_macRev == AR_SREV_REVISION_AR9580_10))30343035/* NOTE: When adding chips newer than Peacock, add chip check here. */3036#define AR_SREV_AR9580_10_OR_LATER(_ah) \3037(AR_SREV_AR9580(_ah) || AR_SREV_SCORPION(_ah) || AR_SREV_HONEYBEE(_ah))30383039#define AR_SREV_JUPITER(_ah) \3040((AH_PRIVATE((_ah))->ah_macVersion == AR_SREV_VERSION_JUPITER))30413042#define AR_SREV_JUPITER_10(_ah) \3043((AH_PRIVATE((_ah))->ah_macVersion == AR_SREV_VERSION_JUPITER) && \3044(AH_PRIVATE((_ah))->ah_macRev == AR_SREV_REVISION_JUPITER_10))30453046#define AR_SREV_JUPITER_20(_ah) \3047((AH_PRIVATE((_ah))->ah_macVersion == AR_SREV_VERSION_JUPITER) && \3048(AH_PRIVATE((_ah))->ah_macRev == AR_SREV_REVISION_JUPITER_20))30493050#define AR_SREV_JUPITER_21(_ah) \3051((AH_PRIVATE((_ah))->ah_macVersion == AR_SREV_VERSION_JUPITER) && \3052(AH_PRIVATE((_ah))->ah_macRev == AR_SREV_REVISION_JUPITER_21))30533054#define AR_SREV_JUPITER_20_OR_LATER(_ah) \3055((AH_PRIVATE((_ah))->ah_macVersion == AR_SREV_VERSION_JUPITER) && \3056(AH_PRIVATE((_ah))->ah_macRev >= AR_SREV_REVISION_JUPITER_20))30573058#define AR_SREV_JUPITER_21_OR_LATER(_ah) \3059((AH_PRIVATE((_ah))->ah_macVersion == AR_SREV_VERSION_JUPITER) && \3060(AH_PRIVATE((_ah))->ah_macRev >= AR_SREV_REVISION_JUPITER_21))30613062#define AR_SREV_APHRODITE(_ah) \3063((AH_PRIVATE((_ah))->ah_macVersion == AR_SREV_VERSION_APHRODITE))30643065#define AR_SREV_APHRODITE_10(_ah) \3066((AH_PRIVATE((_ah))->ah_macVersion == AR_SREV_VERSION_APHRODITE) && \3067(AH_PRIVATE((_ah))->ah_macRev == AR_SREV_REVISION_APHRODITE_10))30683069#if defined(AH_SUPPORT_HORNET)3070#define AR_SREV_HORNET_10(_ah) \3071((AH_PRIVATE((_ah))->ah_macVersion == AR_SREV_VERSION_HORNET) && \3072(AH_PRIVATE((_ah))->ah_macRev == AR_SREV_REVISION_HORNET_10))30733074#define AR_SREV_HORNET_11(_ah) \3075((AH_PRIVATE((_ah))->ah_macVersion == AR_SREV_VERSION_HORNET) && \3076(AH_PRIVATE((_ah))->ah_macRev == AR_SREV_REVISION_HORNET_11))30773078#define AR_SREV_HORNET_12(_ah) \3079((AH_PRIVATE((_ah))->ah_macVersion == AR_SREV_VERSION_HORNET) && \3080(AH_PRIVATE((_ah))->ah_macRev == AR_SREV_REVISION_HORNET_12))30813082#define AR_SREV_HORNET(_ah) \3083( AR_SREV_HORNET_10(_ah) || AR_SREV_HORNET_11(_ah) || AR_SREV_HORNET_12(_ah) )3084#else3085#define AR_SREV_HORNET_10(_ah) 03086#define AR_SREV_HORNET_11(_ah) 03087#define AR_SREV_HORNET_12(_ah) 03088#define AR_SREV_HORNET(_ah) 03089#endif /* #if defined(AH_SUPPORT_HORNET) */30903091#if defined(AH_SUPPORT_WASP)3092#define AR_SREV_WASP(_ah) \3093((AH_PRIVATE((_ah))->ah_macVersion == AR_SREV_VERSION_WASP))3094#else3095#define AR_SREV_WASP(_ah) 03096#endif /* #if defined(AH_SUPPORT_WASP) */30973098#if defined(AH_SUPPORT_HONEYBEE)3099#define AR_SREV_HONEYBEE(_ah) \3100((AH_PRIVATE((_ah))->ah_macVersion == AR_SREV_VERSION_HONEYBEE))3101#define AR_SREV_HONEYBEE_10(_ah) \3102((AH_PRIVATE((_ah))->ah_macVersion == AR_SREV_VERSION_HONEYBEE) && \3103(AH_PRIVATE((_ah))->ah_macRev == AR_SREV_REVISION_HONEYBEE_10))3104#define AR_SREV_HONEYBEE_11(_ah) \3105((AH_PRIVATE((_ah))->ah_macVersion == AR_SREV_VERSION_HONEYBEE) && \3106(AH_PRIVATE((_ah))->ah_macRev == AR_SREV_REVISION_HONEYBEE_11))3107#else3108#define AR_SREV_HONEYBEE(_ah) 03109#define AR_SREV_HONEYBEE_10(_ah) 03110#define AR_SREV_HONEYBEE_11(_ah) 03111#endif /* #if defined(AH_SUPPORT_HONEYBEE) */31123113#define AR_SREV_WASP_10(_ah) \3114((AH_PRIVATE((_ah))->ah_macVersion == AR_SREV_VERSION_WASP) && \3115(AH_PRIVATE((_ah))->ah_macRev == AR_SREV_REVISION_WASP_10))31163117#define AR_SREV_WASP_11(_ah) \3118((AH_PRIVATE((_ah))->ah_macVersion == AR_SREV_VERSION_WASP) && \3119(AH_PRIVATE((_ah))->ah_macRev == AR_SREV_REVISION_WASP_11))31203121#define AR_SREV_WASP_12(_ah) \3122((AH_PRIVATE((_ah))->ah_macVersion == AR_SREV_VERSION_WASP) && \3123(AH_PRIVATE((_ah))->ah_macRev == AR_SREV_REVISION_WASP_12))31243125#if defined(AH_SUPPORT_SCORPION)3126#define AR_SREV_SCORPION(_ah) \3127((AH_PRIVATE((_ah))->ah_macVersion == AR_SREV_VERSION_SCORPION))3128#else3129#define AR_SREV_SCORPION(_ah) 03130#endif /* #if defined(AH_SUPPORT_SCORPION) */31313132#if defined(AH_SUPPORT_POSEIDON)3133#define AR_SREV_POSEIDON(_ah) \3134((AH_PRIVATE((_ah))->ah_macVersion == AR_SREV_VERSION_POSEIDON))31353136#define AR_SREV_POSEIDON_10(_ah) \3137((AH_PRIVATE((_ah))->ah_macVersion == AR_SREV_VERSION_POSEIDON) && \3138(AH_PRIVATE((_ah))->ah_macRev == AR_SREV_REVISION_POSEIDON_10))31393140#define AR_SREV_POSEIDON_11(_ah) \3141((AH_PRIVATE((_ah))->ah_macVersion == AR_SREV_VERSION_POSEIDON) && \3142(AH_PRIVATE((_ah))->ah_macRev == AR_SREV_REVISION_POSEIDON_11))3143#else3144#define AR_SREV_POSEIDON(_ah) 03145#define AR_SREV_POSEIDON_10(_ah) 03146#define AR_SREV_POSEIDON_11(_ah) 03147#endif /* #if defined(AH_SUPPORT_POSEIDON) */31483149#define AR_SREV_POSEIDON_11_OR_LATER(_ah) \3150((AH_PRIVATE((_ah))->ah_macVersion == AR_SREV_VERSION_POSEIDON) && \3151(AH_PRIVATE((_ah))->ah_macRev >= AR_SREV_REVISION_POSEIDON_11))31523153#define AR_SREV_POSEIDON_OR_LATER(_ah) \3154(AH_PRIVATE((_ah))->ah_macVersion >= AR_SREV_VERSION_POSEIDON)3155#define AR_SREV_SOC(_ah) (AR_SREV_HORNET(_ah) || AR_SREV_POSEIDON(_ah) || AR_SREV_WASP(_ah) || AR_SREV_HONEYBEE(_ah))3156/*3157* Mask used to construct AAD for CCMP-AES3158* Cisco spec defined bits 0-3 as mask3159* IEEE802.11w defined as bit 4.3160*/3161#define AR_MFP_QOS_MASK_IEEE 0x103162#define AR_MFP_QOS_MASK_CISCO 0xf31633164/*3165* frame control field mask:3166* 0 0 0 0 0 0 0 03167* | | | | | | | | _ Order bit3168* | | | | | | | _ _ Protected Frame bit3169* | | | | | | _ _ _ More data bit3170* | | | | | _ _ _ _ Power management bit3171* | | | | _ _ _ _ _ Retry bit3172* | | | _ _ _ _ _ _ More fragments bit3173* | | _ _ _ _ _ _ _ FromDS bit3174* | _ _ _ _ _ _ _ _ ToDS bit3175*/3176#define AR_AES_MUTE_MASK1_FC_MGMT_MFP 0xC7FF3177#endif317831793180