ath9k: Display calibration data piers in debugfs
Display per frequency calibration data in dump_modal debugfs entry including reference power, voltage, tx temperature and noise floor. Example of chain 0 of OEM card (dump from modal_eeprom): Chain 0 Freq ref volt temp nf_Cal nf_Pow rx_temp 5180 -30 0 137 0 0 0 5320 -24 0 137 0 0 0 5500 -15 0 137 0 0 0 5620 -10 0 137 0 0 0 5700 -15 0 137 0 0 0 5745 -16 0 135 0 0 0 5785 -19 0 136 0 0 0 5825 -22 0 136 0 0 0 Example of a card with calibrated noise floor. Chain 0 Freq ref volt temp nf_Cal nf_Pow rx_temp 4890 -49 0 128 -107 -97 124 5100 -23 0 128 -101 -96 124 5180 -18 0 128 -101 -96 124 5300 -12 0 128 -102 -97 124 5500 -9 0 128 -101 -97 125 5640 -17 0 128 -101 -98 124 5785 -25 0 128 -101 -98 124 5940 -33 0 128 -106 -99 124 Signed-off-by: Wojciech Dubowik <Wojciech.Dubowik@neratec.com> Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
This commit is contained in:
parent
8da58553cc
commit
3717957ce5
@ -3436,6 +3436,60 @@ static u32 ar9003_dump_modal_eeprom(char *buf, u32 len, u32 size,
|
||||
return len;
|
||||
}
|
||||
|
||||
static u32 ar9003_dump_cal_data(struct ath_hw *ah, char *buf, u32 len, u32 size,
|
||||
bool is_2g)
|
||||
{
|
||||
struct ar9300_eeprom *eep = &ah->eeprom.ar9300_eep;
|
||||
struct ar9300_base_eep_hdr *pBase;
|
||||
struct ar9300_cal_data_per_freq_op_loop *cal_pier;
|
||||
int cal_pier_nr;
|
||||
int freq;
|
||||
int i, j;
|
||||
|
||||
pBase = &eep->baseEepHeader;
|
||||
|
||||
if (is_2g)
|
||||
cal_pier_nr = AR9300_NUM_2G_CAL_PIERS;
|
||||
else
|
||||
cal_pier_nr = AR9300_NUM_5G_CAL_PIERS;
|
||||
|
||||
for (i = 0; i < AR9300_MAX_CHAINS; i++) {
|
||||
if (!((pBase->txrxMask >> i) & 1))
|
||||
continue;
|
||||
|
||||
len += snprintf(buf + len, size - len, "Chain %d\n", i);
|
||||
|
||||
len += snprintf(buf + len, size - len,
|
||||
"Freq\t ref\tvolt\ttemp\tnf_cal\tnf_pow\trx_temp\n");
|
||||
|
||||
for (j = 0; j < cal_pier_nr; j++) {
|
||||
if (is_2g) {
|
||||
cal_pier = &eep->calPierData2G[i][j];
|
||||
freq = 2300 + eep->calFreqPier2G[j];
|
||||
} else {
|
||||
cal_pier = &eep->calPierData5G[i][j];
|
||||
freq = 4800 + eep->calFreqPier5G[j] * 5;
|
||||
}
|
||||
|
||||
len += snprintf(buf + len, size - len,
|
||||
"%d\t", freq);
|
||||
|
||||
len += snprintf(buf + len, size - len,
|
||||
"%d\t%d\t%d\t%d\t%d\t%d\n",
|
||||
cal_pier->refPower,
|
||||
cal_pier->voltMeas,
|
||||
cal_pier->tempMeas,
|
||||
cal_pier->rxTempMeas ?
|
||||
N2DBM(cal_pier->rxNoisefloorCal) : 0,
|
||||
cal_pier->rxTempMeas ?
|
||||
N2DBM(cal_pier->rxNoisefloorPower) : 0,
|
||||
cal_pier->rxTempMeas);
|
||||
}
|
||||
}
|
||||
|
||||
return len;
|
||||
}
|
||||
|
||||
static u32 ath9k_hw_ar9003_dump_eeprom(struct ath_hw *ah, bool dump_base_hdr,
|
||||
u8 *buf, u32 len, u32 size)
|
||||
{
|
||||
@ -3447,10 +3501,18 @@ static u32 ath9k_hw_ar9003_dump_eeprom(struct ath_hw *ah, bool dump_base_hdr,
|
||||
"%20s :\n", "2GHz modal Header");
|
||||
len = ar9003_dump_modal_eeprom(buf, len, size,
|
||||
&eep->modalHeader2G);
|
||||
len += scnprintf(buf + len, size - len,
|
||||
|
||||
len += scnprintf(buf + len, size - len, "Calibration data\n");
|
||||
len = ar9003_dump_cal_data(ah, buf, len, size, true);
|
||||
|
||||
len += snprintf(buf + len, size - len,
|
||||
"%20s :\n", "5GHz modal Header");
|
||||
len = ar9003_dump_modal_eeprom(buf, len, size,
|
||||
&eep->modalHeader5G);
|
||||
|
||||
len += snprintf(buf + len, size - len, "Calibration data\n");
|
||||
len = ar9003_dump_cal_data(ah, buf, len, size, false);
|
||||
|
||||
goto out;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user