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 <patrick.rudolph@9elements.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/50544
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Angel Pons <th3fanbus@gmail.com>
This commit is contained in:
Patrick Rudolph 2021-02-11 15:09:22 +01:00 committed by Angel Pons
parent 20eb3506ca
commit ff251d21d0
4 changed files with 50 additions and 36 deletions

View File

@ -5,6 +5,7 @@
#include <console/console.h>
#include <version.h>
#include <device/device.h>
#include <device/dram/spd.h>
#include <arch/cpu.h>
#include <cpu/x86/name.h>
#include <elog.h>
@ -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);

View File

@ -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

37
src/device/dram/spd.c Normal file
View File

@ -0,0 +1,37 @@
/* SPDX-License-Identifier: GPL-2.0-or-later */
#include <device/dram/spd.h>
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;
}
}

View File

@ -0,0 +1,10 @@
/* SPDX-License-Identifier: GPL-2.0-or-later */
#ifndef DEVICE_DRAM_SPD_H
#define DEVICE_DRAM_SPD_H
#include <types.h>
const char *spd_manufacturer_name(const uint16_t mod_id);
#endif /* DEVICE_DRAM_SPD_H */