summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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 */