src/device/dram/ddr3: Parse additional information
Parse manufacturer id and ASCII serial.
Required for SMBIOS type 17 field.
Change-Id: I710de1a6822e4777c359d0bfecc6113cb2a5ed8e
Signed-off-by: Patrick Rudolph <siro@das-labor.org>
Reviewed-on: https://review.coreboot.org/13862
Tested-by: build bot (Jenkins)
Reviewed-by: Martin Roth <martinroth@google.com>
diff --git a/src/device/dram/ddr3.c b/src/device/dram/ddr3.c
index 6bfaabc..b5658ef 100644
--- a/src/device/dram/ddr3.c
+++ b/src/device/dram/ddr3.c
@@ -23,6 +23,7 @@
#include <console/console.h>
#include <device/device.h>
#include <device/dram/ddr3.h>
+#include <string.h>
/*==============================================================================
* = DDR3 SPD decoding helpers
@@ -340,6 +341,13 @@
dimm->reference_card = spd[62] & 0x1f;
printram(" DIMM Reference card %c\n", 'A' + dimm->reference_card);
+ dimm->manufacturer_id = (spd[118] << 8) | spd[117];
+ printram(" DIMM Manufacturer ID %x\n", dimm->manufacturer_id);
+
+ dimm->part_number[16] = 0;
+ memcpy(dimm->part_number, &spd[128], 16);
+ printram(" DIMM Part number %s\n", dimm->part_number);
+
return ret;
}
diff --git a/src/include/device/dram/ddr3.h b/src/include/device/dram/ddr3.h
index 89907ae..da9dad2 100644
--- a/src/include/device/dram/ddr3.h
+++ b/src/include/device/dram/ddr3.h
@@ -167,6 +167,10 @@
u16 voltage;
/* XMP: max DIMMs per channel supported (1-4) */
u8 dimms_per_channel;
+ /* Manufacturer ID */
+ u16 manufacturer_id;
+ /* ASCII part number - NULL terminated */
+ u8 part_number[17];
} dimm_attr;
/** Result of the SPD decoding process */