ar5210.h revision 185377
118334Speter/* 290075Sobrien * Copyright (c) 2002-2008 Sam Leffler, Errno Consulting 3132718Skan * Copyright (c) 2002-2004 Atheros Communications, Inc. 418334Speter * 518334Speter * Permission to use, copy, modify, and/or distribute this software for any 6132718Skan * purpose with or without fee is hereby granted, provided that the above 718334Speter * copyright notice and this permission notice appear in all copies. 8132718Skan * 918334Speter * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 1018334Speter * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 1118334Speter * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 1218334Speter * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 13132718Skan * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 1418334Speter * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 1518334Speter * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 1618334Speter * 1718334Speter * $Id: ar5210.h,v 1.6 2008/11/10 04:08:02 sam Exp $ 1818334Speter */ 19132718Skan#ifndef _ATH_AR5210_H_ 2018334Speter#define _ATH_AR5210_H_ 2118334Speter 2218334Speter#define AR5210_MAGIC 0x19980124 2318334Speter 2418334Speter#if 0 2518334Speter/* 2650397Sobrien * RTS_ENABLE includes LONG_PKT because they essentially 2750397Sobrien * imply the same thing, and are set or not set together 28132718Skan * for this chip 29132718Skan */ 3018334Speter#define AR5210_TXD_CTRL_A_HDR_LEN(_val) (((_val) ) & 0x0003f) 3118334Speter#define AR5210_TXD_CTRL_A_TX_RATE(_val) (((_val) << 6) & 0x003c0) 3290075Sobrien#define AR5210_TXD_CTRL_A_RTS_ENABLE ( 0x00c00) 3390075Sobrien#define AR5210_TXD_CTRL_A_CLEAR_DEST_MASK(_val) (((_val) << 12) & 0x01000) 3418334Speter#define AR5210_TXD_CTRL_A_ANT_MODE(_val) (((_val) << 13) & 0x02000) 3518334Speter#define AR5210_TXD_CTRL_A_PKT_TYPE(_val) (((_val) << 14) & 0x1c000) 3618334Speter#define AR5210_TXD_CTRL_A_INT_REQ ( 0x20000) 3750397Sobrien#define AR5210_TXD_CTRL_A_KEY_VALID ( 0x40000) 3850397Sobrien#define AR5210_TXD_CTRL_B_KEY_ID(_val) (((_val) ) & 0x0003f) 3990075Sobrien#define AR5210_TXD_CTRL_B_RTS_DURATION(_val) (((_val) << 6) & 0x7ffc0) 4090075Sobrien#endif 4118334Speter 42132718Skan#define INIT_CONFIG_STATUS 0x00000000 43132718Skan#define INIT_ACKTOPS 0x00000008 4418334Speter#define INIT_BCON_CNTRL_REG 0x00000000 45132718Skan#define INIT_SLOT_TIME 0x00000168 46132718Skan#define INIT_SLOT_TIME_TURBO 0x000001e0 /* More aggressive turbo slot timing = 6 us */ 47132718Skan#define INIT_ACK_CTS_TIMEOUT 0x04000400 48132718Skan#define INIT_ACK_CTS_TIMEOUT_TURBO 0x08000800 49132718Skan 50132718Skan#define INIT_USEC 0x27 5118334Speter#define INIT_USEC_TURBO 0x4f 52132718Skan#define INIT_USEC_32 0x1f 53132718Skan#define INIT_TX_LATENCY 0x36 5450397Sobrien#define INIT_RX_LATENCY 0x1D 5590075Sobrien#define INIT_TRANSMIT_LATENCY \ 5690075Sobrien ((INIT_RX_LATENCY << AR_USEC_RX_LATENCY_S) | \ 5718334Speter (INIT_TX_LATENCY << AR_USEC_TX_LATENCY_S) | \ 5890075Sobrien (INIT_USEC_32 << 7) | INIT_USEC ) 5918334Speter#define INIT_TRANSMIT_LATENCY_TURBO \ 6090075Sobrien ((INIT_RX_LATENCY << AR_USEC_RX_LATENCY_S) | \ 6190075Sobrien (INIT_TX_LATENCY << AR_USEC_TX_LATENCY_S) | \ 6290075Sobrien (INIT_USEC_32 << 7) | INIT_USEC_TURBO) 6390075Sobrien 6490075Sobrien#define INIT_SIFS 0x230 /* = 16 us - 2 us */ 6590075Sobrien#define INIT_SIFS_TURBO 0x1E0 /* More aggressive turbo SIFS timing - 8 us - 2 us */ 6690075Sobrien 6790075Sobrien/* 6890075Sobrien * Various fifo fill before Tx start, in 64-byte units 6990075Sobrien * i.e. put the frame in the air while still DMAing 7090075Sobrien */ 7190075Sobrien#define MIN_TX_FIFO_THRESHOLD 0x1 7290075Sobrien#define MAX_TX_FIFO_THRESHOLD ((IEEE80211_MAX_LEN / 64) + 1) 7390075Sobrien 7490075Sobrien#define INIT_NEXT_CFP_START 0xffffffff 7590075Sobrien 7690075Sobrien#define INIT_BEACON_PERIOD 0xffff 7790075Sobrien#define INIT_BEACON_EN 0 /* this should be set by AP only when it's ready */ 7890075Sobrien#define INIT_BEACON_CONTROL \ 7990075Sobrien ((INIT_RESET_TSF << 24) | (INIT_BEACON_EN << 23) | \ 8090075Sobrien (INIT_TIM_OFFSET<<16) | INIT_BEACON_PERIOD) 8190075Sobrien 8290075Sobrien#define INIT_RSSI_THR 0x00000700 /* Missed beacon counter initialized to max value of 7 */ 8390075Sobrien#define INIT_ProgIFS 0x398 /* PIFS - 2us */ 8490075Sobrien#define INIT_ProgIFS_TURBO 0x3C0 8518334Speter#define INIT_EIFS 0xd70 8618334Speter#define INIT_EIFS_TURBO 0x1ae0 8718334Speter#define INIT_CARR_SENSE_EN 1 8850397Sobrien#define INIT_PROTO_TIME_CNTRL ( (INIT_CARR_SENSE_EN << 26) | (INIT_EIFS << 12) | \ 8918334Speter (INIT_ProgIFS) ) 9018334Speter#define INIT_PROTO_TIME_CNTRL_TURBO ( (INIT_CARR_SENSE_EN << 26) | (INIT_EIFS_TURBO << 12) | \ 9118334Speter (INIT_ProgIFS_TURBO) ) 9218334Speter 9318334Speter/* 9418334Speter * EEPROM defines for Version 1 Crete EEPROM. 95132718Skan * 9618334Speter * The EEPROM is segmented into three sections: 9718334Speter * 9818334Speter * PCI/Cardbus default configuration settings 9918334Speter * Cardbus CIS tuples and vendor-specific data 10090075Sobrien * Atheros-specific data 10150397Sobrien * 10218334Speter * EEPROM entries are read 32-bits at a time through the PCI bus 10318334Speter * interface but are all 16-bit values. 10418334Speter * 10518334Speter * Access to the Atheros-specific data is controlled by protection 10618334Speter * bits and the data is checksum'd. The driver reads the Atheros 10750397Sobrien * data from the EEPROM at attach and caches it in its private state. 10818334Speter * This data includes the local regulatory domain, channel calibration 10918334Speter * settings, and phy-related configuration settings. 11018334Speter */ 11118334Speter#define AR_EEPROM_MAC(i) (0x1f-(i))/* MAC address word */ 11290075Sobrien#define AR_EEPROM_MAGIC 0x3d /* magic number */ 11318334Speter#define AR_EEPROM_PROTECT 0x3f /* Atheros segment protect register */ 114132718Skan#define AR_EEPROM_PROTOTECT_WP_128_191 0x80 11518334Speter#define AR_EEPROM_REG_DOMAIN 0xbf /* Current regulatory domain register */ 11690075Sobrien#define AR_EEPROM_ATHEROS_BASE 0xc0 /* Base of Atheros-specific data */ 11750397Sobrien#define AR_EEPROM_ATHEROS_MAX 64 /* 64x2=128 bytes of EEPROM settings */ 11818334Speter#define AR_EEPROM_ATHEROS(n) (AR_EEPROM_ATHEROS_BASE+(n)) 11918334Speter#define AR_EEPROM_VERSION AR_EEPROM_ATHEROS(1) 12050397Sobrien#define AR_EEPROM_ATHEROS_TP_SETTINGS 0x09 /* Transmit power settings */ 12150397Sobrien#define AR_REG_DOMAINS_MAX 4 /* # of Regulatory Domains */ 122132718Skan#define AR_CHANNELS_MAX 5 /* # of Channel calibration groups */ 123132718Skan#define AR_TP_SETTINGS_SIZE 11 /* # locations/Channel group */ 12450397Sobrien#define AR_TP_SCALING_ENTRIES 11 /* # entries in transmit power dBm->pcdac */ 12590075Sobrien 12690075Sobrien/* 12790075Sobrien * NB: we store the rfsilent select+polarity data packed 12890075Sobrien * with the encoding used in later parts so values 12990075Sobrien * returned to applications are consistent. 13090075Sobrien */ 13150397Sobrien#define AR_EEPROM_RFSILENT_GPIO_SEL 0x001c 13250397Sobrien#define AR_EEPROM_RFSILENT_GPIO_SEL_S 2 13350397Sobrien#define AR_EEPROM_RFSILENT_POLARITY 0x0002 13450397Sobrien#define AR_EEPROM_RFSILENT_POLARITY_S 1 135132718Skan 136132718Skan#define AR_I2DBM(x) ((uint8_t)((x * 2) + 3)) 13750397Sobrien 13890075Sobrien/* 13990075Sobrien * Transmit power and channel calibration settings. 14050397Sobrien */ 14118334Speterstruct tpcMap { 14218334Speter uint8_t pcdac[AR_TP_SCALING_ENTRIES]; 14318334Speter uint8_t gainF[AR_TP_SCALING_ENTRIES]; 14418334Speter uint8_t rate36; 14518334Speter uint8_t rate48; 14618334Speter uint8_t rate54; 14718334Speter uint8_t regdmn[AR_REG_DOMAINS_MAX]; 14850397Sobrien}; 149132718Skan 15018334Speter/* NB: this is in ah_eeprom.h which isn't used for 5210 support */ 15190075Sobrien#ifndef MAX_RATE_POWER 15218334Speter#define MAX_RATE_POWER 60 15318334Speter#endif 15490075Sobrien 15590075Sobrien#undef HAL_NUM_TX_QUEUES /* from ah.h */ 15690075Sobrien#define HAL_NUM_TX_QUEUES 3 15790075Sobrien 15890075Sobrienstruct ath_hal_5210 { 15990075Sobrien struct ath_hal_private ah_priv; /* base definitions */ 16090075Sobrien 16190075Sobrien /* 16290075Sobrien * Information retrieved from EEPROM 16390075Sobrien */ 16490075Sobrien uint16_t ah_eeversion; /* EEPROM Version field */ 16590075Sobrien uint16_t ah_eeprotect; /* EEPROM protection settings */ 16690075Sobrien uint16_t ah_antenna; /* Antenna Settings */ 167132718Skan uint16_t ah_biasCurrents; /* OB, DB */ 16850397Sobrien uint8_t ah_thresh62; /* thresh62 */ 16990075Sobrien uint8_t ah_xlnaOn; /* External LNA timing */ 17090075Sobrien uint8_t ah_xpaOff; /* Extern output stage timing */ 17190075Sobrien uint8_t ah_xpaOn; /* Extern output stage timing */ 17218334Speter uint8_t ah_rfKill; /* Single low bit signalling if RF Kill is implemented */ 17390075Sobrien uint8_t ah_devType; /* Type: PCI, miniPCI, CB */ 17490075Sobrien uint8_t ah_regDomain[AR_REG_DOMAINS_MAX]; 17590075Sobrien /* calibrated reg domains */ 17690075Sobrien struct tpcMap ah_tpc[AR_CHANNELS_MAX]; 17790075Sobrien uint8_t ah_macaddr[IEEE80211_ADDR_LEN]; 17890075Sobrien /* 17990075Sobrien * Runtime state. 18090075Sobrien */ 18190075Sobrien uint32_t ah_maskReg; /* shadow of IMR+IER regs */ 18290075Sobrien uint32_t ah_txOkInterruptMask; 183117395Skan uint32_t ah_txErrInterruptMask; 184117395Skan uint32_t ah_txDescInterruptMask; 18518334Speter uint32_t ah_txEolInterruptMask; 18690075Sobrien uint32_t ah_txUrnInterruptMask; 18790075Sobrien HAL_POWER_MODE ah_powerMode; 18852284Sobrien uint8_t ah_bssid[IEEE80211_ADDR_LEN]; 18990075Sobrien HAL_TX_QUEUE_INFO ah_txq[HAL_NUM_TX_QUEUES]; /* beacon+cab+data */ 19090075Sobrien /* 19152284Sobrien * Station mode support. 19290075Sobrien */ 19390075Sobrien uint32_t ah_staId1Defaults; /* STA_ID1 default settings */ 19490075Sobrien uint32_t ah_rssiThr; /* RSSI_THR settings */ 19590075Sobrien 19690075Sobrien u_int ah_sifstime; /* user-specified sifs time */ 19752284Sobrien u_int ah_slottime; /* user-specified slot time */ 19890075Sobrien u_int ah_acktimeout; /* user-specified ack timeout */ 19990075Sobrien u_int ah_ctstimeout; /* user-specified cts timeout */ 20090075Sobrien}; 20190075Sobrien#define AH5210(ah) ((struct ath_hal_5210 *)(ah)) 20290075Sobrien 20390075Sobrienstruct ath_hal; 20490075Sobrien 20590075Sobrienextern struct ath_hal *ar5210Attach(uint16_t, HAL_SOFTC, 20690075Sobrien HAL_BUS_TAG, HAL_BUS_HANDLE, HAL_STATUS *); 20790075Sobrienextern void ar5210Detach(struct ath_hal *); 20890075Sobrien 20990075Sobrienextern HAL_BOOL ar5210Reset(struct ath_hal *, HAL_OPMODE, 21090075Sobrien HAL_CHANNEL *, HAL_BOOL bChannelChange, HAL_STATUS *); 21190075Sobrienextern void ar5210SetPCUConfig(struct ath_hal *); 21290075Sobrienextern HAL_BOOL ar5210PhyDisable(struct ath_hal *); 21350397Sobrienextern HAL_BOOL ar5210Disable(struct ath_hal *); 21490075Sobrienextern HAL_BOOL ar5210ChipReset(struct ath_hal *, HAL_CHANNEL *); 21590075Sobrienextern HAL_BOOL ar5210PerCalibration(struct ath_hal *, HAL_CHANNEL *, HAL_BOOL *); 21690075Sobrienextern int16_t ar5210GetNoiseFloor(struct ath_hal *); 21790075Sobrienextern int16_t ar5210GetNfAdjust(struct ath_hal *, 21890075Sobrien const HAL_CHANNEL_INTERNAL *); 21990075Sobrienextern HAL_BOOL ar5210SetTxPowerLimit(struct ath_hal *, uint32_t limit); 22090075Sobrienextern HAL_BOOL ar5210SetTransmitPower(struct ath_hal *, HAL_CHANNEL *); 22190075Sobrienextern HAL_BOOL ar5210CalNoiseFloor(struct ath_hal *, HAL_CHANNEL_INTERNAL *); 22290075Sobrienextern HAL_BOOL ar5210ResetDma(struct ath_hal *, HAL_OPMODE); 22390075Sobrien 22490075Sobrienextern HAL_BOOL ar5210SetTxQueueProps(struct ath_hal *ah, int q, 22590075Sobrien const HAL_TXQ_INFO *qInfo); 22690075Sobrienextern HAL_BOOL ar5210GetTxQueueProps(struct ath_hal *ah, int q, 22790075Sobrien HAL_TXQ_INFO *qInfo); 22890075Sobrienextern int ar5210SetupTxQueue(struct ath_hal *ah, HAL_TX_QUEUE type, 22950397Sobrien const HAL_TXQ_INFO *qInfo); 23090075Sobrienextern HAL_BOOL ar5210ReleaseTxQueue(struct ath_hal *ah, u_int q); 23190075Sobrienextern HAL_BOOL ar5210ResetTxQueue(struct ath_hal *ah, u_int q); 23290075Sobrienextern uint32_t ar5210GetTxDP(struct ath_hal *, u_int); 23390075Sobrienextern HAL_BOOL ar5210SetTxDP(struct ath_hal *, u_int, uint32_t txdp); 234132718Skanextern HAL_BOOL ar5210UpdateTxTrigLevel(struct ath_hal *, HAL_BOOL); 23590075Sobrienextern uint32_t ar5210NumTxPending(struct ath_hal *, u_int); 23690075Sobrienextern HAL_BOOL ar5210StartTxDma(struct ath_hal *, u_int); 23718334Speterextern HAL_BOOL ar5210StopTxDma(struct ath_hal *, u_int); 23890075Sobrienextern HAL_BOOL ar5210SetupTxDesc(struct ath_hal *, struct ath_desc *, 23990075Sobrien u_int pktLen, u_int hdrLen, HAL_PKT_TYPE type, u_int txPower, 24090075Sobrien u_int txRate0, u_int txRetries0, 24190075Sobrien u_int keyIx, u_int antMode, u_int flags, 24218334Speter u_int rtsctsRate, u_int rtsctsDuration, 24390075Sobrien u_int compicvLen, u_int compivLen, u_int comp); 24418334Speterextern HAL_BOOL ar5210SetupXTxDesc(struct ath_hal *, struct ath_desc *, 24590075Sobrien u_int txRate1, u_int txRetries1, 24690075Sobrien u_int txRate2, u_int txRetries2, 24790075Sobrien u_int txRate3, u_int txRetries3); 24890075Sobrienextern HAL_BOOL ar5210FillTxDesc(struct ath_hal *, struct ath_desc *, 24990075Sobrien u_int segLen, HAL_BOOL firstSeg, HAL_BOOL lastSeg, 25090075Sobrien const struct ath_desc *ds0); 25190075Sobrienextern HAL_STATUS ar5210ProcTxDesc(struct ath_hal *, 25290075Sobrien struct ath_desc *, struct ath_tx_status *); 25390075Sobrienextern void ar5210GetTxIntrQueue(struct ath_hal *ah, uint32_t *); 25490075Sobrienextern void ar5210IntrReqTxDesc(struct ath_hal *ah, struct ath_desc *); 25590075Sobrien 25690075Sobrienextern uint32_t ar5210GetRxDP(struct ath_hal *); 25790075Sobrienextern void ar5210SetRxDP(struct ath_hal *, uint32_t rxdp); 25890075Sobrienextern void ar5210EnableReceive(struct ath_hal *); 25990075Sobrienextern HAL_BOOL ar5210StopDmaReceive(struct ath_hal *); 26090075Sobrienextern void ar5210StartPcuReceive(struct ath_hal *); 26190075Sobrienextern void ar5210StopPcuReceive(struct ath_hal *); 26290075Sobrienextern void ar5210SetMulticastFilter(struct ath_hal *, 26390075Sobrien uint32_t filter0, uint32_t filter1); 26490075Sobrienextern HAL_BOOL ar5210ClrMulticastFilterIndex(struct ath_hal *, uint32_t); 26590075Sobrienextern HAL_BOOL ar5210SetMulticastFilterIndex(struct ath_hal *, uint32_t); 26690075Sobrienextern uint32_t ar5210GetRxFilter(struct ath_hal *); 26790075Sobrienextern void ar5210SetRxFilter(struct ath_hal *, uint32_t); 26890075Sobrienextern HAL_BOOL ar5210SetupRxDesc(struct ath_hal *, struct ath_desc *, 269132718Skan uint32_t, u_int flags); 270132718Skanextern HAL_STATUS ar5210ProcRxDesc(struct ath_hal *, struct ath_desc *, 27190075Sobrien uint32_t, struct ath_desc *, uint64_t, 27290075Sobrien struct ath_rx_status *); 27390075Sobrien 27490075Sobrienextern void ar5210GetMacAddress(struct ath_hal *, uint8_t *); 27590075Sobrienextern HAL_BOOL ar5210SetMacAddress(struct ath_hal *ah, const uint8_t *); 27690075Sobrienextern void ar5210GetBssIdMask(struct ath_hal *, uint8_t *); 277117395Skanextern HAL_BOOL ar5210SetBssIdMask(struct ath_hal *, const uint8_t *); 27890075Sobrienextern HAL_BOOL ar5210EepromRead(struct ath_hal *, u_int off, uint16_t *data); 27990075Sobrienextern HAL_BOOL ar5210EepromWrite(struct ath_hal *, u_int off, uint16_t data); 28090075Sobrienextern HAL_BOOL ar5210SetRegulatoryDomain(struct ath_hal *, 28190075Sobrien uint16_t, HAL_STATUS *); 28290075Sobrienextern u_int ar5210GetWirelessModes(struct ath_hal *ah); 28390075Sobrienextern void ar5210EnableRfKill(struct ath_hal *); 28490075Sobrienextern HAL_BOOL ar5210GpioCfgInput(struct ath_hal *, uint32_t gpio); 28590075Sobrienextern HAL_BOOL ar5210GpioCfgOutput(struct ath_hal *, uint32_t gpio); 28690075Sobrienextern uint32_t ar5210GpioGet(struct ath_hal *, uint32_t gpio); 28790075Sobrienextern HAL_BOOL ar5210GpioSet(struct ath_hal *, uint32_t gpio, uint32_t); 28890075Sobrienextern void ar5210Gpio0SetIntr(struct ath_hal *, u_int, uint32_t ilevel); 28990075Sobrienextern void ar5210SetLedState(struct ath_hal *, HAL_LED_STATE); 29090075Sobrienextern u_int ar5210GetDefAntenna(struct ath_hal *); 29190075Sobrienextern void ar5210SetDefAntenna(struct ath_hal *, u_int); 29290075Sobrienextern HAL_ANT_SETTING ar5210GetAntennaSwitch(struct ath_hal *); 29390075Sobrienextern HAL_BOOL ar5210SetAntennaSwitch(struct ath_hal *, HAL_ANT_SETTING); 29490075Sobrienextern void ar5210WriteAssocid(struct ath_hal *, 29590075Sobrien const uint8_t *bssid, uint16_t assocId); 29690075Sobrienextern uint32_t ar5210GetTsf32(struct ath_hal *); 29790075Sobrienextern uint64_t ar5210GetTsf64(struct ath_hal *); 29890075Sobrienextern void ar5210ResetTsf(struct ath_hal *); 29990075Sobrienextern uint32_t ar5210GetRandomSeed(struct ath_hal *); 30090075Sobrienextern HAL_BOOL ar5210DetectCardPresent(struct ath_hal *); 30190075Sobrienextern void ar5210UpdateMibCounters(struct ath_hal *, HAL_MIB_STATS *); 30290075Sobrienextern void ar5210EnableHwEncryption(struct ath_hal *); 30390075Sobrienextern void ar5210DisableHwEncryption(struct ath_hal *); 30490075Sobrienextern HAL_RFGAIN ar5210GetRfgain(struct ath_hal *); 30590075Sobrienextern HAL_BOOL ar5210SetSifsTime(struct ath_hal *, u_int); 30690075Sobrienextern u_int ar5210GetSifsTime(struct ath_hal *); 30790075Sobrienextern HAL_BOOL ar5210SetSlotTime(struct ath_hal *, u_int); 30890075Sobrienextern u_int ar5210GetSlotTime(struct ath_hal *); 30990075Sobrienextern HAL_BOOL ar5210SetAckTimeout(struct ath_hal *, u_int); 31090075Sobrienextern u_int ar5210GetAckTimeout(struct ath_hal *); 31190075Sobrienextern HAL_BOOL ar5210SetAckCTSRate(struct ath_hal *, u_int); 31290075Sobrienextern u_int ar5210GetAckCTSRate(struct ath_hal *); 31390075Sobrienextern HAL_BOOL ar5210SetCTSTimeout(struct ath_hal *, u_int); 31490075Sobrienextern u_int ar5210GetCTSTimeout(struct ath_hal *); 31590075Sobrienextern HAL_BOOL ar5210SetDecompMask(struct ath_hal *, uint16_t, int); 31690075Sobrienvoid ar5210SetCoverageClass(struct ath_hal *, uint8_t, int); 31790075Sobrienextern HAL_STATUS ar5210GetCapability(struct ath_hal *, HAL_CAPABILITY_TYPE, 31890075Sobrien uint32_t, uint32_t *); 31990075Sobrienextern HAL_BOOL ar5210SetCapability(struct ath_hal *, HAL_CAPABILITY_TYPE, 32090075Sobrien uint32_t, uint32_t, HAL_STATUS *); 32190075Sobrienextern HAL_BOOL ar5210GetDiagState(struct ath_hal *ah, int request, 32290075Sobrien const void *args, uint32_t argsize, 32390075Sobrien void **result, uint32_t *resultsize); 32490075Sobrien 32590075Sobrienextern u_int ar5210GetKeyCacheSize(struct ath_hal *); 32690075Sobrienextern HAL_BOOL ar5210IsKeyCacheEntryValid(struct ath_hal *, uint16_t); 32790075Sobrienextern HAL_BOOL ar5210ResetKeyCacheEntry(struct ath_hal *, uint16_t entry); 32890075Sobrienextern HAL_BOOL ar5210SetKeyCacheEntry(struct ath_hal *, uint16_t entry, 32990075Sobrien const HAL_KEYVAL *, const uint8_t *mac, int xorKey); 33090075Sobrienextern HAL_BOOL ar5210SetKeyCacheEntryMac(struct ath_hal *, 33190075Sobrien uint16_t, const uint8_t *); 33290075Sobrien 33390075Sobrienextern HAL_BOOL ar5210SetPowerMode(struct ath_hal *, uint32_t powerRequest, 33490075Sobrien int setChip); 33590075Sobrienextern HAL_POWER_MODE ar5210GetPowerMode(struct ath_hal *); 33690075Sobrien 33790075Sobrienextern void ar5210SetBeaconTimers(struct ath_hal *, 33890075Sobrien const HAL_BEACON_TIMERS *); 33990075Sobrienextern void ar5210BeaconInit(struct ath_hal *, uint32_t, uint32_t); 34090075Sobrienextern void ar5210SetStaBeaconTimers(struct ath_hal *, 34190075Sobrien const HAL_BEACON_STATE *); 34290075Sobrienextern void ar5210ResetStaBeaconTimers(struct ath_hal *); 34390075Sobrien 34490075Sobrienextern HAL_BOOL ar5210IsInterruptPending(struct ath_hal *); 34590075Sobrienextern HAL_BOOL ar5210GetPendingInterrupts(struct ath_hal *, HAL_INT *); 34618334Speterextern HAL_INT ar5210GetInterrupts(struct ath_hal *); 34790075Sobrienextern HAL_INT ar5210SetInterrupts(struct ath_hal *, HAL_INT ints); 34818334Speter 34990075Sobrienextern const HAL_RATE_TABLE *ar5210GetRateTable(struct ath_hal *, u_int mode); 350132718Skan 35190075Sobrienextern HAL_BOOL ar5210AniControl(struct ath_hal *, HAL_ANI_CMD, int ); 35290075Sobrienextern void ar5210AniPoll(struct ath_hal *, const HAL_NODE_STATS *, HAL_CHANNEL *); 35390075Sobrienextern void ar5210MibEvent(struct ath_hal *, const HAL_NODE_STATS *); 354117395Skan#endif /* _ATH_AR5210_H_ */ 35590075Sobrien