diff options
author | Matt Derksen <mderkse1@us.ibm.com> | 2017-09-06 08:24:16 -0500 |
---|---|---|
committer | Daniel M. Crowell <dcrowell@us.ibm.com> | 2017-09-19 11:42:23 -0400 |
commit | 57a4232a2085a47c1025c9b4aedb2d65e625aee6 (patch) | |
tree | e00dc462f891af65b882f4d8d0e74efece7395f2 /src | |
parent | 3bd9350522b9923f078c8528d873f77caaa8fa1a (diff) | |
download | talos-hostboot-57a4232a2085a47c1025c9b4aedb2d65e625aee6.tar.gz talos-hostboot-57a4232a2085a47c1025c9b4aedb2d65e625aee6.zip |
Support non-std VDDR DEFAULT voltage on ZZ
Change-Id: Ifc67849e18868c29cd84de698b7d50da8bbe4981
RTC:179196
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/45813
Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com>
Reviewed-by: Martin Gloff <mgloff@us.ibm.com>
Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com>
Tested-by: Jenkins OP HW <op-hw-jenkins+hostboot@us.ibm.com>
Reviewed-by: Christian R. Geddes <crgeddes@us.ibm.com>
Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com>
Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/usr/isteps/hbToHwsvVoltageMsg.C | 10 | ||||
-rw-r--r-- | src/usr/isteps/hbToHwsvVoltageMsg.H | 16 | ||||
-rw-r--r-- | src/usr/isteps/istepHelperFuncs.H | 20 | ||||
-rwxr-xr-x | src/usr/targeting/common/genHwsvMrwXml.pl | 9 | ||||
-rwxr-xr-x | src/usr/targeting/common/xmltohb/attribute_types.xml | 3 |
5 files changed, 45 insertions, 13 deletions
diff --git a/src/usr/isteps/hbToHwsvVoltageMsg.C b/src/usr/isteps/hbToHwsvVoltageMsg.C index 8b29e7ded..2ba5c483d 100644 --- a/src/usr/isteps/hbToHwsvVoltageMsg.C +++ b/src/usr/isteps/hbToHwsvVoltageMsg.C @@ -247,7 +247,7 @@ void HBToHwsvVoltageMsg::addMemoryVoltageDomains( // There is no reasonable check to validate if a voltage we're // reading is valid so it has to be assumed good for the cases below - if(domainProgram == MSS_PROGRAM_TYPE::STATIC) + if(domainProgram == MSS_PROGRAM_TYPE::STATIC_TYPE) { typename TARGETING::AttributeTraits< VOLTAGE_ATTR_STATIC >::Type @@ -257,7 +257,7 @@ void HBToHwsvVoltageMsg::addMemoryVoltageDomains( entry.voltageMillivolts = static_cast<uint32_t>(voltageMillivolts); io_domains.push_back(entry); } - else if(domainProgram == MSS_PROGRAM_TYPE::DYNAMIC) + else if(domainProgram == MSS_PROGRAM_TYPE::DYNAMIC_TYPE) { typename TARGETING::AttributeTraits< VOLTAGE_ATTR_DYNAMIC >::Type @@ -267,6 +267,12 @@ void HBToHwsvVoltageMsg::addMemoryVoltageDomains( entry.voltageMillivolts = static_cast<uint32_t>(voltageMillivolts); io_domains.push_back(entry); } + else if(domainProgram == MSS_PROGRAM_TYPE::DEFAULT_TYPE) + { + entry.voltageMillivolts = + HBToHwsvVoltageMsg::VOLTAGE_SETTING_ALERT_DEFAULT; + io_domains.push_back(entry); + } } /////////////////////////////////////////////////////////////////////////////// diff --git a/src/usr/isteps/hbToHwsvVoltageMsg.H b/src/usr/isteps/hbToHwsvVoltageMsg.H index 5f66a2a9d..0f7e9704c 100644 --- a/src/usr/isteps/hbToHwsvVoltageMsg.H +++ b/src/usr/isteps/hbToHwsvVoltageMsg.H @@ -5,7 +5,7 @@ /* */ /* OpenPOWER HostBoot Project */ /* */ -/* Contributors Listed Below - COPYRIGHT 2012,2016 */ +/* Contributors Listed Below - COPYRIGHT 2012,2017 */ /* [+] International Business Machines Corp. */ /* */ /* */ @@ -91,6 +91,13 @@ public: }; /** + * @brief Identifies hwsvPowrMemVoltDomainRequest_t as a DEFAULT voltage + * request if voltageMillivolts is set to this constant + * + */ + const uint32_t VOLTAGE_SETTING_ALERT_DEFAULT = 0xFFFFFFFF; + + /** * @struct hwsvPowrMemVoltDomainRequest_t * * @brief Structure containing a memory voltage domain type, ID, and @@ -234,9 +241,10 @@ private: * @tparam MSS_DOMAIN_PROGRAM * ID of the attribute to read to determine how we program this domain. * Value of the attribute should be one of these: - * MSS_PROGRAM_TYPE::POWERON = no additional programming necessary, - * MSS_PROGRAM_TYPE::STATIC = use static value, - * MSS_PROGRAM_TYPE::DYNAMIC = use dynamic value + * MSS_PROGRAM_TYPE::POWERON_TYPE = no add'l programming necessary, + * MSS_PROGRAM_TYPE::STATIC_TYPE = use static value, + * MSS_PROGRAM_TYPE::DYNAMIC_TYPE = use dynamic value, + * MSS_PROGRAM_TYPE::DEFAULT_TYPE = send special alert value * * @tparam VOLTAGE_ATTR_STATIC * ID of the attribute which should be read to obtain the given memory diff --git a/src/usr/isteps/istepHelperFuncs.H b/src/usr/isteps/istepHelperFuncs.H index 1f6a5c8dd..e924a9dd5 100644 --- a/src/usr/isteps/istepHelperFuncs.H +++ b/src/usr/isteps/istepHelperFuncs.H @@ -5,7 +5,7 @@ /* */ /* OpenPOWER HostBoot Project */ /* */ -/* Contributors Listed Below - COPYRIGHT 2015,2016 */ +/* Contributors Listed Below - COPYRIGHT 2015,2017 */ /* [+] International Business Machines Corp. */ /* */ /* */ @@ -53,11 +53,21 @@ enum EFF_CONFIG_ATTRIBUTES_BASE */ enum MSS_PROGRAM_TYPE { - POWERON = 0, // domain is programmed as part of regular power on sequence - STATIC = 1, // domain needs to be programmed, no special computation needed - DYNAMIC = 2, // domain needs to be programmed, uses dynamic vid logic + // domain is programmed as part of regular power on sequence + POWERON_TYPE = 0, + + // domain needs to be programmed, no special computation needed + STATIC_TYPE = 1, + + // domain needs to be programmed, uses dynamic vid logic + DYNAMIC_TYPE = 2, + + // domain needs to be programmed, + // POWR responsible for vid values attained via sys vrm xml + DEFAULT_TYPE = 3, }; + // // Helper function to set _EFF_CONFIG attributes for HWPs // @@ -128,7 +138,7 @@ errlHndl_t computeDynamicMemoryVoltage() pSysTarget->getAttr< OFFSET_DISABLEMENT_ATTR >(); - if(domainProgram != MSS_PROGRAM_TYPE::DYNAMIC) + if(domainProgram != MSS_PROGRAM_TYPE::DYNAMIC_TYPE) { TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace, "INFO: Dynamic offset voltage processing disabled for domain type 0x%08X.", diff --git a/src/usr/targeting/common/genHwsvMrwXml.pl b/src/usr/targeting/common/genHwsvMrwXml.pl index 40a28fa2c..64a404c61 100755 --- a/src/usr/targeting/common/genHwsvMrwXml.pl +++ b/src/usr/targeting/common/genHwsvMrwXml.pl @@ -31,7 +31,6 @@ # --system=systemname # Specify which system MRW XML to be generated # --systemnodes=systemnodesinbrazos - # Specify number of nodes for brazos system, by default it is 4 # --mrwdir=pathname # Specify the complete dir pathname of the MRW. Colon-delimited @@ -158,6 +157,10 @@ use constant # Domain needs to be programmed during host_enable_memvolt, and the # new dynamic vid values must be computed beyond what p9_mss_volt() did DYNAMIC_PROGRAM => 2, + + # Domain needs to be programmed during host_enable_memvolt, and the + # new vid values will come from VRM xml system file consumed by POWR code + DEFAULT_PROGRAM => 3, }; our $mrwdir = ""; @@ -523,6 +526,10 @@ for my $domain (keys %domainProgram) { push @systemAttr, [$domain, DYNAMIC_PROGRAM]; } + elsif ($domainProgram{$domain} eq "default") + { + push @systemAttr, [$domain, DEFAULT_PROGRAM]; + } else { # default to not program in host_enable_memvolt diff --git a/src/usr/targeting/common/xmltohb/attribute_types.xml b/src/usr/targeting/common/xmltohb/attribute_types.xml index b24341205..3b977e538 100755 --- a/src/usr/targeting/common/xmltohb/attribute_types.xml +++ b/src/usr/targeting/common/xmltohb/attribute_types.xml @@ -2024,7 +2024,8 @@ <description>VDDR memory programming type 0 = POWERON - domain is programmed as part of regular power on sequence, 1 = STATIC - domain needs to be programmed, no special computation needed, - 2 = DYNAMIC - domain needs to be programmed, uses dynamic vid logic + 2 = DYNAMIC - domain needs to be programmed, uses dynamic vid logic, + 3 = DEFAULT - domain needs to be programmed, pgm values in sys xml file </description> <hasStringConversion></hasStringConversion> <id>MSS_VDDR_PROGRAM</id> |