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

Commit 4b01931e authored by Luis R. Rodriguez's avatar Luis R. Rodriguez Committed by John W. Linville
Browse files

ath9k_hw: fill in the callbacks for calibration for AR9003

parent 77d6d39a
Loading
Loading
Loading
Loading
+2 −0
Original line number Original line Diff line number Diff line
@@ -50,6 +50,8 @@ static void ar9002_hw_setup_calibration(struct ath_hw *ah,
		ath_print(common, ATH_DBG_CALIBRATE,
		ath_print(common, ATH_DBG_CALIBRATE,
			  "starting Init ADC DC Calibration\n");
			  "starting Init ADC DC Calibration\n");
		break;
		break;
	case TEMP_COMP_CAL:
		break; /* Not supported */
	}
	}


	REG_SET_BIT(ah, AR_PHY_TIMING_CTRL4(0),
	REG_SET_BIT(ah, AR_PHY_TIMING_CTRL4(0),
+35 −1
Original line number Original line Diff line number Diff line
@@ -21,7 +21,41 @@
static void ar9003_hw_setup_calibration(struct ath_hw *ah,
static void ar9003_hw_setup_calibration(struct ath_hw *ah,
					struct ath9k_cal_list *currCal)
					struct ath9k_cal_list *currCal)
{
{
	/* TODO */
	struct ath_common *common = ath9k_hw_common(ah);

	/* Select calibration to run */
	switch (currCal->calData->calType) {
	case IQ_MISMATCH_CAL:
		/*
		 * Start calibration with
		 * 2^(INIT_IQCAL_LOG_COUNT_MAX+1) samples
		 */
		REG_RMW_FIELD(ah, AR_PHY_TIMING4,
			      AR_PHY_TIMING4_IQCAL_LOG_COUNT_MAX,
		currCal->calData->calCountMax);
		REG_WRITE(ah, AR_PHY_CALMODE, AR_PHY_CALMODE_IQ);

		ath_print(common, ATH_DBG_CALIBRATE,
			  "starting IQ Mismatch Calibration\n");

		/* Kick-off cal */
		REG_SET_BIT(ah, AR_PHY_TIMING4, AR_PHY_TIMING4_DO_CAL);
		break;
	case TEMP_COMP_CAL:
		REG_RMW_FIELD(ah, AR_PHY_65NM_CH0_THERM,
			      AR_PHY_65NM_CH0_THERM_LOCAL, 1);
		REG_RMW_FIELD(ah, AR_PHY_65NM_CH0_THERM,
			      AR_PHY_65NM_CH0_THERM_START, 1);

		ath_print(common, ATH_DBG_CALIBRATE,
			  "starting Temperature Compensation Calibration\n");
		break;
	case ADC_DC_INIT_CAL:
	case ADC_GAIN_CAL:
	case ADC_DC_CAL:
		/* Not yet */
		break;
	}
}
}


static bool ar9003_hw_calibrate(struct ath_hw *ah,
static bool ar9003_hw_calibrate(struct ath_hw *ah,
+2 −1
Original line number Original line Diff line number Diff line
@@ -68,7 +68,8 @@ enum ath9k_cal_types {
	ADC_DC_INIT_CAL = 0x1,
	ADC_DC_INIT_CAL = 0x1,
	ADC_GAIN_CAL = 0x2,
	ADC_GAIN_CAL = 0x2,
	ADC_DC_CAL = 0x4,
	ADC_DC_CAL = 0x4,
	IQ_MISMATCH_CAL = 0x8
	IQ_MISMATCH_CAL = 0x8,
	TEMP_COMP_CAL = 0x10,
};
};


enum ath9k_cal_state {
enum ath9k_cal_state {