diff options
author | Wey-Yi Guy <wey-yi.w.guy@intel.com> | 2009-07-24 14:13:01 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2009-07-27 15:24:20 -0400 |
commit | 672639de13c4db92ed6a47e68043a4317e219902 (patch) | |
tree | 68159ff1d3e182780cb62aa4f69725287e417474 /drivers/net/wireless/iwlwifi/iwl-6000.c | |
parent | e3139fe741b25a0f8a27fd2cdf2ad11734c3d4d3 (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-6000.c')
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-6000.c | 59 |
1 files changed, 58 insertions, 1 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-6000.c b/drivers/net/wireless/iwlwifi/iwl-6000.c index 26c5d4a60d17..59ff73536f3a 100644 --- a/drivers/net/wireless/iwlwifi/iwl-6000.c +++ b/drivers/net/wireless/iwlwifi/iwl-6000.c | |||
@@ -61,6 +61,63 @@ | |||
61 | #define _IWL6050_MODULE_FIRMWARE(api) IWL6050_FW_PRE #api ".ucode" | 61 | #define _IWL6050_MODULE_FIRMWARE(api) IWL6050_FW_PRE #api ".ucode" |
62 | #define IWL6050_MODULE_FIRMWARE(api) _IWL6050_MODULE_FIRMWARE(api) | 62 | #define IWL6050_MODULE_FIRMWARE(api) _IWL6050_MODULE_FIRMWARE(api) |
63 | 63 | ||
64 | static void iwl6000_set_ct_threshold(struct iwl_priv *priv) | ||
65 | { | ||
66 | /* want Celsius */ | ||
67 | priv->hw_params.ct_kill_threshold = CT_KILL_THRESHOLD; | ||
68 | priv->hw_params.ct_kill_exit_threshold = CT_KILL_EXIT_THRESHOLD; | ||
69 | } | ||
70 | |||
71 | static struct iwl_lib_ops iwl6000_lib = { | ||
72 | .set_hw_params = iwl5000_hw_set_hw_params, | ||
73 | .txq_update_byte_cnt_tbl = iwl5000_txq_update_byte_cnt_tbl, | ||
74 | .txq_inval_byte_cnt_tbl = iwl5000_txq_inval_byte_cnt_tbl, | ||
75 | .txq_set_sched = iwl5000_txq_set_sched, | ||
76 | .txq_agg_enable = iwl5000_txq_agg_enable, | ||
77 | .txq_agg_disable = iwl5000_txq_agg_disable, | ||
78 | .txq_attach_buf_to_tfd = iwl_hw_txq_attach_buf_to_tfd, | ||
79 | .txq_free_tfd = iwl_hw_txq_free_tfd, | ||
80 | .txq_init = iwl_hw_tx_queue_init, | ||
81 | .rx_handler_setup = iwl5000_rx_handler_setup, | ||
82 | .setup_deferred_work = iwl5000_setup_deferred_work, | ||
83 | .is_valid_rtc_data_addr = iwl5000_hw_valid_rtc_data_addr, | ||
84 | .load_ucode = iwl5000_load_ucode, | ||
85 | .init_alive_start = iwl5000_init_alive_start, | ||
86 | .alive_notify = iwl5000_alive_notify, | ||
87 | .send_tx_power = iwl5000_send_tx_power, | ||
88 | .update_chain_flags = iwl_update_chain_flags, | ||
89 | .apm_ops = { | ||
90 | .init = iwl5000_apm_init, | ||
91 | .reset = iwl5000_apm_reset, | ||
92 | .stop = iwl5000_apm_stop, | ||
93 | .config = iwl5000_nic_config, | ||
94 | .set_pwr_src = iwl_set_pwr_src, | ||
95 | }, | ||
96 | .eeprom_ops = { | ||
97 | .regulatory_bands = { | ||
98 | EEPROM_5000_REG_BAND_1_CHANNELS, | ||
99 | EEPROM_5000_REG_BAND_2_CHANNELS, | ||
100 | EEPROM_5000_REG_BAND_3_CHANNELS, | ||
101 | EEPROM_5000_REG_BAND_4_CHANNELS, | ||
102 | EEPROM_5000_REG_BAND_5_CHANNELS, | ||
103 | EEPROM_5000_REG_BAND_24_FAT_CHANNELS, | ||
104 | EEPROM_5000_REG_BAND_52_FAT_CHANNELS | ||
105 | }, | ||
106 | .verify_signature = iwlcore_eeprom_verify_signature, | ||
107 | .acquire_semaphore = iwlcore_eeprom_acquire_semaphore, | ||
108 | .release_semaphore = iwlcore_eeprom_release_semaphore, | ||
109 | .calib_version = iwl5000_eeprom_calib_version, | ||
110 | .query_addr = iwl5000_eeprom_query_addr, | ||
111 | }, | ||
112 | .post_associate = iwl_post_associate, | ||
113 | .isr = iwl_isr_ict, | ||
114 | .config_ap = iwl_config_ap, | ||
115 | .temp_ops = { | ||
116 | .temperature = iwl5000_temperature, | ||
117 | .set_ct_kill = iwl6000_set_ct_threshold, | ||
118 | }, | ||
119 | }; | ||
120 | |||
64 | static struct iwl_hcmd_utils_ops iwl6000_hcmd_utils = { | 121 | static struct iwl_hcmd_utils_ops iwl6000_hcmd_utils = { |
65 | .get_hcmd_size = iwl5000_get_hcmd_size, | 122 | .get_hcmd_size = iwl5000_get_hcmd_size, |
66 | .build_addsta_hcmd = iwl5000_build_addsta_hcmd, | 123 | .build_addsta_hcmd = iwl5000_build_addsta_hcmd, |
@@ -70,7 +127,7 @@ static struct iwl_hcmd_utils_ops iwl6000_hcmd_utils = { | |||
70 | 127 | ||
71 | static struct iwl_ops iwl6000_ops = { | 128 | static struct iwl_ops iwl6000_ops = { |
72 | .ucode = &iwl5000_ucode, | 129 | .ucode = &iwl5000_ucode, |
73 | .lib = &iwl5000_lib, | 130 | .lib = &iwl6000_lib, |
74 | .hcmd = &iwl5000_hcmd, | 131 | .hcmd = &iwl5000_hcmd, |
75 | .utils = &iwl6000_hcmd_utils, | 132 | .utils = &iwl6000_hcmd_utils, |
76 | }; | 133 | }; |