aboutsummaryrefslogtreecommitdiff
path: root/src/mainboard/prodrive/hermes/romstage.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/mainboard/prodrive/hermes/romstage.c')
-rw-r--r--src/mainboard/prodrive/hermes/romstage.c31
1 files changed, 31 insertions, 0 deletions
diff --git a/src/mainboard/prodrive/hermes/romstage.c b/src/mainboard/prodrive/hermes/romstage.c
new file mode 100644
index 0000000000..a25c43a743
--- /dev/null
+++ b/src/mainboard/prodrive/hermes/romstage.c
@@ -0,0 +1,31 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+
+#include <soc/cnl_memcfg_init.h>
+#include <soc/romstage.h>
+#include <variant/variants.h>
+#include "variants/baseboard/include/eeprom.h"
+
+static fsp_params parmas_list[] = {
+ GET_VALUE(RMT),
+ GET_VALUE(HyperThreading),
+ GET_VALUE(BootFrequency)
+};
+
+void mainboard_memory_init_params(FSPM_UPD *memupd)
+{
+ memupd->FspmConfig.UserBd = 7;
+ memupd->FspmTestConfig.SmbusSpdWriteDisable = 0;
+ memupd->FspmConfig.IedSize = 0x400000;
+ cannonlake_memcfg_init(&memupd->FspmConfig, variant_memcfg_config());
+
+ // Overwrite memupd
+ if (!check_signature(I2C_ADDR_EEPROM))
+ return;
+
+ for (size_t i = 0; i < ARRAY_SIZE(parmas_list); i++) {
+ read_write_config(I2C_ADDR_EEPROM, memupd, EEPROM_OFFSET_FSP_CONFIG +
+ parmas_list[i].offset,
+ EEPROM_OFFSET_FSP_CONFIG + parmas_list[i].offset,
+ parmas_list[i].size);
+ }
+}