139223Sgibbs/* 239223Sgibbs * Copyright (c) 2002-2009 Sam Leffler, Errno Consulting 339223Sgibbs * Copyright (c) 2002-2008 Atheros Communications, Inc. 439223Sgibbs * 544579Sgibbs * Permission to use, copy, modify, and/or distribute this software for any 639223Sgibbs * purpose with or without fee is hereby granted, provided that the above 739223Sgibbs * copyright notice and this permission notice appear in all copies. 839223Sgibbs * 939223Sgibbs * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 1039223Sgibbs * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 1139223Sgibbs * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 1239223Sgibbs * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 1339223Sgibbs * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 1439223Sgibbs * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 1539223Sgibbs * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 1639223Sgibbs * 1739223Sgibbs * $FreeBSD: head/sys/dev/ath/ath_hal/ar5212/ar5212_attach.c 235972 2012-05-25 05:01:27Z adrian $ 1839223Sgibbs */ 1939223Sgibbs#include "opt_ah.h" 2039223Sgibbs 2139223Sgibbs#include "ah.h" 2239223Sgibbs#include "ah_internal.h" 2339223Sgibbs#include "ah_devid.h" 2439223Sgibbs 2539223Sgibbs#include "ar9300/ar9300.h" 2639223Sgibbs#include "ar9300/ar9300reg.h" 2739223Sgibbs#include "ar9300/ar9300phy.h" 2839223Sgibbs 2939223Sgibbs#include "ar9300/ar9300_stub.h" 3039223Sgibbs#include "ar9300/ar9300_stub_funcs.h" 31119418Sobrien 32119418Sobrienvoid 33119418Sobrienar9300_set_stub_functions(struct ath_hal *ah) 3439223Sgibbs{ 3539223Sgibbs 3645791Speter ath_hal_printf(ah, "%s: setting stub functions\n", __func__); 3745791Speter 38117126Sscottl ah->ah_getRateTable = ar9300_Stub_GetRateTable; 39117126Sscottl// ah->ah_detach = ar9300_Stub_detach; 4045791Speter 4139223Sgibbs /* Reset Functions */ 4239223Sgibbs ah->ah_reset = ar9300_Stub_Reset; 4339223Sgibbs ah->ah_phyDisable = ar9300_Stub_PhyDisable; 4445791Speter ah->ah_disable = ar9300_Stub_Disable; 4545791Speter ah->ah_configPCIE = ar9300_Stub_ConfigPCIE; 4639223Sgibbs ah->ah_disablePCIE = ar9300_Stub_DisablePCIE; 4745791Speter ah->ah_setPCUConfig = ar9300_Stub_SetPCUConfig; 4839223Sgibbs ah->ah_perCalibration = ar9300_Stub_PerCalibration; 4939223Sgibbs ah->ah_perCalibrationN = ar9300_Stub_PerCalibrationN; 5039223Sgibbs ah->ah_resetCalValid = ar9300_Stub_ResetCalValid; 5139223Sgibbs ah->ah_setTxPowerLimit = ar9300_Stub_SetTxPowerLimit; 5239223Sgibbs ah->ah_getChanNoise = ath_hal_getChanNoise; 5339223Sgibbs 5439223Sgibbs /* Transmit functions */ 5545791Speter ah->ah_updateTxTrigLevel = ar9300_Stub_UpdateTxTrigLevel; 5647399Sdfr ah->ah_setupTxQueue = ar9300_Stub_SetupTxQueue; 5739223Sgibbs ah->ah_setTxQueueProps = ar9300_Stub_SetTxQueueProps; 5845791Speter ah->ah_getTxQueueProps = ar9300_Stub_GetTxQueueProps; 5945791Speter ah->ah_releaseTxQueue = ar9300_Stub_ReleaseTxQueue; 6045791Speter ah->ah_resetTxQueue = ar9300_Stub_ResetTxQueue; 6145791Speter ah->ah_getTxDP = ar9300_Stub_GetTxDP; 6239223Sgibbs ah->ah_setTxDP = ar9300_Stub_SetTxDP; 6345791Speter ah->ah_numTxPending = ar9300_Stub_NumTxPending; 6445791Speter ah->ah_startTxDma = ar9300_Stub_StartTxDma; 6547399Sdfr ah->ah_stopTxDma = ar9300_Stub_StopTxDma; 6645791Speter ah->ah_setupTxDesc = ar9300_Stub_SetupTxDesc; 6745791Speter ah->ah_setupXTxDesc = ar9300_Stub_SetupXTxDesc; 6845791Speter ah->ah_fillTxDesc = ar9300_Stub_FillTxDesc; 6945791Speter ah->ah_procTxDesc = ar9300_Stub_ProcTxDesc; 7045791Speter ah->ah_getTxIntrQueue = ar9300_Stub_GetTxIntrQueue; 7145791Speter ah->ah_reqTxIntrDesc = ar9300_Stub_IntrReqTxDesc; 7245791Speter ah->ah_getTxCompletionRates = ar9300_Stub_GetTxCompletionRates; 7345791Speter 7445791Speter /* RX Functions */ 7545791Speter ah->ah_getRxDP = ar9300_Stub_GetRxDP; 7645791Speter ah->ah_setRxDP = ar9300_Stub_SetRxDP; 7745791Speter ah->ah_enableReceive = ar9300_Stub_EnableReceive; 7845791Speter ah->ah_stopDmaReceive = ar9300_Stub_StopDmaReceive; 7945791Speter ah->ah_startPcuReceive = ar9300_Stub_StartPcuReceive; 8045791Speter ah->ah_stopPcuReceive = ar9300_Stub_StopPcuReceive; 8145791Speter ah->ah_setMulticastFilter = ar9300_Stub_SetMulticastFilter; 8245791Speter ah->ah_setMulticastFilterIndex = ar9300_Stub_SetMulticastFilterIndex; 8345791Speter ah->ah_clrMulticastFilterIndex = ar9300_Stub_ClrMulticastFilterIndex; 8445791Speter ah->ah_getRxFilter = ar9300_Stub_GetRxFilter; 8545791Speter ah->ah_setRxFilter = ar9300_Stub_SetRxFilter; 8645791Speter ah->ah_setupRxDesc = ar9300_Stub_SetupRxDesc; 8745791Speter ah->ah_procRxDesc = ar9300_Stub_ProcRxDesc; 8845791Speter ah->ah_rxMonitor = ar9300_Stub_RxMonitor; 8945791Speter ah->ah_aniPoll = ar9300_Stub_AniPoll; 9045791Speter ah->ah_procMibEvent = ar9300_Stub_ProcessMibIntr; 9145791Speter 9245791Speter /* Misc Functions */ 9345791Speter ah->ah_getCapability = ar9300_Stub_GetCapability; 9445791Speter ah->ah_setCapability = ar9300_Stub_SetCapability; 9545791Speter ah->ah_getDiagState = ar9300_Stub_GetDiagState; 9645791Speter ah->ah_getMacAddress = ar9300_Stub_GetMacAddress; 9745791Speter ah->ah_setMacAddress = ar9300_Stub_SetMacAddress; 9845791Speter ah->ah_getBssIdMask = ar9300_Stub_GetBssIdMask; 9945791Speter ah->ah_setBssIdMask = ar9300_Stub_SetBssIdMask; 10045791Speter ah->ah_setRegulatoryDomain = ar9300_Stub_SetRegulatoryDomain; 10145791Speter ah->ah_setLedState = ar9300_Stub_SetLedState; 10245791Speter ah->ah_writeAssocid = ar9300_Stub_WriteAssocid; 10345791Speter ah->ah_gpioCfgInput = ar9300_Stub_GpioCfgInput; 10445791Speter ah->ah_gpioCfgOutput = ar9300_Stub_GpioCfgOutput; 10545791Speter ah->ah_gpioGet = ar9300_Stub_GpioGet; 10645791Speter ah->ah_gpioSet = ar9300_Stub_GpioSet; 10745791Speter ah->ah_gpioSetIntr = ar9300_Stub_GpioSetIntr; 10845791Speter ah->ah_getTsf32 = ar9300_Stub_GetTsf32; 10945791Speter ah->ah_getTsf64 = ar9300_Stub_GetTsf64; 11045791Speter ah->ah_resetTsf = ar9300_Stub_ResetTsf; 11145796Speter ah->ah_detectCardPresent = ar9300_Stub_DetectCardPresent; 11245791Speter ah->ah_updateMibCounters = ar9300_Stub_UpdateMibCounters; 11345796Speter ah->ah_getRfGain = ar9300_Stub_GetRfgain; 11445791Speter ah->ah_getDefAntenna = ar9300_Stub_GetDefAntenna; 11545791Speter ah->ah_setDefAntenna = ar9300_Stub_SetDefAntenna; 11645791Speter ah->ah_getAntennaSwitch = ar9300_Stub_GetAntennaSwitch; 11739223Sgibbs ah->ah_setAntennaSwitch = ar9300_Stub_SetAntennaSwitch; 11839223Sgibbs ah->ah_setSifsTime = ar9300_Stub_SetSifsTime; 11939223Sgibbs ah->ah_getSifsTime = ar9300_Stub_GetSifsTime; 12039223Sgibbs ah->ah_setSlotTime = ar9300_Stub_SetSlotTime; 12139223Sgibbs ah->ah_getSlotTime = ar9300_Stub_GetSlotTime; 12239223Sgibbs ah->ah_setAckTimeout = ar9300_Stub_SetAckTimeout; 12339223Sgibbs ah->ah_getAckTimeout = ar9300_Stub_GetAckTimeout; 12445791Speter ah->ah_setAckCTSRate = ar9300_Stub_SetAckCTSRate; 12539223Sgibbs ah->ah_getAckCTSRate = ar9300_Stub_GetAckCTSRate; 12639223Sgibbs ah->ah_setCTSTimeout = ar9300_Stub_SetCTSTimeout; 12739223Sgibbs ah->ah_getCTSTimeout = ar9300_Stub_GetCTSTimeout; 12839223Sgibbs ah->ah_setDecompMask = ar9300_Stub_SetDecompMask; 12939223Sgibbs ah->ah_setCoverageClass = ar9300_Stub_SetCoverageClass; 13039223Sgibbs ah->ah_setQuiet = ar9300_Stub_SetQuiet; 13139223Sgibbs ah->ah_getMibCycleCounts = ar9300_Stub_GetMibCycleCounts; 13247617Sdfr 13347617Sdfr /* DFS Functions */ 13447617Sdfr ah->ah_enableDfs = ar9300_Stub_EnableDfs; 13547617Sdfr ah->ah_getDfsThresh = ar9300_Stub_GetDfsThresh; 13639223Sgibbs ah->ah_procRadarEvent = ar9300_Stub_ProcessRadarEvent; 13739223Sgibbs ah->ah_isFastClockEnabled = ar9300_Stub_IsFastClockEnabled; 13839223Sgibbs ah->ah_get11nExtBusy = ar9300_Stub_Get11nExtBusy; 13939223Sgibbs 14039223Sgibbs /* Key Cache Functions */ 14139223Sgibbs ah->ah_getKeyCacheSize = ar9300_Stub_GetKeyCacheSize; 14245791Speter ah->ah_resetKeyCacheEntry = ar9300_Stub_ResetKeyCacheEntry; 14339223Sgibbs ah->ah_isKeyCacheEntryValid = ar9300_Stub_IsKeyCacheEntryValid; 14441048Sgibbs ah->ah_setKeyCacheEntry = ar9300_Stub_SetKeyCacheEntry; 14545791Speter ah->ah_setKeyCacheEntryMac = ar9300_Stub_SetKeyCacheEntryMac; 14641048Sgibbs 14739223Sgibbs /* Power Management Functions */ 14839223Sgibbs ah->ah_setPowerMode = ar9300_Stub_SetPowerMode; 14944579Sgibbs ah->ah_getPowerMode = ar9300_Stub_GetPowerMode; 15039223Sgibbs 15139223Sgibbs /* Beacon Functions */ 15241048Sgibbs ah->ah_setBeaconTimers = ar9300_Stub_SetBeaconTimers; 15339223Sgibbs ah->ah_beaconInit = ar9300_Stub_BeaconInit; 15439223Sgibbs ah->ah_setStationBeaconTimers = ar9300_Stub_SetStaBeaconTimers; 15539223Sgibbs ah->ah_resetStationBeaconTimers = ar9300_Stub_ResetStaBeaconTimers; 15640265Simp ah->ah_getNextTBTT = ar9300_Stub_GetNextTBTT; 15739223Sgibbs 15839223Sgibbs /* Interrupt Functions */ 15939223Sgibbs ah->ah_isInterruptPending = ar9300_Stub_IsInterruptPending; 16045791Speter ah->ah_getPendingInterrupts = ar9300_Stub_GetPendingInterrupts; 16145791Speter ah->ah_getInterrupts = ar9300_Stub_GetInterrupts; 16247399Sdfr ah->ah_setInterrupts = ar9300_Stub_SetInterrupts; 16347399Sdfr 16440160Simp AH_PRIVATE(ah)->ah_getChannelEdges = ar9300_Stub_GetChannelEdges; 16540160Simp AH_PRIVATE(ah)->ah_getWirelessModes = ar9300_Stub_GetWirelessModes; 16639223Sgibbs AH_PRIVATE(ah)->ah_eepromRead = ar9300_Stub_EepromRead; 16739223Sgibbs#ifdef AH_SUPPORT_WRITE_EEPROM 16839223Sgibbs AH_PRIVATE(ah)->ah_eepromWrite = ar9300_Stub_EepromWrite; 16945791Speter#endif 17047717Speter AH_PRIVATE(ah)->ah_getChipPowerLimits = ar9300_Stub_GetChipPowerLimits; 17147717Speter} 17247717Speter