summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatrick Rudolph <siro@das-labor.org>2016-02-29 18:21:00 +0100
committerMartin Roth <martinroth@google.com>2016-03-03 20:42:00 +0100
commit076915955fa3bf05a1c324327827522063b9f757 (patch)
tree7efb31f6900ceebb023bf649efb03159d8cdeb43
parentc3a08a9d5e47f252b3f7b19bb153054eab35674e (diff)
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>
-rw-r--r--src/device/dram/ddr3.c8
-rw-r--r--src/include/device/dram/ddr3.h4
2 files changed, 12 insertions, 0 deletions
diff --git a/src/device/dram/ddr3.c b/src/device/dram/ddr3.c
index 6bfaabcd76..b5658efede 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 @@ int spd_decode_ddr3(dimm_attr * dimm, spd_raw_data spd)
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 89907ae82a..da9dad2a57 100644
--- a/src/include/device/dram/ddr3.h
+++ b/src/include/device/dram/ddr3.h
@@ -167,6 +167,10 @@ typedef struct dimm_attr_st {
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 */