iwlwifi: 5150 compute ct kill threshold
This patch adds computation of ct kill threshold for 5150. Threshold is computed from calibration data in the EEPROM. Signed-off-by: Tomas Winkler <tomas.winkler@intel.com> Signed-off-by: Reinette Chatre <reinette.chatre@intel.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
Родитель
819500c589
Коммит
339afc893d
|
@ -426,6 +426,17 @@ static const u8 *iwl5000_eeprom_query_addr(const struct iwl_priv *priv,
|
|||
return &priv->eeprom[address];
|
||||
}
|
||||
|
||||
static s32 iwl5150_get_ct_threshold(struct iwl_priv *priv)
|
||||
{
|
||||
const s32 volt2temp_coef = -5;
|
||||
u16 *temp_calib = (u16 *)iwl_eeprom_query_addr(priv,
|
||||
EEPROM_5000_TEMPERATURE);
|
||||
/* offset = temperate - voltage / coef */
|
||||
s32 offset = temp_calib[0] - temp_calib[1] / volt2temp_coef;
|
||||
s32 threshold = (s32)CELSIUS_TO_KELVIN(CT_KILL_THRESHOLD) - offset;
|
||||
return threshold * volt2temp_coef;
|
||||
}
|
||||
|
||||
/*
|
||||
* Calibration
|
||||
*/
|
||||
|
@ -859,7 +870,7 @@ static int iwl5000_hw_set_hw_params(struct iwl_priv *priv)
|
|||
case CSR_HW_REV_TYPE_5150:
|
||||
/* 5150 wants in Kelvin */
|
||||
priv->hw_params.ct_kill_threshold =
|
||||
CELSIUS_TO_KELVIN(CT_KILL_THRESHOLD);
|
||||
iwl5150_get_ct_threshold(priv);
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
|
@ -147,6 +147,7 @@ struct iwl_eeprom_channel {
|
|||
/*5000 calibrations */
|
||||
#define EEPROM_5000_CALIB_ALL (INDIRECT_ADDRESS | INDIRECT_CALIBRATION)
|
||||
#define EEPROM_5000_XTAL ((2*0x128) | EEPROM_5000_CALIB_ALL)
|
||||
#define EEPROM_5000_TEMPERATURE ((2*0x12A) | EEPROM_5000_CALIB_ALL)
|
||||
|
||||
/* 5000 links */
|
||||
#define EEPROM_5000_LINK_HOST (2*0x64)
|
||||
|
|
Загрузка…
Ссылка в новой задаче