diff options
-rw-r--r-- | src/mainboard/google/eve/romstage.c | 7 | ||||
-rw-r--r-- | src/mainboard/google/eve/spd/spd.c | 16 | ||||
-rw-r--r-- | src/mainboard/google/eve/spd/spd.h | 1 |
3 files changed, 18 insertions, 6 deletions
diff --git a/src/mainboard/google/eve/romstage.c b/src/mainboard/google/eve/romstage.c index 2378e9052d..cd8fa083a9 100644 --- a/src/mainboard/google/eve/romstage.c +++ b/src/mainboard/google/eve/romstage.c @@ -18,6 +18,7 @@ #include <stddef.h> #include <fsp/soc_binding.h> #include <soc/romstage.h> +#include <console/console.h> #include "spd/spd.h" void mainboard_memory_init_params(FSPM_UPD *mupd) @@ -46,4 +47,10 @@ void mainboard_memory_init_params(FSPM_UPD *mupd) mem_cfg->MemorySpdPtr00 = mainboard_get_spd_data(); mem_cfg->MemorySpdPtr10 = mem_cfg->MemorySpdPtr00; mem_cfg->MemorySpdDataLen = SPD_LEN; + + /* Limit K4EBE304EB-EGCF memory to 1600MHz for stability */ + if (mainboard_get_spd_index() == 5) { + printk(BIOS_WARNING, "Limiting memory to 1600MHz\n"); + mem_cfg->DdrFreqLimit = 1600; + } } diff --git a/src/mainboard/google/eve/spd/spd.c b/src/mainboard/google/eve/spd/spd.c index bac510729e..2f365a7b5c 100644 --- a/src/mainboard/google/eve/spd/spd.c +++ b/src/mainboard/google/eve/spd/spd.c @@ -77,20 +77,24 @@ static void mainboard_print_spd_info(uint8_t spd[]) } } -uintptr_t mainboard_get_spd_data(void) +int mainboard_get_spd_index(void) { - char *spd_file; - size_t spd_file_len; - int spd_index; - gpio_t spd_gpios[] = { GPIO_MEM_CONFIG_0, GPIO_MEM_CONFIG_1, GPIO_MEM_CONFIG_2, GPIO_MEM_CONFIG_3, }; + return gpio_base2_value(spd_gpios, ARRAY_SIZE(spd_gpios)); +} + +uintptr_t mainboard_get_spd_data(void) +{ + char *spd_file; + size_t spd_file_len; + int spd_index; - spd_index = gpio_base2_value(spd_gpios, ARRAY_SIZE(spd_gpios)); + spd_index = mainboard_get_spd_index(); printk(BIOS_INFO, "SPD index %d\n", spd_index); /* Load SPD data from CBFS */ diff --git a/src/mainboard/google/eve/spd/spd.h b/src/mainboard/google/eve/spd/spd.h index 9c2b26bb12..6d8d0a615c 100644 --- a/src/mainboard/google/eve/spd/spd.h +++ b/src/mainboard/google/eve/spd/spd.h @@ -30,6 +30,7 @@ #define SPD_PART_LEN 18 #define SPD_MANU_OFF 148 +int mainboard_get_spd_index(void); uintptr_t mainboard_get_spd_data(void); #endif |