X-Git-Url: https://jxself.org/git/?a=blobdiff_plain;f=target_firmware%2Fwlan%2Far5416_hw.c;h=ec35f3a06a5726fa2b82128c4a9d3f4c7434bb9a;hb=1aefec12b482808d4d88102e8fe0e0d3545b73c6;hp=0912f8aa48d090a8822954eb5388ecba08e3eca1;hpb=76480581269f9314affa035d201f1af3ba7977d0;p=open-ath9k-htc-firmware.git diff --git a/target_firmware/wlan/ar5416_hw.c b/target_firmware/wlan/ar5416_hw.c index 0912f8a..ec35f3a 100644 --- a/target_firmware/wlan/ar5416_hw.c +++ b/target_firmware/wlan/ar5416_hw.c @@ -33,12 +33,10 @@ * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#include "opt_ah.h" #include "ah.h" #include "ah_internal.h" #include "ar5416.h" #include "ar5416reg.h" -#include "ar5416phy.h" #include "ar5416desc.h" #define N(a) (sizeof(a)/sizeof(a[0])) @@ -59,34 +57,26 @@ static const struct ath_hal_private ar5416hal_10 = {{ /* Transmit functions */ .ah_updateTxTrigLevel = ar5416UpdateTxTrigLevel, - .ah_getTxDP = ar5416GetTxDP, .ah_setTxDP = ar5416SetTxDP, .ah_numTxPending = ar5416NumTxPending, .ah_startTxDma = ar5416StartTxDma, .ah_stopTxDma = ar5416StopTxDma, - - .ah_getTxIntrQueue = ar5416GetTxIntrQueue, + .ah_abortTxDma = ar5416AbortTxDma, /* Misc Functions */ - .ah_getCapability = ar5416GetCapability, - .ah_getTsf32 = ar5416GetTsf32, .ah_getTsf64 = ar5416GetTsf64, - .ah_resetTsf = ar5416ResetTsf, .ah_setRxFilter = ar5416SetRxFilter, /* RX Functions */ - .ah_getRxDP = ar5416GetRxDP, .ah_setRxDP = ar5416SetRxDP, .ah_stopDmaReceive = ar5416StopDmaReceive, .ah_enableReceive = ar5416EnableReceive, - .ah_startPcuReceive = ar5416StartPcuReceive, .ah_stopPcuReceive = ar5416StopPcuReceive, /* Interrupt Functions */ .ah_isInterruptPending = ar5416IsInterruptPending, .ah_getPendingInterrupts = ar5416GetPendingInterrupts, - .ah_getInterrupts = ar5416GetInterrupts, .ah_setInterrupts = ar5416SetInterrupts, }, }; @@ -99,7 +89,7 @@ void ar5416Detach(struct ath_hal *ah) struct ath_hal * ar5416Attach(a_uint32_t devid,HAL_SOFTC sc, adf_os_device_t dev, - HAL_BUS_HANDLE sh, a_uint32_t flags, HAL_STATUS *status) + a_uint32_t flags, HAL_STATUS *status) { struct ath_hal_5416 *ahp; struct ath_hal *ah; @@ -115,7 +105,6 @@ ar5416Attach(a_uint32_t devid,HAL_SOFTC sc, adf_os_device_t dev, ah->ah_dev = dev; ah->ah_sc = sc; - ah->ah_sh = sh; /* If its a Owl 2.0 chip then change the hal structure to point to the Owl 2.0 ar5416_hal_20 structure */ @@ -129,7 +118,6 @@ ar5416Attach(a_uint32_t devid,HAL_SOFTC sc, adf_os_device_t dev, ah->ah_set11nBurstDuration = ar5416Set11nBurstDuration_20; ah->ah_setupRxDesc = ar5416SetupRxDesc_20; ah->ah_procRxDescFast = ar5416ProcRxDescFast_20; - ah->ah_updateCTSForBursting = NULL; ah->ah_setupTxDesc = ar5416SetupTxDesc_20; ah->ah_reqTxIntrDesc = ar5416IntrReqTxDesc_20; ah->ah_fillTxDesc = ar5416FillTxDesc_20; @@ -232,11 +220,6 @@ HAL_BOOL ar5416GetPendingInterrupts(struct ath_hal *ah, HAL_INT *masked) return AH_TRUE; } -HAL_INT ar5416GetInterrupts(struct ath_hal *ah) -{ - return AH5416(ah)->ah_maskReg; -} - HAL_INT ar5416SetInterrupts(struct ath_hal *ah, HAL_INT ints) { @@ -291,41 +274,6 @@ ar5416SetInterrupts(struct ath_hal *ah, HAL_INT ints) return omask; } -/****************/ -/* Capabilities */ -/****************/ - -HAL_STATUS ar5416GetCapability(struct ath_hal *ah, HAL_CAPABILITY_TYPE type, - a_uint32_t capability, a_uint32_t *result) - -{ - HAL_CAPABILITIES *pCap = &AH_PRIVATE(ah)->ah_caps; -#ifndef MAGPIE_MERLIN // K2 - pCap->halRxStbcSupport = 1; /* K2 supports STBC Rx only */ - pCap->halTxStbcSupport = 0; -#else - pCap->halRxStbcSupport = 1; /* number of streams for STBC recieve. */ - pCap->halTxStbcSupport = 1; -#endif - - switch (type) { -#ifdef MAGPIE_MERLIN - case HAL_CAP_RX_STBC: - { - *result = pCap->halRxStbcSupport; - return HAL_OK; - } - case HAL_CAP_TX_STBC: - { - *result = pCap->halTxStbcSupport; - return HAL_OK; - } -#endif - default: - return ath_hal_getcapability(ah, type, capability, result); - } -} - /****************/ /* TSF Handling */ /****************/ @@ -340,37 +288,9 @@ u_int64_t ar5416GetTsf64(struct ath_hal *ah) return tsf; } -a_uint32_t ar5416GetTsf32(struct ath_hal *ah) -{ - return OS_REG_READ(ah, AR_TSF_L32); -} - -void ar5416ResetTsf(struct ath_hal *ah) -{ - a_int32_t count; - - count = 0; - - while (OS_REG_READ(ah, AR_SLP32_MODE) & AR_SLP32_TSF_WRITE_STATUS) { - count++; - if (count > 10) { - break; - } - OS_DELAY(10); - } - OS_REG_WRITE(ah, AR_RESET_TSF, AR_RESET_TSF_ONCE); -} - /******/ /* RX */ /******/ - -a_uint32_t ar5416GetRxDP(struct ath_hal *ath) -{ - return OS_REG_READ(ath, AR_RXDP); -} - - void ar5416SetRxDP(struct ath_hal *ah, a_uint32_t rxdp) { OS_REG_WRITE(ah, AR_RXDP, rxdp); @@ -425,12 +345,6 @@ HAL_BOOL ar5416SetMulticastFilterIndex(struct ath_hal *ah, a_uint32_t ix) return AH_TRUE; } -void ar5416StartPcuReceive(struct ath_hal *ah) -{ - OS_REG_CLR_BIT(ah, AR_DIAG_SW, - (AR_DIAG_RX_DIS | AR_DIAG_RX_ABORT)); -} - void ar5416SetRxFilter(struct ath_hal *ah, a_uint32_t bits) { a_uint32_t phybits; @@ -459,7 +373,7 @@ void ar5416StopPcuReceive(struct ath_hal *ah) OS_REG_SET_BIT(ah, AR_DIAG_SW, AR_DIAG_RX_DIS); } -HAL_BOOL ar5416SetupRxDesc_20(struct ath_hal *ah, struct ath_desc *ds, +HAL_BOOL ar5416SetupRxDesc_20(struct ath_hal *ah, struct ath_rx_desc *ds, a_uint32_t size, a_uint32_t flags) { struct ar5416_desc *ads = AR5416DESC(ds); @@ -476,7 +390,7 @@ HAL_BOOL ar5416SetupRxDesc_20(struct ath_hal *ah, struct ath_desc *ds, return AH_TRUE; } -HAL_STATUS ar5416ProcRxDescFast_20(struct ath_hal *ah, struct ath_desc *ds, +HAL_STATUS ar5416ProcRxDescFast_20(struct ath_hal *ah, struct ath_rx_desc *ds, a_uint32_t pa, struct ath_desc *nds, struct ath_rx_status *rx_stats) { @@ -606,12 +520,6 @@ HAL_BOOL ar5416UpdateTxTrigLevel(struct ath_hal *ah, HAL_BOOL bIncTrigLevel) return (newLevel != curLevel); } -a_uint32_t ar5416GetTxDP(struct ath_hal *ah, a_uint32_t q) -{ - HALASSERT(q < AH_PRIVATE(ah)->ah_caps.halTotalQueues); - return OS_REG_READ(ah, AR_QTXDP(q)); -} - HAL_BOOL ar5416SetTxDP(struct ath_hal *ah, a_uint32_t q, a_uint32_t txdp) { HALASSERT(q < AH_PRIVATE(ah)->ah_caps.halTotalQueues); @@ -735,20 +643,13 @@ HAL_BOOL ar5416StopTxDma(struct ath_hal*ah, a_uint32_t q) return (i != 0); } -void ar5416GetTxIntrQueue(struct ath_hal *ah, a_uint32_t *txqs) -{ - struct ath_hal_5416 *ahp = AH5416(ah); - *txqs &= ahp->ah_intrTxqs; - ahp->ah_intrTxqs &= ~(*txqs); -} - void ar5416IntrReqTxDesc_20(struct ath_hal *ah, struct ath_desc *ds) { struct ar5416_desc *ads = AR5416DESC(ds); ads->ds_ctl0 |= AR_TxIntrReq; } -HAL_BOOL ar5416SetupTxDesc_20(struct ath_hal *ah, struct ath_desc *ds, +HAL_BOOL ar5416SetupTxDesc_20(struct ath_hal *ah, struct ath_tx_desc *ds, a_uint32_t pktLen, a_uint32_t hdrLen, HAL_PKT_TYPE type, @@ -816,9 +717,9 @@ HAL_BOOL ar5416SetupTxDesc_20(struct ath_hal *ah, struct ath_desc *ds, #undef RTSCTS } -HAL_BOOL ar5416FillTxDesc_20(struct ath_hal *ah, struct ath_desc *ds, +HAL_BOOL ar5416FillTxDesc_20(struct ath_hal *ah, struct ath_tx_desc *ds, a_uint32_t segLen, HAL_BOOL firstSeg, HAL_BOOL lastSeg, - const struct ath_desc *ds0) + const struct ath_tx_desc *ds0) { struct ar5416_desc *ads = AR5416DESC(ds); @@ -854,7 +755,7 @@ HAL_BOOL ar5416FillTxDesc_20(struct ath_hal *ah, struct ath_desc *ds, return AH_TRUE; } -HAL_BOOL ar5416FillKeyTxDesc_20(struct ath_hal *ah, struct ath_desc *ds, +HAL_BOOL ar5416FillKeyTxDesc_20(struct ath_hal *ah, struct ath_tx_desc *ds, HAL_KEY_TYPE keyType) { struct ar5416_desc *ads = AR5416DESC(ds); @@ -863,7 +764,7 @@ HAL_BOOL ar5416FillKeyTxDesc_20(struct ath_hal *ah, struct ath_desc *ds, return AH_TRUE; } -HAL_STATUS ar5416ProcTxDesc_20(struct ath_hal *ah, struct ath_desc *gds) +HAL_STATUS ar5416ProcTxDesc_20(struct ath_hal *ah, struct ath_tx_desc *gds) { struct ar5416_desc *ads = AR5416DESC(gds); struct ath_tx_desc *ds = (struct ath_tx_desc *)gds; @@ -930,7 +831,7 @@ HAL_STATUS ar5416ProcTxDesc_20(struct ath_hal *ah, struct ath_desc *gds) return HAL_OK; } -void ar5416Set11nTxDesc_20(struct ath_hal *ah, struct ath_desc *ds, +void ar5416Set11nTxDesc_20(struct ath_hal *ah, struct ath_tx_desc *ds, a_uint32_t pktLen, HAL_PKT_TYPE type, a_uint32_t txPower, a_uint32_t keyIx, HAL_KEY_TYPE keyType, a_uint32_t flags) @@ -964,18 +865,14 @@ void ar5416Set11nTxDesc_20(struct ath_hal *ah, struct ath_desc *ds, #ifdef MAGPIE_MERLIN -void ar5416Set11nRateScenario_20(struct ath_hal *ah, struct ath_desc *ds, +void ar5416Set11nRateScenario_20(struct ath_hal *ah, struct ath_tx_desc *ds, a_uint32_t durUpdateEn, a_uint32_t rtsctsRate, a_uint32_t rtsctsDuration, HAL_11N_RATE_SERIES series[], a_uint32_t nseries, a_uint32_t flags) { struct ar5416_desc *ads = AR5416DESC(ds); - struct ar5416_desc_20 *ads_20 = AR5416DESC_20(ds); a_uint32_t ds_ctl0; - a_int16_t txpower; - a_uint32_t count; - struct ath_hal_private *ahpriv = AH_PRIVATE(ah); HALASSERT(nseries == 4); (void)nseries; @@ -1025,7 +922,7 @@ void ar5416Set11nRateScenario_20(struct ath_hal *ah, struct ath_desc *ds, #else -void ar5416Set11nRateScenario_20(struct ath_hal *ah, struct ath_desc *ds, +void ar5416Set11nRateScenario_20(struct ath_hal *ah, struct ath_tx_desc *ds, a_uint32_t durUpdateEn, a_uint32_t rtsctsRate, a_uint32_t rtsctsDuration, HAL_11N_RATE_SERIES series[], a_uint32_t nseries, @@ -1080,7 +977,7 @@ void ar5416Set11nRateScenario_20(struct ath_hal *ah, struct ath_desc *ds, #endif -void ar5416Set11nAggrFirst_20(struct ath_hal *ah, struct ath_desc *ds, a_uint32_t aggrLen, +void ar5416Set11nAggrFirst_20(struct ath_hal *ah, struct ath_tx_desc *ds, a_uint32_t aggrLen, a_uint32_t numDelims) { struct ar5416_desc *ads = AR5416DESC(ds); @@ -1092,7 +989,7 @@ void ar5416Set11nAggrFirst_20(struct ath_hal *ah, struct ath_desc *ds, a_uint32_ SM(numDelims, AR_PadDelim); } -void ar5416Set11nAggrMiddle_20(struct ath_hal *ah, struct ath_desc *ds, a_uint32_t numDelims) +void ar5416Set11nAggrMiddle_20(struct ath_hal *ah, struct ath_tx_desc *ds, a_uint32_t numDelims) { struct ar5416_desc *ads = AR5416DESC(ds); a_uint32_t ctl6; @@ -1109,7 +1006,7 @@ void ar5416Set11nAggrMiddle_20(struct ath_hal *ah, struct ath_desc *ds, a_uint32 ads->ds_ctl6 = ctl6; } -void ar5416Set11nAggrLast_20(struct ath_hal *ah, struct ath_desc *ds) +void ar5416Set11nAggrLast_20(struct ath_hal *ah, struct ath_tx_desc *ds) { struct ar5416_desc *ads = AR5416DESC(ds); @@ -1118,14 +1015,14 @@ void ar5416Set11nAggrLast_20(struct ath_hal *ah, struct ath_desc *ds) ads->ds_ctl6 &= ~AR_PadDelim; } -void ar5416Clr11nAggr_20(struct ath_hal *ah, struct ath_desc *ds) +void ar5416Clr11nAggr_20(struct ath_hal *ah, struct ath_tx_desc *ds) { struct ar5416_desc *ads = AR5416DESC(ds); ads->ds_ctl1 &= (~AR_IsAggr & ~AR_MoreAggr); } -void ar5416Set11nBurstDuration_20(struct ath_hal *ah, struct ath_desc *ds, +void ar5416Set11nBurstDuration_20(struct ath_hal *ah, struct ath_tx_desc *ds, a_uint32_t burstDuration) { struct ar5416_desc *ads = AR5416DESC(ds); @@ -1134,7 +1031,7 @@ void ar5416Set11nBurstDuration_20(struct ath_hal *ah, struct ath_desc *ds, ads->ds_ctl2 |= SM(burstDuration, AR_BurstDur); } -void ar5416Set11nVirtualMoreFrag_20(struct ath_hal *ah, struct ath_desc *ds, +void ar5416Set11nVirtualMoreFrag_20(struct ath_hal *ah, struct ath_tx_desc *ds, a_uint32_t vmf) { struct ar5416_desc *ads = AR5416DESC(ds);