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>
This commit is contained in:
parent
e1152c401a
commit
52ef869b94
|
@ -5,6 +5,7 @@
|
||||||
#include <cbmem.h>
|
#include <cbmem.h>
|
||||||
#include <console/console.h>
|
#include <console/console.h>
|
||||||
#include <crc_byte.h>
|
#include <crc_byte.h>
|
||||||
|
#include <bootstate.h>
|
||||||
#include <device/device.h>
|
#include <device/device.h>
|
||||||
#include <device/dram/spd.h>
|
#include <device/dram/spd.h>
|
||||||
#include <intelblocks/pmclib.h>
|
#include <intelblocks/pmclib.h>
|
||||||
|
@ -136,11 +137,6 @@ static void mainboard_init(void *chip_info)
|
||||||
if (!board_cfg)
|
if (!board_cfg)
|
||||||
return;
|
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 */
|
/* Enable internal speaker amplifier */
|
||||||
if (board_cfg->internal_audio_connection == 2)
|
if (board_cfg->internal_audio_connection == 2)
|
||||||
mb_hda_amp_enable(1);
|
mb_hda_amp_enable(1);
|
||||||
|
@ -222,3 +218,29 @@ struct chip_operations mainboard_ops = {
|
||||||
.init = mainboard_init,
|
.init = mainboard_init,
|
||||||
.enable_dev = mainboard_enable,
|
.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);
|
||||||
|
|
Loading…
Reference in New Issue