aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/iwlwifi/iwl-1000.c
diff options
context:
space:
mode:
authorWey-Yi Guy <wey-yi.w.guy@intel.com>2009-07-24 14:13:01 -0400
committerJohn W. Linville <linville@tuxdriver.com>2009-07-27 15:24:20 -0400
commit672639de13c4db92ed6a47e68043a4317e219902 (patch)
tree68159ff1d3e182780cb62aa4f69725287e417474 /drivers/net/wireless/iwlwifi/iwl-1000.c
parente3139fe741b25a0f8a27fd2cdf2ad11734c3d4d3 (diff)
iwlwifi: critical temperature enter/exit condition
If advance thermal throttling is used the driver need to pass both "enter" and "exit" temperature to uCode. Using different critical temperature threshold for legacy and advance thermal throttling management based on the type of thermal throttling method is used except 1000. For 1000, it use advance thermal throttling critical temperature threshold, but with legacy thermal management implementation until ucode has the necessary implementations in place. Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com> Signed-off-by: Reinette Chatre <reinette.chatre@intel.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/iwlwifi/iwl-1000.c')
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-1000.c76
1 files changed, 75 insertions, 1 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-1000.c b/drivers/net/wireless/iwlwifi/iwl-1000.c
index a899be914ebf..80a28184a373 100644
--- a/drivers/net/wireless/iwlwifi/iwl-1000.c
+++ b/drivers/net/wireless/iwlwifi/iwl-1000.c
@@ -55,13 +55,87 @@
55#define _IWL1000_MODULE_FIRMWARE(api) IWL1000_FW_PRE #api ".ucode" 55#define _IWL1000_MODULE_FIRMWARE(api) IWL1000_FW_PRE #api ".ucode"
56#define IWL1000_MODULE_FIRMWARE(api) _IWL1000_MODULE_FIRMWARE(api) 56#define IWL1000_MODULE_FIRMWARE(api) _IWL1000_MODULE_FIRMWARE(api)
57 57
58
59/*
60 * For 1000, use advance thermal throttling critical temperature threshold,
61 * but legacy thermal management implementation for now.
62 * This is for the reason of 1000 uCode using advance thermal throttling API
63 * but not implement ct_kill_exit based on ct_kill exit temperature
64 * so the thermal throttling will still based on legacy thermal throttling
65 * management.
66 * The code here need to be modified once 1000 uCode has the advanced thermal
67 * throttling algorithm in place
68 */
69static void iwl1000_set_ct_threshold(struct iwl_priv *priv)
70{
71 /* want Celsius */
72 priv->hw_params.ct_kill_threshold = CT_KILL_THRESHOLD_LEGACY;
73 priv->hw_params.ct_kill_exit_threshold = CT_KILL_EXIT_THRESHOLD;
74}
75
76static struct iwl_lib_ops iwl1000_lib = {
77 .set_hw_params = iwl5000_hw_set_hw_params,
78 .txq_update_byte_cnt_tbl = iwl5000_txq_update_byte_cnt_tbl,
79 .txq_inval_byte_cnt_tbl = iwl5000_txq_inval_byte_cnt_tbl,
80 .txq_set_sched = iwl5000_txq_set_sched,
81 .txq_agg_enable = iwl5000_txq_agg_enable,
82 .txq_agg_disable = iwl5000_txq_agg_disable,
83 .txq_attach_buf_to_tfd = iwl_hw_txq_attach_buf_to_tfd,
84 .txq_free_tfd = iwl_hw_txq_free_tfd,
85 .txq_init = iwl_hw_tx_queue_init,
86 .rx_handler_setup = iwl5000_rx_handler_setup,
87 .setup_deferred_work = iwl5000_setup_deferred_work,
88 .is_valid_rtc_data_addr = iwl5000_hw_valid_rtc_data_addr,
89 .load_ucode = iwl5000_load_ucode,
90 .init_alive_start = iwl5000_init_alive_start,
91 .alive_notify = iwl5000_alive_notify,
92 .send_tx_power = iwl5000_send_tx_power,
93 .update_chain_flags = iwl_update_chain_flags,
94 .apm_ops = {
95 .init = iwl5000_apm_init,
96 .reset = iwl5000_apm_reset,
97 .stop = iwl5000_apm_stop,
98 .config = iwl5000_nic_config,
99 .set_pwr_src = iwl_set_pwr_src,
100 },
101 .eeprom_ops = {
102 .regulatory_bands = {
103 EEPROM_5000_REG_BAND_1_CHANNELS,
104 EEPROM_5000_REG_BAND_2_CHANNELS,
105 EEPROM_5000_REG_BAND_3_CHANNELS,
106 EEPROM_5000_REG_BAND_4_CHANNELS,
107 EEPROM_5000_REG_BAND_5_CHANNELS,
108 EEPROM_5000_REG_BAND_24_FAT_CHANNELS,
109 EEPROM_5000_REG_BAND_52_FAT_CHANNELS
110 },
111 .verify_signature = iwlcore_eeprom_verify_signature,
112 .acquire_semaphore = iwlcore_eeprom_acquire_semaphore,
113 .release_semaphore = iwlcore_eeprom_release_semaphore,
114 .calib_version = iwl5000_eeprom_calib_version,
115 .query_addr = iwl5000_eeprom_query_addr,
116 },
117 .post_associate = iwl_post_associate,
118 .isr = iwl_isr_ict,
119 .config_ap = iwl_config_ap,
120 .temp_ops = {
121 .temperature = iwl5000_temperature,
122 .set_ct_kill = iwl1000_set_ct_threshold,
123 },
124};
125
126static struct iwl_ops iwl1000_ops = {
127 .lib = &iwl1000_lib,
128 .hcmd = &iwl5000_hcmd,
129 .utils = &iwl5000_hcmd_utils,
130};
131
58struct iwl_cfg iwl1000_bgn_cfg = { 132struct iwl_cfg iwl1000_bgn_cfg = {
59 .name = "1000 Series BGN", 133 .name = "1000 Series BGN",
60 .fw_name_pre = IWL1000_FW_PRE, 134 .fw_name_pre = IWL1000_FW_PRE,
61 .ucode_api_max = IWL1000_UCODE_API_MAX, 135 .ucode_api_max = IWL1000_UCODE_API_MAX,
62 .ucode_api_min = IWL1000_UCODE_API_MIN, 136 .ucode_api_min = IWL1000_UCODE_API_MIN,
63 .sku = IWL_SKU_G|IWL_SKU_N, 137 .sku = IWL_SKU_G|IWL_SKU_N,
64 .ops = &iwl5000_ops, 138 .ops = &iwl1000_ops,
65 .eeprom_size = IWL_5000_EEPROM_IMG_SIZE, 139 .eeprom_size = IWL_5000_EEPROM_IMG_SIZE,
66 .eeprom_ver = EEPROM_5000_EEPROM_VERSION, 140 .eeprom_ver = EEPROM_5000_EEPROM_VERSION,
67 .eeprom_calib_ver = EEPROM_5000_TX_POWER_VERSION, 141 .eeprom_calib_ver = EEPROM_5000_TX_POWER_VERSION,