diff options
-rw-r--r-- | src/include/device/path.h | 1 | ||||
-rw-r--r-- | src/soc/intel/common/block/acpi/cpu_hybrid.c | 12 | ||||
-rw-r--r-- | src/soc/intel/common/block/include/intelblocks/acpi.h | 3 |
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: |