X-Git-Url: https://jxself.org/git/?a=blobdiff_plain;f=target_firmware%2Fwlan%2Fah.c;h=ea79d12b835685b47ffe9618bda9b153d80eb81c;hb=b8948b54b051289c5a49f92b299eb369a4dccbb2;hp=837627c2a65fbe3d5903eb7aba9233d297995026;hpb=8804cc94e3b66550797279f540b960d18a78421f;p=open-ath9k-htc-firmware.git diff --git a/target_firmware/wlan/ah.c b/target_firmware/wlan/ah.c index 837627c..ea79d12 100755 --- a/target_firmware/wlan/ah.c +++ b/target_firmware/wlan/ah.c @@ -1,28 +1,60 @@ -#include "opt_ah.h" +/* + * Copyright (c) 2013 Qualcomm Atheros, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted (subject to the limitations in the + * disclaimer below) provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the + * distribution. + * + * * Neither the name of Qualcomm Atheros nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE + * GRANTED BY THIS LICENSE. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT + * HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE + * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN + * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + #include "ah.h" #include "ah_internal.h" #include extern 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* ath_hal_attach_tgt(a_uint32_t devid,HAL_SOFTC sc, - adf_os_device_t dev, HAL_BUS_HANDLE sh, + adf_os_device_t dev, a_uint32_t flags, HAL_STATUS *error) { struct ath_hal *ah = AH_NULL; devid = AR5416_DEVID_PCIE; - ah = ar5416Attach(devid, sc, dev, sh, flags, error); + ah = ar5416Attach(devid, sc, dev, flags, error); return ah; } HAL_STATUS -ath_hal_getcapability(struct ath_hal *ah, HAL_CAPABILITY_TYPE type, - a_uint32_t capability, a_uint32_t *result) - +ath_hal_getcapability(struct ath_hal *ah, HAL_CAPABILITY_TYPE type) { const HAL_CAPABILITIES *pCap = &AH_PRIVATE(ah)->ah_caps; switch (type) { @@ -32,40 +64,11 @@ ath_hal_getcapability(struct ath_hal *ah, HAL_CAPABILITY_TYPE type, return pCap->halBssIdMaskSupport ? HAL_OK : HAL_ENOTSUPP; case HAL_CAP_VEOL: return pCap->halVEOLSupport ? HAL_OK : HAL_ENOTSUPP; -#ifdef MAGPIE_MERLIN - case HAL_CAP_RX_STBC: - return HAL_ENOTSUPP; - case HAL_CAP_TX_STBC: - return HAL_ENOTSUPP; -#endif default: return HAL_EINVAL; } } -void -ath_hal_setupratetable(struct ath_hal *ah, HAL_RATE_TABLE *rt) -{ - a_int32_t i; - - if (rt->rateCodeToIndex[0] != 0) - return; - - for (i = 0; i < 32; i++) - rt->rateCodeToIndex[i] = (a_uint8_t) -1; - for (i = 0; i < rt->rateCount; i++) { - a_uint8_t code = rt->info[i].rateCode; - a_uint8_t cix = rt->info[i].controlRate; - - rt->rateCodeToIndex[code] = i; - rt->rateCodeToIndex[code | rt->info[i].shortPreamble] = i; - rt->info[i].lpAckDuration = ath_hal_computetxtime(ah, rt, - WLAN_CTRL_FRAME_SIZE, cix, AH_FALSE); - rt->info[i].spAckDuration = ath_hal_computetxtime(ah, rt, - WLAN_CTRL_FRAME_SIZE, cix, AH_TRUE); - } -} - #define CCK_SIFS_TIME 10 #define CCK_PREAMBLE_BITS 144 #define CCK_PLCP_BITS 48 @@ -108,7 +111,7 @@ ath_hal_computetxtime(struct ath_hal *ah, numBits = frameLen << 3; txTime = phyTime + ((numBits * 1000)/kbps); /* TODO: make sure the same value of txTime can use in all device */ - if (ath_hal_getcapability(ah, HAL_CAP_HT, 0, AH_NULL) != HAL_OK) + if (ath_hal_getcapability(ah, HAL_CAP_HT) != HAL_OK) txTime = txTime + CCK_SIFS_TIME; break; case IEEE80211_T_OFDM: @@ -120,7 +123,7 @@ ath_hal_computetxtime(struct ath_hal *ah, numSymbols = asf_howmany(numBits, bitsPerSymbol); txTime = OFDM_PREAMBLE_TIME + (numSymbols * OFDM_SYMBOL_TIME); /* TODO: make sure the same value of txTime can use in all device */ - if (ath_hal_getcapability(ah, HAL_CAP_HT, 0, AH_NULL) != HAL_OK) + if (ath_hal_getcapability(ah, HAL_CAP_HT) != HAL_OK) txTime = txTime + OFDM_SIFS_TIME; break; default: @@ -175,7 +178,7 @@ ath_hal_wait(struct ath_hal *ah, a_uint32_t reg, a_uint32_t mask, a_uint32_t val a_int32_t i; - if (ath_hal_getcapability(ah, HAL_CAP_HT, 0, AH_NULL) == HAL_OK) { + if (ath_hal_getcapability(ah, HAL_CAP_HT) == HAL_OK) { for (i = 0; i < AH_TIMEOUT_11N; i++) { if ((OS_REG_READ(ah, reg) & mask) == val) return AH_TRUE;