summaryrefslogtreecommitdiff
path: root/src/cpu/intel
diff options
context:
space:
mode:
Diffstat (limited to 'src/cpu/intel')
-rw-r--r--src/cpu/intel/speedstep/acpi.c13
-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)