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 <siro@das-labor.org>
Reviewed-on: https://review.coreboot.org/28192
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net>
Reviewed-by: Felix Held <felix-coreboot@felixheld.de>
diff --git a/src/northbridge/intel/sandybridge/raminit.c b/src/northbridge/intel/sandybridge/raminit.c
index 3b73b72..4d02a64 100644
--- a/src/northbridge/intel/sandybridge/raminit.c
+++ b/src/northbridge/intel/sandybridge/raminit.c
@@ -112,7 +112,29 @@
 			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,