1250008Sadrian/* 2250008Sadrian * Copyright (c) 2002-2009 Sam Leffler, Errno Consulting 3250008Sadrian * Copyright (c) 2002-2008 Atheros Communications, Inc. 4250008Sadrian * 5250008Sadrian * Permission to use, copy, modify, and/or distribute this software for any 6250008Sadrian * purpose with or without fee is hereby granted, provided that the above 7250008Sadrian * copyright notice and this permission notice appear in all copies. 8250008Sadrian * 9250008Sadrian * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 10250008Sadrian * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 11250008Sadrian * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 12250008Sadrian * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 13250008Sadrian * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 14250008Sadrian * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 15250008Sadrian * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 16250008Sadrian * 17250008Sadrian * $FreeBSD: head/sys/dev/ath/ath_hal/ar5212/ar5212_attach.c 235972 2012-05-25 05:01:27Z adrian $ 18250008Sadrian */ 19250008Sadrian#include "opt_ah.h" 20250008Sadrian 21250008Sadrian#include "ah.h" 22250008Sadrian#include "ah_internal.h" 23250008Sadrian#include "ah_devid.h" 24250008Sadrian 25250008Sadrian#include "ar9300/ar9300.h" 26250008Sadrian#include "ar9300/ar9300reg.h" 27250008Sadrian#include "ar9300/ar9300phy.h" 28250008Sadrian 29250008Sadrian#include "ar9300/ar9300_stub.h" 30250008Sadrian#include "ar9300/ar9300_stub_funcs.h" 31250008Sadrian 32250008Sadrianvoid 33250008Sadrianar9300_set_stub_functions(struct ath_hal *ah) 34250008Sadrian{ 35250008Sadrian 36250008Sadrian ath_hal_printf(ah, "%s: setting stub functions\n", __func__); 37250008Sadrian 38250008Sadrian ah->ah_getRateTable = ar9300_Stub_GetRateTable; 39250008Sadrian// ah->ah_detach = ar9300_Stub_detach; 40250008Sadrian 41250008Sadrian /* Reset Functions */ 42250008Sadrian ah->ah_reset = ar9300_Stub_Reset; 43250008Sadrian ah->ah_phyDisable = ar9300_Stub_PhyDisable; 44250008Sadrian ah->ah_disable = ar9300_Stub_Disable; 45250008Sadrian ah->ah_configPCIE = ar9300_Stub_ConfigPCIE; 46250008Sadrian ah->ah_disablePCIE = ar9300_Stub_DisablePCIE; 47250008Sadrian ah->ah_setPCUConfig = ar9300_Stub_SetPCUConfig; 48250008Sadrian ah->ah_perCalibration = ar9300_Stub_PerCalibration; 49250008Sadrian ah->ah_perCalibrationN = ar9300_Stub_PerCalibrationN; 50250008Sadrian ah->ah_resetCalValid = ar9300_Stub_ResetCalValid; 51250008Sadrian ah->ah_setTxPowerLimit = ar9300_Stub_SetTxPowerLimit; 52250008Sadrian ah->ah_getChanNoise = ath_hal_getChanNoise; 53250008Sadrian 54250008Sadrian /* Transmit functions */ 55250008Sadrian ah->ah_updateTxTrigLevel = ar9300_Stub_UpdateTxTrigLevel; 56250008Sadrian ah->ah_setupTxQueue = ar9300_Stub_SetupTxQueue; 57250008Sadrian ah->ah_setTxQueueProps = ar9300_Stub_SetTxQueueProps; 58250008Sadrian ah->ah_getTxQueueProps = ar9300_Stub_GetTxQueueProps; 59250008Sadrian ah->ah_releaseTxQueue = ar9300_Stub_ReleaseTxQueue; 60250008Sadrian ah->ah_resetTxQueue = ar9300_Stub_ResetTxQueue; 61250008Sadrian ah->ah_getTxDP = ar9300_Stub_GetTxDP; 62250008Sadrian ah->ah_setTxDP = ar9300_Stub_SetTxDP; 63250008Sadrian ah->ah_numTxPending = ar9300_Stub_NumTxPending; 64250008Sadrian ah->ah_startTxDma = ar9300_Stub_StartTxDma; 65250008Sadrian ah->ah_stopTxDma = ar9300_Stub_StopTxDma; 66250008Sadrian ah->ah_setupTxDesc = ar9300_Stub_SetupTxDesc; 67250008Sadrian ah->ah_setupXTxDesc = ar9300_Stub_SetupXTxDesc; 68250008Sadrian ah->ah_fillTxDesc = ar9300_Stub_FillTxDesc; 69250008Sadrian ah->ah_procTxDesc = ar9300_Stub_ProcTxDesc; 70250008Sadrian ah->ah_getTxIntrQueue = ar9300_Stub_GetTxIntrQueue; 71250008Sadrian ah->ah_reqTxIntrDesc = ar9300_Stub_IntrReqTxDesc; 72250008Sadrian ah->ah_getTxCompletionRates = ar9300_Stub_GetTxCompletionRates; 73250008Sadrian 74250008Sadrian /* RX Functions */ 75250008Sadrian ah->ah_getRxDP = ar9300_Stub_GetRxDP; 76250008Sadrian ah->ah_setRxDP = ar9300_Stub_SetRxDP; 77250008Sadrian ah->ah_enableReceive = ar9300_Stub_EnableReceive; 78250008Sadrian ah->ah_stopDmaReceive = ar9300_Stub_StopDmaReceive; 79250008Sadrian ah->ah_startPcuReceive = ar9300_Stub_StartPcuReceive; 80250008Sadrian ah->ah_stopPcuReceive = ar9300_Stub_StopPcuReceive; 81250008Sadrian ah->ah_setMulticastFilter = ar9300_Stub_SetMulticastFilter; 82250008Sadrian ah->ah_setMulticastFilterIndex = ar9300_Stub_SetMulticastFilterIndex; 83250008Sadrian ah->ah_clrMulticastFilterIndex = ar9300_Stub_ClrMulticastFilterIndex; 84250008Sadrian ah->ah_getRxFilter = ar9300_Stub_GetRxFilter; 85250008Sadrian ah->ah_setRxFilter = ar9300_Stub_SetRxFilter; 86250008Sadrian ah->ah_setupRxDesc = ar9300_Stub_SetupRxDesc; 87250008Sadrian ah->ah_procRxDesc = ar9300_Stub_ProcRxDesc; 88250008Sadrian ah->ah_rxMonitor = ar9300_Stub_RxMonitor; 89250008Sadrian ah->ah_aniPoll = ar9300_Stub_AniPoll; 90250008Sadrian ah->ah_procMibEvent = ar9300_Stub_ProcessMibIntr; 91250008Sadrian 92250008Sadrian /* Misc Functions */ 93250008Sadrian ah->ah_getCapability = ar9300_Stub_GetCapability; 94250008Sadrian ah->ah_setCapability = ar9300_Stub_SetCapability; 95250008Sadrian ah->ah_getDiagState = ar9300_Stub_GetDiagState; 96250008Sadrian ah->ah_getMacAddress = ar9300_Stub_GetMacAddress; 97250008Sadrian ah->ah_setMacAddress = ar9300_Stub_SetMacAddress; 98250008Sadrian ah->ah_getBssIdMask = ar9300_Stub_GetBssIdMask; 99250008Sadrian ah->ah_setBssIdMask = ar9300_Stub_SetBssIdMask; 100250008Sadrian ah->ah_setRegulatoryDomain = ar9300_Stub_SetRegulatoryDomain; 101250008Sadrian ah->ah_setLedState = ar9300_Stub_SetLedState; 102250008Sadrian ah->ah_writeAssocid = ar9300_Stub_WriteAssocid; 103250008Sadrian ah->ah_gpioCfgInput = ar9300_Stub_GpioCfgInput; 104250008Sadrian ah->ah_gpioCfgOutput = ar9300_Stub_GpioCfgOutput; 105250008Sadrian ah->ah_gpioGet = ar9300_Stub_GpioGet; 106250008Sadrian ah->ah_gpioSet = ar9300_Stub_GpioSet; 107250008Sadrian ah->ah_gpioSetIntr = ar9300_Stub_GpioSetIntr; 108250008Sadrian ah->ah_getTsf32 = ar9300_Stub_GetTsf32; 109250008Sadrian ah->ah_getTsf64 = ar9300_Stub_GetTsf64; 110250008Sadrian ah->ah_resetTsf = ar9300_Stub_ResetTsf; 111250008Sadrian ah->ah_detectCardPresent = ar9300_Stub_DetectCardPresent; 112250008Sadrian ah->ah_updateMibCounters = ar9300_Stub_UpdateMibCounters; 113250008Sadrian ah->ah_getRfGain = ar9300_Stub_GetRfgain; 114250008Sadrian ah->ah_getDefAntenna = ar9300_Stub_GetDefAntenna; 115250008Sadrian ah->ah_setDefAntenna = ar9300_Stub_SetDefAntenna; 116250008Sadrian ah->ah_getAntennaSwitch = ar9300_Stub_GetAntennaSwitch; 117250008Sadrian ah->ah_setAntennaSwitch = ar9300_Stub_SetAntennaSwitch; 118250008Sadrian ah->ah_setSifsTime = ar9300_Stub_SetSifsTime; 119250008Sadrian ah->ah_getSifsTime = ar9300_Stub_GetSifsTime; 120250008Sadrian ah->ah_setSlotTime = ar9300_Stub_SetSlotTime; 121250008Sadrian ah->ah_getSlotTime = ar9300_Stub_GetSlotTime; 122250008Sadrian ah->ah_setAckTimeout = ar9300_Stub_SetAckTimeout; 123250008Sadrian ah->ah_getAckTimeout = ar9300_Stub_GetAckTimeout; 124250008Sadrian ah->ah_setAckCTSRate = ar9300_Stub_SetAckCTSRate; 125250008Sadrian ah->ah_getAckCTSRate = ar9300_Stub_GetAckCTSRate; 126250008Sadrian ah->ah_setCTSTimeout = ar9300_Stub_SetCTSTimeout; 127250008Sadrian ah->ah_getCTSTimeout = ar9300_Stub_GetCTSTimeout; 128250008Sadrian ah->ah_setDecompMask = ar9300_Stub_SetDecompMask; 129250008Sadrian ah->ah_setCoverageClass = ar9300_Stub_SetCoverageClass; 130250008Sadrian ah->ah_setQuiet = ar9300_Stub_SetQuiet; 131250008Sadrian ah->ah_getMibCycleCounts = ar9300_Stub_GetMibCycleCounts; 132250008Sadrian 133250008Sadrian /* DFS Functions */ 134250008Sadrian ah->ah_enableDfs = ar9300_Stub_EnableDfs; 135250008Sadrian ah->ah_getDfsThresh = ar9300_Stub_GetDfsThresh; 136250008Sadrian ah->ah_procRadarEvent = ar9300_Stub_ProcessRadarEvent; 137250008Sadrian ah->ah_isFastClockEnabled = ar9300_Stub_IsFastClockEnabled; 138250008Sadrian ah->ah_get11nExtBusy = ar9300_Stub_Get11nExtBusy; 139250008Sadrian 140250008Sadrian /* Key Cache Functions */ 141250008Sadrian ah->ah_getKeyCacheSize = ar9300_Stub_GetKeyCacheSize; 142250008Sadrian ah->ah_resetKeyCacheEntry = ar9300_Stub_ResetKeyCacheEntry; 143250008Sadrian ah->ah_isKeyCacheEntryValid = ar9300_Stub_IsKeyCacheEntryValid; 144250008Sadrian ah->ah_setKeyCacheEntry = ar9300_Stub_SetKeyCacheEntry; 145250008Sadrian ah->ah_setKeyCacheEntryMac = ar9300_Stub_SetKeyCacheEntryMac; 146250008Sadrian 147250008Sadrian /* Power Management Functions */ 148250008Sadrian ah->ah_setPowerMode = ar9300_Stub_SetPowerMode; 149250008Sadrian ah->ah_getPowerMode = ar9300_Stub_GetPowerMode; 150250008Sadrian 151250008Sadrian /* Beacon Functions */ 152250008Sadrian ah->ah_setBeaconTimers = ar9300_Stub_SetBeaconTimers; 153250008Sadrian ah->ah_beaconInit = ar9300_Stub_BeaconInit; 154250008Sadrian ah->ah_setStationBeaconTimers = ar9300_Stub_SetStaBeaconTimers; 155250008Sadrian ah->ah_resetStationBeaconTimers = ar9300_Stub_ResetStaBeaconTimers; 156250008Sadrian ah->ah_getNextTBTT = ar9300_Stub_GetNextTBTT; 157250008Sadrian 158250008Sadrian /* Interrupt Functions */ 159250008Sadrian ah->ah_isInterruptPending = ar9300_Stub_IsInterruptPending; 160250008Sadrian ah->ah_getPendingInterrupts = ar9300_Stub_GetPendingInterrupts; 161250008Sadrian ah->ah_getInterrupts = ar9300_Stub_GetInterrupts; 162250008Sadrian ah->ah_setInterrupts = ar9300_Stub_SetInterrupts; 163250008Sadrian 164250008Sadrian AH_PRIVATE(ah)->ah_getChannelEdges = ar9300_Stub_GetChannelEdges; 165250008Sadrian AH_PRIVATE(ah)->ah_getWirelessModes = ar9300_Stub_GetWirelessModes; 166250008Sadrian AH_PRIVATE(ah)->ah_eepromRead = ar9300_Stub_EepromRead; 167250008Sadrian#ifdef AH_SUPPORT_WRITE_EEPROM 168250008Sadrian AH_PRIVATE(ah)->ah_eepromWrite = ar9300_Stub_EepromWrite; 169250008Sadrian#endif 170250008Sadrian AH_PRIVATE(ah)->ah_getChipPowerLimits = ar9300_Stub_GetChipPowerLimits; 171250008Sadrian} 172