From 08c9a7ce1fa0f7b2ec7972ac2826ed3b48b4831f Mon Sep 17 00:00:00 2001 From: Patrick Rudolph Date: Fri, 17 Aug 2018 15:47:23 +0200 Subject: nb/intel/sandybridge/raminit: Fix DIMM type mapping The DIMM type read from SPD needs to be converted to make sure SMBIOS fills in the correct formfactor. Tested on Lenovo T430: The Form Factor no longer reads as unknown. Change-Id: Ia0211fa133f4ba9d60dfbd5f0dd45a43df68c030 Signed-off-by: Patrick Rudolph Reviewed-on: https://review.coreboot.org/28192 Tested-by: build bot (Jenkins) Reviewed-by: Paul Menzel Reviewed-by: Felix Held --- src/northbridge/intel/sandybridge/raminit.c | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) (limited to 'src/northbridge') diff --git a/src/northbridge/intel/sandybridge/raminit.c b/src/northbridge/intel/sandybridge/raminit.c index 3b73b7215c..4d02a64e2c 100644 --- a/src/northbridge/intel/sandybridge/raminit.c +++ b/src/northbridge/intel/sandybridge/raminit.c @@ -112,7 +112,29 @@ static void fill_smbios17(ramctr_timing *ctrl) memcpy(dimm->module_part_number, info->dimm[channel][slot].part_number, 16); dimm->mod_id = info->dimm[channel][slot].manufacturer_id; - dimm->mod_type = info->dimm[channel][slot].dimm_type; + + switch (info->dimm[channel][slot].dimm_type) { + case SPD_DIMM_TYPE_SO_DIMM: + dimm->mod_type = SPD_SODIMM; + break; + case SPD_DIMM_TYPE_72B_SO_CDIMM: + dimm->mod_type = SPD_72B_SO_CDIMM; + break; + case SPD_DIMM_TYPE_72B_SO_RDIMM: + dimm->mod_type = SPD_72B_SO_RDIMM; + break; + case SPD_DIMM_TYPE_UDIMM: + dimm->mod_type = SPD_UDIMM; + break; + case SPD_DIMM_TYPE_RDIMM: + dimm->mod_type = SPD_RDIMM; + break; + case SPD_DIMM_TYPE_UNDEFINED: + default: + dimm->mod_type = SPD_UNDEFINED; + break; + } + dimm->bus_width = MEMORY_BUS_WIDTH_64; // non-ECC only memcpy(dimm->serial, info->dimm[channel][slot].serial, -- cgit v1.2.3