diff options
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-5000.c | 13 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-eeprom.h | 1 |
2 files changed, 13 insertions, 1 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-5000.c b/drivers/net/wireless/iwlwifi/iwl-5000.c index c1e7a4264086..26e04eccaa85 100644 --- a/drivers/net/wireless/iwlwifi/iwl-5000.c +++ b/drivers/net/wireless/iwlwifi/iwl-5000.c | |||
@@ -426,6 +426,17 @@ static const u8 *iwl5000_eeprom_query_addr(const struct iwl_priv *priv, | |||
426 | return &priv->eeprom[address]; | 426 | return &priv->eeprom[address]; |
427 | } | 427 | } |
428 | 428 | ||
429 | static s32 iwl5150_get_ct_threshold(struct iwl_priv *priv) | ||
430 | { | ||
431 | const s32 volt2temp_coef = -5; | ||
432 | u16 *temp_calib = (u16 *)iwl_eeprom_query_addr(priv, | ||
433 | EEPROM_5000_TEMPERATURE); | ||
434 | /* offset = temperate - voltage / coef */ | ||
435 | s32 offset = temp_calib[0] - temp_calib[1] / volt2temp_coef; | ||
436 | s32 threshold = (s32)CELSIUS_TO_KELVIN(CT_KILL_THRESHOLD) - offset; | ||
437 | return threshold * volt2temp_coef; | ||
438 | } | ||
439 | |||
429 | /* | 440 | /* |
430 | * Calibration | 441 | * Calibration |
431 | */ | 442 | */ |
@@ -859,7 +870,7 @@ static int iwl5000_hw_set_hw_params(struct iwl_priv *priv) | |||
859 | case CSR_HW_REV_TYPE_5150: | 870 | case CSR_HW_REV_TYPE_5150: |
860 | /* 5150 wants in Kelvin */ | 871 | /* 5150 wants in Kelvin */ |
861 | priv->hw_params.ct_kill_threshold = | 872 | priv->hw_params.ct_kill_threshold = |
862 | CELSIUS_TO_KELVIN(CT_KILL_THRESHOLD); | 873 | iwl5150_get_ct_threshold(priv); |
863 | break; | 874 | break; |
864 | } | 875 | } |
865 | 876 | ||
diff --git a/drivers/net/wireless/iwlwifi/iwl-eeprom.h b/drivers/net/wireless/iwlwifi/iwl-eeprom.h index 997f23c8db2e..8f6b05fa2330 100644 --- a/drivers/net/wireless/iwlwifi/iwl-eeprom.h +++ b/drivers/net/wireless/iwlwifi/iwl-eeprom.h | |||
@@ -147,6 +147,7 @@ struct iwl_eeprom_channel { | |||
147 | /*5000 calibrations */ | 147 | /*5000 calibrations */ |
148 | #define EEPROM_5000_CALIB_ALL (INDIRECT_ADDRESS | INDIRECT_CALIBRATION) | 148 | #define EEPROM_5000_CALIB_ALL (INDIRECT_ADDRESS | INDIRECT_CALIBRATION) |
149 | #define EEPROM_5000_XTAL ((2*0x128) | EEPROM_5000_CALIB_ALL) | 149 | #define EEPROM_5000_XTAL ((2*0x128) | EEPROM_5000_CALIB_ALL) |
150 | #define EEPROM_5000_TEMPERATURE ((2*0x12A) | EEPROM_5000_CALIB_ALL) | ||
150 | 151 | ||
151 | /* 5000 links */ | 152 | /* 5000 links */ |
152 | #define EEPROM_5000_LINK_HOST (2*0x64) | 153 | #define EEPROM_5000_LINK_HOST (2*0x64) |