Patrick Georgi has submitted this change. ( https://review.coreboot.org/c/coreboot/+/50798 )
Change subject: mb/prodrive/hermes/mb: Update SoC config in PRE_DEVICE ......................................................................
mb/prodrive/hermes/mb: Update SoC config in PRE_DEVICE
As one option is consumed by MPinit, update the soc config even earlier.
Tested on Prodrive hermes: Turbo can be disabled and cores won't exceed their base frequency.
Change-Id: I9f444c3b91d2ee1a613ebac1922f1e6b60363c0b Signed-off-by: Patrick Rudolph patrick.rudolph@9elements.com Reviewed-on: https://review.coreboot.org/c/coreboot/+/50798 Tested-by: build bot (Jenkins) no-reply@coreboot.org Reviewed-by: Angel Pons th3fanbus@gmail.com --- M src/mainboard/prodrive/hermes/mainboard.c 1 file changed, 27 insertions(+), 5 deletions(-)
Approvals: build bot (Jenkins): Verified Angel Pons: Looks good to me, approved
diff --git a/src/mainboard/prodrive/hermes/mainboard.c b/src/mainboard/prodrive/hermes/mainboard.c index c9ed7c1..2bc719a 100644 --- a/src/mainboard/prodrive/hermes/mainboard.c +++ b/src/mainboard/prodrive/hermes/mainboard.c @@ -5,6 +5,7 @@ #include <cbmem.h> #include <console/console.h> #include <crc_byte.h> +#include <bootstate.h> #include <device/device.h> #include <device/dram/spd.h> #include <intelblocks/pmclib.h> @@ -136,11 +137,6 @@ if (!board_cfg) return;
- /* Set Deep Sx */ - config_t *config = config_of_soc(); - config->deep_s5_enable_ac = board_cfg->deep_sx_enabled; - config->deep_s5_enable_dc = board_cfg->deep_sx_enabled; - /* Enable internal speaker amplifier */ if (board_cfg->internal_audio_connection == 2) mb_hda_amp_enable(1); @@ -222,3 +218,29 @@ .init = mainboard_init, .enable_dev = mainboard_enable, }; + +/* Must happen before MPinit */ +static void mainboard_early(void *unused) +{ + const struct eeprom_board_settings *const board_cfg = get_board_settings(); + config_t *config = config_of_soc(); + + if (board_cfg) { + /* Set Deep Sx */ + config->deep_s5_enable_ac = board_cfg->deep_sx_enabled; + config->deep_s5_enable_dc = board_cfg->deep_sx_enabled; + } + + if (check_signature(offsetof(struct eeprom_layout, supd), FSPS_UPD_SIGNATURE)) { + struct { + struct { + u8 TurboMode; + } FspsConfig; + } supd = {0}; + + READ_EEPROM_FSP_S((&supd), FspsConfig.TurboMode); + config->cpu_turbo_disable = !supd.FspsConfig.TurboMode; + } +} + +BOOT_STATE_INIT_ENTRY(BS_PRE_DEVICE, BS_ON_EXIT, mainboard_early, NULL);