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