soc/amd/phoenix/soc_util: add get_soc_type

Implement a get_soc_type function to determine if the silicon the code
is running on is Phoenix or Phoenix 2. This will for example be needed
to provide the correct DXIO descriptor table for the SoC.

Signed-off-by: Felix Held <felix-coreboot@felixheld.de>
Change-Id: I5f2b668b83432426b04e7f1354b694ddd6c300d6
Reviewed-on: https://review.coreboot.org/c/coreboot/+/72861
Reviewed-by: ritul guru <ritul.bits@gmail.com>
Reviewed-by: Fred Reitberger <reitbergerfred@gmail.com>
Reviewed-by: Martin Roth <martin.roth@amd.corp-partner.google.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
This commit is contained in:
Felix Held 2023-02-06 19:56:35 +01:00
parent b6969db5c2
commit 8f705b9fad
3 changed files with 36 additions and 0 deletions

View File

@ -26,6 +26,7 @@ romstage-y += fsp_m_params.c
romstage-y += gpio.c
romstage-y += i2c.c
romstage-y += romstage.c
romstage-y += soc_util.c
romstage-y += uart.c
ramstage-y += acpi.c
@ -38,6 +39,7 @@ ramstage-y += gpio.c
ramstage-y += i2c.c
ramstage-y += mca.c
ramstage-y += root_complex.c
ramstage-y += soc_util.c
ramstage-y += uart.c
ramstage-y += xhci.c

View File

@ -0,0 +1,14 @@
/* SPDX-License-Identifier: GPL-2.0-only */
#ifndef AMD_PHOENIX_SOC_UTIL_H
#define AMD_PHOENIX_SOC_UTIL_H
enum soc_type {
SOC_PHOENIX,
SOC_PHOENIX2,
SOC_UNKNOWN,
};
enum soc_type get_soc_type(void);
#endif /* AMD_PHOENIX_SOC_UTIL_H */

View File

@ -0,0 +1,20 @@
/* SPDX-License-Identifier: GPL-2.0-only */
#include <cpu/cpu.h>
#include <soc/cpu.h>
#include <soc/soc_util.h>
#include <types.h>
enum soc_type get_soc_type(void)
{
uint32_t cpuid = cpuid_eax(1);
if (cpuid_match(cpuid, PHOENIX_A0_CPUID, CPUID_ALL_STEPPINGS_MASK))
return SOC_PHOENIX;
if (cpuid_match(cpuid, PHOENIX2_A0_CPUID, CPUID_ALL_STEPPINGS_MASK))
return SOC_PHOENIX2;
return SOC_UNKNOWN;
}