cpu/intel/model_206ax: Get CPU frequencies for SMBIOS type 4

Calculate the frequencies based on the appropriate MSRs and pass them to
SMBIOS tables generator. Ivybridge microarchitecture does not yet
implement CPUID 16H leaf used to obtain the required frequencies.

TEST=Intel Core i7-3770, TianoCore UEFI payload displays the CPU
frequency correctly equal 3.4GHz in Boot Manager Menu, dmidecode shows
correct frequencies according to Intel ARK, 3.4GHz base and 3.9GHz turbo

Signed-off-by: Michał Żygowski <michal.zygowski@3mdeb.com>
Change-Id: Iefbae6111d39107eacac7e61654311646c6981eb
Reviewed-on: https://review.coreboot.org/c/coreboot/+/47058
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Angel Pons <th3fanbus@gmail.com>
This commit is contained in:
Michał Żygowski 2020-10-31 21:43:25 +01:00 committed by Patrick Georgi
parent 58ce44720a
commit 0d11dbfd6a
1 changed files with 20 additions and 0 deletions

View File

@ -18,6 +18,7 @@
#include "chip.h"
#include <cpu/intel/smm_reloc.h>
#include <cpu/intel/common/common.h>
#include <smbios.h>
/*
* List of supported C-states in this processor
@ -360,6 +361,25 @@ static void set_max_ratio(void)
((perf_ctl.lo >> 8) & 0xff) * SANDYBRIDGE_BCLK);
}
unsigned int smbios_cpu_get_max_speed_mhz(void)
{
msr_t msr;
msr = rdmsr(MSR_TURBO_RATIO_LIMIT);
return (msr.lo & 0xff) * SANDYBRIDGE_BCLK;
}
unsigned int smbios_cpu_get_current_speed_mhz(void)
{
msr_t msr;
msr = rdmsr(MSR_PLATFORM_INFO);
return ((msr.lo >> 8) & 0xff) * SANDYBRIDGE_BCLK;
}
unsigned int smbios_processor_external_clock(void)
{
return SANDYBRIDGE_BCLK;
}
static void configure_mca(void)
{
msr_t msr;