aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/mainboard/samsung/lumpy/romstage.c2
-rw-r--r--src/northbridge/intel/sandybridge/raminit_mrc.c13
2 files changed, 14 insertions, 1 deletions
diff --git a/src/mainboard/samsung/lumpy/romstage.c b/src/mainboard/samsung/lumpy/romstage.c
index 26b9dcc813..a77149d927 100644
--- a/src/mainboard/samsung/lumpy/romstage.c
+++ b/src/mainboard/samsung/lumpy/romstage.c
@@ -197,7 +197,7 @@ void mainboard_fill_pei_data(struct pei_data *pei_data)
},
};
*pei_data = pei_data_template;
- memcpy(pei_data->spd_data[0], locate_spd(), 256);
+ memcpy(pei_data->spd_data[2], locate_spd(), 256);
}
const struct southbridge_usb_port mainboard_usb_ports[] = {
diff --git a/src/northbridge/intel/sandybridge/raminit_mrc.c b/src/northbridge/intel/sandybridge/raminit_mrc.c
index ea3590f78d..1c9e021025 100644
--- a/src/northbridge/intel/sandybridge/raminit_mrc.c
+++ b/src/northbridge/intel/sandybridge/raminit_mrc.c
@@ -288,6 +288,19 @@ void perform_raminit(int s3resume)
mainboard_fill_pei_data(&pei_data);
post_code(0x3a);
+
+ /* Fix spd_data. MRC only uses spd_data[0] and ignores the other */
+ for (size_t i = 1; i < ARRAY_SIZE(pei_data.spd_data); i++) {
+ if (pei_data.spd_data[i][0] && !pei_data.spd_data[0][0]) {
+ memcpy(pei_data.spd_data[0], pei_data.spd_data[i],
+ sizeof(pei_data.spd_data[0]));
+ } else if (pei_data.spd_data[i][0] && pei_data.spd_data[0][0]) {
+ if (memcmp(pei_data.spd_data[i], pei_data.spd_data[0],
+ sizeof(pei_data.spd_data[0])) != 0)
+ die("Onboard SPDs must match each other");
+ }
+ }
+
pei_data.boot_mode = s3resume ? 2 : 0;
timestamp_add_now(TS_BEFORE_INITRAM);
sdram_initialize(&pei_data);