aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/include/device/path.h1
-rw-r--r--src/soc/intel/common/block/acpi/cpu_hybrid.c12
-rw-r--r--src/soc/intel/common/block/include/intelblocks/acpi.h3
3 files changed, 16 insertions, 0 deletions
diff --git a/src/include/device/path.h b/src/include/device/path.h
index 28c932ad8e..a1ea42c154 100644
--- a/src/include/device/path.h
+++ b/src/include/device/path.h
@@ -78,6 +78,7 @@ struct apic_path {
unsigned int node_id;
unsigned int core_id;
unsigned int thread_id;
+ unsigned char core_type;
};
struct ioapic_path {
diff --git a/src/soc/intel/common/block/acpi/cpu_hybrid.c b/src/soc/intel/common/block/acpi/cpu_hybrid.c
index eb852de50d..81c4add0b6 100644
--- a/src/soc/intel/common/block/acpi/cpu_hybrid.c
+++ b/src/soc/intel/common/block/acpi/cpu_hybrid.c
@@ -24,6 +24,18 @@ static bool is_perf_core(void)
return get_soc_cpu_type() == CPUID_CORE_TYPE_INTEL_CORE;
}
+static enum cpu_perf_eff_type get_core_type(void)
+{
+ return (get_soc_cpu_type() == CPUID_CORE_TYPE_INTEL_CORE) ?
+ CPU_TYPE_PERF : CPU_TYPE_EFF;
+}
+
+void set_dev_core_type(void)
+{
+ struct cpu_info *info = cpu_info();
+ info->cpu->path.apic.core_type = get_core_type();
+}
+
static struct device *get_cpu_bus_first_child(void)
{
struct device *dev = dev_find_path(NULL, DEVICE_PATH_CPU_CLUSTER);
diff --git a/src/soc/intel/common/block/include/intelblocks/acpi.h b/src/soc/intel/common/block/include/intelblocks/acpi.h
index be7d0dfa2d..0f7a16579b 100644
--- a/src/soc/intel/common/block/include/intelblocks/acpi.h
+++ b/src/soc/intel/common/block/include/intelblocks/acpi.h
@@ -131,6 +131,9 @@ struct min_sleep_state {
enum acpi_device_sleep_states min_sleep_state;
};
+/* Updates core type into 'struct cpu_info' */
+void set_dev_core_type(void);
+
/*
* This SOC callback returns an array that maps devices to their min sleep state.
* Example: