Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 379f0440 authored by Sujith's avatar Sujith Committed by John W. Linville
Browse files

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: default avatarSujith <Sujith.Manoharan@atheros.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent 415f738e
Loading
Loading
Loading
Loading
+13 −14
Original line number Diff line number Diff line
@@ -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)
+1 −2
Original line number Diff line number Diff line
@@ -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);

+10 −22
Original line number Diff line number Diff line
@@ -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,
				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,
			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;
		}
	}