Lines Matching refs:ah

47 static struct ath_nf_limits *ath9k_hw_get_nf_limits(struct ath_hw *ah,  in ath9k_hw_get_nf_limits()  argument
53 limit = &ah->nf_2g; in ath9k_hw_get_nf_limits()
55 limit = &ah->nf_5g; in ath9k_hw_get_nf_limits()
60 static s16 ath9k_hw_get_default_nf(struct ath_hw *ah, in ath9k_hw_get_default_nf() argument
63 return ath9k_hw_get_nf_limits(ah, chan)->nominal; in ath9k_hw_get_default_nf()
66 s16 ath9k_hw_getchan_noise(struct ath_hw *ah, struct ath9k_channel *chan, in ath9k_hw_getchan_noise() argument
73 ath9k_hw_get_default_nf(ah, chan); in ath9k_hw_getchan_noise()
81 static void ath9k_hw_update_nfcal_hist_buffer(struct ath_hw *ah, in ath9k_hw_update_nfcal_hist_buffer() argument
85 struct ath_common *common = ath9k_hw_common(ah); in ath9k_hw_update_nfcal_hist_buffer()
89 u8 chainmask = (ah->rxchainmask << 3) | ah->rxchainmask; in ath9k_hw_update_nfcal_hist_buffer()
93 limit = ath9k_hw_get_nf_limits(ah, ah->curchan); in ath9k_hw_update_nfcal_hist_buffer()
97 ((i >= AR5416_MAX_CHAINS) && !IS_CHAN_HT40(ah->curchan))) in ath9k_hw_update_nfcal_hist_buffer()
147 static bool ath9k_hw_get_nf_thresh(struct ath_hw *ah, in ath9k_hw_get_nf_thresh() argument
153 *nft = (int8_t)ah->eep_ops->get_eeprom(ah, EEP_NFTHRESH_5); in ath9k_hw_get_nf_thresh()
156 *nft = (int8_t)ah->eep_ops->get_eeprom(ah, EEP_NFTHRESH_2); in ath9k_hw_get_nf_thresh()
166 void ath9k_hw_reset_calibration(struct ath_hw *ah, in ath9k_hw_reset_calibration() argument
171 ath9k_hw_setup_calibration(ah, currCal); 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()
186 bool ath9k_hw_reset_calvalid(struct ath_hw *ah) in ath9k_hw_reset_calvalid() argument
188 struct ath_common *common = ath9k_hw_common(ah); in ath9k_hw_reset_calvalid()
189 struct ath9k_cal_list *currCal = ah->cal_list_curr; in ath9k_hw_reset_calvalid()
191 if (!ah->caldata) in ath9k_hw_reset_calvalid()
194 if (!AR_SREV_9100(ah) && !AR_SREV_9160_10_OR_LATER(ah)) in ath9k_hw_reset_calvalid()
206 if (!(ah->supp_cals & currCal->calData->calType)) in ath9k_hw_reset_calvalid()
210 currCal->calData->calType, ah->curchan->chan->center_freq); in ath9k_hw_reset_calvalid()
212 ah->caldata->CalValid &= ~currCal->calData->calType; in ath9k_hw_reset_calvalid()
219 void ath9k_hw_start_nfcal(struct ath_hw *ah, bool update) in ath9k_hw_start_nfcal() argument
221 if (ah->caldata) in ath9k_hw_start_nfcal()
222 set_bit(NFCAL_PENDING, &ah->caldata->cal_flags); in ath9k_hw_start_nfcal()
224 REG_SET_BIT(ah, AR_PHY_AGC_CONTROL, in ath9k_hw_start_nfcal()
228 REG_CLR_BIT(ah, AR_PHY_AGC_CONTROL, in ath9k_hw_start_nfcal()
231 REG_SET_BIT(ah, AR_PHY_AGC_CONTROL, in ath9k_hw_start_nfcal()
234 REG_SET_BIT(ah, AR_PHY_AGC_CONTROL, AR_PHY_AGC_CONTROL_NF); in ath9k_hw_start_nfcal()
237 int ath9k_hw_loadnf(struct ath_hw *ah, struct ath9k_channel *chan) in ath9k_hw_loadnf() argument
241 u8 chainmask = (ah->rxchainmask << 3) | ah->rxchainmask; in ath9k_hw_loadnf()
242 struct ath_common *common = ath9k_hw_common(ah); in ath9k_hw_loadnf()
243 s16 default_nf = ath9k_hw_get_default_nf(ah, chan); in ath9k_hw_loadnf()
245 if (ah->caldata) in ath9k_hw_loadnf()
246 h = ah->caldata->nfCalHist; in ath9k_hw_loadnf()
248 ENABLE_REG_RMW_BUFFER(ah); in ath9k_hw_loadnf()
261 REG_RMW(ah, ah->nf_regs[i], in ath9k_hw_loadnf()
270 REG_CLR_BIT(ah, AR_PHY_AGC_CONTROL, in ath9k_hw_loadnf()
272 REG_CLR_BIT(ah, AR_PHY_AGC_CONTROL, in ath9k_hw_loadnf()
274 REG_SET_BIT(ah, AR_PHY_AGC_CONTROL, AR_PHY_AGC_CONTROL_NF); in ath9k_hw_loadnf()
275 REG_RMW_BUFFER_FLUSH(ah); in ath9k_hw_loadnf()
284 if ((REG_READ(ah, AR_PHY_AGC_CONTROL) & in ath9k_hw_loadnf()
302 REG_READ(ah, AR_PHY_AGC_CONTROL)); in ath9k_hw_loadnf()
311 ENABLE_REG_RMW_BUFFER(ah); in ath9k_hw_loadnf()
317 REG_RMW(ah, ah->nf_regs[i], in ath9k_hw_loadnf()
321 REG_RMW_BUFFER_FLUSH(ah); in ath9k_hw_loadnf()
327 static void ath9k_hw_nf_sanitize(struct ath_hw *ah, s16 *nf) in ath9k_hw_nf_sanitize() argument
329 struct ath_common *common = ath9k_hw_common(ah); in ath9k_hw_nf_sanitize()
333 if (IS_CHAN_2GHZ(ah->curchan)) in ath9k_hw_nf_sanitize()
334 limit = &ah->nf_2g; in ath9k_hw_nf_sanitize()
336 limit = &ah->nf_5g; in ath9k_hw_nf_sanitize()
360 bool ath9k_hw_getnf(struct ath_hw *ah, struct ath9k_channel *chan) in ath9k_hw_getnf() argument
362 struct ath_common *common = ath9k_hw_common(ah); in ath9k_hw_getnf()
367 struct ath9k_hw_cal_data *caldata = ah->caldata; in ath9k_hw_getnf()
369 if (REG_READ(ah, AR_PHY_AGC_CONTROL) & AR_PHY_AGC_CONTROL_NF) { in ath9k_hw_getnf()
375 ath9k_hw_do_getnf(ah, nfarray); in ath9k_hw_getnf()
376 ath9k_hw_nf_sanitize(ah, nfarray); in ath9k_hw_getnf()
378 if (ath9k_hw_get_nf_thresh(ah, c->band, &nfThresh) in ath9k_hw_getnf()
392 ath9k_hw_update_nfcal_hist_buffer(ah, caldata, nfarray); in ath9k_hw_getnf()
394 ah->noise = ath9k_hw_getchan_noise(ah, chan, chan->noisefloor); in ath9k_hw_getnf()
399 void ath9k_init_nfcal_hist_buffer(struct ath_hw *ah, in ath9k_init_nfcal_hist_buffer() argument
406 ah->caldata->channel = chan->channel; in ath9k_init_nfcal_hist_buffer()
407 ah->caldata->channelFlags = chan->channelFlags; in ath9k_init_nfcal_hist_buffer()
408 h = ah->caldata->nfCalHist; in ath9k_init_nfcal_hist_buffer()
409 default_nf = ath9k_hw_get_default_nf(ah, chan); in ath9k_init_nfcal_hist_buffer()
421 void ath9k_hw_bstuck_nfcal(struct ath_hw *ah) in ath9k_hw_bstuck_nfcal() argument
423 struct ath9k_hw_cal_data *caldata = ah->caldata; in ath9k_hw_bstuck_nfcal()
437 ath9k_hw_start_nfcal(ah, true); in ath9k_hw_bstuck_nfcal()
438 else if (!(REG_READ(ah, AR_PHY_AGC_CONTROL) & AR_PHY_AGC_CONTROL_NF)) in ath9k_hw_bstuck_nfcal()
439 ath9k_hw_getnf(ah, ah->curchan); in ath9k_hw_bstuck_nfcal()