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
  */
        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;
        }
 
 
 /*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)