soc/intel/skylake: Set PsysPmax value
According to doc #543977 Power Architecture Guide, PsysPmax is the
maximum platform power. It maps to the full-scale of Psys signal.
This patch adds a "psys_pmax" member in chip information which allows
boards to set up maximum platform power.
BUG=b:71594855
BRANCH=None
TEST=Set "psys_pmax" in device tree & "USE=fw_debug emerge-fizz
chromeos-mrc coreboot chromeos-bootimage" & ensure correct
PsysPmax value is passed to FSP-S through UPD. Verfied on
KBL-R and KBL-U SKUs.
Change-Id: I44f2e2917a8eb9ce3bb69d9c15899d4c7c5b2883
Signed-off-by: Gaggery Tsai <gaggery.tsai@intel.com>
Reviewed-on: https://review.coreboot.org/23268
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Furquan Shaikh <furquan@google.com>
diff --git a/src/soc/intel/skylake/chip.h b/src/soc/intel/skylake/chip.h
index 7c95ec1..003c44f 100644
--- a/src/soc/intel/skylake/chip.h
+++ b/src/soc/intel/skylake/chip.h
@@ -110,6 +110,9 @@
/* PL4 Value in Watts */
u32 tdp_pl4;
+ /* Estimated maximum platform power in Watts */
+ u16 psys_pmax;
+
/*
* The following fields come from FspUpdVpd.h.
* These are configuration values that are passed to FSP during
diff --git a/src/soc/intel/skylake/chip_fsp20.c b/src/soc/intel/skylake/chip_fsp20.c
index ccda303..aad918a 100644
--- a/src/soc/intel/skylake/chip_fsp20.c
+++ b/src/soc/intel/skylake/chip_fsp20.c
@@ -93,7 +93,6 @@
FSP_S_TEST_CONFIG *tconfig = &supd->FspsTestConfig;
static struct soc_intel_skylake_config *config;
uintptr_t vbt_data = 0;
-
int i;
int is_s3_wakeup = acpi_is_wakeup_s3();
@@ -106,6 +105,12 @@
config = dev->chip_info;
mainboard_silicon_init_params(params);
+ /* Set PsysPmax if it is available from DT */
+ if (config->psys_pmax) {
+ /* PsysPmax is in unit of 1/8 Watt */
+ tconfig->PsysPmax = config->psys_pmax * 8;
+ printk(BIOS_DEBUG, "psys_pmax = %d\n", tconfig->PsysPmax);
+ }
/* Load VBT */
if (is_s3_wakeup) {