From ff251d21d0de23228b1c10e5b78d49294171c92b Mon Sep 17 00:00:00 2001 From: Patrick Rudolph Date: Thu, 11 Feb 2021 15:09:22 +0100 Subject: [PATCH] device/dram: Move SPD manufacturer names out of arch/x86 Move SPD manufacturer ID decoding to device/dram. Will be used by the following patch outside of SMBIOS scope as well. Change-Id: Iec175cd6ab1d20761da955785e4bc0e87ae02dbb Signed-off-by: Patrick Rudolph Reviewed-on: https://review.coreboot.org/c/coreboot/+/50544 Tested-by: build bot (Jenkins) Reviewed-by: Angel Pons --- src/arch/x86/smbios.c | 37 ++--------------------------------- src/device/dram/Makefile.inc | 2 +- src/device/dram/spd.c | 37 +++++++++++++++++++++++++++++++++++ src/include/device/dram/spd.h | 10 ++++++++++ 4 files changed, 50 insertions(+), 36 deletions(-) create mode 100644 src/device/dram/spd.c create mode 100644 src/include/device/dram/spd.h diff --git a/src/arch/x86/smbios.c b/src/arch/x86/smbios.c index 8bc49b18ad..1bf62c9993 100644 --- a/src/arch/x86/smbios.c +++ b/src/arch/x86/smbios.c @@ -5,6 +5,7 @@ #include #include #include +#include #include #include #include @@ -154,44 +155,10 @@ static int smbios_processor_name(u8 *start) return smbios_add_string(start, str); } -static const char *get_dimm_manufacturer_name(const uint16_t mod_id) -{ - switch (mod_id) { - case 0x9b85: - return "Crucial"; - case 0x4304: - return "Ramaxel"; - case 0x4f01: - return "Transcend"; - case 0x9801: - return "Kingston"; - case 0x987f: - return "Hynix"; - case 0x9e02: - return "Corsair"; - case 0xb004: - return "OCZ"; - case 0xad80: - return "Hynix/Hyundai"; - case 0x3486: - return "Super Talent"; - case 0xcd04: - return "GSkill"; - case 0xce80: - return "Samsung"; - case 0xfe02: - return "Elpida"; - case 0x2c80: - return "Micron"; - default: - return NULL; - } -} - /* this function will fill the corresponding manufacturer */ void smbios_fill_dimm_manufacturer_from_id(uint16_t mod_id, struct smbios_type17 *t) { - const char *const manufacturer = get_dimm_manufacturer_name(mod_id); + const char *const manufacturer = spd_manufacturer_name(mod_id); if (manufacturer) { t->manufacturer = smbios_add_string(t->eos, manufacturer); diff --git a/src/device/dram/Makefile.inc b/src/device/dram/Makefile.inc index f7118dbbc2..69fcfa8844 100644 --- a/src/device/dram/Makefile.inc +++ b/src/device/dram/Makefile.inc @@ -1,3 +1,3 @@ romstage-y += ddr4.c ddr3.c ddr2.c ddr_common.c -ramstage-y += ddr4.c ddr3.c ddr2.c ddr_common.c +ramstage-y += ddr4.c ddr3.c ddr2.c ddr_common.c spd.c diff --git a/src/device/dram/spd.c b/src/device/dram/spd.c new file mode 100644 index 0000000000..9a9a767fc2 --- /dev/null +++ b/src/device/dram/spd.c @@ -0,0 +1,37 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ + +#include + +const char *spd_manufacturer_name(const uint16_t mod_id) +{ + switch (mod_id) { + case 0x9b85: + return "Crucial"; + case 0x4304: + return "Ramaxel"; + case 0x4f01: + return "Transcend"; + case 0x9801: + return "Kingston"; + case 0x987f: + return "Hynix"; + case 0x9e02: + return "Corsair"; + case 0xb004: + return "OCZ"; + case 0xad80: + return "Hynix/Hyundai"; + case 0x3486: + return "Super Talent"; + case 0xcd04: + return "GSkill"; + case 0xce80: + return "Samsung"; + case 0xfe02: + return "Elpida"; + case 0x2c80: + return "Micron"; + default: + return NULL; + } +} diff --git a/src/include/device/dram/spd.h b/src/include/device/dram/spd.h new file mode 100644 index 0000000000..c677f4ce9b --- /dev/null +++ b/src/include/device/dram/spd.h @@ -0,0 +1,10 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ + +#ifndef DEVICE_DRAM_SPD_H +#define DEVICE_DRAM_SPD_H + +#include + +const char *spd_manufacturer_name(const uint16_t mod_id); + +#endif /* DEVICE_DRAM_SPD_H */