diff options
author | adrian <adrian@FreeBSD.org> | 2011-03-06 00:30:43 +0000 |
---|---|---|
committer | adrian <adrian@FreeBSD.org> | 2011-03-06 00:30:43 +0000 |
commit | 8e385b87398461db72746659308d41388e8eca6e (patch) | |
tree | dee9ab22711357b5c9f77d4f218a18e8be8bfb40 | |
parent | 683dbd85eab4513a44d599a3e6aa1a86762ab980 (diff) | |
download | FreeBSD-src-8e385b87398461db72746659308d41388e8eca6e.zip FreeBSD-src-8e385b87398461db72746659308d41388e8eca6e.tar.gz |
Add an EEPROM op that extracts out the power table offset.
It defaults to -5 dBm for eeproms earlier than v21.
This apparently only applies to Merlin (AR9280) or later,
earlier 11n chipsets have a power table offset of 0.
All the code in ath9k which checks the power table offset
and takes it into account first ensures the chip is
Merlin or later.
-rw-r--r-- | sys/dev/ath/ath_hal/ah_eeprom.h | 1 | ||||
-rw-r--r-- | sys/dev/ath/ath_hal/ah_eeprom_v14.c | 7 |
2 files changed, 8 insertions, 0 deletions
diff --git a/sys/dev/ath/ath_hal/ah_eeprom.h b/sys/dev/ath/ath_hal/ah_eeprom.h index f7b87b2..740a4c6 100644 --- a/sys/dev/ath/ath_hal/ah_eeprom.h +++ b/sys/dev/ath/ath_hal/ah_eeprom.h @@ -100,6 +100,7 @@ enum { AR_EEP_ANTGAINMAX_5, /* int8_t* */ AR_EEP_ANTGAINMAX_2, /* int8_t* */ AR_EEP_WRITEPROTECT, /* use ath_hal_eepromGetFlag */ + AR_EEP_PWR_TABLE_OFFSET /* int8_t* */ }; typedef struct { diff --git a/sys/dev/ath/ath_hal/ah_eeprom_v14.c b/sys/dev/ath/ath_hal/ah_eeprom_v14.c index 8bb043a..bfa9714 100644 --- a/sys/dev/ath/ath_hal/ah_eeprom_v14.c +++ b/sys/dev/ath/ath_hal/ah_eeprom_v14.c @@ -126,6 +126,13 @@ v14EepromGet(struct ath_hal *ah, int param, void *val) case AR_EEP_ANTGAINMAX_5: *(int8_t *) val = ee->ee_antennaGainMax[0]; return HAL_OK; + case AR_EEP_PWR_TABLE_OFFSET: + if (IS_VERS(>=, AR5416_EEP_MINOR_VER_21)) + *(int8_t *) val = pBase->pwr_table_offset; + else + *(int8_t *) val = AR5416_PWR_TABLE_OFFSET_DB; + return HAL_OK; + default: HALASSERT(0); return HAL_EINVAL; |