rt2x00: Implement tx power temperature compensation
rt2800 devices should adjust their tx power in accordance with the eeproms temperature calibration values. Add a new driver callback gain_calibration that is called every 4 seconds. The rt2800 gain calibration routine simply runs the tx power configuration that takes care of calculating the temperature compensation delta. We don't need to synchronize the calls to rt2800_config_txpower as they should all happen from mac80211's single threaded workqueue. Signed-off-by: Helmut Schaa <helmut.schaa@googlemail.com> Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:

committed by
John W. Linville

parent
2f2bb7e8bd
commit
9e33a35538
@@ -2103,6 +2103,59 @@ struct mac_iveiv_entry {
|
||||
#define EEPROM_TXPOWER_BG_1 FIELD16(0x00ff)
|
||||
#define EEPROM_TXPOWER_BG_2 FIELD16(0xff00)
|
||||
|
||||
/*
|
||||
* EEPROM temperature compensation boundaries 802.11BG
|
||||
* MINUS4: If the actual TSSI is below this boundary, tx power needs to be
|
||||
* reduced by (agc_step * -4)
|
||||
* MINUS3: If the actual TSSI is below this boundary, tx power needs to be
|
||||
* reduced by (agc_step * -3)
|
||||
*/
|
||||
#define EEPROM_TSSI_BOUND_BG1 0x0037
|
||||
#define EEPROM_TSSI_BOUND_BG1_MINUS4 FIELD16(0x00ff)
|
||||
#define EEPROM_TSSI_BOUND_BG1_MINUS3 FIELD16(0xff00)
|
||||
|
||||
/*
|
||||
* EEPROM temperature compensation boundaries 802.11BG
|
||||
* MINUS2: If the actual TSSI is below this boundary, tx power needs to be
|
||||
* reduced by (agc_step * -2)
|
||||
* MINUS1: If the actual TSSI is below this boundary, tx power needs to be
|
||||
* reduced by (agc_step * -1)
|
||||
*/
|
||||
#define EEPROM_TSSI_BOUND_BG2 0x0038
|
||||
#define EEPROM_TSSI_BOUND_BG2_MINUS2 FIELD16(0x00ff)
|
||||
#define EEPROM_TSSI_BOUND_BG2_MINUS1 FIELD16(0xff00)
|
||||
|
||||
/*
|
||||
* EEPROM temperature compensation boundaries 802.11BG
|
||||
* REF: Reference TSSI value, no tx power changes needed
|
||||
* PLUS1: If the actual TSSI is above this boundary, tx power needs to be
|
||||
* increased by (agc_step * 1)
|
||||
*/
|
||||
#define EEPROM_TSSI_BOUND_BG3 0x0039
|
||||
#define EEPROM_TSSI_BOUND_BG3_REF FIELD16(0x00ff)
|
||||
#define EEPROM_TSSI_BOUND_BG3_PLUS1 FIELD16(0xff00)
|
||||
|
||||
/*
|
||||
* EEPROM temperature compensation boundaries 802.11BG
|
||||
* PLUS2: If the actual TSSI is above this boundary, tx power needs to be
|
||||
* increased by (agc_step * 2)
|
||||
* PLUS3: If the actual TSSI is above this boundary, tx power needs to be
|
||||
* increased by (agc_step * 3)
|
||||
*/
|
||||
#define EEPROM_TSSI_BOUND_BG4 0x003a
|
||||
#define EEPROM_TSSI_BOUND_BG4_PLUS2 FIELD16(0x00ff)
|
||||
#define EEPROM_TSSI_BOUND_BG4_PLUS3 FIELD16(0xff00)
|
||||
|
||||
/*
|
||||
* EEPROM temperature compensation boundaries 802.11BG
|
||||
* PLUS4: If the actual TSSI is above this boundary, tx power needs to be
|
||||
* increased by (agc_step * 4)
|
||||
* AGC_STEP: Temperature compensation step.
|
||||
*/
|
||||
#define EEPROM_TSSI_BOUND_BG5 0x003b
|
||||
#define EEPROM_TSSI_BOUND_BG5_PLUS4 FIELD16(0x00ff)
|
||||
#define EEPROM_TSSI_BOUND_BG5_AGC_STEP FIELD16(0xff00)
|
||||
|
||||
/*
|
||||
* EEPROM TXPOWER 802.11A
|
||||
*/
|
||||
@@ -2112,6 +2165,59 @@ struct mac_iveiv_entry {
|
||||
#define EEPROM_TXPOWER_A_1 FIELD16(0x00ff)
|
||||
#define EEPROM_TXPOWER_A_2 FIELD16(0xff00)
|
||||
|
||||
/*
|
||||
* EEPROM temperature compensation boundaries 802.11A
|
||||
* MINUS4: If the actual TSSI is below this boundary, tx power needs to be
|
||||
* reduced by (agc_step * -4)
|
||||
* MINUS3: If the actual TSSI is below this boundary, tx power needs to be
|
||||
* reduced by (agc_step * -3)
|
||||
*/
|
||||
#define EEPROM_TSSI_BOUND_A1 0x006a
|
||||
#define EEPROM_TSSI_BOUND_A1_MINUS4 FIELD16(0x00ff)
|
||||
#define EEPROM_TSSI_BOUND_A1_MINUS3 FIELD16(0xff00)
|
||||
|
||||
/*
|
||||
* EEPROM temperature compensation boundaries 802.11A
|
||||
* MINUS2: If the actual TSSI is below this boundary, tx power needs to be
|
||||
* reduced by (agc_step * -2)
|
||||
* MINUS1: If the actual TSSI is below this boundary, tx power needs to be
|
||||
* reduced by (agc_step * -1)
|
||||
*/
|
||||
#define EEPROM_TSSI_BOUND_A2 0x006b
|
||||
#define EEPROM_TSSI_BOUND_A2_MINUS2 FIELD16(0x00ff)
|
||||
#define EEPROM_TSSI_BOUND_A2_MINUS1 FIELD16(0xff00)
|
||||
|
||||
/*
|
||||
* EEPROM temperature compensation boundaries 802.11A
|
||||
* REF: Reference TSSI value, no tx power changes needed
|
||||
* PLUS1: If the actual TSSI is above this boundary, tx power needs to be
|
||||
* increased by (agc_step * 1)
|
||||
*/
|
||||
#define EEPROM_TSSI_BOUND_A3 0x006c
|
||||
#define EEPROM_TSSI_BOUND_A3_REF FIELD16(0x00ff)
|
||||
#define EEPROM_TSSI_BOUND_A3_PLUS1 FIELD16(0xff00)
|
||||
|
||||
/*
|
||||
* EEPROM temperature compensation boundaries 802.11A
|
||||
* PLUS2: If the actual TSSI is above this boundary, tx power needs to be
|
||||
* increased by (agc_step * 2)
|
||||
* PLUS3: If the actual TSSI is above this boundary, tx power needs to be
|
||||
* increased by (agc_step * 3)
|
||||
*/
|
||||
#define EEPROM_TSSI_BOUND_A4 0x006d
|
||||
#define EEPROM_TSSI_BOUND_A4_PLUS2 FIELD16(0x00ff)
|
||||
#define EEPROM_TSSI_BOUND_A4_PLUS3 FIELD16(0xff00)
|
||||
|
||||
/*
|
||||
* EEPROM temperature compensation boundaries 802.11A
|
||||
* PLUS4: If the actual TSSI is above this boundary, tx power needs to be
|
||||
* increased by (agc_step * 4)
|
||||
* AGC_STEP: Temperature compensation step.
|
||||
*/
|
||||
#define EEPROM_TSSI_BOUND_A5 0x006e
|
||||
#define EEPROM_TSSI_BOUND_A5_PLUS4 FIELD16(0x00ff)
|
||||
#define EEPROM_TSSI_BOUND_A5_AGC_STEP FIELD16(0xff00)
|
||||
|
||||
/*
|
||||
* EEPROM TXPOWER by rate: tx power per tx rate for HT20 mode
|
||||
*/
|
||||
|
Reference in New Issue
Block a user