From 86db46987176b6e78852d62042046e4af458e71a Mon Sep 17 00:00:00 2001
From: Duncan Laurie <dlaurie@chromium.org>
Date: Tue, 14 Mar 2017 16:40:06 -0700
Subject: intel/skylake: Support for setting AC/DC loadline

Add options to set the AC and DC loadline values for each supported
VR type so these can be tuned on a per-board basis in devicetree.cb.

BUG=b:36228330
BRANCH=none
TEST=Build and boot on Eve and check debug FSP output to ensure that
it is applying the provided loadline values

Change-Id: I2a5533d2c9fd86351c86584e3738e80ac4c1f915
Signed-off-by: Duncan Laurie <dlaurie@chromium.org>
Reviewed-on: https://review.coreboot.org/18819
Reviewed-by: Aaron Durbin <adurbin@chromium.org>
Tested-by: build bot (Jenkins)
---
 src/soc/intel/skylake/include/soc/vr_config.h | 4 ++++
 src/soc/intel/skylake/vr_config.c             | 5 +++++
 2 files changed, 9 insertions(+)

(limited to 'src')

diff --git a/src/soc/intel/skylake/include/soc/vr_config.h b/src/soc/intel/skylake/include/soc/vr_config.h
index 27d84b2629..66b4a01ad4 100644
--- a/src/soc/intel/skylake/include/soc/vr_config.h
+++ b/src/soc/intel/skylake/include/soc/vr_config.h
@@ -61,6 +61,10 @@ struct vr_config {
 
 	/* VR Voltage Limit. Range is 0-7999mV */
 	int voltage_limit;
+
+	/* AC and DC Loadline in 1/100 mOhms. Range is 0-6249 */
+	int ac_loadline;
+	int dc_loadline;
 };
 
 #define VR_CFG_AMP(i) ((i) * 4)
diff --git a/src/soc/intel/skylake/vr_config.c b/src/soc/intel/skylake/vr_config.c
index 36c2f1f403..cfbd796584 100644
--- a/src/soc/intel/skylake/vr_config.c
+++ b/src/soc/intel/skylake/vr_config.c
@@ -109,4 +109,9 @@ void fill_vr_domain_config(void *params,
 	vr_params->ImonOffset[domain] = cfg->imon_offset;
 	vr_params->IccMax[domain] = cfg->icc_max;
 	vr_params->VrVoltageLimit[domain] = cfg->voltage_limit;
+
+#if IS_ENABLED(CONFIG_PLATFORM_USES_FSP2_0)
+	vr_params->AcLoadline[domain] = cfg->ac_loadline;
+	vr_params->DcLoadline[domain] = cfg->dc_loadline;
+#endif
 }
-- 
cgit v1.2.3