~ubuntu-branches/debian/wheezy/linux-2.6/wheezy

« back to all changes in this revision

Viewing changes to drivers/net/wireless/iwlwifi/iwl-power.h

  • Committer: Bazaar Package Importer
  • Author(s): Ben Hutchings, Ben Hutchings, Aurelien Jarno, Martin Michlmayr
  • Date: 2011-04-06 13:53:30 UTC
  • mfrom: (43.1.5 sid)
  • Revision ID: james.westby@ubuntu.com-20110406135330-wjufxhd0tvn3zx4z
Tags: 2.6.38-3
[ Ben Hutchings ]
* [ppc64] Add to linux-tools package architectures (Closes: #620124)
* [amd64] Save cr4 to mmu_cr4_features at boot time (Closes: #620284)
* appletalk: Fix bugs introduced when removing use of BKL
* ALSA: Fix yet another race in disconnection
* cciss: Fix lost command issue
* ath9k: Fix kernel panic in AR2427
* ses: Avoid kernel panic when lun 0 is not mapped
* PCI/ACPI: Report ASPM support to BIOS if not disabled from command line

[ Aurelien Jarno ]
* rtlwifi: fix build when PCI is not enabled.

[ Martin Michlmayr ]
* rtlwifi: Eliminate udelay calls with too large values (Closes: #620204)

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
/******************************************************************************
2
2
 *
3
 
 * Copyright(c) 2007 - 2009 Intel Corporation. All rights reserved.
 
3
 * Copyright(c) 2007 - 2010 Intel Corporation. All rights reserved.
4
4
 *
5
5
 * Portions of this file are derived from the ipw3945 project, as well
6
6
 * as portions of the ieee80211 subsystem header files.
30
30
 
31
31
#include "iwl-commands.h"
32
32
 
33
 
#define IWL_ABSOLUTE_ZERO               0
34
 
#define IWL_ABSOLUTE_MAX                0xFFFFFFFF
35
 
#define IWL_TT_INCREASE_MARGIN  5
36
 
 
37
 
enum iwl_antenna_ok {
38
 
        IWL_ANT_OK_NONE,
39
 
        IWL_ANT_OK_SINGLE,
40
 
        IWL_ANT_OK_MULTI,
41
 
};
42
 
 
43
 
/* Thermal Throttling State Machine states */
44
 
enum  iwl_tt_state {
45
 
        IWL_TI_0,       /* normal temperature, system power state */
46
 
        IWL_TI_1,       /* high temperature detect, low power state */
47
 
        IWL_TI_2,       /* higher temperature detected, lower power state */
48
 
        IWL_TI_CT_KILL, /* critical temperature detected, lowest power state */
49
 
        IWL_TI_STATE_MAX
50
 
};
51
 
 
52
 
/**
53
 
 * struct iwl_tt_restriction - Thermal Throttling restriction table
54
 
 * @tx_stream: number of tx stream allowed
55
 
 * @is_ht: ht enable/disable
56
 
 * @rx_stream: number of rx stream allowed
57
 
 *
58
 
 * This table is used by advance thermal throttling management
59
 
 * based on the current thermal throttling state, and determines
60
 
 * the number of tx/rx streams and the status of HT operation.
61
 
 */
62
 
struct iwl_tt_restriction {
63
 
        enum iwl_antenna_ok tx_stream;
64
 
        enum iwl_antenna_ok rx_stream;
65
 
        bool is_ht;
66
 
};
67
 
 
68
 
/**
69
 
 * struct iwl_tt_trans - Thermal Throttling transaction table
70
 
 * @next_state:  next thermal throttling mode
71
 
 * @tt_low: low temperature threshold to change state
72
 
 * @tt_high: high temperature threshold to change state
73
 
 *
74
 
 * This is used by the advanced thermal throttling algorithm
75
 
 * to determine the next thermal state to go based on the
76
 
 * current temperature.
77
 
 */
78
 
struct iwl_tt_trans {
79
 
        enum iwl_tt_state next_state;
80
 
        u32 tt_low;
81
 
        u32 tt_high;
82
 
};
83
 
 
84
 
/**
85
 
 * struct iwl_tt_mgnt - Thermal Throttling Management structure
86
 
 * @advanced_tt:    advanced thermal throttle required
87
 
 * @state:          current Thermal Throttling state
88
 
 * @tt_power_mode:  Thermal Throttling power mode index
89
 
 *                  being used to set power level when
90
 
 *                  when thermal throttling state != IWL_TI_0
91
 
 *                  the tt_power_mode should set to different
92
 
 *                  power mode based on the current tt state
93
 
 * @tt_previous_temperature: last measured temperature
94
 
 * @iwl_tt_restriction: ptr to restriction tbl, used by advance
95
 
 *                  thermal throttling to determine how many tx/rx streams
96
 
 *                  should be used in tt state; and can HT be enabled or not
97
 
 * @iwl_tt_trans: ptr to adv trans table, used by advance thermal throttling
98
 
 *                  state transaction
99
 
 * @ct_kill_toggle: used to toggle the CSR bit when checking uCode temperature
100
 
 * @ct_kill_exit_tm: timer to exit thermal kill
101
 
 */
102
 
struct iwl_tt_mgmt {
103
 
        enum iwl_tt_state state;
104
 
        bool advanced_tt;
105
 
        u8 tt_power_mode;
106
 
        bool ct_kill_toggle;
107
 
#ifdef CONFIG_IWLWIFI_DEBUG
108
 
        s32 tt_previous_temp;
109
 
#endif
110
 
        struct iwl_tt_restriction *restriction;
111
 
        struct iwl_tt_trans *transaction;
112
 
        struct timer_list ct_kill_exit_tm;
113
 
};
114
 
 
115
33
enum iwl_power_level {
116
34
        IWL_POWER_INDEX_1,
117
35
        IWL_POWER_INDEX_2,
123
41
 
124
42
struct iwl_power_mgr {
125
43
        struct iwl_powertable_cmd sleep_cmd;
 
44
        struct iwl_powertable_cmd sleep_cmd_next;
126
45
        int debug_sleep_level_override;
127
46
        bool pci_pm;
128
47
};
129
48
 
 
49
int iwl_power_set_mode(struct iwl_priv *priv, struct iwl_powertable_cmd *cmd,
 
50
                       bool force);
130
51
int iwl_power_update_mode(struct iwl_priv *priv, bool force);
131
 
bool iwl_ht_enabled(struct iwl_priv *priv);
132
 
enum iwl_antenna_ok iwl_tx_ant_restriction(struct iwl_priv *priv);
133
 
enum iwl_antenna_ok iwl_rx_ant_restriction(struct iwl_priv *priv);
134
 
void iwl_tt_enter_ct_kill(struct iwl_priv *priv);
135
 
void iwl_tt_exit_ct_kill(struct iwl_priv *priv);
136
 
void iwl_tt_handler(struct iwl_priv *priv);
137
 
void iwl_tt_initialize(struct iwl_priv *priv);
138
 
void iwl_tt_exit(struct iwl_priv *priv);
139
52
void iwl_power_initialize(struct iwl_priv *priv);
140
53
 
141
54
extern bool no_sleep_autoadjust;