这篇教程C++ AH5416函数代码示例写得很实用,希望能帮到您。
本文整理汇总了C++中AH5416函数的典型用法代码示例。如果您正苦于以下问题:C++ AH5416函数的具体用法?C++ AH5416怎么用?C++ AH5416使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。 在下文中一共展示了AH5416函数的28个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。 示例1: ar2133WriteRegsstatic voidar2133WriteRegs(struct ath_hal *ah, u_int modesIndex, u_int freqIndex, int writes){ (void) ath_hal_ini_write(ah, &AH5416(ah)->ah_ini_bb_rfgain, freqIndex, writes);}
开发者ID:AmirAbrams,项目名称:haiku,代码行数:7,
示例2: ar2133ForceBias/* * Fix on 2.4 GHz band for orientation sensitivity issue by increasing * rf_pwd_icsyndiv. * * Theoretical Rules: * if 2 GHz band * if forceBiasAuto * if synth_freq < 2412 * bias = 0 * else if 2412 <= synth_freq <= 2422 * bias = 1 * else // synth_freq > 2422 * bias = 2 * else if forceBias > 0 * bias = forceBias & 7 * else * no change, use value from ini file * else * no change, invalid band * * 1st Mod: * 2422 also uses value of 2 * <approved> * * 2nd Mod: * Less than 2412 uses value of 0, 2412 and above uses value of 2 */static voidar2133ForceBias(struct ath_hal *ah, uint16_t synth_freq){ uint32_t tmp_reg; int reg_writes = 0; uint32_t new_bias = 0; struct ar2133State *priv = AR2133(ah); /* XXX this is a bit of a silly check for 2.4ghz channels -adrian */ if (synth_freq >= 3000) return; if (synth_freq < 2412) new_bias = 0; else if (synth_freq < 2422) new_bias = 1; else new_bias = 2; /* pre-reverse this field */ tmp_reg = ath_hal_reverseBits(new_bias, 3); HALDEBUG(ah, HAL_DEBUG_ANY, "%s: Force rf_pwd_icsyndiv to %1d on %4d/n", __func__, new_bias, synth_freq); /* swizzle rf_pwd_icsyndiv */ ar5416ModifyRfBuffer(priv->Bank6Data, tmp_reg, 3, 181, 3); /* write Bank 6 with new params */ ath_hal_ini_bank_write(ah, &AH5416(ah)->ah_ini_bank6, priv->Bank6Data, reg_writes);}
开发者ID:AmirAbrams,项目名称:haiku,代码行数:58,
示例3: ar5416AdcGainCalCollect/* * Collect data from HW to later perform ADC Gain Calibration */voidar5416AdcGainCalCollect(struct ath_hal *ah){ struct ar5416PerCal *cal = &AH5416(ah)->ah_cal; int i; /* * Accumulate ADC Gain cal measures for active chains */ for (i = 0; i < AR5416_MAX_CHAINS; i++) { cal->totalAdcIOddPhase(i) += OS_REG_READ(ah, AR_PHY_CAL_MEAS_0(i)); cal->totalAdcIEvenPhase(i) += OS_REG_READ(ah, AR_PHY_CAL_MEAS_1(i)); cal->totalAdcQOddPhase(i) += OS_REG_READ(ah, AR_PHY_CAL_MEAS_2(i)); cal->totalAdcQEvenPhase(i) += OS_REG_READ(ah, AR_PHY_CAL_MEAS_3(i)); HALDEBUG(ah, HAL_DEBUG_PERCAL, "%d: Chn %d oddi=0x%08x; eveni=0x%08x; oddq=0x%08x; evenq=0x%08x;/n", cal->calSamples, i, cal->totalAdcIOddPhase(i), cal->totalAdcIEvenPhase(i), cal->totalAdcQOddPhase(i), cal->totalAdcQEvenPhase(i)); }}
开发者ID:juanfra684,项目名称:DragonFlyBSD,代码行数:29,
示例4: ar5416IsCalSupp/* * ADC GAIN/DC offset calibration is for calibrating two ADCs that * are acting as one by interleaving incoming symbols. This isn't * relevant for 2.4GHz 20MHz wide modes because, as far as I can tell, * the secondary ADC is never enabled. It is enabled however for * 5GHz modes. * * It hasn't been confirmed whether doing this calibration is needed * at all in the above modes and/or whether it's actually harmful. * So for now, let's leave it enabled and just remember to get * confirmation that it needs to be clarified. * * See US Patent No: US 7,541,952 B1: * " Method and Apparatus for Offset and Gain Compensation for * Analog-to-Digital Converters." */static OS_INLINE HAL_BOOLar5416IsCalSupp(struct ath_hal *ah, const struct ieee80211_channel *chan, HAL_CAL_TYPE calType) { struct ar5416PerCal *cal = &AH5416(ah)->ah_cal; switch (calType & cal->suppCals) { case IQ_MISMATCH_CAL: /* Run IQ Mismatch for non-CCK only */ return !IEEE80211_IS_CHAN_B(chan); case ADC_GAIN_CAL: case ADC_DC_CAL: /* * Run ADC Gain Cal for either 5ghz any or 2ghz HT40. * * Don't run ADC calibrations for 5ghz fast clock mode * in HT20 - only one ADC is used. */ if (IEEE80211_IS_CHAN_HT20(chan) && (IS_5GHZ_FAST_CLOCK_EN(ah, chan))) return AH_FALSE; if (IEEE80211_IS_CHAN_5GHZ(chan)) return AH_TRUE; if (IEEE80211_IS_CHAN_HT40(chan)) return AH_TRUE; return AH_FALSE; } return AH_FALSE;}
开发者ID:skarmiglione,项目名称:haiku,代码行数:45,
示例5: ar5416AdcDcCalCollectvoidar5416AdcDcCalCollect(struct ath_hal *ah){ struct ar5416PerCal *cal = &AH5416(ah)->ah_cal; int i; for (i = 0; i < AR5416_MAX_CHAINS; i++) { cal->totalAdcDcOffsetIOddPhase(i) += (int32_t) OS_REG_READ(ah, AR_PHY_CAL_MEAS_0(i)); cal->totalAdcDcOffsetIEvenPhase(i) += (int32_t) OS_REG_READ(ah, AR_PHY_CAL_MEAS_1(i)); cal->totalAdcDcOffsetQOddPhase(i) += (int32_t) OS_REG_READ(ah, AR_PHY_CAL_MEAS_2(i)); cal->totalAdcDcOffsetQEvenPhase(i) += (int32_t) OS_REG_READ(ah, AR_PHY_CAL_MEAS_3(i)); HALDEBUG(ah, HAL_DEBUG_PERCAL, "%d: Chn %d oddi=0x%08x; eveni=0x%08x; oddq=0x%08x; evenq=0x%08x;/n", cal->calSamples, i, cal->totalAdcDcOffsetIOddPhase(i), cal->totalAdcDcOffsetIEvenPhase(i), cal->totalAdcDcOffsetQOddPhase(i), cal->totalAdcDcOffsetQEvenPhase(i)); }}
开发者ID:skarmiglione,项目名称:haiku,代码行数:25,
示例6: ar5416AniCckErrTriggerstatic voidar5416AniCckErrTrigger(struct ath_hal *ah, HAL_BOOL inISR){ struct ath_hal_5416 *ahp = AH5416(ah); HAL_CHANNEL_INTERNAL *chan = AH_PRIVATE(ah)->ah_curchan; struct ar5416AniState *aniState; WIRELESS_MODE mode; int32_t rssi; HALASSERT(chan != AH_NULL); if (!DO_ANI(ah)) { return; } /* first, raise noise immunity level, up to max */ aniState = ahp->ah_curani; //PG: For WIRELESS_MODE debug of HT chips mode = ath_hal_chan2htwmode(ah, (HAL_CHANNEL *) chan); HDPRINTF(ah, HAL_DBG_ANI, "%s: Wireless Mode #=%d, Channel=%hu, cflags=0x%x, CLOCK_RATE=%u/n", __func__, mode, chan->channel, chan->channelFlags, CLOCK_RATE(ah)); if (aniState->noiseImmunityLevel < HAL_NOISE_IMMUNE_MAX) { if (ar5416AniControl(ah, HAL_ANI_NOISE_IMMUNITY_LEVEL, aniState->noiseImmunityLevel + 1, inISR) == AH_TRUE) {return;} } /* In the case of AP mode operation, we cannot bucketize beacons * according to RSSI. Instead, raise Firstep level, up to max, and * simply return */ if (AH_PRIVATE(ah)->ah_opmode == HAL_M_HOSTAP) { if (aniState->firstepLevel < HAL_FIRST_STEP_MAX) { ar5416AniControl(ah, HAL_ANI_FIRSTEP_LEVEL, aniState->firstepLevel + 1, inISR); } return; } rssi = BEACON_RSSI(ahp); if (rssi > aniState->rssiThrLow) { /* * Beacon signal in mid and high range, raise firsteplevel. */ if (aniState->firstepLevel < HAL_FIRST_STEP_MAX) ar5416AniControl(ah, HAL_ANI_FIRSTEP_LEVEL, aniState->firstepLevel + 1, inISR); } else { /* * Beacon rssi is low, zero firstepLevel to maximize * CCK sensitivity. */ mode = ath_hal_chan2wmode(ah, (HAL_CHANNEL *) chan); if (mode == WIRELESS_MODE_11g || mode == WIRELESS_MODE_11b) { if (aniState->firstepLevel > 0) ar5416AniControl(ah, HAL_ANI_FIRSTEP_LEVEL, 0, inISR); } }}
开发者ID:jorneytu,项目名称:wlan,代码行数:59,
示例7: ath9k_hw_write_regsvoidath9k_hw_write_regs(struct ath_hal *ah, u32 modesIndex, u32 freqIndex, int regWrites){ struct ath_hal_5416 *ahp = AH5416(ah); REG_WRITE_ARRAY(&ahp->ah_iniBB_RfGain, freqIndex, regWrites);}
开发者ID:458941968,项目名称:mini2440-kernel-2.6.29,代码行数:8,
示例8: ar5416FlashWriteHAL_BOOLar5416FlashWrite(struct ath_hal *ah, u_int off, u_int16_t data){ struct ath_hal_5416 *ahp = AH5416(ah); ((u_int16_t *)ahp->ah_cal_mem)[off] = data; return AH_TRUE;}
开发者ID:KHATEEBNSIT,项目名称:AP,代码行数:8,
示例9: ar5416FlashReadHAL_BOOLar5416FlashRead(struct ath_hal *ah, u_int off, u_int16_t *data){ struct ath_hal_5416 *ahp = AH5416(ah); *data = ((u_int16_t *)ahp->ah_cal_mem)[off]; return AH_TRUE;}
开发者ID:KHATEEBNSIT,项目名称:AP,代码行数:8,
示例10: ath9k_hw_adc_dccal_calibratestatic void ath9k_hw_adc_dccal_calibrate(struct ath_hal *ah, u8 numChains){ struct ath_hal_5416 *ahp = AH5416(ah); u32 iOddMeasOffset, iEvenMeasOffset, val, i; int32_t qOddMeasOffset, qEvenMeasOffset, qDcMismatch, iDcMismatch; const struct hal_percal_data *calData = ahp->ah_cal_list_curr->calData; u32 numSamples = (1 << (calData->calCountMax + 5)) * calData->calNumSamples; for (i = 0; i < numChains; i++) { iOddMeasOffset = ahp->ah_totalAdcDcOffsetIOddPhase[i]; iEvenMeasOffset = ahp->ah_totalAdcDcOffsetIEvenPhase[i]; qOddMeasOffset = ahp->ah_totalAdcDcOffsetQOddPhase[i]; qEvenMeasOffset = ahp->ah_totalAdcDcOffsetQEvenPhase[i]; DPRINTF(ah->ah_sc, ATH_DBG_CALIBRATE, "Starting ADC DC Offset Cal for Chain %d/n", i); DPRINTF(ah->ah_sc, ATH_DBG_CALIBRATE, "Chn %d pwr_meas_odd_i = %d/n", i, iOddMeasOffset); DPRINTF(ah->ah_sc, ATH_DBG_CALIBRATE, "Chn %d pwr_meas_even_i = %d/n", i, iEvenMeasOffset); DPRINTF(ah->ah_sc, ATH_DBG_CALIBRATE, "Chn %d pwr_meas_odd_q = %d/n", i, qOddMeasOffset); DPRINTF(ah->ah_sc, ATH_DBG_CALIBRATE, "Chn %d pwr_meas_even_q = %d/n", i, qEvenMeasOffset); iDcMismatch = (((iEvenMeasOffset - iOddMeasOffset) * 2) / numSamples) & 0x1ff; qDcMismatch = (((qOddMeasOffset - qEvenMeasOffset) * 2) / numSamples) & 0x1ff; DPRINTF(ah->ah_sc, ATH_DBG_CALIBRATE, "Chn %d dc_offset_mismatch_i = 0x%08x/n", i, iDcMismatch); DPRINTF(ah->ah_sc, ATH_DBG_CALIBRATE, "Chn %d dc_offset_mismatch_q = 0x%08x/n", i, qDcMismatch); val = REG_READ(ah, AR_PHY_NEW_ADC_DC_GAIN_CORR(i)); val &= 0xc0000fff; val |= (qDcMismatch << 12) | (iDcMismatch << 21); REG_WRITE(ah, AR_PHY_NEW_ADC_DC_GAIN_CORR(i), val); DPRINTF(ah->ah_sc, ATH_DBG_CALIBRATE, "ADC DC Offset Cal done for Chain %d/n", i); } REG_WRITE(ah, AR_PHY_NEW_ADC_DC_GAIN_CORR(0), REG_READ(ah, AR_PHY_NEW_ADC_DC_GAIN_CORR(0)) | AR_PHY_NEW_ADC_DC_OFFSET_CORR_ENABLE);}
开发者ID:johnny,项目名称:CobraDroidBeta,代码行数:57,
示例11: ath9k_hw_adc_gaincal_calibratestatic void ath9k_hw_adc_gaincal_calibrate(struct ath_hal *ah, u8 numChains){ struct ath_hal_5416 *ahp = AH5416(ah); u32 iOddMeasOffset, iEvenMeasOffset, qOddMeasOffset, qEvenMeasOffset; u32 qGainMismatch, iGainMismatch, val, i; for (i = 0; i < numChains; i++) { iOddMeasOffset = ahp->ah_totalAdcIOddPhase[i]; iEvenMeasOffset = ahp->ah_totalAdcIEvenPhase[i]; qOddMeasOffset = ahp->ah_totalAdcQOddPhase[i]; qEvenMeasOffset = ahp->ah_totalAdcQEvenPhase[i]; DPRINTF(ah->ah_sc, ATH_DBG_CALIBRATE, "Starting ADC Gain Cal for Chain %d/n", i); DPRINTF(ah->ah_sc, ATH_DBG_CALIBRATE, "Chn %d pwr_meas_odd_i = 0x%08x/n", i, iOddMeasOffset); DPRINTF(ah->ah_sc, ATH_DBG_CALIBRATE, "Chn %d pwr_meas_even_i = 0x%08x/n", i, iEvenMeasOffset); DPRINTF(ah->ah_sc, ATH_DBG_CALIBRATE, "Chn %d pwr_meas_odd_q = 0x%08x/n", i, qOddMeasOffset); DPRINTF(ah->ah_sc, ATH_DBG_CALIBRATE, "Chn %d pwr_meas_even_q = 0x%08x/n", i, qEvenMeasOffset); if (iOddMeasOffset != 0 && qEvenMeasOffset != 0) { iGainMismatch = ((iEvenMeasOffset * 32) / iOddMeasOffset) & 0x3f; qGainMismatch = ((qOddMeasOffset * 32) / qEvenMeasOffset) & 0x3f; DPRINTF(ah->ah_sc, ATH_DBG_CALIBRATE, "Chn %d gain_mismatch_i = 0x%08x/n", i, iGainMismatch); DPRINTF(ah->ah_sc, ATH_DBG_CALIBRATE, "Chn %d gain_mismatch_q = 0x%08x/n", i, qGainMismatch); val = REG_READ(ah, AR_PHY_NEW_ADC_DC_GAIN_CORR(i)); val &= 0xfffff000; val |= (qGainMismatch) | (iGainMismatch << 6); REG_WRITE(ah, AR_PHY_NEW_ADC_DC_GAIN_CORR(i), val); DPRINTF(ah->ah_sc, ATH_DBG_CALIBRATE, "ADC Gain Cal done for Chain %d/n", i); } } REG_WRITE(ah, AR_PHY_NEW_ADC_DC_GAIN_CORR(0), REG_READ(ah, AR_PHY_NEW_ADC_DC_GAIN_CORR(0)) | AR_PHY_NEW_ADC_GAIN_CORR_ENABLE);}
开发者ID:johnny,项目名称:CobraDroidBeta,代码行数:57,
示例12: ar2133GetNoiseFloorstatic void ar2133GetNoiseFloor(struct ath_hal *ah, int16_t nfarray[]){ struct ath_hal_5416 *ahp = AH5416(ah); int16_t nf; switch (ahp->ah_rx_chainmask) { case 0x7: nf = MS(OS_REG_READ(ah, AR_PHY_CH2_CCA), AR_PHY_CH2_MINCCA_PWR); if (nf & 0x100) nf = 0 - ((nf ^ 0x1ff) + 1); HALDEBUG(ah, HAL_DEBUG_NFCAL, "NF calibrated [ctl] [chain 2] is %d/n", nf); nfarray[4] = nf; nf = MS(OS_REG_READ(ah, AR_PHY_CH2_EXT_CCA), AR_PHY_CH2_EXT_MINCCA_PWR); if (nf & 0x100) nf = 0 - ((nf ^ 0x1ff) + 1); HALDEBUG(ah, HAL_DEBUG_NFCAL, "NF calibrated [ext] [chain 2] is %d/n", nf); nfarray[5] = nf; /* fall thru... */ case 0x3: case 0x5: nf = MS(OS_REG_READ(ah, AR_PHY_CH1_CCA), AR_PHY_CH1_MINCCA_PWR); if (nf & 0x100) nf = 0 - ((nf ^ 0x1ff) + 1); HALDEBUG(ah, HAL_DEBUG_NFCAL, "NF calibrated [ctl] [chain 1] is %d/n", nf); nfarray[2] = nf; nf = MS(OS_REG_READ(ah, AR_PHY_CH1_EXT_CCA), AR_PHY_CH1_EXT_MINCCA_PWR); if (nf & 0x100) nf = 0 - ((nf ^ 0x1ff) + 1); HALDEBUG(ah, HAL_DEBUG_NFCAL, "NF calibrated [ext] [chain 1] is %d/n", nf); nfarray[3] = nf; /* fall thru... */ case 0x1: nf = MS(OS_REG_READ(ah, AR_PHY_CCA), AR_PHY_MINCCA_PWR); if (nf & 0x100) nf = 0 - ((nf ^ 0x1ff) + 1); HALDEBUG(ah, HAL_DEBUG_NFCAL, "NF calibrated [ctl] [chain 0] is %d/n", nf); nfarray[0] = nf; nf = MS(OS_REG_READ(ah, AR_PHY_EXT_CCA), AR_PHY_EXT_MINCCA_PWR); if (nf & 0x100) nf = 0 - ((nf ^ 0x1ff) + 1); HALDEBUG(ah, HAL_DEBUG_NFCAL, "NF calibrated [ext] [chain 0] is %d/n", nf); nfarray[1] = nf; break; }}
开发者ID:AhmadTux,项目名称:DragonFlyBSD,代码行数:57,
示例13: ar5416ResetKeyCacheEntry/* * Clear the specified key cache entry and any associated MIC entry. */HAL_BOOLar5416ResetKeyCacheEntry(struct ath_hal *ah, u_int16_t entry){ u_int32_t keyType; struct ath_hal_5416 *ahp = AH5416(ah); if (entry >= AH_PRIVATE(ah)->ah_caps.halKeyCacheSize) { HDPRINTF(ah, HAL_DBG_KEYCACHE, "%s: entry %u out of range/n", __func__, entry); return AH_FALSE; } keyType = OS_REG_READ(ah, AR_KEYTABLE_TYPE(entry)); ENABLE_REG_WRITE_BUFFER /* XXX why not clear key type/valid bit first? */ OS_REG_WRITE(ah, AR_KEYTABLE_KEY0(entry), 0); OS_REG_WRITE(ah, AR_KEYTABLE_KEY1(entry), 0); OS_REG_WRITE(ah, AR_KEYTABLE_KEY2(entry), 0); OS_REG_WRITE(ah, AR_KEYTABLE_KEY3(entry), 0); OS_REG_WRITE(ah, AR_KEYTABLE_KEY4(entry), 0); OS_REG_WRITE(ah, AR_KEYTABLE_TYPE(entry), AR_KEYTABLE_TYPE_CLR); OS_REG_WRITE(ah, AR_KEYTABLE_MAC0(entry), 0); OS_REG_WRITE(ah, AR_KEYTABLE_MAC1(entry), 0); if (keyType == AR_KEYTABLE_TYPE_TKIP && IS_MIC_ENABLED(ah)) { u_int16_t micentry = entry+64; /* MIC goes at slot+64 */ HALASSERT(micentry < AH_PRIVATE(ah)->ah_caps.halKeyCacheSize); OS_REG_WRITE(ah, AR_KEYTABLE_KEY0(micentry), 0); OS_REG_WRITE(ah, AR_KEYTABLE_KEY1(micentry), 0); OS_REG_WRITE(ah, AR_KEYTABLE_KEY2(micentry), 0); OS_REG_WRITE(ah, AR_KEYTABLE_KEY3(micentry), 0); /* NB: key type and MAC are known to be ok */ } OS_REG_WRITE_FLUSH(ah); DISABLE_REG_WRITE_BUFFER if (AH_PRIVATE(ah)->ah_curchan == AH_NULL) return AH_TRUE; if (ar5416GetCapability(ah, HAL_CAP_BB_RIFS_HANG, 0, AH_NULL) == HAL_OK) { if (keyType == AR_KEYTABLE_TYPE_TKIP || keyType == AR_KEYTABLE_TYPE_40 || keyType == AR_KEYTABLE_TYPE_104 || keyType == AR_KEYTABLE_TYPE_128) { /* SW WAR for Bug 31602 */ if (--ahp->ah_rifs_sec_cnt == 0) { HDPRINTF(ah, HAL_DBG_KEYCACHE, "%s: Count = %d, enabling RIFS/n", __func__, ahp->ah_rifs_sec_cnt); ar5416SetRifsDelay(ah, AH_TRUE); } } } return AH_TRUE;}
开发者ID:KHATEEBNSIT,项目名称:AP,代码行数:59,
示例14: ath9k_hw_init_calbool ath9k_hw_init_cal(struct ath_hal *ah, struct ath9k_channel *chan){ struct ath_hal_5416 *ahp = AH5416(ah); struct ath9k_channel *ichan = ath9k_regd_check_channel(ah, chan); REG_WRITE(ah, AR_PHY_AGC_CONTROL, REG_READ(ah, AR_PHY_AGC_CONTROL) | AR_PHY_AGC_CONTROL_CAL); if (!ath9k_hw_wait(ah, AR_PHY_AGC_CONTROL, AR_PHY_AGC_CONTROL_CAL, 0)) { DPRINTF(ah->ah_sc, ATH_DBG_CALIBRATE, "offset calibration failed to complete in 1ms; " "noisy environment?/n"); return false; } if (AR_SREV_9285(ah) && AR_SREV_9285_11_OR_LATER(ah)) ath9k_hw_9285_pa_cal(ah); REG_WRITE(ah, AR_PHY_AGC_CONTROL, REG_READ(ah, AR_PHY_AGC_CONTROL) | AR_PHY_AGC_CONTROL_NF); ahp->ah_cal_list = ahp->ah_cal_list_last = ahp->ah_cal_list_curr = NULL; if (AR_SREV_9100(ah) || AR_SREV_9160_10_OR_LATER(ah)) { if (ath9k_hw_iscal_supported(ah, chan, ADC_GAIN_CAL)) { INIT_CAL(&ahp->ah_adcGainCalData); INSERT_CAL(ahp, &ahp->ah_adcGainCalData); DPRINTF(ah->ah_sc, ATH_DBG_CALIBRATE, "enabling ADC Gain Calibration./n"); } if (ath9k_hw_iscal_supported(ah, chan, ADC_DC_CAL)) { INIT_CAL(&ahp->ah_adcDcCalData); INSERT_CAL(ahp, &ahp->ah_adcDcCalData); DPRINTF(ah->ah_sc, ATH_DBG_CALIBRATE, "enabling ADC DC Calibration./n"); } if (ath9k_hw_iscal_supported(ah, chan, IQ_MISMATCH_CAL)) { INIT_CAL(&ahp->ah_iqCalData); INSERT_CAL(ahp, &ahp->ah_iqCalData); DPRINTF(ah->ah_sc, ATH_DBG_CALIBRATE, "enabling IQ Calibration./n"); } ahp->ah_cal_list_curr = ahp->ah_cal_list; if (ahp->ah_cal_list_curr) ath9k_hw_reset_calibration(ah, ahp->ah_cal_list_curr); } ichan->CalValid = 0; return true;}
开发者ID:johnny,项目名称:CobraDroidBeta,代码行数:56,
示例15: ar7010RegisterGpio/* * Configure GPIO Pins to AR7010 (Magpie) */void ar7010RegisterGpio(struct ath_hal *ah){ struct ath_hal_5416 *ahp = AH5416(ah); ahp->ah_priv.priv.h.ah_gpio_cfg_input = ar7010GpioCfgInput; ahp->ah_priv.priv.h.ah_gpio_cfg_output = ar7010GpioCfgOutput; ahp->ah_priv.priv.h.ah_gpio_get = ar7010GpioGet; ahp->ah_priv.priv.h.ah_gpio_set = ar7010GpioSet; ahp->ah_priv.priv.h.ah_gpio_set_intr = ar7010GpioSetIntr;}
开发者ID:KHATEEBNSIT,项目名称:AP,代码行数:13,
示例16: ar9280olcTemperatureCompensation/* * Run temperature compensation calibration. * * The TX gain table is adjusted depending upon the difference * between the initial PDADC value and the currently read * average TX power sample value. This value is only valid if * frames have been transmitted, so currPDADC will be 0 if * no frames have yet been transmitted. */voidar9280olcTemperatureCompensation(struct ath_hal *ah){ uint32_t rddata, i; int delta, currPDADC, regval; uint8_t hpwr_5g = 0; if (! ath_hal_eepromGetFlag(ah, AR_EEP_OL_PWRCTRL)) return; rddata = OS_REG_READ(ah, AR_PHY_TX_PWRCTRL4); currPDADC = MS(rddata, AR_PHY_TX_PWRCTRL_PD_AVG_OUT); HALDEBUG(ah, HAL_DEBUG_PERCAL, "%s: called: initPDADC=%d, currPDADC=%d/n", __func__, AH5416(ah)->initPDADC, currPDADC); if (AH5416(ah)->initPDADC == 0 || currPDADC == 0) return; (void) (ath_hal_eepromGet(ah, AR_EEP_DAC_HPWR_5G, &hpwr_5g)); if (hpwr_5g) delta = (currPDADC - AH5416(ah)->initPDADC + 4) / 8; else delta = (currPDADC - AH5416(ah)->initPDADC + 5) / 10; HALDEBUG(ah, HAL_DEBUG_PERCAL, "%s: delta=%d, PDADCdelta=%d/n", __func__, delta, AH9280(ah)->PDADCdelta); if (delta != AH9280(ah)->PDADCdelta) { AH9280(ah)->PDADCdelta = delta; for (i = 1; i < AR9280_TX_GAIN_TABLE_SIZE; i++) { regval = AH9280(ah)->originalGain[i] - delta; if (regval < 0) regval = 0; OS_REG_RMW_FIELD(ah, AR_PHY_TX_GAIN_TBL1 + i * 4, AR_PHY_TX_GAIN, regval); } }}
开发者ID:hmatyschok,项目名称:MeshBSD,代码行数:52,
示例17: ar5416PerCalibration/* * Recalibrate the lower PHY chips to account for temperature/environment * changes. */HAL_BOOLar5416PerCalibration(struct ath_hal *ah, struct ieee80211_channel *chan, HAL_BOOL *isIQdone){ struct ath_hal_5416 *ahp = AH5416(ah); struct ar5416PerCal *cal = &AH5416(ah)->ah_cal; HAL_CAL_LIST *curCal = cal->cal_curr; if (curCal != AH_NULL && curCal->calData->calType == IQ_MISMATCH_CAL) { return ar5416PerCalibrationN(ah, chan, ahp->ah_rx_chainmask, AH_TRUE, isIQdone); } else { HAL_BOOL isCalDone; *isIQdone = AH_FALSE; return ar5416PerCalibrationN(ah, chan, ahp->ah_rx_chainmask, AH_TRUE, &isCalDone); }}
开发者ID:FreeBSDFoundation,项目名称:freebsd,代码行数:23,
示例18: ar9285ConfigPCIEstatic voidar9285ConfigPCIE(struct ath_hal *ah, HAL_BOOL restore){ if (AH_PRIVATE(ah)->ah_ispcie && !restore) { ath_hal_ini_write(ah, &AH5416(ah)->ah_ini_pcieserdes, 1, 0); OS_DELAY(1000); OS_REG_SET_BIT(ah, AR_PCIE_PM_CTRL, AR_PCIE_PM_CTRL_ENA); OS_REG_WRITE(ah, AR_WA, AR9285_WA_DEFAULT); }}
开发者ID:AhmadTux,项目名称:DragonFlyBSD,代码行数:10,
示例19: ar5416FillEepromstatic inline HAL_BOOLar5416FillEeprom(struct ath_hal *ah){ struct ath_hal_5416 *ahp = AH5416(ah); if (ahp->ah_eep_map == EEP_MAP_AR9287) return ar9287FillEeprom(ah); else if (ahp->ah_eep_map == EEP_MAP_4KBITS) return ar5416FillEeprom4k(ah); else return ar5416FillEepromDef(ah);}
开发者ID:KHATEEBNSIT,项目名称:AP,代码行数:11,
示例20: ar5416EepromSetBoardValues/* * Read EEPROM header info and program the device for correct operation * given the channel value. */HAL_BOOLar5416EepromSetBoardValues(struct ath_hal *ah, HAL_CHANNEL_INTERNAL *chan){ struct ath_hal_5416 *ahp = AH5416(ah); if (ahp->ah_eep_map == EEP_MAP_AR9287) return ar9287EepromSetBoardValues(ah, chan); else if (ahp->ah_eep_map == EEP_MAP_4KBITS) return ar5416Eeprom4kSetBoardValues(ah, chan); else return ar5416EepromDefSetBoardValues(ah, chan);}
开发者ID:KHATEEBNSIT,项目名称:AP,代码行数:15,
示例21: ar5416INIFixupu_int32_tar5416INIFixup(struct ath_hal *ah,ar5416_eeprom_t *pEepData, u_int32_t reg, u_int32_t value){ struct ath_hal_5416 *ahp = AH5416(ah); if (ahp->ah_eep_map == EEP_MAP_AR9287) return ar9287EepromINIFixup(ah, &pEepData->map.mapAr9287, reg, value); else if (ahp->ah_eep_map == EEP_MAP_4KBITS) return ar5416Eeprom4kINIFixup(ah, &pEepData->map.map4k, reg, value); else return ar5416EepromDefINIFixup(ah, &pEepData->map.def, reg, value);}
开发者ID:KHATEEBNSIT,项目名称:AP,代码行数:11,
示例22: ar5416ResetKeyCacheEntry/* * Clear the specified key cache entry and any associated MIC entry. */HAL_BOOLar5416ResetKeyCacheEntry(struct ath_hal *ah, uint16_t entry){ struct ath_hal_5416 *ahp = AH5416(ah); if (ar5212ResetKeyCacheEntry(ah, entry)) { ahp->ah_keytype[entry] = keyType[HAL_CIPHER_CLR]; return AH_TRUE; } else return AH_FALSE;}
开发者ID:skarmiglione,项目名称:haiku,代码行数:14,
示例23: ar5416EepromSetAddac/************************************************************** * ar5416EepromSetAddac * * Set the ADDAC from eeprom for Sowl. */voidar5416EepromSetAddac(struct ath_hal *ah, HAL_CHANNEL_INTERNAL *chan){ struct ath_hal_5416 *ahp = AH5416(ah); if (ahp->ah_eep_map == EEP_MAP_AR9287) ar9287EepromSetAddac(ah, chan); else if (ahp->ah_eep_map == EEP_MAP_4KBITS) ar5416Eeprom4kSetAddac(ah, chan); else ar5416EepromDefSetAddac(ah, chan);}
开发者ID:KHATEEBNSIT,项目名称:AP,代码行数:16,
示例24: ar5416EepromSetParam/************************************************************** * ar5416EepromSetParam */HAL_BOOLar5416EepromSetParam(struct ath_hal *ah, EEPROM_PARAM param, u_int32_t value){ struct ath_hal_5416 *ahp = AH5416(ah); if (ahp->ah_eep_map == EEP_MAP_AR9287) return ar9287EepromSetParam(ah, param, value); else if (ahp->ah_eep_map == EEP_MAP_4KBITS) return ar5416Eeprom4kSetParam(ah, param, value); else return ar5416EepromDefSetParam(ah, param, value);}
开发者ID:KHATEEBNSIT,项目名称:AP,代码行数:14,
示例25: ar5416RunInitCals/* * Run non-periodic calibrations. */static HAL_BOOLar5416RunInitCals(struct ath_hal *ah, int init_cal_count){ struct ath_hal_5416 *ahp = AH5416(ah); struct ar5416PerCal *cal = &AH5416(ah)->ah_cal; HAL_CHANNEL_INTERNAL ichan; /* XXX bogus */ HAL_CAL_LIST *curCal = ahp->ah_cal_curr; HAL_BOOL isCalDone; int i; if (curCal == AH_NULL) return AH_FALSE; ichan.calValid = 0; for (i = 0; i < init_cal_count; i++) { /* Reset this Cal */ ar5416ResetMeasurement(ah, curCal); /* Poll for offset calibration complete */ if (!ath_hal_wait(ah, AR_PHY_TIMING_CTRL4, AR_PHY_TIMING_CTRL4_DO_CAL, 0)) { HALDEBUG(ah, HAL_DEBUG_ANY, "%s: Cal %d failed to finish in 100ms./n", __func__, curCal->calData->calType); /* Re-initialize list pointers for periodic cals */ cal->cal_list = cal->cal_last = cal->cal_curr = AH_NULL; return AH_FALSE; } /* Run this cal */ ar5416DoCalibration(ah, &ichan, ahp->ah_rxchainmask, curCal, &isCalDone); if (!isCalDone) HALDEBUG(ah, HAL_DEBUG_ANY, "%s: init cal %d did not complete./n", __func__, curCal->calData->calType); if (curCal->calNext != AH_NULL) curCal = curCal->calNext; } /* Re-initialize list pointers for periodic cals */ cal->cal_list = cal->cal_last = cal->cal_curr = AH_NULL; return AH_TRUE;}
开发者ID:FreeBSDFoundation,项目名称:freebsd,代码行数:44,
示例26: ar5416AniDetach/* * Cleanup any ANI state setup. */voidar5416AniDetach(struct ath_hal *ah){ struct ath_hal_5416 *ahp = AH5416(ah); HDPRINTF(ah, HAL_DBG_ANI, "Detaching Ani/n"); if (ahp->ah_hasHwPhyCounters) { ar5416DisableMIBCounters(ah); OS_REG_WRITE(ah, AR_PHY_ERR_1, 0); OS_REG_WRITE(ah, AR_PHY_ERR_2, 0); }}
开发者ID:jorneytu,项目名称:wlan,代码行数:15,
示例27: ar5416GetNf/* * Read the NF and check it against the noise floor threshold * * Return 0 if the NF calibration hadn't finished, 0 if it was * invalid, or > 0 for a valid NF reading. */static int16_tar5416GetNf(struct ath_hal *ah, struct ieee80211_channel *chan){ int16_t nf, nfThresh; int i; int retval = 0; if (ar5212IsNFCalInProgress(ah)) { HALDEBUG(ah, HAL_DEBUG_ANY, "%s: NF didn't complete in calibration window/n", __func__); nf = 0; retval = -1; /* NF didn't finish */ } else { /* Finished NF cal, check against threshold */ int16_t nfarray[NUM_NOISEFLOOR_READINGS] = { 0 }; HAL_CHANNEL_INTERNAL *ichan = ath_hal_checkchannel(ah, chan); /* TODO - enhance for multiple chains and ext ch */ ath_hal_getNoiseFloor(ah, nfarray); nf = nfarray[0]; ar5416SanitizeNF(ah, nfarray); if (ar5416GetEepromNoiseFloorThresh(ah, chan, &nfThresh)) { if (nf > nfThresh) { HALDEBUG(ah, HAL_DEBUG_UNMASKABLE, "%s: noise floor failed detected; " "detected %d, threshold %d/n", __func__, nf, nfThresh); /* * NB: Don't discriminate 2.4 vs 5Ghz, if this * happens it indicates a problem regardless * of the band. */ chan->ic_state |= IEEE80211_CHANSTATE_CWINT; nf = 0; retval = 0; } } else { nf = 0; retval = 0; } /* Update MIMO channel statistics, regardless of validity or not (for now) */ for (i = 0; i < 3; i++) { ichan->noiseFloorCtl[i] = nfarray[i]; ichan->noiseFloorExt[i] = nfarray[i + 3]; } ichan->privFlags |= CHANNEL_MIMO_NF_VALID; ar5416UpdateNFHistBuff(ah, AH5416(ah)->ah_cal.nfCalHist, nfarray); ichan->rawNoiseFloor = nf; retval = nf; } return retval;}
开发者ID:FreeBSDFoundation,项目名称:freebsd,代码行数:59,
示例28: ar5416DoCalibration/* * Recalibrate the lower PHY chips to account for temperature/environment * changes. */static voidar5416DoCalibration(struct ath_hal *ah, HAL_CHANNEL_INTERNAL *ichan, uint8_t rxchainmask, HAL_CAL_LIST *currCal, HAL_BOOL *isCalDone){ struct ar5416PerCal *cal = &AH5416(ah)->ah_cal; /* Cal is assumed not done until explicitly set below */ *isCalDone = AH_FALSE; HALDEBUG(ah, HAL_DEBUG_PERCAL, "%s: %s Calibration, state %d, calValid 0x%x/n", __func__, currCal->calData->calName, currCal->calState, ichan->calValid); /* Calibration in progress. */ if (currCal->calState == CAL_RUNNING) { /* Check to see if it has finished. */ if (!(OS_REG_READ(ah, AR_PHY_TIMING_CTRL4) & AR_PHY_TIMING_CTRL4_DO_CAL)) { HALDEBUG(ah, HAL_DEBUG_PERCAL, "%s: sample %d of %d finished/n", __func__, cal->calSamples, currCal->calData->calNumSamples); /* * Collect measurements for active chains. */ currCal->calData->calCollect(ah); if (++cal->calSamples >= currCal->calData->calNumSamples) { int i, numChains = 0; for (i = 0; i < AR5416_MAX_CHAINS; i++) { if (rxchainmask & (1 << i)) numChains++; } /* * Process accumulated data */ currCal->calData->calPostProc(ah, numChains); /* Calibration has finished. */ ichan->calValid |= currCal->calData->calType; currCal->calState = CAL_DONE; *isCalDone = AH_TRUE; } else { /* * Set-up to collect of another sub-sample. */ ar5416SetupMeasurement(ah, currCal); } } } else if (!(ichan->calValid & currCal->calData->calType)) { /* If current cal is marked invalid in channel, kick it off */ ar5416ResetMeasurement(ah, currCal); }}
开发者ID:FreeBSDFoundation,项目名称:freebsd,代码行数:57,
注:本文中的AH5416函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 C++ AH_PRIVATE函数代码示例 C++ AH5212函数代码示例 |