summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/soc/amd/phoenix/Makefile.inc2
-rw-r--r--src/soc/amd/phoenix/include/soc/soc_util.h14
-rw-r--r--src/soc/amd/phoenix/soc_util.c20
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;
+}