soc/intel/alderlake: Implement get_soc_cpu_type helper function

The patch implements get_soc_cpu_type() helper function which
determines whether the executing CPU is a small or a big core. This is
the SoC-specific callback that must be implemented for SoCs that select
SOC_INTEL_COMMON_BLOCK_ACPI_CPU_HYBRID. It will be called from
set_cpu_type().

TEST=verified on Brya

Signed-off-by: Sridhar Siricilla <sridhar.siricilla@intel.com>
Change-Id: Icd0d7e8a42c4b20d3e1d34998bca6321509df2d8
Reviewed-on: https://review.coreboot.org/c/coreboot/+/61075
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Tim Wawrzynczak <twawrzynczak@chromium.org>
This commit is contained in:
Sridhar Siricilla 2022-01-14 19:20:15 +05:30 committed by Felix Held
parent 1587324a0d
commit 23e2cde597
1 changed files with 21 additions and 0 deletions

View File

@ -19,12 +19,18 @@
#include <intelblocks/cpulib.h>
#include <intelblocks/mp_init.h>
#include <intelblocks/msr.h>
#include <intelblocks/acpi.h>
#include <soc/cpu.h>
#include <soc/msr.h>
#include <soc/pci_devs.h>
#include <soc/soc_chip.h>
#include <types.h>
enum alderlake_model {
ADL_MODEL_P_M = 0x9A,
ADL_MODEL_N = 0xBE,
};
bool cpu_soc_is_in_untrusted_mode(void)
{
msr_t msr;
@ -69,6 +75,21 @@ static void configure_misc(void)
wrmsr(MSR_POWER_CTL, msr);
}
enum core_type get_soc_cpu_type(void)
{
struct cpuinfo_x86 cpuinfo;
if (cpu_is_hybrid_supported())
return cpu_get_cpu_type();
get_fms(&cpuinfo, cpuid_eax(1));
if (cpuinfo.x86 == 0x6 && cpuinfo.x86_model == ADL_MODEL_N)
return CPUID_CORE_TYPE_INTEL_ATOM;
else
return CPUID_CORE_TYPE_INTEL_CORE;
}
/* All CPUs including BSP will run the following function. */
void soc_core_init(struct device *cpu)
{