32#define totalPowerMeasI(i) caldata[0][i].u
33#define totalPowerMeasQ(i) caldata[1][i].u
34#define totalIqCorrMeas(i) caldata[2][i].s
49 cal->totalPowerMeasI(i) +=
51 cal->totalPowerMeasQ(i) +=
53 cal->totalIqCorrMeas(i) += (int32_t)
56 "%d: Chn %d pmi=0x%08x;pmq=0x%08x;iqcm=0x%08x;\n",
58 cal->totalPowerMeasQ(i), cal->totalIqCorrMeas(i));
71 for (i = 0; i < numChains; i++) {
72 uint32_t powerMeasI = cal->totalPowerMeasI(i);
73 uint32_t powerMeasQ = cal->totalPowerMeasQ(i);
74 uint32_t iqCorrMeas = cal->totalIqCorrMeas(i);
75 uint32_t qCoffDenom, iCoffDenom;
79 "Start IQ Cal and Correction for Chain %d\n", i);
81 "Orignal: iq_corr_meas = 0x%08x\n", iqCorrMeas);
85 if (iqCorrMeas > 0x80000000) {
86 iqCorrMeas = (0xffffffff - iqCorrMeas) + 1;
97 iCoffDenom = (powerMeasI/2 + powerMeasQ/2)/ 128;
98 qCoffDenom = powerMeasQ / 64;
100 if (powerMeasQ != 0) {
102 int32_t iCoff = iqCorrMeas/iCoffDenom;
103 int32_t qCoff = powerMeasI/qCoffDenom - 64;
111 iCoff = iCoff & 0x3f;
113 "New: iCoff = 0x%08x\n", iCoff);
115 if (iqCorrNeg == 0x0)
116 iCoff = 0x40 - iCoff;
119 else if (qCoff <= -16)
122 " : iCoff = 0x%x qCoff = 0x%x\n", iCoff, qCoff);
129 "IQ Cal and Correction done for Chain %d\n", i);
#define AR5416_MAX_CHAINS
#define OS_REG_SET_BIT(_a, _r, _f)
#define OS_REG_RMW_FIELD(_a, _r, _f, _v)
#define HALDEBUG(_ah, __m,...)
#define OS_REG_READ(_ah, _reg)
#define AR_PHY_TIMING_CTRL4
#define AR_PHY_TIMING_CTRL4_IQCORR_ENABLE
#define AR_PHY_TIMING_CTRL4_IQCORR_Q_I_COFF
#define AR_PHY_TIMING_CTRL4_IQCORR_Q_Q_COFF
void ar5416IQCalCollect(struct ath_hal *ah)
void ar5416IQCalibration(struct ath_hal *ah, uint8_t numChains)
#define AR_PHY_CAL_MEAS_2(_i)
#define AR_PHY_CAL_MEAS_1(_i)
#define AR_PHY_CAL_MEAS_0(_i)
#define AR_PHY_TIMING_CTRL4_CHAIN(_i)