aboutsummaryrefslogtreecommitdiff
path: root/src/mainboard/ocp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mainboard/ocp')
-rw-r--r--src/mainboard/ocp/deltalake/romstage.c16
-rw-r--r--src/mainboard/ocp/deltalake/vpd.h4
2 files changed, 20 insertions, 0 deletions
diff --git a/src/mainboard/ocp/deltalake/romstage.c b/src/mainboard/ocp/deltalake/romstage.c
index 71a26c8789..f0cdd3dbb7 100644
--- a/src/mainboard/ocp/deltalake/romstage.c
+++ b/src/mainboard/ocp/deltalake/romstage.c
@@ -59,6 +59,22 @@ static void mainboard_config_upd(FSPM_UPD *mupd)
"DciEn to %d\n", FSP_DCI, FSP_DCI_DEFAULT);
mupd->FspmConfig.PchDciEn = FSP_DCI_DEFAULT;
}
+
+ /*
+ * UnusedUpdSpace0[0] is reserved for Memory Refresh Watermark.
+ * Following code is effective when MemRefreshWaterMark patch is added to FSP
+ * and when corresponding VPD variable is set.
+ */
+ if (vpd_gets(FSPM_MEMREFRESHWATERMARK, val_str, VPD_LEN, VPD_RW_THEN_RO)) {
+ val = (uint8_t)atol(val_str);
+ if (val > 2) {
+ printk(BIOS_DEBUG, "Invalid MemRefreshWatermark value from VPD: "
+ "%d\n", val);
+ val = FSPM_MEMREFRESHWATERMARK_DEFAULT;
+ }
+ printk(BIOS_DEBUG, "Setting MemRefreshWatermark %d from VPD\n", val);
+ mupd->FspmConfig.UnusedUpdSpace0[0] = val;
+ }
}
/* Update bifurcation settings according to different Configs */
diff --git a/src/mainboard/ocp/deltalake/vpd.h b/src/mainboard/ocp/deltalake/vpd.h
index 43070c2a16..71a3b09202 100644
--- a/src/mainboard/ocp/deltalake/vpd.h
+++ b/src/mainboard/ocp/deltalake/vpd.h
@@ -36,4 +36,8 @@
#define COREBOOT_LOG_LEVEL "coreboot_log_level"
#define COREBOOT_LOG_LEVEL_DEFAULT 4
+/* FSPM MemRefreshWatermark: 0:Auto, 1: high(default), 2: low */
+#define FSPM_MEMREFRESHWATERMARK "fspm_mem_refresh_watermark"
+#define FSPM_MEMREFRESHWATERMARK_DEFAULT 1
+
#endif