aboutsummaryrefslogtreecommitdiff
path: root/src/include/device/dram/ddr3.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/include/device/dram/ddr3.h')
-rw-r--r--src/include/device/dram/ddr3.h12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/include/device/dram/ddr3.h b/src/include/device/dram/ddr3.h
index de75aee452..0520ead4b7 100644
--- a/src/include/device/dram/ddr3.h
+++ b/src/include/device/dram/ddr3.h
@@ -161,6 +161,10 @@ typedef struct dimm_attr_st {
u32 tFAW;
u8 reference_card;
+ /* XMP: Module voltage in mV */
+ u16 voltage;
+ /* XMP: max DIMMs per channel supported (1-4) */
+ u8 dimms_per_channel;
} dimm_attr;
/** Result of the SPD decoding process */
@@ -171,12 +175,20 @@ enum spd_status {
SPD_STATUS_INVALID_FIELD,
};
+enum ddr3_xmp_profile {
+ DDR3_XMP_PROFILE_1 = 0,
+ DDR3_XMP_PROFILE_2 = 1,
+};
+
typedef u8 spd_raw_data[256];
u16 spd_ddr3_calc_crc(u8 *spd, int len);
int spd_decode_ddr3(dimm_attr * dimm, spd_raw_data spd_data);
int dimm_is_registered(enum spd_dimm_type type);
void dram_print_spd_ddr3(const dimm_attr * dimm);
+int spd_xmp_decode_ddr3(dimm_attr * dimm,
+ spd_raw_data spd,
+ enum ddr3_xmp_profile profile);
/**
* \brief Read double word from specified address