summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/import/chips/p9/procedures/hwp/nest/p9_rng_init_phase1.C18
-rw-r--r--src/import/chips/p9/procedures/xml/attribute_info/chip_ec_attributes.xml17
2 files changed, 32 insertions, 3 deletions
diff --git a/src/import/chips/p9/procedures/hwp/nest/p9_rng_init_phase1.C b/src/import/chips/p9/procedures/hwp/nest/p9_rng_init_phase1.C
index 7a873969e..40fb65a99 100644
--- a/src/import/chips/p9/procedures/hwp/nest/p9_rng_init_phase1.C
+++ b/src/import/chips/p9/procedures/hwp/nest/p9_rng_init_phase1.C
@@ -134,6 +134,8 @@ const bool NX_RNG_CFG_ADAPTEST_ENABLE = true;
const uint8_t NX_RNG_CFG_ST2_RESET_PERIOD = 0x07;
// pace rate (2000)
const uint16_t NX_RNG_CFG_PACE_RATE = 0x07d0;
+// pace rate (300) for HW403701
+const uint16_t NX_RNG_CFG_PACE_RATE_HW403701 = 0x012c;
//------------------------------------------------------------------------------
@@ -152,8 +154,10 @@ p9_rng_init_phase1(const fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>& i_target)
fapi2::buffer<uint64_t> l_rng_st3_data;
uint8_t l_dd1 = 0;
+ uint8_t l_HW403701 = 0;
FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_CHIP_EC_FEATURE_RNG_ADAPTEST_SETTINGS, i_target, l_dd1) );
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_CHIP_EC_FEATURE_HW403701, i_target, l_HW403701) );
// 1. RNG will start running with FIFO write / self tests disabled (enable doesn't gate the osc; it turns off FIFO
// writes and self test fails); rng_enable = 0.
@@ -268,7 +272,6 @@ p9_rng_init_phase1(const fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>& i_target)
"Error from putScom (NX RNG Self Test Register 3)");
// 4. If RNG is not broken then host boot sets rng_enable =1.
-
// update RNG Status and Control Register to engage initialization test
FAPI_TRY(fapi2::getScom(i_target, PU_NX_RNG_CFG, l_rng_cfg_data),
"Error from getScom (NX RNG Status and Control Register)");
@@ -286,8 +289,17 @@ p9_rng_init_phase1(const fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>& i_target)
(NX_RNG_CFG_ADAPTEST_ENABLE);
l_rng_cfg_data.insertFromRight<PU_NX_RNG_CFG_ST2_RESET_PERIOD, PU_NX_RNG_CFG_ST2_RESET_PERIOD_LEN>
(NX_RNG_CFG_ST2_RESET_PERIOD);
- l_rng_cfg_data.insertFromRight<PU_NX_RNG_CFG_PACE_RATE, PU_NX_RNG_CFG_PACE_RATE_LEN>
- (NX_RNG_CFG_PACE_RATE);
+
+ if(l_HW403701 != 0)
+ {
+ l_rng_cfg_data.insertFromRight<PU_NX_RNG_CFG_PACE_RATE, PU_NX_RNG_CFG_PACE_RATE_LEN>
+ (NX_RNG_CFG_PACE_RATE_HW403701);
+ }
+ else
+ {
+ l_rng_cfg_data.insertFromRight<PU_NX_RNG_CFG_PACE_RATE, PU_NX_RNG_CFG_PACE_RATE_LEN>
+ (NX_RNG_CFG_PACE_RATE);
+ }
FAPI_TRY(fapi2::putScom(i_target, PU_NX_RNG_CFG, l_rng_cfg_data),
"Error from putScom (NX RNG Status and Control Register)");
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 b12add32b..4199de773 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
@@ -2477,6 +2477,23 @@
</attribute>
<attribute>
+ <id>ATTR_CHIP_EC_FEATURE_HW403701</id>
+ <targetType>TARGET_TYPE_PROC_CHIP</targetType>
+ <description>
+ Nimbus DD1: Reduce rng pace from 2000->300 to work around grant unfairness
+ </description>
+ <chipEcFeature>
+ <chip>
+ <name>ENUM_ATTR_NAME_NIMBUS</name>
+ <ec>
+ <value>0x20</value>
+ <test>LESS_THAN</test>
+ </ec>
+ </chip>
+ </chipEcFeature>
+ </attribute>
+
+ <attribute>
<id>ATTR_CHIP_EC_FEATURE_RING_SAVE_MPIPL</id>
<targetType>TARGET_TYPE_PROC_CHIP</targetType>
<description>
OpenPOWER on IntegriCloud