Lines Matching +full:tx +full:- +full:d +full:- +full:cal
2 * Copyright (c) 2008-2011 Atheros Communications Inc.
18 #include "hw-ops.h"
27 return *(int16_t *)y - *(int16_t *)x; in rcmp_i16()
37 return nfcal[(ATH9K_NF_CAL_HIST_MAX - 1) >> 1]; in ath9k_hw_get_nf_hist_mid()
46 limit = &ah->nf_2g; in ath9k_hw_get_nf_limits()
48 limit = &ah->nf_5g; in ath9k_hw_get_nf_limits()
57 s16 calib_nf = ath9k_hw_get_nf_limits(ah, chan)->cal[chain]; in ath9k_hw_get_default_nf()
62 return ath9k_hw_get_nf_limits(ah, chan)->nominal; in ath9k_hw_get_default_nf()
71 s8 delta = nf - ATH9K_NF_CAL_NOISE_THRESH - in ath9k_hw_getchan_noise()
81 struct ath9k_hw_cal_data *cal, in ath9k_hw_update_nfcal_hist_buffer() argument
88 u8 chainmask = (ah->rxchainmask << 3) | ah->rxchainmask; in ath9k_hw_update_nfcal_hist_buffer()
91 h = cal->nfCalHist; in ath9k_hw_update_nfcal_hist_buffer()
92 limit = ath9k_hw_get_nf_limits(ah, ah->curchan); in ath9k_hw_update_nfcal_hist_buffer()
96 ((i >= AR5416_MAX_CHAINS) && !IS_CHAN_HT40(ah->curchan))) in ath9k_hw_update_nfcal_hist_buffer()
105 h[i].invalidNFcount--; in ath9k_hw_update_nfcal_hist_buffer()
115 if (h[i].privNF > limit->max) { in ath9k_hw_update_nfcal_hist_buffer()
119 "NFmid[%d] (%d) > MAX (%d), %s\n", in ath9k_hw_update_nfcal_hist_buffer()
120 i, h[i].privNF, limit->max, in ath9k_hw_update_nfcal_hist_buffer()
121 (test_bit(NFCAL_INTF, &cal->cal_flags) ? in ath9k_hw_update_nfcal_hist_buffer()
132 if (!test_bit(NFCAL_INTF, &cal->cal_flags)) in ath9k_hw_update_nfcal_hist_buffer()
133 h[i].privNF = limit->max; in ath9k_hw_update_nfcal_hist_buffer()
140 * Re-enable the enforcement of the NF maximum again. in ath9k_hw_update_nfcal_hist_buffer()
143 clear_bit(NFCAL_INTF, &cal->cal_flags); in ath9k_hw_update_nfcal_hist_buffer()
152 *nft = (int8_t)ah->eep_ops->get_eeprom(ah, EEP_NFTHRESH_5); in ath9k_hw_get_nf_thresh()
155 *nft = (int8_t)ah->eep_ops->get_eeprom(ah, EEP_NFTHRESH_2); in ath9k_hw_get_nf_thresh()
172 ah->cal_start_time = jiffies; in ath9k_hw_reset_calibration()
173 currCal->calState = CAL_RUNNING; in ath9k_hw_reset_calibration()
176 ah->meas0.sign[i] = 0; in ath9k_hw_reset_calibration()
177 ah->meas1.sign[i] = 0; in ath9k_hw_reset_calibration()
178 ah->meas2.sign[i] = 0; in ath9k_hw_reset_calibration()
179 ah->meas3.sign[i] = 0; in ath9k_hw_reset_calibration()
182 ah->cal_samples = 0; in ath9k_hw_reset_calibration()
189 struct ath9k_cal_list *currCal = ah->cal_list_curr; in ath9k_hw_reset_calvalid()
191 if (!ah->caldata) in ath9k_hw_reset_calvalid()
200 if (currCal->calState != CAL_DONE) { in ath9k_hw_reset_calvalid()
201 ath_dbg(common, CALIBRATE, "Calibration state incorrect, %d\n", in ath9k_hw_reset_calvalid()
202 currCal->calState); in ath9k_hw_reset_calvalid()
206 currCal = ah->cal_list; in ath9k_hw_reset_calvalid()
208 ath_dbg(common, CALIBRATE, "Resetting Cal %d state for channel %u\n", in ath9k_hw_reset_calvalid()
209 currCal->calData->calType, in ath9k_hw_reset_calvalid()
210 ah->curchan->chan->center_freq); in ath9k_hw_reset_calvalid()
212 ah->caldata->CalValid &= ~currCal->calData->calType; in ath9k_hw_reset_calvalid()
213 currCal->calState = CAL_WAITING; in ath9k_hw_reset_calvalid()
215 currCal = currCal->calNext; in ath9k_hw_reset_calvalid()
216 } while (currCal != ah->cal_list); in ath9k_hw_reset_calvalid()
224 if (ah->caldata) in ath9k_hw_start_nfcal()
225 set_bit(NFCAL_PENDING, &ah->caldata->cal_flags); in ath9k_hw_start_nfcal()
244 u8 chainmask = (ah->rxchainmask << 3) | ah->rxchainmask; in ath9k_hw_loadnf()
246 s16 default_nf = ath9k_hw_get_nf_limits(ah, chan)->nominal; in ath9k_hw_loadnf()
249 if (ah->caldata) in ath9k_hw_loadnf()
250 h = ah->caldata->nfCalHist; in ath9k_hw_loadnf()
260 if (ah->nf_override) in ath9k_hw_loadnf()
261 nfval = ah->nf_override; in ath9k_hw_loadnf()
267 ath9k_hw_get_nf_limits(ah, chan)->cal[i]; in ath9k_hw_loadnf()
268 if (nfval > -60 || nfval < -127) in ath9k_hw_loadnf()
272 REG_RMW(ah, ah->nf_regs[i], in ath9k_hw_loadnf()
278 * stop NF cal if ongoing to ensure NF load completes immediately in ath9k_hw_loadnf()
279 * (or after end rx/tx frame if ongoing) in ath9k_hw_loadnf()
328 * in-progress rx. Simply return here and allow the load plenty of time in ath9k_hw_loadnf()
330 * trying to load -50 (which happens below) while the previous load is in ath9k_hw_loadnf()
332 * here, the baseband nf cal will just be capped by our present in ath9k_hw_loadnf()
339 return -ETIMEDOUT; in ath9k_hw_loadnf()
353 REG_RMW(ah, ah->nf_regs[i], in ath9k_hw_loadnf()
354 (((u32) (-50) << 1) & 0x1ff), 0x1ff); in ath9k_hw_loadnf()
370 if (IS_CHAN_2GHZ(ah->curchan)) in ath9k_hw_nf_sanitize()
371 limit = &ah->nf_2g; in ath9k_hw_nf_sanitize()
373 limit = &ah->nf_5g; in ath9k_hw_nf_sanitize()
380 "NF calibrated [%s] [chain %d] is %d\n", in ath9k_hw_nf_sanitize()
383 if (nf[i] > limit->max) { in ath9k_hw_nf_sanitize()
385 "NF[%d] (%d) > MAX (%d), correcting to MAX\n", in ath9k_hw_nf_sanitize()
386 i, nf[i], limit->max); in ath9k_hw_nf_sanitize()
387 nf[i] = limit->max; in ath9k_hw_nf_sanitize()
388 } else if (nf[i] < limit->min) { in ath9k_hw_nf_sanitize()
390 "NF[%d] (%d) < MIN (%d), correcting to NOM\n", in ath9k_hw_nf_sanitize()
391 i, nf[i], limit->min); in ath9k_hw_nf_sanitize()
392 nf[i] = limit->nominal; in ath9k_hw_nf_sanitize()
403 struct ieee80211_channel *c = chan->chan; in ath9k_hw_getnf()
404 struct ath9k_hw_cal_data *caldata = ah->caldata; in ath9k_hw_getnf()
415 if (ath9k_hw_get_nf_thresh(ah, c->band, &nfThresh) in ath9k_hw_getnf()
418 "noise floor failed detected; detected %d, threshold %d\n", in ath9k_hw_getnf()
423 chan->noisefloor = nf; in ath9k_hw_getnf()
427 h = caldata->nfCalHist; in ath9k_hw_getnf()
428 clear_bit(NFCAL_PENDING, &caldata->cal_flags); in ath9k_hw_getnf()
430 chan->noisefloor = h[0].privNF; in ath9k_hw_getnf()
431 ah->noise = ath9k_hw_getchan_noise(ah, chan, chan->noisefloor); in ath9k_hw_getnf()
442 ah->caldata->channel = chan->channel; in ath9k_init_nfcal_hist_buffer()
443 ah->caldata->channelFlags = chan->channelFlags; in ath9k_init_nfcal_hist_buffer()
444 h = ah->caldata->nfCalHist; in ath9k_init_nfcal_hist_buffer()
459 struct ath9k_hw_cal_data *caldata = ah->caldata; in ath9k_hw_bstuck_nfcal()
472 if (!test_bit(NFCAL_PENDING, &caldata->cal_flags)) in ath9k_hw_bstuck_nfcal()
475 ath9k_hw_getnf(ah, ah->curchan); in ath9k_hw_bstuck_nfcal()
477 set_bit(NFCAL_INTF, &caldata->cal_flags); in ath9k_hw_bstuck_nfcal()