|
@@ -70,7 +70,7 @@
|
|
static void iwl_mvm_enter_ctkill(struct iwl_mvm *mvm)
|
|
static void iwl_mvm_enter_ctkill(struct iwl_mvm *mvm)
|
|
{
|
|
{
|
|
struct iwl_mvm_tt_mgmt *tt = &mvm->thermal_throttle;
|
|
struct iwl_mvm_tt_mgmt *tt = &mvm->thermal_throttle;
|
|
- u32 duration = mvm->thermal_throttle.params->ct_kill_duration;
|
|
|
|
|
|
+ u32 duration = tt->params.ct_kill_duration;
|
|
|
|
|
|
if (test_bit(IWL_MVM_STATUS_HW_CTKILL, &mvm->status))
|
|
if (test_bit(IWL_MVM_STATUS_HW_CTKILL, &mvm->status))
|
|
return;
|
|
return;
|
|
@@ -223,7 +223,7 @@ static void check_exit_ctkill(struct work_struct *work)
|
|
tt = container_of(work, struct iwl_mvm_tt_mgmt, ct_kill_exit.work);
|
|
tt = container_of(work, struct iwl_mvm_tt_mgmt, ct_kill_exit.work);
|
|
mvm = container_of(tt, struct iwl_mvm, thermal_throttle);
|
|
mvm = container_of(tt, struct iwl_mvm, thermal_throttle);
|
|
|
|
|
|
- duration = tt->params->ct_kill_duration;
|
|
|
|
|
|
+ duration = tt->params.ct_kill_duration;
|
|
|
|
|
|
mutex_lock(&mvm->mutex);
|
|
mutex_lock(&mvm->mutex);
|
|
|
|
|
|
@@ -247,7 +247,7 @@ static void check_exit_ctkill(struct work_struct *work)
|
|
|
|
|
|
IWL_DEBUG_TEMP(mvm, "NIC temperature: %d\n", temp);
|
|
IWL_DEBUG_TEMP(mvm, "NIC temperature: %d\n", temp);
|
|
|
|
|
|
- if (temp <= tt->params->ct_kill_exit) {
|
|
|
|
|
|
+ if (temp <= tt->params.ct_kill_exit) {
|
|
mutex_unlock(&mvm->mutex);
|
|
mutex_unlock(&mvm->mutex);
|
|
iwl_mvm_exit_ctkill(mvm);
|
|
iwl_mvm_exit_ctkill(mvm);
|
|
return;
|
|
return;
|
|
@@ -325,7 +325,7 @@ void iwl_mvm_tt_tx_backoff(struct iwl_mvm *mvm, u32 backoff)
|
|
|
|
|
|
void iwl_mvm_tt_handler(struct iwl_mvm *mvm)
|
|
void iwl_mvm_tt_handler(struct iwl_mvm *mvm)
|
|
{
|
|
{
|
|
- const struct iwl_tt_params *params = mvm->thermal_throttle.params;
|
|
|
|
|
|
+ struct iwl_tt_params *params = &mvm->thermal_throttle.params;
|
|
struct iwl_mvm_tt_mgmt *tt = &mvm->thermal_throttle;
|
|
struct iwl_mvm_tt_mgmt *tt = &mvm->thermal_throttle;
|
|
s32 temperature = mvm->temperature;
|
|
s32 temperature = mvm->temperature;
|
|
bool throttle_enable = false;
|
|
bool throttle_enable = false;
|
|
@@ -340,7 +340,7 @@ void iwl_mvm_tt_handler(struct iwl_mvm *mvm)
|
|
}
|
|
}
|
|
|
|
|
|
if (params->support_ct_kill &&
|
|
if (params->support_ct_kill &&
|
|
- temperature <= tt->params->ct_kill_exit) {
|
|
|
|
|
|
+ temperature <= params->ct_kill_exit) {
|
|
iwl_mvm_exit_ctkill(mvm);
|
|
iwl_mvm_exit_ctkill(mvm);
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
@@ -400,7 +400,7 @@ void iwl_mvm_tt_handler(struct iwl_mvm *mvm)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
-static const struct iwl_tt_params iwl7000_tt_params = {
|
|
|
|
|
|
+static const struct iwl_tt_params iwl_mvm_default_tt_params = {
|
|
.ct_kill_entry = 118,
|
|
.ct_kill_entry = 118,
|
|
.ct_kill_exit = 96,
|
|
.ct_kill_exit = 96,
|
|
.ct_kill_duration = 5,
|
|
.ct_kill_duration = 5,
|
|
@@ -422,38 +422,16 @@ static const struct iwl_tt_params iwl7000_tt_params = {
|
|
.support_tx_backoff = true,
|
|
.support_tx_backoff = true,
|
|
};
|
|
};
|
|
|
|
|
|
-static const struct iwl_tt_params iwl7000_high_temp_tt_params = {
|
|
|
|
- .ct_kill_entry = 118,
|
|
|
|
- .ct_kill_exit = 96,
|
|
|
|
- .ct_kill_duration = 5,
|
|
|
|
- .dynamic_smps_entry = 114,
|
|
|
|
- .dynamic_smps_exit = 110,
|
|
|
|
- .tx_protection_entry = 114,
|
|
|
|
- .tx_protection_exit = 108,
|
|
|
|
- .tx_backoff = {
|
|
|
|
- {.temperature = 112, .backoff = 300},
|
|
|
|
- {.temperature = 113, .backoff = 800},
|
|
|
|
- {.temperature = 114, .backoff = 1500},
|
|
|
|
- {.temperature = 115, .backoff = 3000},
|
|
|
|
- {.temperature = 116, .backoff = 5000},
|
|
|
|
- {.temperature = 117, .backoff = 10000},
|
|
|
|
- },
|
|
|
|
- .support_ct_kill = true,
|
|
|
|
- .support_dynamic_smps = true,
|
|
|
|
- .support_tx_protection = true,
|
|
|
|
- .support_tx_backoff = true,
|
|
|
|
-};
|
|
|
|
-
|
|
|
|
void iwl_mvm_tt_initialize(struct iwl_mvm *mvm, u32 min_backoff)
|
|
void iwl_mvm_tt_initialize(struct iwl_mvm *mvm, u32 min_backoff)
|
|
{
|
|
{
|
|
struct iwl_mvm_tt_mgmt *tt = &mvm->thermal_throttle;
|
|
struct iwl_mvm_tt_mgmt *tt = &mvm->thermal_throttle;
|
|
|
|
|
|
IWL_DEBUG_TEMP(mvm, "Initialize Thermal Throttling\n");
|
|
IWL_DEBUG_TEMP(mvm, "Initialize Thermal Throttling\n");
|
|
|
|
|
|
- if (mvm->cfg->high_temp)
|
|
|
|
- tt->params = &iwl7000_high_temp_tt_params;
|
|
|
|
|
|
+ if (mvm->cfg->thermal_params)
|
|
|
|
+ tt->params = *mvm->cfg->thermal_params;
|
|
else
|
|
else
|
|
- tt->params = &iwl7000_tt_params;
|
|
|
|
|
|
+ tt->params = iwl_mvm_default_tt_params;
|
|
|
|
|
|
tt->throttle = false;
|
|
tt->throttle = false;
|
|
tt->dynamic_smps = false;
|
|
tt->dynamic_smps = false;
|