diff options
Diffstat (limited to 'src/cpu')
-rw-r--r-- | src/cpu/intel/speedstep/acpi.c | 13 | ||||
-rw-r--r-- | src/cpu/intel/speedstep/acpi/cpu.asl (renamed from src/cpu/intel/common/acpi/cpu.asl) | 27 |
2 files changed, 17 insertions, 23 deletions
diff --git a/src/cpu/intel/speedstep/acpi.c b/src/cpu/intel/speedstep/acpi.c index c154da0c29..73b7431608 100644 --- a/src/cpu/intel/speedstep/acpi.c +++ b/src/cpu/intel/speedstep/acpi.c @@ -23,6 +23,7 @@ #include <cpu/x86/msr.h> #include <cpu/intel/speedstep.h> #include <device/device.h> +#include <string.h> static int determine_total_number_of_cores(void) { @@ -164,4 +165,16 @@ void generate_cpu_entries(device_t device) /* PPKG is usually used for thermal management of the first and only package. */ acpigen_write_processor_package("PPKG", 0, cores_per_package); + + /* Add a method to notify processor nodes */ + acpigen_write_method("\\_PR.CNOT", 1); + for (coreID = 0; coreID < cores_per_package; coreID++) { + char buffer[DEVICE_PATH_MAX]; + snprintf(buffer, sizeof(buffer), "\\_PR.CP%c%c", + '0' + coreID / 10, '0' + coreID % 10); + acpigen_emit_byte(NOTIFY_OP); + acpigen_emit_namestring(buffer); + acpigen_emit_byte(ARG0_OP); + } + acpigen_pop_len(); } diff --git a/src/cpu/intel/common/acpi/cpu.asl b/src/cpu/intel/speedstep/acpi/cpu.asl index 117ef468f9..9ff3f76727 100644 --- a/src/cpu/intel/common/acpi/cpu.asl +++ b/src/cpu/intel/speedstep/acpi/cpu.asl @@ -12,36 +12,17 @@ */ /* These come from the dynamically created CPU SSDT */ -External(PDC0) -External(PDC1) - -// Power notification - +External (\_PR.CNOT, MethodObj) External (\_PR_.CP00, DeviceObj) -External (\_PR_.CP01, DeviceObj) External (\_PR_.CP00._PPC) External (\_PR_.CP01._PPC) Method (PNOT) { If (MPEN) { - If(And(PDC0, 0x08)) { - Notify (\_PR_.CP00, 0x80) // _PPC - - If (And(PDC0, 0x10)) { - Sleep(100) - Notify(\_PR_.CP00, 0x81) // _CST - } - } - - If(And(PDC1, 0x08)) { - Notify (\_PR_.CP01, 0x80) // _PPC - If (And(PDC1, 0x10)) { - Sleep(100) - Notify(\_PR_.CP01, 0x81) // _CST - } - } - + \_PR.CNOT (0x80) // _PPC + Sleep(100) + \_PR.CNOT (0x81) // _CST } Else { // UP Notify (\_PR_.CP00, 0x80) Sleep(0x64) |