summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorAndy Grover <agrover@groveronline.com>2003-01-19 22:53:17 -0800
committerAndy Grover <agrover@groveronline.com>2003-01-19 22:53:17 -0800
commitc1f31696615be5a5a6f8aab64c676a1a85fcbb8b (patch)
tree54f41092fe265b7f791e4371e9b0269da516c56d /include
parentdf47e43ba3df4698a9cc8ad619d5efcd55bced56 (diff)
CPUFREQ: Break out ACPI Perf code into its own module, under cpufreq
(Dominik Brodowski)
Diffstat (limited to 'include')
-rw-r--r--include/acpi/processor.h141
-rw-r--r--include/linux/acpi.h1
2 files changed, 142 insertions, 0 deletions
diff --git a/include/acpi/processor.h b/include/acpi/processor.h
new file mode 100644
index 000000000000..bbae343f2bd8
--- /dev/null
+++ b/include/acpi/processor.h
@@ -0,0 +1,141 @@
+#ifndef __ACPI_PROCESSOR_H
+#define __ACPI_PROCESSOR_H
+
+#include <linux/kernel.h>
+
+#define ACPI_PROCESSOR_BUSY_METRIC 10
+
+#define ACPI_PROCESSOR_MAX_POWER ACPI_C_STATE_COUNT
+#define ACPI_PROCESSOR_MAX_C2_LATENCY 100
+#define ACPI_PROCESSOR_MAX_C3_LATENCY 1000
+
+#define ACPI_PROCESSOR_MAX_PERFORMANCE 8
+
+#define ACPI_PROCESSOR_MAX_THROTTLING 16
+#define ACPI_PROCESSOR_MAX_THROTTLE 250 /* 25% */
+#define ACPI_PROCESSOR_MAX_DUTY_WIDTH 4
+
+/* Power Management */
+
+struct acpi_processor_cx_policy {
+ u32 count;
+ int state;
+ struct {
+ u32 time;
+ u32 ticks;
+ u32 count;
+ u32 bm;
+ } threshold;
+};
+
+struct acpi_processor_cx {
+ u8 valid;
+ u32 address;
+ u32 latency;
+ u32 latency_ticks;
+ u32 power;
+ u32 usage;
+ struct acpi_processor_cx_policy promotion;
+ struct acpi_processor_cx_policy demotion;
+};
+
+struct acpi_processor_power {
+ int state;
+ int default_state;
+ u32 bm_activity;
+ struct acpi_processor_cx states[ACPI_PROCESSOR_MAX_POWER];
+};
+
+/* Performance Management */
+
+struct acpi_pct_register {
+ u8 descriptor;
+ u16 length;
+ u8 space_id;
+ u8 bit_width;
+ u8 bit_offset;
+ u8 reserved;
+ u64 address;
+} __attribute__ ((packed));
+
+struct acpi_processor_px {
+ acpi_integer core_frequency; /* megahertz */
+ acpi_integer power; /* milliWatts */
+ acpi_integer transition_latency; /* microseconds */
+ acpi_integer bus_master_latency; /* microseconds */
+ acpi_integer control; /* control value */
+ acpi_integer status; /* success indicator */
+};
+
+struct acpi_processor_performance {
+ int state;
+ int platform_limit;
+ u16 control_register;
+ u16 status_register;
+ int state_count;
+ struct acpi_processor_px states[ACPI_PROCESSOR_MAX_PERFORMANCE];
+ struct cpufreq_frequency_table freq_table[ACPI_PROCESSOR_MAX_PERFORMANCE];
+ struct acpi_processor *pr;
+};
+
+
+/* Throttling Control */
+
+struct acpi_processor_tx {
+ u16 power;
+ u16 performance;
+};
+
+struct acpi_processor_throttling {
+ int state;
+ u32 address;
+ u8 duty_offset;
+ u8 duty_width;
+ int state_count;
+ struct acpi_processor_tx states[ACPI_PROCESSOR_MAX_THROTTLING];
+};
+
+/* Limit Interface */
+
+struct acpi_processor_lx {
+ int px; /* performace state */
+ int tx; /* throttle level */
+};
+
+struct acpi_processor_limit {
+ struct acpi_processor_lx state; /* current limit */
+ struct acpi_processor_lx thermal; /* thermal limit */
+ struct acpi_processor_lx user; /* user limit */
+};
+
+
+struct acpi_processor_flags {
+ u8 power:1;
+ u8 performance:1;
+ u8 throttling:1;
+ u8 limit:1;
+ u8 bm_control:1;
+ u8 bm_check:1;
+ u8 reserved:2;
+};
+
+struct acpi_processor {
+ acpi_handle handle;
+ u32 acpi_id;
+ u32 id;
+ int performance_platform_limit;
+ struct acpi_processor_flags flags;
+ struct acpi_processor_power power;
+ struct acpi_processor_performance *performance;
+ struct acpi_processor_throttling throttling;
+ struct acpi_processor_limit limit;
+};
+
+extern int acpi_processor_get_platform_limit (
+ struct acpi_processor* pr);
+extern int acpi_processor_register_performance (
+ struct acpi_processor_performance * performance,
+ struct acpi_processor ** pr,
+ unsigned int cpu);
+
+#endif
diff --git a/include/linux/acpi.h b/include/linux/acpi.h
index c7832372e30b..0e701c0c2c34 100644
--- a/include/linux/acpi.h
+++ b/include/linux/acpi.h
@@ -32,6 +32,7 @@
#include <linux/list.h>
#include <acpi/acpi.h>
+#include <acpi/acpi_bus.h>
#include <asm/acpi.h>