diff options
-rw-r--r-- | src/soc/amd/phoenix/Makefile.inc | 2 | ||||
-rw-r--r-- | src/soc/amd/phoenix/include/soc/soc_util.h | 14 | ||||
-rw-r--r-- | src/soc/amd/phoenix/soc_util.c | 20 |
3 files changed, 36 insertions, 0 deletions
diff --git a/src/soc/amd/phoenix/Makefile.inc b/src/soc/amd/phoenix/Makefile.inc index 84825d0aa0..de465a2523 100644 --- a/src/soc/amd/phoenix/Makefile.inc +++ b/src/soc/amd/phoenix/Makefile.inc @@ -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 diff --git a/src/soc/amd/phoenix/include/soc/soc_util.h b/src/soc/amd/phoenix/include/soc/soc_util.h new file mode 100644 index 0000000000..860ab02fee --- /dev/null +++ b/src/soc/amd/phoenix/include/soc/soc_util.h @@ -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 */ diff --git a/src/soc/amd/phoenix/soc_util.c b/src/soc/amd/phoenix/soc_util.c new file mode 100644 index 0000000000..e5677fcfd7 --- /dev/null +++ b/src/soc/amd/phoenix/soc_util.c @@ -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; +} |