diff options
author | Nick Kossifidis <mick@madwifi-project.org> | 2009-03-15 16:20:35 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2009-03-27 20:12:56 -0400 |
commit | 8f655dde240293f3b82313cae91c64ffd7b64c50 (patch) | |
tree | 9e206a5b57c31dfe392ee9cd98348559c25ea784 /drivers/net/wireless/ath5k/ath5k.h | |
parent | 6d5eaafa558783a669bb46c3dba902370e8f0ffc (diff) |
ath5k: Add tx power calibration support
* Add tx power calibration support
* Add a few tx power limits
* Hardcode default power to 12.5dB
* Disable TPC for now
v2: Address Jiri's comments
Signed-off-by: Nick Kossifidis <mickflemm@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/ath5k/ath5k.h')
-rw-r--r-- | drivers/net/wireless/ath5k/ath5k.h | 35 |
1 files changed, 24 insertions, 11 deletions
diff --git a/drivers/net/wireless/ath5k/ath5k.h b/drivers/net/wireless/ath5k/ath5k.h index 0dc2c7321c8b..0b616e72fe05 100644 --- a/drivers/net/wireless/ath5k/ath5k.h +++ b/drivers/net/wireless/ath5k/ath5k.h | |||
@@ -204,9 +204,9 @@ | |||
204 | #define AR5K_TUNE_CWMAX_11B 1023 | 204 | #define AR5K_TUNE_CWMAX_11B 1023 |
205 | #define AR5K_TUNE_CWMAX_XR 7 | 205 | #define AR5K_TUNE_CWMAX_XR 7 |
206 | #define AR5K_TUNE_NOISE_FLOOR -72 | 206 | #define AR5K_TUNE_NOISE_FLOOR -72 |
207 | #define AR5K_TUNE_MAX_TXPOWER 60 | 207 | #define AR5K_TUNE_MAX_TXPOWER 63 |
208 | #define AR5K_TUNE_DEFAULT_TXPOWER 30 | 208 | #define AR5K_TUNE_DEFAULT_TXPOWER 25 |
209 | #define AR5K_TUNE_TPC_TXPOWER true | 209 | #define AR5K_TUNE_TPC_TXPOWER false |
210 | #define AR5K_TUNE_ANT_DIVERSITY true | 210 | #define AR5K_TUNE_ANT_DIVERSITY true |
211 | #define AR5K_TUNE_HWTXTRIES 4 | 211 | #define AR5K_TUNE_HWTXTRIES 4 |
212 | 212 | ||
@@ -551,11 +551,11 @@ enum ath5k_pkt_type { | |||
551 | */ | 551 | */ |
552 | #define AR5K_TXPOWER_OFDM(_r, _v) ( \ | 552 | #define AR5K_TXPOWER_OFDM(_r, _v) ( \ |
553 | ((0 & 1) << ((_v) + 6)) | \ | 553 | ((0 & 1) << ((_v) + 6)) | \ |
554 | (((ah->ah_txpower.txp_rates[(_r)]) & 0x3f) << (_v)) \ | 554 | (((ah->ah_txpower.txp_rates_power_table[(_r)]) & 0x3f) << (_v)) \ |
555 | ) | 555 | ) |
556 | 556 | ||
557 | #define AR5K_TXPOWER_CCK(_r, _v) ( \ | 557 | #define AR5K_TXPOWER_CCK(_r, _v) ( \ |
558 | (ah->ah_txpower.txp_rates[(_r)] & 0x3f) << (_v) \ | 558 | (ah->ah_txpower.txp_rates_power_table[(_r)] & 0x3f) << (_v) \ |
559 | ) | 559 | ) |
560 | 560 | ||
561 | /* | 561 | /* |
@@ -1085,13 +1085,25 @@ struct ath5k_hw { | |||
1085 | struct ath5k_gain ah_gain; | 1085 | struct ath5k_gain ah_gain; |
1086 | u8 ah_offset[AR5K_MAX_RF_BANKS]; | 1086 | u8 ah_offset[AR5K_MAX_RF_BANKS]; |
1087 | 1087 | ||
1088 | |||
1088 | struct { | 1089 | struct { |
1089 | u16 txp_pcdac[AR5K_EEPROM_POWER_TABLE_SIZE]; | 1090 | /* Temporary tables used for interpolation */ |
1090 | u16 txp_rates[AR5K_MAX_RATES]; | 1091 | u8 tmpL[AR5K_EEPROM_N_PD_GAINS] |
1091 | s16 txp_min; | 1092 | [AR5K_EEPROM_POWER_TABLE_SIZE]; |
1092 | s16 txp_max; | 1093 | u8 tmpR[AR5K_EEPROM_N_PD_GAINS] |
1094 | [AR5K_EEPROM_POWER_TABLE_SIZE]; | ||
1095 | u8 txp_pd_table[AR5K_EEPROM_POWER_TABLE_SIZE * 2]; | ||
1096 | u16 txp_rates_power_table[AR5K_MAX_RATES]; | ||
1097 | u8 txp_min_idx; | ||
1093 | bool txp_tpc; | 1098 | bool txp_tpc; |
1099 | /* Values in 0.25dB units */ | ||
1100 | s16 txp_min_pwr; | ||
1101 | s16 txp_max_pwr; | ||
1102 | s16 txp_offset; | ||
1094 | s16 txp_ofdm; | 1103 | s16 txp_ofdm; |
1104 | /* Values in dB units */ | ||
1105 | s16 txp_cck_ofdm_pwr_delta; | ||
1106 | s16 txp_cck_ofdm_gainf_delta; | ||
1095 | } ah_txpower; | 1107 | } ah_txpower; |
1096 | 1108 | ||
1097 | struct { | 1109 | struct { |
@@ -1161,6 +1173,7 @@ extern void ath5k_hw_update_mib_counters(struct ath5k_hw *ah, struct ieee80211_l | |||
1161 | 1173 | ||
1162 | /* EEPROM access functions */ | 1174 | /* EEPROM access functions */ |
1163 | extern int ath5k_eeprom_init(struct ath5k_hw *ah); | 1175 | extern int ath5k_eeprom_init(struct ath5k_hw *ah); |
1176 | extern void ath5k_eeprom_detach(struct ath5k_hw *ah); | ||
1164 | extern int ath5k_eeprom_read_mac(struct ath5k_hw *ah, u8 *mac); | 1177 | extern int ath5k_eeprom_read_mac(struct ath5k_hw *ah, u8 *mac); |
1165 | extern bool ath5k_eeprom_is_hb63(struct ath5k_hw *ah); | 1178 | extern bool ath5k_eeprom_is_hb63(struct ath5k_hw *ah); |
1166 | 1179 | ||
@@ -1256,8 +1269,8 @@ extern void ath5k_hw_set_def_antenna(struct ath5k_hw *ah, unsigned int ant); | |||
1256 | extern unsigned int ath5k_hw_get_def_antenna(struct ath5k_hw *ah); | 1269 | extern unsigned int ath5k_hw_get_def_antenna(struct ath5k_hw *ah); |
1257 | extern int ath5k_hw_phy_disable(struct ath5k_hw *ah); | 1270 | extern int ath5k_hw_phy_disable(struct ath5k_hw *ah); |
1258 | /* TX power setup */ | 1271 | /* TX power setup */ |
1259 | extern int ath5k_hw_txpower(struct ath5k_hw *ah, struct ieee80211_channel *channel, unsigned int txpower); | 1272 | extern int ath5k_hw_txpower(struct ath5k_hw *ah, struct ieee80211_channel *channel, u8 ee_mode, u8 txpower); |
1260 | extern int ath5k_hw_set_txpower_limit(struct ath5k_hw *ah, unsigned int power); | 1273 | extern int ath5k_hw_set_txpower_limit(struct ath5k_hw *ah, u8 ee_mode, u8 txpower); |
1261 | 1274 | ||
1262 | /* | 1275 | /* |
1263 | * Functions used internaly | 1276 | * Functions used internaly |