summaryrefslogtreecommitdiffstats
path: root/drivers/acpi/cpu.c
diff options
context:
space:
mode:
authorRalf Baechle <ralf@linux-mips.org>2001-01-31 22:22:27 +0000
committerRalf Baechle <ralf@linux-mips.org>2001-01-31 22:22:27 +0000
commit825423e4c4f18289df2393951cfd2a7a31fc0464 (patch)
tree4ad80e981c3d9effa910d2247d118d254f9a5d09 /drivers/acpi/cpu.c
parentc4693dc4856ab907a5c02187a8d398861bebfc7e (diff)
Merge with Linux 2.4.1.
Diffstat (limited to 'drivers/acpi/cpu.c')
-rw-r--r--drivers/acpi/cpu.c51
1 files changed, 19 insertions, 32 deletions
diff --git a/drivers/acpi/cpu.c b/drivers/acpi/cpu.c
index 00ec59da5..3e4adcee2 100644
--- a/drivers/acpi/cpu.c
+++ b/drivers/acpi/cpu.c
@@ -39,6 +39,9 @@ static int acpi_c3_tested = 0;
static int acpi_max_c_state = 1;
static int acpi_pm_tmr_len;
+#define MAX_C2_LATENCY 100
+#define MAX_C3_LATENCY 1000
+
/*
* Clear busmaster activity flag
*/
@@ -251,10 +254,7 @@ static ACPI_STATUS
acpi_found_cpu(ACPI_HANDLE handle, u32 level, void *ctx, void **value)
{
ACPI_OBJECT obj;
- ACPI_CX_STATE lat[4];
- ACPI_CPU_THROTTLING_STATE throttle[ACPI_MAX_THROTTLE];
ACPI_BUFFER buf;
- int i, count;
buf.length = sizeof(obj);
buf.pointer = &obj;
@@ -273,41 +273,28 @@ acpi_found_cpu(ACPI_HANDLE handle, u32 level, void *ctx, void **value)
acpi_pblk = obj.processor.pblk_address;
- buf.length = sizeof(lat);
- buf.pointer = lat;
- if (!ACPI_SUCCESS(acpi_get_processor_cx_info(handle, &buf)))
- return AE_OK;
+ if (acpi_fadt.plvl2_lat
+ && acpi_fadt.plvl2_lat <= MAX_C2_LATENCY) {
+ acpi_c2_exit_latency
+ = ACPI_MICROSEC_TO_TMR_TICKS(acpi_fadt.plvl2_lat);
+ acpi_c2_enter_latency
+ = ACPI_MICROSEC_TO_TMR_TICKS(ACPI_TMR_HZ / 1000);
+ acpi_max_c_state = 2;
- if (lat[2].latency < MAX_CX_STATE_LATENCY) {
printk(KERN_INFO "ACPI: System firmware supports: C2");
- acpi_c2_exit_latency = lat[2].latency;
- acpi_max_c_state = 2;
- if (lat[3].latency < MAX_CX_STATE_LATENCY) {
- printk(" C3");
- acpi_c3_exit_latency = lat[3].latency;
+ if (acpi_fadt.plvl3_lat
+ && acpi_fadt.plvl3_lat <= MAX_C3_LATENCY) {
+ acpi_c3_exit_latency
+ = ACPI_MICROSEC_TO_TMR_TICKS(acpi_fadt.plvl3_lat);
+ acpi_c3_enter_latency
+ = ACPI_MICROSEC_TO_TMR_TICKS(acpi_fadt.plvl3_lat * 5);
acpi_max_c_state = 3;
- }
- printk("\n");
- }
- memset(throttle, 0, sizeof(throttle));
- buf.length = sizeof(throttle);
- buf.pointer = throttle;
-
- if (!ACPI_SUCCESS(acpi_get_processor_throttling_info(handle, &buf)))
- return AE_OK;
-
- for (i = 0, count = 0; i < ACPI_MAX_THROTTLE; i++) {
- if (throttle[i].percent_of_clock)
- count++;
- }
-
- /* 0% throttled really doesn't count */
- count--;
+ printk(" C3");
+ }
- if (count > 0) {
- DEBUG_PRINT(ACPI_INFO, ("%d throttling states\n", count));
+ printk("\n");
}
return AE_OK;