summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoradrian <adrian@FreeBSD.org>2011-03-06 00:30:43 +0000
committeradrian <adrian@FreeBSD.org>2011-03-06 00:30:43 +0000
commit8e385b87398461db72746659308d41388e8eca6e (patch)
treedee9ab22711357b5c9f77d4f218a18e8be8bfb40
parent683dbd85eab4513a44d599a3e6aa1a86762ab980 (diff)
downloadFreeBSD-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.h1
-rw-r--r--sys/dev/ath/ath_hal/ah_eeprom_v14.c7
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;
OpenPOWER on IntegriCloud