summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoe McGill <jmcgill@us.ibm.com>2018-04-27 12:48:17 -0500
committerDaniel M. Crowell <dcrowell@us.ibm.com>2018-05-18 10:01:47 -0400
commitcb934c171a016595a31b74957eeea6d2715d9ff4 (patch)
tree8cf82ef0147251608701e96286630ad31c0e931a
parentb801b49cd1ba2028bf6825f19dff68c82ddf2f5a (diff)
downloadtalos-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>
-rw-r--r--src/import/chips/p9/procedures/hwp/customize/p9_xip_customize.C82
-rw-r--r--src/import/chips/p9/procedures/xml/attribute_info/chip_ec_attributes.xml17
-rwxr-xr-xsrc/import/chips/p9/procedures/xml/attribute_info/pervasive_attributes.xml16
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>
OpenPOWER on IntegriCloud