diff options
author | Joe McGill <jmcgill@us.ibm.com> | 2018-04-27 12:48:17 -0500 |
---|---|---|
committer | Daniel M. Crowell <dcrowell@us.ibm.com> | 2018-05-18 10:01:47 -0400 |
commit | cb934c171a016595a31b74957eeea6d2715d9ff4 (patch) | |
tree | 8cf82ef0147251608701e96286630ad31c0e931a | |
parent | b801b49cd1ba2028bf6825f19dff68c82ddf2f5a (diff) | |
download | talos-hostboot-cb934c171a016595a31b74957eeea6d2715d9ff4.tar.gz talos-hostboot-cb934c171a016595a31b74957eeea6d2715d9ff4.zip |
enable spreading via SS PLL for Fleetwood platform
pervasive_attribues.xml:
Create new platinit attribute -- ATTR_MRW_FILTER_PLL_BUCKET
System specific value for Filter PLL bucket selector (init=0), set by MRW
- if non-zero, this value will directly set ATTR_FILTER_PLL_BUCKET,
which is used by SBE to select the override to apply
- if zero, MVPD MK keyword will set ATTR_FILTER_PLL_BUCKET
p9.filter.pll.override.scan.initfile:
Repurpose overrides built for Cumulus, to produce 0.2% down spread
Nimbus overrides still enable control of BGoffset
p9_xip_customize.C:
Consume ATTR_MRW_FILTER_PLL_BUCKET and use logic above to
set ATTR_FILTER_PLL_BUCKET
Change-Id: I2ea799179632d36251027a1d4468c6c89bfa6e00
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/57988
Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com>
Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com>
Tested-by: HWSV CI <hwsv-ci+hostboot@us.ibm.com>
Tested-by: PPE CI <ppe-ci+hostboot@us.ibm.com>
Tested-by: Hostboot CI <hostboot-ci+hostboot@us.ibm.com>
Reviewed-by: Thi N. Tran <thi@us.ibm.com>
Reviewed-by: Joachim Fenkes <fenkes@de.ibm.com>
Reviewed-by: Joseph J. McGill <jmcgill@us.ibm.com>
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/58004
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: Daniel M. Crowell <dcrowell@us.ibm.com>
3 files changed, 81 insertions, 34 deletions
diff --git a/src/import/chips/p9/procedures/hwp/customize/p9_xip_customize.C b/src/import/chips/p9/procedures/hwp/customize/p9_xip_customize.C index c9477dba9..0832f9a6c 100644 --- a/src/import/chips/p9/procedures/hwp/customize/p9_xip_customize.C +++ b/src/import/chips/p9/procedures/hwp/customize/p9_xip_customize.C @@ -1974,41 +1974,57 @@ ReturnCode p9_xip_customize ( if (i_sysPhase == SYSPHASE_HB_SBE) { - uint8_t l_filterPllBucket = 0; - uint32_t l_sizeMvpdFieldExpected = 4; - uint32_t l_sizeMvpdField = 0; - uint8_t* l_bufMvpdField = (uint8_t*)i_ringBuf1; - P9XipItem l_item; + fapi2::ATTR_MRW_FILTER_PLL_BUCKET_Type l_filterPllBucketMRW = 0; + uint8_t l_filterPllBucket = 0; + P9XipItem l_item; - FAPI_TRY( getMvpdField(MVPD_RECORD_CP00, - MVPD_KEYWORD_AW, - i_procTarget, - NULL, - l_sizeMvpdField), - "getMvpdField(NULL buffer) failed w/rc=0x%08x", - (uint64_t)fapi2::current_err ); + FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_MRW_FILTER_PLL_BUCKET, + FAPI_SYSTEM, + l_filterPllBucketMRW), + "Error from FAPI_ATTR_GET (ATTR_MRW_FILTER_PLL_BUCKET)"); - FAPI_ASSERT( l_sizeMvpdField == l_sizeMvpdFieldExpected, - fapi2::XIPC_MVPD_FIELD_SIZE_MESS(). - set_CHIP_TARGET(i_procTarget). - set_MVPD_FIELD_SIZE(l_sizeMvpdField). - set_EXPECTED_SIZE(l_sizeMvpdFieldExpected), - "MVPD field size bug:\n" - " Returned MVPD field size of AW keyword = %d\n" - " Anticipated MVPD field size = %d", - l_sizeMvpdField, - l_sizeMvpdFieldExpected ); - - FAPI_TRY( getMvpdField(MVPD_RECORD_CP00, - MVPD_KEYWORD_AW, - i_procTarget, - l_bufMvpdField, - l_sizeMvpdField), - "getMvpdField(valid buffer) failed w/rc=0x%08x", - (uint64_t)fapi2::current_err ); - - // extract data - l_filterPllBucket = (uint8_t)(*(l_bufMvpdField + 1)); + // set bucket based on MRW attribute if it is non zero + if (l_filterPllBucketMRW != 0) + { + l_filterPllBucket = l_filterPllBucketMRW; + } + // otherwise, set bucket from AW VPD data + else + { + uint32_t l_sizeMvpdFieldExpected = 4; + uint32_t l_sizeMvpdField = 0; + uint8_t* l_bufMvpdField = (uint8_t*)i_ringBuf1; + + FAPI_TRY( getMvpdField(MVPD_RECORD_CP00, + MVPD_KEYWORD_AW, + i_procTarget, + NULL, + l_sizeMvpdField), + "getMvpdField(NULL buffer) failed w/rc=0x%08x", + (uint64_t)fapi2::current_err ); + + FAPI_ASSERT( l_sizeMvpdField == l_sizeMvpdFieldExpected, + fapi2::XIPC_MVPD_FIELD_SIZE_MESS(). + set_CHIP_TARGET(i_procTarget). + set_MVPD_FIELD_SIZE(l_sizeMvpdField). + set_EXPECTED_SIZE(l_sizeMvpdFieldExpected), + "MVPD field size bug:\n" + " Returned MVPD field size of AW keyword = %d\n" + " Anticipated MVPD field size = %d", + l_sizeMvpdField, + l_sizeMvpdFieldExpected ); + + FAPI_TRY( getMvpdField(MVPD_RECORD_CP00, + MVPD_KEYWORD_AW, + i_procTarget, + l_bufMvpdField, + l_sizeMvpdField), + "getMvpdField(valid buffer) failed w/rc=0x%08x", + (uint64_t)fapi2::current_err ); + + // extract data + l_filterPllBucket = (uint8_t)(*(l_bufMvpdField + 1)); + } FAPI_ASSERT( l_filterPllBucket <= MAX_FILTER_PLL_BUCKETS, fapi2::XIPC_MVPD_AW_FIELD_VALUE_ERR(). diff --git a/src/import/chips/p9/procedures/xml/attribute_info/chip_ec_attributes.xml b/src/import/chips/p9/procedures/xml/attribute_info/chip_ec_attributes.xml index f6fa224f4..1f37cb83f 100644 --- a/src/import/chips/p9/procedures/xml/attribute_info/chip_ec_attributes.xml +++ b/src/import/chips/p9/procedures/xml/attribute_info/chip_ec_attributes.xml @@ -7449,4 +7449,21 @@ </chipEcFeature> </attribute> <!-- ******************************************************************** --> + <attribute> + <id>ATTR_CHIP_EC_FEATURE_SS_FPLL_SPREAD</id> + <targetType>TARGET_TYPE_PROC_CHIP</targetType> + <description> + Generate 0.2% down spread in SS Filter PLL + </description> + <chipEcFeature> + <chip> + <name>ENUM_ATTR_NAME_CUMULUS</name> + <ec> + <value>0x10</value> + <test>GREATER_THAN_OR_EQUAL</test> + </ec> + </chip> + </chipEcFeature> + </attribute> + <!-- ******************************************************************** --> </attributes> diff --git a/src/import/chips/p9/procedures/xml/attribute_info/pervasive_attributes.xml b/src/import/chips/p9/procedures/xml/attribute_info/pervasive_attributes.xml index 92942e480..50a0e041c 100755 --- a/src/import/chips/p9/procedures/xml/attribute_info/pervasive_attributes.xml +++ b/src/import/chips/p9/procedures/xml/attribute_info/pervasive_attributes.xml @@ -143,7 +143,7 @@ <attribute> <id>ATTR_FILTER_PLL_BUCKET</id> <targetType>TARGET_TYPE_PROC_CHIP</targetType> - <description>Select Filter PLL BGoffset programming</description> + <description>Select Filter PLL bucket</description> <valueType>uint8</valueType> <persistRuntime/> <writeable/> @@ -151,6 +151,20 @@ </attribute> <attribute> + <id>ATTR_MRW_FILTER_PLL_BUCKET</id> + <targetType>TARGET_TYPE_SYSTEM</targetType> + <description> + System specific value for Filter PLL bucket, provided by MRW. + If non-zero, this value will directly set ATTR_FILTER_PLL_BUCKET (used by SBE to select bucket). + If zero, VPD MK content will set ATTR_FILTER_PLL_BUCKET. + </description> + <valueType>uint8</valueType> + <persistRuntime/> + <platInit/> + <initToZero/> +</attribute> + +<attribute> <id>ATTR_OB0_PLL_BUCKET</id> <targetType>TARGET_TYPE_PROC_CHIP</targetType> <description>Select OBUS0 pll setting from one of the supported frequencies</description> |