src/soc/intel/alderlake: Add PsysPmax setting

This patch feeds PsysPmax setting to FSP through UPD and adds a
PsysPmax member in chip information so that we can set PsysPmax
through devicetree. The PsysPmax needs to be set correctly mapping
to maximum system power. Otherwise, system performance would be limited
due to the default PsysPmax setting in FSP is only 21W.

BUG=b:193864533, b:195615830
TEST=Set PsysPmax to an example value eg 145 in devicetree &&
put debug code in FSP to print the PsysPmax value before sending
to Pcode, ensure the setting is correctly programmed.

Change-Id: Ia07aa815f90739240f110cab984068237c02d896
Signed-off-by: Ryan Lin <ryan.lin@intel.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/58008
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Tim Wawrzynczak <twawrzynczak@chromium.org>
This commit is contained in:
Ryan Lin 2021-09-28 15:59:34 +08:00 committed by Tim Wawrzynczak
parent 15066ba8d4
commit 4a48dbe60b
2 changed files with 10 additions and 0 deletions

View File

@ -492,6 +492,9 @@ struct soc_intel_alderlake_config {
POWER_CYCLE_DURATION_3S,
POWER_CYCLE_DURATION_4S,
} pch_reset_power_cycle_duration;
/* Platform Power Pmax */
uint16_t PsysPmax;
};
typedef struct soc_intel_alderlake_config config_t;

View File

@ -652,6 +652,13 @@ static void fill_fsps_misc_power_params(FSP_S_CONFIG *s_cfg,
s_cfg->PchPmSlpS3MinAssert,
s_cfg->PchPmSlpAMinAssert,
power_cycle_duration);
/* Set PsysPmax if it is available from DT */
if (config->PsysPmax) {
printk(BIOS_DEBUG, "PsysPmax = %dW\n", config->PsysPmax);
/* PsysPmax is in unit of 1/8 Watt */
s_cfg->PsysPmax = config->PsysPmax * 8;
}
}
static void fill_fsps_irq_params(FSP_S_CONFIG *s_cfg,