summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/import/chips/p9/procedures/hwp/initfiles/p9_fbc_ab_hp_scom.C158
-rw-r--r--src/import/chips/p9/procedures/xml/attribute_info/chip_ec_attributes.xml19
2 files changed, 171 insertions, 6 deletions
diff --git a/src/import/chips/p9/procedures/hwp/initfiles/p9_fbc_ab_hp_scom.C b/src/import/chips/p9/procedures/hwp/initfiles/p9_fbc_ab_hp_scom.C
index 45ef2ed6b..b22373707 100644
--- a/src/import/chips/p9/procedures/hwp/initfiles/p9_fbc_ab_hp_scom.C
+++ b/src/import/chips/p9/procedures/hwp/initfiles/p9_fbc_ab_hp_scom.C
@@ -108,6 +108,8 @@ fapi2::ReturnCode p9_fbc_ab_hp_scom(const fapi2::Target<fapi2::TARGET_TYPE_PROC_
uint64_t l_def_LINK_X_AGGREGATE_EN = (l_TGT0_ATTR_PROC_FABRIC_X_AGGREGATE == ENUM_ATTR_PROC_FABRIC_X_AGGREGATE_ON);
fapi2::ATTR_PROC_FABRIC_X_ADDR_DIS_Type l_TGT0_ATTR_PROC_FABRIC_X_ADDR_DIS;
FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_PROC_FABRIC_X_ADDR_DIS, TGT0, l_TGT0_ATTR_PROC_FABRIC_X_ADDR_DIS));
+ fapi2::ATTR_CHIP_EC_FEATURE_HW407123_Type l_TGT0_ATTR_CHIP_EC_FEATURE_HW407123;
+ FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_CHIP_EC_FEATURE_HW407123, TGT0, l_TGT0_ATTR_CHIP_EC_FEATURE_HW407123));
fapi2::ATTR_FREQ_X_MHZ_Type l_TGT1_ATTR_FREQ_X_MHZ;
FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_FREQ_X_MHZ, TGT1, l_TGT1_ATTR_FREQ_X_MHZ));
uint64_t l_def_X_CMD_RATE_4B_R = ((literal_6 * l_TGT1_ATTR_FREQ_PB_MHZ) % l_TGT1_ATTR_FREQ_X_MHZ);
@@ -1056,8 +1058,56 @@ fapi2::ReturnCode p9_fbc_ab_hp_scom(const fapi2::Target<fapi2::TARGET_TYPE_PROC_
constexpr auto l_PB_COM_PB_CFG_X_GATHER_ENABLE_NEXT_ON = 0x7;
l_scom_buffer.insert<50, 1, 61, uint64_t>(l_PB_COM_PB_CFG_X_GATHER_ENABLE_NEXT_ON );
- if ((((l_TGT1_ATTR_PROC_FABRIC_X_BUS_WIDTH == fapi2::ENUM_ATTR_PROC_FABRIC_X_BUS_WIDTH_4_BYTE)
- && (l_def_LINK_X_AGGREGATE_EN == literal_0)) && (l_def_X_CMD_RATE_4B_R != literal_0)))
+ if (((((l_TGT1_ATTR_PROC_FABRIC_X_BUS_WIDTH == fapi2::ENUM_ATTR_PROC_FABRIC_X_BUS_WIDTH_4_BYTE)
+ && (l_def_LINK_X_AGGREGATE_EN == literal_0)) && (l_def_X_CMD_RATE_4B_R != literal_0))
+ && (l_TGT0_ATTR_CHIP_EC_FEATURE_HW407123 != literal_0)))
+ {
+ l_scom_buffer.insert<56, 8, 56, uint64_t>(((l_def_X_CMD_RATE_4B_N / l_def_X_CMD_RATE_D) + literal_3) );
+ }
+ else if (((((l_TGT1_ATTR_PROC_FABRIC_X_BUS_WIDTH == fapi2::ENUM_ATTR_PROC_FABRIC_X_BUS_WIDTH_4_BYTE)
+ && (l_def_LINK_X_AGGREGATE_EN == literal_0)) && (l_def_X_CMD_RATE_4B_R == literal_0))
+ && (l_TGT0_ATTR_CHIP_EC_FEATURE_HW407123 != literal_0)))
+ {
+ l_scom_buffer.insert<56, 8, 56, uint64_t>(((l_def_X_CMD_RATE_4B_N / l_def_X_CMD_RATE_D) + literal_2) );
+ }
+ else if (((((l_TGT1_ATTR_PROC_FABRIC_X_BUS_WIDTH == fapi2::ENUM_ATTR_PROC_FABRIC_X_BUS_WIDTH_4_BYTE)
+ && (l_def_LINK_X_AGGREGATE_EN == literal_1)) && (l_def_X_CMD_RATE_4B_RA != literal_0))
+ && (l_TGT0_ATTR_CHIP_EC_FEATURE_HW407123 != literal_0)))
+ {
+ l_scom_buffer.insert<56, 8, 56, uint64_t>(((l_def_X_CMD_RATE_4B_NA / l_def_X_CMD_RATE_D) + literal_4) );
+ }
+ else if (((((l_TGT1_ATTR_PROC_FABRIC_X_BUS_WIDTH == fapi2::ENUM_ATTR_PROC_FABRIC_X_BUS_WIDTH_4_BYTE)
+ && (l_def_LINK_X_AGGREGATE_EN == literal_1)) && (l_def_X_CMD_RATE_4B_RA == literal_0))
+ && (l_TGT0_ATTR_CHIP_EC_FEATURE_HW407123 != literal_0)))
+ {
+ l_scom_buffer.insert<56, 8, 56, uint64_t>(((l_def_X_CMD_RATE_4B_NA / l_def_X_CMD_RATE_D) + literal_3) );
+ }
+ else if (((((l_TGT1_ATTR_PROC_FABRIC_X_BUS_WIDTH == fapi2::ENUM_ATTR_PROC_FABRIC_X_BUS_WIDTH_2_BYTE)
+ && (l_def_LINK_X_AGGREGATE_EN == literal_0)) && (l_def_X_CMD_RATE_2B_R != literal_0))
+ && (l_TGT0_ATTR_CHIP_EC_FEATURE_HW407123 != literal_0)))
+ {
+ l_scom_buffer.insert<56, 8, 56, uint64_t>(((l_def_X_CMD_RATE_2B_N / l_def_X_CMD_RATE_D) + literal_3) );
+ }
+ else if (((((l_TGT1_ATTR_PROC_FABRIC_X_BUS_WIDTH == fapi2::ENUM_ATTR_PROC_FABRIC_X_BUS_WIDTH_2_BYTE)
+ && (l_def_LINK_X_AGGREGATE_EN == literal_0)) && (l_def_X_CMD_RATE_2B_R == literal_0))
+ && (l_TGT0_ATTR_CHIP_EC_FEATURE_HW407123 != literal_0)))
+ {
+ l_scom_buffer.insert<56, 8, 56, uint64_t>(((l_def_X_CMD_RATE_2B_N / l_def_X_CMD_RATE_D) + literal_2) );
+ }
+ else if (((((l_TGT1_ATTR_PROC_FABRIC_X_BUS_WIDTH == fapi2::ENUM_ATTR_PROC_FABRIC_X_BUS_WIDTH_2_BYTE)
+ && (l_def_LINK_X_AGGREGATE_EN == literal_1)) && (l_def_X_CMD_RATE_2B_RA != literal_0))
+ && (l_TGT0_ATTR_CHIP_EC_FEATURE_HW407123 != literal_0)))
+ {
+ l_scom_buffer.insert<56, 8, 56, uint64_t>(((l_def_X_CMD_RATE_2B_NA / l_def_X_CMD_RATE_D) + literal_3) );
+ }
+ else if (((((l_TGT1_ATTR_PROC_FABRIC_X_BUS_WIDTH == fapi2::ENUM_ATTR_PROC_FABRIC_X_BUS_WIDTH_2_BYTE)
+ && (l_def_LINK_X_AGGREGATE_EN == literal_1)) && (l_def_X_CMD_RATE_2B_RA == literal_0))
+ && (l_TGT0_ATTR_CHIP_EC_FEATURE_HW407123 != literal_0)))
+ {
+ l_scom_buffer.insert<56, 8, 56, uint64_t>(((l_def_X_CMD_RATE_2B_NA / l_def_X_CMD_RATE_D) + literal_2) );
+ }
+ else if ((((l_TGT1_ATTR_PROC_FABRIC_X_BUS_WIDTH == fapi2::ENUM_ATTR_PROC_FABRIC_X_BUS_WIDTH_4_BYTE)
+ && (l_def_LINK_X_AGGREGATE_EN == literal_0)) && (l_def_X_CMD_RATE_4B_R != literal_0)))
{
l_scom_buffer.insert<56, 8, 56, uint64_t>((l_def_X_CMD_RATE_4B_N / l_def_X_CMD_RATE_D) );
}
@@ -2033,8 +2083,56 @@ fapi2::ReturnCode p9_fbc_ab_hp_scom(const fapi2::Target<fapi2::TARGET_TYPE_PROC_
constexpr auto l_PB_COM_PB_CFG_X_GATHER_ENABLE_NEXT_ON = 0x7;
l_scom_buffer.insert<50, 1, 62, uint64_t>(l_PB_COM_PB_CFG_X_GATHER_ENABLE_NEXT_ON );
- if ((((l_TGT1_ATTR_PROC_FABRIC_X_BUS_WIDTH == fapi2::ENUM_ATTR_PROC_FABRIC_X_BUS_WIDTH_4_BYTE)
- && (l_def_LINK_X_AGGREGATE_EN == literal_0)) && (l_def_X_CMD_RATE_4B_R != literal_0)))
+ if (((((l_TGT1_ATTR_PROC_FABRIC_X_BUS_WIDTH == fapi2::ENUM_ATTR_PROC_FABRIC_X_BUS_WIDTH_4_BYTE)
+ && (l_def_LINK_X_AGGREGATE_EN == literal_0)) && (l_def_X_CMD_RATE_4B_R != literal_0))
+ && (l_TGT0_ATTR_CHIP_EC_FEATURE_HW407123 != literal_0)))
+ {
+ l_scom_buffer.insert<56, 8, 56, uint64_t>(((l_def_X_CMD_RATE_4B_N / l_def_X_CMD_RATE_D) + literal_3) );
+ }
+ else if (((((l_TGT1_ATTR_PROC_FABRIC_X_BUS_WIDTH == fapi2::ENUM_ATTR_PROC_FABRIC_X_BUS_WIDTH_4_BYTE)
+ && (l_def_LINK_X_AGGREGATE_EN == literal_0)) && (l_def_X_CMD_RATE_4B_R == literal_0))
+ && (l_TGT0_ATTR_CHIP_EC_FEATURE_HW407123 != literal_0)))
+ {
+ l_scom_buffer.insert<56, 8, 56, uint64_t>(((l_def_X_CMD_RATE_4B_N / l_def_X_CMD_RATE_D) + literal_2) );
+ }
+ else if (((((l_TGT1_ATTR_PROC_FABRIC_X_BUS_WIDTH == fapi2::ENUM_ATTR_PROC_FABRIC_X_BUS_WIDTH_4_BYTE)
+ && (l_def_LINK_X_AGGREGATE_EN == literal_1)) && (l_def_X_CMD_RATE_4B_RA != literal_0))
+ && (l_TGT0_ATTR_CHIP_EC_FEATURE_HW407123 != literal_0)))
+ {
+ l_scom_buffer.insert<56, 8, 56, uint64_t>(((l_def_X_CMD_RATE_4B_NA / l_def_X_CMD_RATE_D) + literal_4) );
+ }
+ else if (((((l_TGT1_ATTR_PROC_FABRIC_X_BUS_WIDTH == fapi2::ENUM_ATTR_PROC_FABRIC_X_BUS_WIDTH_4_BYTE)
+ && (l_def_LINK_X_AGGREGATE_EN == literal_1)) && (l_def_X_CMD_RATE_4B_RA == literal_0))
+ && (l_TGT0_ATTR_CHIP_EC_FEATURE_HW407123 != literal_0)))
+ {
+ l_scom_buffer.insert<56, 8, 56, uint64_t>(((l_def_X_CMD_RATE_4B_NA / l_def_X_CMD_RATE_D) + literal_3) );
+ }
+ else if (((((l_TGT1_ATTR_PROC_FABRIC_X_BUS_WIDTH == fapi2::ENUM_ATTR_PROC_FABRIC_X_BUS_WIDTH_2_BYTE)
+ && (l_def_LINK_X_AGGREGATE_EN == literal_0)) && (l_def_X_CMD_RATE_2B_R != literal_0))
+ && (l_TGT0_ATTR_CHIP_EC_FEATURE_HW407123 != literal_0)))
+ {
+ l_scom_buffer.insert<56, 8, 56, uint64_t>(((l_def_X_CMD_RATE_2B_N / l_def_X_CMD_RATE_D) + literal_3) );
+ }
+ else if (((((l_TGT1_ATTR_PROC_FABRIC_X_BUS_WIDTH == fapi2::ENUM_ATTR_PROC_FABRIC_X_BUS_WIDTH_2_BYTE)
+ && (l_def_LINK_X_AGGREGATE_EN == literal_0)) && (l_def_X_CMD_RATE_2B_R == literal_0))
+ && (l_TGT0_ATTR_CHIP_EC_FEATURE_HW407123 != literal_0)))
+ {
+ l_scom_buffer.insert<56, 8, 56, uint64_t>(((l_def_X_CMD_RATE_2B_N / l_def_X_CMD_RATE_D) + literal_2) );
+ }
+ else if (((((l_TGT1_ATTR_PROC_FABRIC_X_BUS_WIDTH == fapi2::ENUM_ATTR_PROC_FABRIC_X_BUS_WIDTH_2_BYTE)
+ && (l_def_LINK_X_AGGREGATE_EN == literal_1)) && (l_def_X_CMD_RATE_2B_RA != literal_0))
+ && (l_TGT0_ATTR_CHIP_EC_FEATURE_HW407123 != literal_0)))
+ {
+ l_scom_buffer.insert<56, 8, 56, uint64_t>(((l_def_X_CMD_RATE_2B_NA / l_def_X_CMD_RATE_D) + literal_3) );
+ }
+ else if (((((l_TGT1_ATTR_PROC_FABRIC_X_BUS_WIDTH == fapi2::ENUM_ATTR_PROC_FABRIC_X_BUS_WIDTH_2_BYTE)
+ && (l_def_LINK_X_AGGREGATE_EN == literal_1)) && (l_def_X_CMD_RATE_2B_RA == literal_0))
+ && (l_TGT0_ATTR_CHIP_EC_FEATURE_HW407123 != literal_0)))
+ {
+ l_scom_buffer.insert<56, 8, 56, uint64_t>(((l_def_X_CMD_RATE_2B_NA / l_def_X_CMD_RATE_D) + literal_2) );
+ }
+ else if ((((l_TGT1_ATTR_PROC_FABRIC_X_BUS_WIDTH == fapi2::ENUM_ATTR_PROC_FABRIC_X_BUS_WIDTH_4_BYTE)
+ && (l_def_LINK_X_AGGREGATE_EN == literal_0)) && (l_def_X_CMD_RATE_4B_R != literal_0)))
{
l_scom_buffer.insert<56, 8, 56, uint64_t>((l_def_X_CMD_RATE_4B_N / l_def_X_CMD_RATE_D) );
}
@@ -3010,8 +3108,56 @@ fapi2::ReturnCode p9_fbc_ab_hp_scom(const fapi2::Target<fapi2::TARGET_TYPE_PROC_
constexpr auto l_PB_COM_PB_CFG_X_GATHER_ENABLE_NEXT_ON = 0x7;
l_scom_buffer.insert<50, 1, 63, uint64_t>(l_PB_COM_PB_CFG_X_GATHER_ENABLE_NEXT_ON );
- if ((((l_TGT1_ATTR_PROC_FABRIC_X_BUS_WIDTH == fapi2::ENUM_ATTR_PROC_FABRIC_X_BUS_WIDTH_4_BYTE)
- && (l_def_LINK_X_AGGREGATE_EN == literal_0)) && (l_def_X_CMD_RATE_4B_R != literal_0)))
+ if (((((l_TGT1_ATTR_PROC_FABRIC_X_BUS_WIDTH == fapi2::ENUM_ATTR_PROC_FABRIC_X_BUS_WIDTH_4_BYTE)
+ && (l_def_LINK_X_AGGREGATE_EN == literal_0)) && (l_def_X_CMD_RATE_4B_R != literal_0))
+ && (l_TGT0_ATTR_CHIP_EC_FEATURE_HW407123 != literal_0)))
+ {
+ l_scom_buffer.insert<56, 8, 56, uint64_t>(((l_def_X_CMD_RATE_4B_N / l_def_X_CMD_RATE_D) + literal_3) );
+ }
+ else if (((((l_TGT1_ATTR_PROC_FABRIC_X_BUS_WIDTH == fapi2::ENUM_ATTR_PROC_FABRIC_X_BUS_WIDTH_4_BYTE)
+ && (l_def_LINK_X_AGGREGATE_EN == literal_0)) && (l_def_X_CMD_RATE_4B_R == literal_0))
+ && (l_TGT0_ATTR_CHIP_EC_FEATURE_HW407123 != literal_0)))
+ {
+ l_scom_buffer.insert<56, 8, 56, uint64_t>(((l_def_X_CMD_RATE_4B_N / l_def_X_CMD_RATE_D) + literal_2) );
+ }
+ else if (((((l_TGT1_ATTR_PROC_FABRIC_X_BUS_WIDTH == fapi2::ENUM_ATTR_PROC_FABRIC_X_BUS_WIDTH_4_BYTE)
+ && (l_def_LINK_X_AGGREGATE_EN == literal_1)) && (l_def_X_CMD_RATE_4B_RA != literal_0))
+ && (l_TGT0_ATTR_CHIP_EC_FEATURE_HW407123 != literal_0)))
+ {
+ l_scom_buffer.insert<56, 8, 56, uint64_t>(((l_def_X_CMD_RATE_4B_NA / l_def_X_CMD_RATE_D) + literal_4) );
+ }
+ else if (((((l_TGT1_ATTR_PROC_FABRIC_X_BUS_WIDTH == fapi2::ENUM_ATTR_PROC_FABRIC_X_BUS_WIDTH_4_BYTE)
+ && (l_def_LINK_X_AGGREGATE_EN == literal_1)) && (l_def_X_CMD_RATE_4B_RA == literal_0))
+ && (l_TGT0_ATTR_CHIP_EC_FEATURE_HW407123 != literal_0)))
+ {
+ l_scom_buffer.insert<56, 8, 56, uint64_t>(((l_def_X_CMD_RATE_4B_NA / l_def_X_CMD_RATE_D) + literal_3) );
+ }
+ else if (((((l_TGT1_ATTR_PROC_FABRIC_X_BUS_WIDTH == fapi2::ENUM_ATTR_PROC_FABRIC_X_BUS_WIDTH_2_BYTE)
+ && (l_def_LINK_X_AGGREGATE_EN == literal_0)) && (l_def_X_CMD_RATE_2B_R != literal_0))
+ && (l_TGT0_ATTR_CHIP_EC_FEATURE_HW407123 != literal_0)))
+ {
+ l_scom_buffer.insert<56, 8, 56, uint64_t>(((l_def_X_CMD_RATE_2B_N / l_def_X_CMD_RATE_D) + literal_3) );
+ }
+ else if (((((l_TGT1_ATTR_PROC_FABRIC_X_BUS_WIDTH == fapi2::ENUM_ATTR_PROC_FABRIC_X_BUS_WIDTH_2_BYTE)
+ && (l_def_LINK_X_AGGREGATE_EN == literal_0)) && (l_def_X_CMD_RATE_2B_R == literal_0))
+ && (l_TGT0_ATTR_CHIP_EC_FEATURE_HW407123 != literal_0)))
+ {
+ l_scom_buffer.insert<56, 8, 56, uint64_t>(((l_def_X_CMD_RATE_2B_N / l_def_X_CMD_RATE_D) + literal_2) );
+ }
+ else if (((((l_TGT1_ATTR_PROC_FABRIC_X_BUS_WIDTH == fapi2::ENUM_ATTR_PROC_FABRIC_X_BUS_WIDTH_2_BYTE)
+ && (l_def_LINK_X_AGGREGATE_EN == literal_1)) && (l_def_X_CMD_RATE_2B_RA != literal_0))
+ && (l_TGT0_ATTR_CHIP_EC_FEATURE_HW407123 != literal_0)))
+ {
+ l_scom_buffer.insert<56, 8, 56, uint64_t>(((l_def_X_CMD_RATE_2B_NA / l_def_X_CMD_RATE_D) + literal_3) );
+ }
+ else if (((((l_TGT1_ATTR_PROC_FABRIC_X_BUS_WIDTH == fapi2::ENUM_ATTR_PROC_FABRIC_X_BUS_WIDTH_2_BYTE)
+ && (l_def_LINK_X_AGGREGATE_EN == literal_1)) && (l_def_X_CMD_RATE_2B_RA == literal_0))
+ && (l_TGT0_ATTR_CHIP_EC_FEATURE_HW407123 != literal_0)))
+ {
+ l_scom_buffer.insert<56, 8, 56, uint64_t>(((l_def_X_CMD_RATE_2B_NA / l_def_X_CMD_RATE_D) + literal_2) );
+ }
+ else if ((((l_TGT1_ATTR_PROC_FABRIC_X_BUS_WIDTH == fapi2::ENUM_ATTR_PROC_FABRIC_X_BUS_WIDTH_4_BYTE)
+ && (l_def_LINK_X_AGGREGATE_EN == literal_0)) && (l_def_X_CMD_RATE_4B_R != literal_0)))
{
l_scom_buffer.insert<56, 8, 56, uint64_t>((l_def_X_CMD_RATE_4B_N / l_def_X_CMD_RATE_D) );
}
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 43bec57d9..78e5443a1 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
@@ -1721,6 +1721,25 @@
</attribute>
<!-- ******************************************************************** -->
<attribute>
+ <id>ATTR_CHIP_EC_FEATURE_HW407123</id>
+ <targetType>TARGET_TYPE_PROC_CHIP</targetType>
+ <description>
+ Nimbus DD1,DD2: enable workarounds for HW407123 in FBC initfile
+ Slow down xlink cmd rate to work around broken single link credit dial
+ that would have prevented rcmd overflows
+ </description>
+ <chipEcFeature>
+ <chip>
+ <name>ENUM_ATTR_NAME_NIMBUS</name>
+ <ec>
+ <value>0x20</value>
+ <test>LESS_THAN_OR_EQUAL</test>
+ </ec>
+ </chip>
+ </chipEcFeature>
+ </attribute>
+ <!-- ******************************************************************** -->
+ <attribute>
<id>ATTR_CHIP_EC_FEATURE_HW378025</id>
<targetType>TARGET_TYPE_PROC_CHIP</targetType>
<description>
OpenPOWER on IntegriCloud