mirror of https://gitee.com/openkylin/linux.git
ath9k_hw: Add support to reuse TxIQ cal measurements
Pass an argument to decide whether to reuse the Tx IQ calibration measurements or not during fast channel change. This will be later used by MCI support for AR9480. Signed-off-by: Rajkumar Manoharan <rmanohar@qca.qualcomm.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
5f0c04ea1e
commit
34013524a1
|
@ -659,7 +659,8 @@ static void ar9003_hw_detect_outlier(int *mp_coeff, int nmeasurement,
|
|||
|
||||
static void ar9003_hw_tx_iqcal_load_avg_2_passes(struct ath_hw *ah,
|
||||
u8 num_chains,
|
||||
struct coeff *coeff)
|
||||
struct coeff *coeff,
|
||||
bool is_reusable)
|
||||
{
|
||||
int i, im, nmeasurement;
|
||||
u32 tx_corr_coeff[MAX_MEASUREMENT][AR9300_MAX_CHAINS];
|
||||
|
@ -726,11 +727,11 @@ static void ar9003_hw_tx_iqcal_load_avg_2_passes(struct ath_hw *ah,
|
|||
AR_PHY_TX_IQCAL_CONTROL_3_IQCORR_EN, 0x1);
|
||||
REG_RMW_FIELD(ah, AR_PHY_RX_IQCAL_CORR_B0,
|
||||
AR_PHY_RX_IQCAL_CORR_B0_LOOPBACK_IQCORR_EN, 0x1);
|
||||
|
||||
if (caldata)
|
||||
caldata->done_txiqcal_once = true;
|
||||
caldata->done_txiqcal_once = is_reusable;
|
||||
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
static bool ar9003_hw_tx_iq_cal_run(struct ath_hw *ah)
|
||||
|
@ -757,7 +758,7 @@ static bool ar9003_hw_tx_iq_cal_run(struct ath_hw *ah)
|
|||
return true;
|
||||
}
|
||||
|
||||
static void ar9003_hw_tx_iq_cal_post_proc(struct ath_hw *ah)
|
||||
static void ar9003_hw_tx_iq_cal_post_proc(struct ath_hw *ah, bool is_reusable)
|
||||
{
|
||||
struct ath_common *common = ath9k_hw_common(ah);
|
||||
const u32 txiqcal_status[AR9300_MAX_CHAINS] = {
|
||||
|
@ -846,7 +847,8 @@ static void ar9003_hw_tx_iq_cal_post_proc(struct ath_hw *ah)
|
|||
coeff.phs_coeff[i][im] -= 128;
|
||||
}
|
||||
}
|
||||
ar9003_hw_tx_iqcal_load_avg_2_passes(ah, num_chains, &coeff);
|
||||
ar9003_hw_tx_iqcal_load_avg_2_passes(ah, num_chains,
|
||||
&coeff, is_reusable);
|
||||
|
||||
return;
|
||||
|
||||
|
@ -904,6 +906,7 @@ static bool ar9003_hw_init_cal(struct ath_hw *ah,
|
|||
struct ath_common *common = ath9k_hw_common(ah);
|
||||
struct ath9k_hw_cal_data *caldata = ah->caldata;
|
||||
bool txiqcal_done = false;
|
||||
bool is_reusable = true;
|
||||
|
||||
/* Do Tx IQ Calibration */
|
||||
REG_RMW_FIELD(ah, AR_PHY_TX_IQCAL_CONTROL_1,
|
||||
|
@ -943,7 +946,7 @@ static bool ar9003_hw_init_cal(struct ath_hw *ah,
|
|||
}
|
||||
|
||||
if (txiqcal_done)
|
||||
ar9003_hw_tx_iq_cal_post_proc(ah);
|
||||
ar9003_hw_tx_iq_cal_post_proc(ah, is_reusable);
|
||||
else if (caldata && caldata->done_txiqcal_once)
|
||||
ar9003_hw_tx_iq_cal_reload(ah);
|
||||
|
||||
|
|
Loading…
Reference in New Issue