diff options
author | Felix Held <felix.held@amd.corp-partner.google.com> | 2020-05-18 20:27:04 +0200 |
---|---|---|
committer | Felix Held <felix-coreboot@felixheld.de> | 2020-05-20 00:06:34 +0000 |
commit | bf213087057f61b37d9586414e47a8cf2cfc23a1 (patch) | |
tree | 382ced2455ca3131fb2bcda49b03e41d4767bf0f /src | |
parent | 4480dc1ca1fd6982a3b4cbc6cf1531992f517fb2 (diff) | |
download | coreboot-bf213087057f61b37d9586414e47a8cf2cfc23a1.tar.xz |
soc/amd/picasso/soc_util: add socket type detection and printing
Change-Id: I643a4c5f8a42a5fb0603a1a049545b57d16493a6
Signed-off-by: Felix Held <felix-coreboot@felixheld.de>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/41517
Reviewed-by: Raul Rangel <rrangel@chromium.org>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Diffstat (limited to 'src')
-rw-r--r-- | src/soc/amd/picasso/include/soc/soc_util.h | 8 | ||||
-rw-r--r-- | src/soc/amd/picasso/soc_util.c | 33 |
2 files changed, 41 insertions, 0 deletions
diff --git a/src/soc/amd/picasso/include/soc/soc_util.h b/src/soc/amd/picasso/include/soc/soc_util.h index 9d769b9417..8e2c598630 100644 --- a/src/soc/amd/picasso/include/soc/soc_util.h +++ b/src/soc/amd/picasso/include/soc/soc_util.h @@ -1,5 +1,13 @@ /* SPDX-License-Identifier: GPL-2.0-only */ +enum socket_type { + SOCKET_FP5 = 0, + SOCKET_AM4 = 2, + SOCKET_FT5 = 3, +}; + +void print_socket_type(void); + int soc_is_pollock(void); int soc_is_dali(void); int soc_is_picasso(void); diff --git a/src/soc/amd/picasso/soc_util.c b/src/soc/amd/picasso/soc_util.c index 94ebb6b066..a70d833d80 100644 --- a/src/soc/amd/picasso/soc_util.c +++ b/src/soc/amd/picasso/soc_util.c @@ -1,8 +1,41 @@ /* SPDX-License-Identifier: GPL-2.0-only */ #include <arch/cpu.h> +#include <console/console.h> #include <soc/cpu.h> #include <soc/soc_util.h> +#include <types.h> + +#define SOCKET_TYPE_SHIFT 28 +#define SOCKET_TYPSE_MASK (0xf << SOCKET_TYPE_SHIFT) + +static enum socket_type get_socket_type(void) +{ + uint32_t ebx = cpuid_ebx(0x80000001); + ebx = (ebx & SOCKET_TYPSE_MASK) >> SOCKET_TYPE_SHIFT; + return (enum socket_type)ebx; +} + +void print_socket_type(void) +{ + enum socket_type socket = get_socket_type(); + + printk(BIOS_INFO, "Socket type: "); + + switch (socket) { + case SOCKET_FP5: + printk(BIOS_INFO, "FP5\n"); + break; + case SOCKET_AM4: + printk(BIOS_INFO, "AM4\n"); + break; + case SOCKET_FT5: + printk(BIOS_INFO, "FT5\n"); + break; + default: + printk(BIOS_INFO, "unknown\n"); + } +} int soc_is_pollock(void) { |