Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 339afc89 authored by Tomas Winkler's avatar Tomas Winkler Committed by John W. Linville
Browse files

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: default avatarTomas Winkler <tomas.winkler@intel.com>
Signed-off-by: default avatarReinette Chatre <reinette.chatre@intel.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent 819500c5
Loading
Loading
Loading
Loading
+12 −1
Original line number Diff line number Diff line
@@ -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;
	}

+1 −0
Original line number Diff line number Diff line
@@ -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)