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>
This commit is contained in:
Patrick Rudolph 2016-02-29 18:21:00 +01:00 committed by Martin Roth
parent c3a08a9d5e
commit 076915955f
2 changed files with 12 additions and 0 deletions

View File

@ -23,6 +23,7 @@
#include <console/console.h> #include <console/console.h>
#include <device/device.h> #include <device/device.h>
#include <device/dram/ddr3.h> #include <device/dram/ddr3.h>
#include <string.h>
/*============================================================================== /*==============================================================================
* = DDR3 SPD decoding helpers * = 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; dimm->reference_card = spd[62] & 0x1f;
printram(" DIMM Reference card %c\n", 'A' + dimm->reference_card); 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; return ret;
} }

View File

@ -167,6 +167,10 @@ typedef struct dimm_attr_st {
u16 voltage; u16 voltage;
/* XMP: max DIMMs per channel supported (1-4) */ /* XMP: max DIMMs per channel supported (1-4) */
u8 dimms_per_channel; u8 dimms_per_channel;
/* Manufacturer ID */
u16 manufacturer_id;
/* ASCII part number - NULL terminated */
u8 part_number[17];
} dimm_attr; } dimm_attr;
/** Result of the SPD decoding process */ /** Result of the SPD decoding process */