aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/iwlwifi/iwl-agn.c
diff options
context:
space:
mode:
authorWey-Yi Guy <wey-yi.w.guy@intel.com>2010-07-31 11:34:07 -0400
committerJohn W. Linville <linville@tuxdriver.com>2010-08-24 16:28:07 -0400
commit0975cc8fbf5b61b188734f2edd9e588c7edff2a1 (patch)
tree9ea25bdc70467af87ba49c2a55128cc999647046 /drivers/net/wireless/iwlwifi/iwl-agn.c
parent36d344131c154c0fb7dd6a3703fc1b29c56a75a1 (diff)
iwlwifi: separate thermal throttling function
"Thermal Throttling" is an advance feature which only available for newer _agn devices. Move from iwl-core to iwl-agn for better code organization. Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/iwlwifi/iwl-agn.c')
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-agn.c46
1 files changed, 46 insertions, 0 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn.c b/drivers/net/wireless/iwlwifi/iwl-agn.c
index 21a52ae05c0d..bce77eeb31c0 100644
--- a/drivers/net/wireless/iwlwifi/iwl-agn.c
+++ b/drivers/net/wireless/iwlwifi/iwl-agn.c
@@ -2592,6 +2592,52 @@ int iwl_dump_nic_event_log(struct iwl_priv *priv, bool full_log,
2592 return pos; 2592 return pos;
2593} 2593}
2594 2594
2595static void iwl_rf_kill_ct_config(struct iwl_priv *priv)
2596{
2597 struct iwl_ct_kill_config cmd;
2598 struct iwl_ct_kill_throttling_config adv_cmd;
2599 unsigned long flags;
2600 int ret = 0;
2601
2602 spin_lock_irqsave(&priv->lock, flags);
2603 iwl_write32(priv, CSR_UCODE_DRV_GP1_CLR,
2604 CSR_UCODE_DRV_GP1_REG_BIT_CT_KILL_EXIT);
2605 spin_unlock_irqrestore(&priv->lock, flags);
2606 priv->thermal_throttle.ct_kill_toggle = false;
2607
2608 if (priv->cfg->support_ct_kill_exit) {
2609 adv_cmd.critical_temperature_enter =
2610 cpu_to_le32(priv->hw_params.ct_kill_threshold);
2611 adv_cmd.critical_temperature_exit =
2612 cpu_to_le32(priv->hw_params.ct_kill_exit_threshold);
2613
2614 ret = iwl_send_cmd_pdu(priv, REPLY_CT_KILL_CONFIG_CMD,
2615 sizeof(adv_cmd), &adv_cmd);
2616 if (ret)
2617 IWL_ERR(priv, "REPLY_CT_KILL_CONFIG_CMD failed\n");
2618 else
2619 IWL_DEBUG_INFO(priv, "REPLY_CT_KILL_CONFIG_CMD "
2620 "succeeded, "
2621 "critical temperature enter is %d,"
2622 "exit is %d\n",
2623 priv->hw_params.ct_kill_threshold,
2624 priv->hw_params.ct_kill_exit_threshold);
2625 } else {
2626 cmd.critical_temperature_R =
2627 cpu_to_le32(priv->hw_params.ct_kill_threshold);
2628
2629 ret = iwl_send_cmd_pdu(priv, REPLY_CT_KILL_CONFIG_CMD,
2630 sizeof(cmd), &cmd);
2631 if (ret)
2632 IWL_ERR(priv, "REPLY_CT_KILL_CONFIG_CMD failed\n");
2633 else
2634 IWL_DEBUG_INFO(priv, "REPLY_CT_KILL_CONFIG_CMD "
2635 "succeeded, "
2636 "critical temperature is %d\n",
2637 priv->hw_params.ct_kill_threshold);
2638 }
2639}
2640
2595/** 2641/**
2596 * iwl_alive_start - called after REPLY_ALIVE notification received 2642 * iwl_alive_start - called after REPLY_ALIVE notification received
2597 * from protocol/runtime uCode (initialization uCode's 2643 * from protocol/runtime uCode (initialization uCode's