aboutsummaryrefslogtreecommitdiffstats
path: root/include/acpi/processor.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/acpi/processor.h')
-rw-r--r--include/acpi/processor.h51
1 files changed, 47 insertions, 4 deletions
diff --git a/include/acpi/processor.h b/include/acpi/processor.h
index b4b0ffdab098..99934a999e66 100644
--- a/include/acpi/processor.h
+++ b/include/acpi/processor.h
@@ -21,6 +21,8 @@
21#define ACPI_PSD_REV0_REVISION 0 /* Support for _PSD as in ACPI 3.0 */ 21#define ACPI_PSD_REV0_REVISION 0 /* Support for _PSD as in ACPI 3.0 */
22#define ACPI_PSD_REV0_ENTRIES 5 22#define ACPI_PSD_REV0_ENTRIES 5
23 23
24#define ACPI_TSD_REV0_REVISION 0 /* Support for _PSD as in ACPI 3.0 */
25#define ACPI_TSD_REV0_ENTRIES 5
24/* 26/*
25 * Types of coordination defined in ACPI 3.0. Same macros can be used across 27 * Types of coordination defined in ACPI 3.0. Same macros can be used across
26 * P, C and T states 28 * P, C and T states
@@ -125,17 +127,53 @@ struct acpi_processor_performance {
125 127
126/* Throttling Control */ 128/* Throttling Control */
127 129
130struct acpi_tsd_package {
131 acpi_integer num_entries;
132 acpi_integer revision;
133 acpi_integer domain;
134 acpi_integer coord_type;
135 acpi_integer num_processors;
136} __attribute__ ((packed));
137
138struct acpi_ptc_register {
139 u8 descriptor;
140 u16 length;
141 u8 space_id;
142 u8 bit_width;
143 u8 bit_offset;
144 u8 reserved;
145 u64 address;
146} __attribute__ ((packed));
147
148struct acpi_processor_tx_tss {
149 acpi_integer freqpercentage; /* */
150 acpi_integer power; /* milliWatts */
151 acpi_integer transition_latency; /* microseconds */
152 acpi_integer control; /* control value */
153 acpi_integer status; /* success indicator */
154};
128struct acpi_processor_tx { 155struct acpi_processor_tx {
129 u16 power; 156 u16 power;
130 u16 performance; 157 u16 performance;
131}; 158};
132 159
160struct acpi_processor;
133struct acpi_processor_throttling { 161struct acpi_processor_throttling {
134 int state; 162 unsigned int state;
163 unsigned int platform_limit;
164 struct acpi_pct_register control_register;
165 struct acpi_pct_register status_register;
166 unsigned int state_count;
167 struct acpi_processor_tx_tss *states_tss;
168 struct acpi_tsd_package domain_info;
169 cpumask_t shared_cpu_map;
170 int (*acpi_processor_get_throttling) (struct acpi_processor * pr);
171 int (*acpi_processor_set_throttling) (struct acpi_processor * pr,
172 int state);
173
135 u32 address; 174 u32 address;
136 u8 duty_offset; 175 u8 duty_offset;
137 u8 duty_width; 176 u8 duty_width;
138 int state_count;
139 struct acpi_processor_tx states[ACPI_PROCESSOR_MAX_THROTTLING]; 177 struct acpi_processor_tx states[ACPI_PROCESSOR_MAX_THROTTLING];
140}; 178};
141 179
@@ -169,6 +207,9 @@ struct acpi_processor {
169 u32 id; 207 u32 id;
170 u32 pblk; 208 u32 pblk;
171 int performance_platform_limit; 209 int performance_platform_limit;
210 int throttling_platform_limit;
211 /* 0 - states 0..n-th state available */
212
172 struct acpi_processor_flags flags; 213 struct acpi_processor_flags flags;
173 struct acpi_processor_power power; 214 struct acpi_processor_power power;
174 struct acpi_processor_performance *performance; 215 struct acpi_processor_performance *performance;
@@ -191,7 +232,7 @@ struct acpi_processor_errata {
191 232
192extern int acpi_processor_preregister_performance(struct 233extern int acpi_processor_preregister_performance(struct
193 acpi_processor_performance 234 acpi_processor_performance
194 **performance); 235 *performance);
195 236
196extern int acpi_processor_register_performance(struct acpi_processor_performance 237extern int acpi_processor_register_performance(struct acpi_processor_performance
197 *performance, unsigned int cpu); 238 *performance, unsigned int cpu);
@@ -270,7 +311,7 @@ static inline int acpi_processor_ppc_has_changed(struct acpi_processor *pr)
270 311
271/* in processor_throttling.c */ 312/* in processor_throttling.c */
272int acpi_processor_get_throttling_info(struct acpi_processor *pr); 313int acpi_processor_get_throttling_info(struct acpi_processor *pr);
273int acpi_processor_set_throttling(struct acpi_processor *pr, int state); 314extern int acpi_processor_set_throttling(struct acpi_processor *pr, int state);
274extern struct file_operations acpi_processor_throttling_fops; 315extern struct file_operations acpi_processor_throttling_fops;
275 316
276/* in processor_idle.c */ 317/* in processor_idle.c */
@@ -279,6 +320,8 @@ int acpi_processor_power_init(struct acpi_processor *pr,
279int acpi_processor_cst_has_changed(struct acpi_processor *pr); 320int acpi_processor_cst_has_changed(struct acpi_processor *pr);
280int acpi_processor_power_exit(struct acpi_processor *pr, 321int acpi_processor_power_exit(struct acpi_processor *pr,
281 struct acpi_device *device); 322 struct acpi_device *device);
323int acpi_processor_suspend(struct acpi_device * device, pm_message_t state);
324int acpi_processor_resume(struct acpi_device * device);
282 325
283/* in processor_thermal.c */ 326/* in processor_thermal.c */
284int acpi_processor_get_limit_info(struct acpi_processor *pr); 327int acpi_processor_get_limit_info(struct acpi_processor *pr);