ath9k: Cleanup calibration interface
This patch cleans up the functions dealing with calibration, using proper return values. ath9k_hw_per_calibration(), ath9k_hw_calibrate now return bool values instead of setting error values in the function arguments. Signed-off-by: Sujith <Sujith.Manoharan@atheros.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
415f738ecf
commit
379f04407c
3 changed files with 22 additions and 36 deletions
|
@ -238,13 +238,12 @@ static void ath9k_hw_reset_calibration(struct ath_hw *ah,
|
|||
ah->cal_samples = 0;
|
||||
}
|
||||
|
||||
static void ath9k_hw_per_calibration(struct ath_hw *ah,
|
||||
static bool ath9k_hw_per_calibration(struct ath_hw *ah,
|
||||
struct ath9k_channel *ichan,
|
||||
u8 rxchainmask,
|
||||
struct hal_cal_list *currCal,
|
||||
bool *isCalDone)
|
||||
struct hal_cal_list *currCal)
|
||||
{
|
||||
*isCalDone = false;
|
||||
bool iscaldone = false;
|
||||
|
||||
if (currCal->calState == CAL_RUNNING) {
|
||||
if (!(REG_READ(ah, AR_PHY_TIMING_CTRL4(0)) &
|
||||
|
@ -263,7 +262,7 @@ static void ath9k_hw_per_calibration(struct ath_hw *ah,
|
|||
currCal->calData->calPostProc(ah, numChains);
|
||||
ichan->CalValid |= currCal->calData->calType;
|
||||
currCal->calState = CAL_DONE;
|
||||
*isCalDone = true;
|
||||
iscaldone = true;
|
||||
} else {
|
||||
ath9k_hw_setup_calibration(ah, currCal);
|
||||
}
|
||||
|
@ -271,6 +270,8 @@ static void ath9k_hw_per_calibration(struct ath_hw *ah,
|
|||
} else if (!(ichan->CalValid & currCal->calData->calType)) {
|
||||
ath9k_hw_reset_calibration(ah, currCal);
|
||||
}
|
||||
|
||||
return iscaldone;
|
||||
}
|
||||
|
||||
/* Assumes you are talking about the currently configured channel */
|
||||
|
@ -841,23 +842,21 @@ static inline void ath9k_hw_9285_pa_cal(struct ath_hw *ah)
|
|||
}
|
||||
|
||||
bool ath9k_hw_calibrate(struct ath_hw *ah, struct ath9k_channel *chan,
|
||||
u8 rxchainmask, bool longcal,
|
||||
bool *isCalDone)
|
||||
u8 rxchainmask, bool longcal)
|
||||
{
|
||||
bool iscaldone = true;
|
||||
struct hal_cal_list *currCal = ah->cal_list_curr;
|
||||
|
||||
*isCalDone = true;
|
||||
|
||||
if (currCal &&
|
||||
(currCal->calState == CAL_RUNNING ||
|
||||
currCal->calState == CAL_WAITING)) {
|
||||
ath9k_hw_per_calibration(ah, chan, rxchainmask, currCal,
|
||||
isCalDone);
|
||||
if (*isCalDone) {
|
||||
iscaldone = ath9k_hw_per_calibration(ah, chan,
|
||||
rxchainmask, currCal);
|
||||
if (iscaldone) {
|
||||
ah->cal_list_curr = currCal = currCal->calNext;
|
||||
|
||||
if (currCal->calState == CAL_WAITING) {
|
||||
*isCalDone = false;
|
||||
iscaldone = false;
|
||||
ath9k_hw_reset_calibration(ah, currCal);
|
||||
}
|
||||
}
|
||||
|
@ -877,7 +876,7 @@ bool ath9k_hw_calibrate(struct ath_hw *ah, struct ath9k_channel *chan,
|
|||
chan->channelFlags &= ~CHANNEL_CW_INT;
|
||||
}
|
||||
|
||||
return true;
|
||||
return iscaldone;
|
||||
}
|
||||
|
||||
static bool ar9285_clc(struct ath_hw *ah, struct ath9k_channel *chan)
|
||||
|
|
|
@ -116,8 +116,7 @@ int16_t ath9k_hw_getnf(struct ath_hw *ah,
|
|||
void ath9k_init_nfcal_hist_buffer(struct ath_hw *ah);
|
||||
s16 ath9k_hw_getchan_noise(struct ath_hw *ah, struct ath9k_channel *chan);
|
||||
bool ath9k_hw_calibrate(struct ath_hw *ah, struct ath9k_channel *chan,
|
||||
u8 rxchainmask, bool longcal,
|
||||
bool *isCalDone);
|
||||
u8 rxchainmask, bool longcal);
|
||||
bool ath9k_hw_init_cal(struct ath_hw *ah,
|
||||
struct ath9k_channel *chan);
|
||||
|
||||
|
|
|
@ -367,28 +367,16 @@ static void ath_ani_calibrate(unsigned long data)
|
|||
|
||||
/* Perform calibration if necessary */
|
||||
if (longcal || shortcal) {
|
||||
bool iscaldone = false;
|
||||
sc->ani.caldone = ath9k_hw_calibrate(ah, ah->curchan,
|
||||
sc->rx_chainmask, longcal);
|
||||
|
||||
if (ath9k_hw_calibrate(ah, ah->curchan,
|
||||
sc->rx_chainmask, longcal,
|
||||
&iscaldone)) {
|
||||
if (longcal)
|
||||
sc->ani.noise_floor =
|
||||
ath9k_hw_getchan_noise(ah,
|
||||
ah->curchan);
|
||||
if (longcal)
|
||||
sc->ani.noise_floor = ath9k_hw_getchan_noise(ah,
|
||||
ah->curchan);
|
||||
|
||||
DPRINTF(sc, ATH_DBG_ANI,
|
||||
"calibrate chan %u/%x nf: %d\n",
|
||||
ah->curchan->channel,
|
||||
ah->curchan->channelFlags,
|
||||
sc->ani.noise_floor);
|
||||
} else {
|
||||
DPRINTF(sc, ATH_DBG_ANY,
|
||||
"calibrate chan %u/%x failed\n",
|
||||
ah->curchan->channel,
|
||||
ah->curchan->channelFlags);
|
||||
}
|
||||
sc->ani.caldone = iscaldone;
|
||||
DPRINTF(sc, ATH_DBG_ANI," calibrate chan %u/%x nf: %d\n",
|
||||
ah->curchan->channel, ah->curchan->channelFlags,
|
||||
sc->ani.noise_floor);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue