summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSven Schnelle <svens@stackframe.org>2011-10-22 13:41:16 +0200
committerSven Schnelle <svens@stackframe.org>2011-10-25 18:59:10 +0200
commit54600970417fee0e87d3059f6e6ac0a59d829066 (patch)
treef7adb05c27e8e1506ad4b1e1777a34ee4863c96f /src
parent0b86c76cfc13e435b4d5225326a1c71e154299cd (diff)
downloadcoreboot-54600970417fee0e87d3059f6e6ac0a59d829066.tar.xz
SPEEDSTEP: write _CST tables
Change-Id: Idb4b57044808918de343d31519768d0986840f01 Signed-off-by: Sven Schnelle <svens@stackframe.org> Reviewed-on: http://review.coreboot.org/321 Tested-by: build bot (Jenkins) Reviewed-by: Patrick Georgi <patrick@georgi-clan.de>
Diffstat (limited to 'src')
-rw-r--r--src/arch/x86/include/arch/acpigen.h2
-rw-r--r--src/cpu/intel/speedstep/acpi.c10
2 files changed, 12 insertions, 0 deletions
diff --git a/src/arch/x86/include/arch/acpigen.h b/src/arch/x86/include/arch/acpigen.h
index 7feaa8e130..0833371d83 100644
--- a/src/arch/x86/include/arch/acpigen.h
+++ b/src/arch/x86/include/arch/acpigen.h
@@ -66,4 +66,6 @@ int acpigen_write_resourcetemplate_footer(int len);
int acpigen_write_mainboard_resource_template(void);
int acpigen_write_mainboard_resources(const char *scope, const char *name);
+int get_cst_entries(struct cst_entry **) __attribute__((weak));
+
#endif
diff --git a/src/cpu/intel/speedstep/acpi.c b/src/cpu/intel/speedstep/acpi.c
index 48e1a3cedc..8f32e4f630 100644
--- a/src/cpu/intel/speedstep/acpi.c
+++ b/src/cpu/intel/speedstep/acpi.c
@@ -62,6 +62,11 @@ static int get_fsb(void)
return 200;
}
+int get_cst_entries(struct cst_entry **entries __attribute__((unused)))
+{
+ return 0;
+}
+
void generate_cpu_entries(void)
{
int len_pr, len_ps;
@@ -70,6 +75,9 @@ void generate_cpu_entries(void)
int totalcores = determine_total_number_of_cores();
int cores_per_package = (cpuid_ebx(1)>>16) & 0xff;
int numcpus = totalcores/cores_per_package; // this assumes that all CPUs share the same layout
+ int count;
+ struct cst_entry *cst_entries;
+
printk(BIOS_DEBUG, "Found %d CPU(s) with %d core(s) each.\n", numcpus, cores_per_package);
for (cpuID=1; cpuID <=numcpus; cpuID++) {
@@ -81,6 +89,8 @@ void generate_cpu_entries(void)
len_pr = acpigen_write_processor((cpuID-1)*cores_per_package+coreID-1, pcontrol_blk, plen);
len_pr += acpigen_write_empty_PCT();
len_pr += acpigen_write_PSD_package(cpuID-1,cores_per_package,SW_ANY);
+ if ((count = get_cst_entries(&cst_entries)) > 0)
+ len_pr += acpigen_write_CST_package(cst_entries, count);
len_pr += acpigen_write_name("_PSS");
int max_states=8;