diff options
Diffstat (limited to 'src/import/chips/p9/procedures/hwp/initfiles/p9_mmu_scom.C')
-rw-r--r-- | src/import/chips/p9/procedures/hwp/initfiles/p9_mmu_scom.C | 259 |
1 files changed, 222 insertions, 37 deletions
diff --git a/src/import/chips/p9/procedures/hwp/initfiles/p9_mmu_scom.C b/src/import/chips/p9/procedures/hwp/initfiles/p9_mmu_scom.C index ad70907a..404527c5 100644 --- a/src/import/chips/p9/procedures/hwp/initfiles/p9_mmu_scom.C +++ b/src/import/chips/p9/procedures/hwp/initfiles/p9_mmu_scom.C @@ -29,14 +29,22 @@ using namespace fapi2; +constexpr uint64_t literal_0 = 0; constexpr uint64_t literal_0x04047C0000000000 = 0x04047C0000000000; +constexpr uint64_t literal_0x04247C0000000000 = 0x04247C0000000000; constexpr uint64_t literal_0x0000000000000000 = 0x0000000000000000; constexpr uint64_t literal_0x409B000000000000 = 0x409B000000000000; +constexpr uint64_t literal_0x40FB000000000000 = 0x40FB000000000000; +constexpr uint64_t literal_0x3 = 0x3; +constexpr uint64_t literal_0x1 = 0x1; constexpr uint64_t literal_0x0000FAF800FF = 0x0000FAF800FF; +constexpr uint64_t literal_0x0000FAFC00FB = 0x0000FAFC00FB; constexpr uint64_t literal_0x000000000000 = 0x000000000000; constexpr uint64_t literal_0x910000040F00 = 0x910000040F00; +constexpr uint64_t literal_0x9D1100000F04 = 0x9D1100000F04; constexpr uint64_t literal_0b11111 = 0b11111; constexpr uint64_t literal_0x00E = 0x00E; +constexpr uint64_t literal_0x000 = 0x000; constexpr uint64_t literal_0x0258 = 0x0258; fapi2::ReturnCode p9_mmu_scom(const fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>& TGT0, @@ -47,13 +55,27 @@ fapi2::ReturnCode p9_mmu_scom(const fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>& fapi2::ATTR_NAME_Type l_chip_id; FAPI_TRY(FAPI_ATTR_GET_PRIVILEGED(fapi2::ATTR_NAME, TGT0, l_chip_id)); FAPI_TRY(FAPI_ATTR_GET_PRIVILEGED(fapi2::ATTR_EC, TGT0, l_chip_ec)); + fapi2::ATTR_CHIP_EC_FEATURE_NMMU_DMT_DD2_Type l_TGT0_ATTR_CHIP_EC_FEATURE_NMMU_DMT_DD2; + FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_CHIP_EC_FEATURE_NMMU_DMT_DD2, TGT0, l_TGT0_ATTR_CHIP_EC_FEATURE_NMMU_DMT_DD2)); fapi2::ATTR_PROC_FABRIC_PUMP_MODE_Type l_TGT1_ATTR_PROC_FABRIC_PUMP_MODE; FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_PROC_FABRIC_PUMP_MODE, TGT1, l_TGT1_ATTR_PROC_FABRIC_PUMP_MODE)); + fapi2::ATTR_PROC_EPS_WRITE_CYCLES_T1_Type l_TGT1_ATTR_PROC_EPS_WRITE_CYCLES_T1; + FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_PROC_EPS_WRITE_CYCLES_T1, TGT1, l_TGT1_ATTR_PROC_EPS_WRITE_CYCLES_T1)); + fapi2::ATTR_PROC_EPS_WRITE_CYCLES_T2_Type l_TGT1_ATTR_PROC_EPS_WRITE_CYCLES_T2; + FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_PROC_EPS_WRITE_CYCLES_T2, TGT1, l_TGT1_ATTR_PROC_EPS_WRITE_CYCLES_T2)); fapi2::buffer<uint64_t> l_scom_buffer; { FAPI_TRY(fapi2::getScom( TGT0, 0x5012c03ull, l_scom_buffer )); - l_scom_buffer.insert<0, 22, 0, uint64_t>(literal_0x04047C0000000000 ); + if ((l_TGT0_ATTR_CHIP_EC_FEATURE_NMMU_DMT_DD2 == literal_0)) + { + l_scom_buffer.insert<0, 22, 0, uint64_t>(literal_0x04047C0000000000 ); + } + else if ((l_TGT0_ATTR_CHIP_EC_FEATURE_NMMU_DMT_DD2 != literal_0)) + { + l_scom_buffer.insert<0, 22, 0, uint64_t>(literal_0x04247C0000000000 ); + } + FAPI_TRY(fapi2::putScom(TGT0, 0x5012c03ull, l_scom_buffer)); } { @@ -65,15 +87,20 @@ fapi2::ReturnCode p9_mmu_scom(const fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>& { FAPI_TRY(fapi2::getScom( TGT0, 0x5012c07ull, l_scom_buffer )); - l_scom_buffer.insert<0, 22, 0, uint64_t>(literal_0x409B000000000000 ); + if ((l_TGT0_ATTR_CHIP_EC_FEATURE_NMMU_DMT_DD2 == literal_0)) + { + l_scom_buffer.insert<0, 22, 0, uint64_t>(literal_0x409B000000000000 ); + } + else if ((l_TGT0_ATTR_CHIP_EC_FEATURE_NMMU_DMT_DD2 != literal_0)) + { + l_scom_buffer.insert<0, 22, 0, uint64_t>(literal_0x40FB000000000000 ); + } + FAPI_TRY(fapi2::putScom(TGT0, 0x5012c07ull, l_scom_buffer)); } { FAPI_TRY(fapi2::getScom( TGT0, 0x5012c15ull, l_scom_buffer )); - constexpr auto l_NMMU_MM_FBC_CQ_WRAP_NXCQ_SCOM_ADDR_BAR_MODE_OFF = 0x0; - l_scom_buffer.insert<33, 1, 63, uint64_t>(l_NMMU_MM_FBC_CQ_WRAP_NXCQ_SCOM_ADDR_BAR_MODE_OFF ); - if ((l_TGT1_ATTR_PROC_FABRIC_PUMP_MODE == fapi2::ENUM_ATTR_PROC_FABRIC_PUMP_MODE_CHIP_IS_NODE)) { constexpr auto l_NMMU_MM_FBC_CQ_WRAP_NXCQ_SCOM_CFG_PUMP_MODE_ON = 0x1; @@ -85,12 +112,37 @@ fapi2::ReturnCode p9_mmu_scom(const fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>& l_scom_buffer.insert<39, 1, 63, uint64_t>(l_NMMU_MM_FBC_CQ_WRAP_NXCQ_SCOM_CFG_PUMP_MODE_OFF ); } + if (((l_chip_id == 0x5) && (l_chip_ec == 0x20)) ) + { + l_scom_buffer.insert<8, 3, 61, uint64_t>(literal_0x3 ); + } + FAPI_TRY(fapi2::putScom(TGT0, 0x5012c15ull, l_scom_buffer)); } { + if (((l_chip_id == 0x5) && (l_chip_ec == 0x20)) ) + { + FAPI_TRY(fapi2::getScom( TGT0, 0x5012c1dull, l_scom_buffer )); + + l_scom_buffer.insert<0, 12, 52, uint64_t>(l_TGT1_ATTR_PROC_EPS_WRITE_CYCLES_T1 ); + l_scom_buffer.insert<16, 12, 52, uint64_t>(l_TGT1_ATTR_PROC_EPS_WRITE_CYCLES_T2 ); + l_scom_buffer.insert<12, 4, 60, uint64_t>(literal_0x1 ); + l_scom_buffer.insert<28, 4, 60, uint64_t>(literal_0x1 ); + FAPI_TRY(fapi2::putScom(TGT0, 0x5012c1dull, l_scom_buffer)); + } + } + { FAPI_TRY(fapi2::getScom( TGT0, 0x5012c43ull, l_scom_buffer )); - l_scom_buffer.insert<0, 48, 16, uint64_t>(literal_0x0000FAF800FF ); + if ((l_TGT0_ATTR_CHIP_EC_FEATURE_NMMU_DMT_DD2 == literal_0)) + { + l_scom_buffer.insert<0, 48, 16, uint64_t>(literal_0x0000FAF800FF ); + } + else if ((l_TGT0_ATTR_CHIP_EC_FEATURE_NMMU_DMT_DD2 != literal_0)) + { + l_scom_buffer.insert<0, 48, 16, uint64_t>(literal_0x0000FAFC00FB ); + } + FAPI_TRY(fapi2::putScom(TGT0, 0x5012c43ull, l_scom_buffer)); } { @@ -102,47 +154,116 @@ fapi2::ReturnCode p9_mmu_scom(const fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>& { FAPI_TRY(fapi2::getScom( TGT0, 0x5012c47ull, l_scom_buffer )); - l_scom_buffer.insert<0, 48, 16, uint64_t>(literal_0x910000040F00 ); + if ((l_TGT0_ATTR_CHIP_EC_FEATURE_NMMU_DMT_DD2 == literal_0)) + { + l_scom_buffer.insert<0, 48, 16, uint64_t>(literal_0x910000040F00 ); + } + else if ((l_TGT0_ATTR_CHIP_EC_FEATURE_NMMU_DMT_DD2 != literal_0)) + { + l_scom_buffer.insert<0, 48, 16, uint64_t>(literal_0x9D1100000F04 ); + } + FAPI_TRY(fapi2::putScom(TGT0, 0x5012c47ull, l_scom_buffer)); } { FAPI_TRY(fapi2::getScom( TGT0, 0x5012c52ull, l_scom_buffer )); + l_scom_buffer.insert<30, 1, 59, uint64_t>(literal_0b11111 ); + l_scom_buffer.insert<60, 4, 60, uint64_t>(literal_0b11111 ); + if (((l_chip_id == 0x5) && (l_chip_ec == 0x10)) ) { - constexpr auto l_NMMU_MM_PIPE_THREAD_MODE_SINGLE_THREAD_MODE_ST_INV = 0x70; - l_scom_buffer.insert<20, 1, 57, uint64_t>(l_NMMU_MM_PIPE_THREAD_MODE_SINGLE_THREAD_MODE_ST_INV ); - l_scom_buffer.insert<24, 1, 62, uint64_t>(l_NMMU_MM_PIPE_THREAD_MODE_SINGLE_THREAD_MODE_ST_INV ); - l_scom_buffer.insert<26, 1, 63, uint64_t>(l_NMMU_MM_PIPE_THREAD_MODE_SINGLE_THREAD_MODE_ST_INV ); + if ((l_TGT0_ATTR_CHIP_EC_FEATURE_NMMU_DMT_DD2 == literal_0)) + { + constexpr auto l_NMMU_MM_PIPE_THREAD_MODE_SINGLE_THREAD_MODE_ST_INV = 0x70; + l_scom_buffer.insert<20, 1, 57, uint64_t>(l_NMMU_MM_PIPE_THREAD_MODE_SINGLE_THREAD_MODE_ST_INV ); + l_scom_buffer.insert<24, 1, 62, uint64_t>(l_NMMU_MM_PIPE_THREAD_MODE_SINGLE_THREAD_MODE_ST_INV ); + l_scom_buffer.insert<26, 1, 63, uint64_t>(l_NMMU_MM_PIPE_THREAD_MODE_SINGLE_THREAD_MODE_ST_INV ); + } + else if ((l_TGT0_ATTR_CHIP_EC_FEATURE_NMMU_DMT_DD2 != literal_0)) + { + constexpr auto l_NMMU_MM_PIPE_THREAD_MODE_MULTI_THREAD_MODE_DYN_ST_EN_HANGP_DIS_MT_INV = 0xb; + l_scom_buffer.insert<20, 1, 57, uint64_t>(l_NMMU_MM_PIPE_THREAD_MODE_MULTI_THREAD_MODE_DYN_ST_EN_HANGP_DIS_MT_INV ); + l_scom_buffer.insert<24, 1, 62, uint64_t>(l_NMMU_MM_PIPE_THREAD_MODE_MULTI_THREAD_MODE_DYN_ST_EN_HANGP_DIS_MT_INV ); + l_scom_buffer.insert<26, 1, 63, uint64_t>(l_NMMU_MM_PIPE_THREAD_MODE_MULTI_THREAD_MODE_DYN_ST_EN_HANGP_DIS_MT_INV ); + } } else if (((l_chip_id == 0x5) && (l_chip_ec == 0x20)) ) { - constexpr auto l_NMMU_MM_PIPE_THREAD_MODE_SINGLE_THREAD_MODE_ST_INV = 0xe00; - l_scom_buffer.insert<20, 1, 52, uint64_t>(l_NMMU_MM_PIPE_THREAD_MODE_SINGLE_THREAD_MODE_ST_INV ); - l_scom_buffer.insert<24, 1, 57, uint64_t>(l_NMMU_MM_PIPE_THREAD_MODE_SINGLE_THREAD_MODE_ST_INV ); - l_scom_buffer.insert<26, 1, 58, uint64_t>(l_NMMU_MM_PIPE_THREAD_MODE_SINGLE_THREAD_MODE_ST_INV ); + if ((l_TGT0_ATTR_CHIP_EC_FEATURE_NMMU_DMT_DD2 == literal_0)) + { + constexpr auto l_NMMU_MM_PIPE_THREAD_MODE_SINGLE_THREAD_MODE_ST_INV = 0xe00; + l_scom_buffer.insert<20, 1, 52, uint64_t>(l_NMMU_MM_PIPE_THREAD_MODE_SINGLE_THREAD_MODE_ST_INV ); + l_scom_buffer.insert<24, 1, 57, uint64_t>(l_NMMU_MM_PIPE_THREAD_MODE_SINGLE_THREAD_MODE_ST_INV ); + l_scom_buffer.insert<26, 1, 58, uint64_t>(l_NMMU_MM_PIPE_THREAD_MODE_SINGLE_THREAD_MODE_ST_INV ); + } + else if ((l_TGT0_ATTR_CHIP_EC_FEATURE_NMMU_DMT_DD2 != literal_0)) + { + constexpr auto l_NMMU_MM_PIPE_THREAD_MODE_MULTI_THREAD_MODE_DYN_ST_EN_HANGP_DIS_MT_INV = 0x177; + l_scom_buffer.insert<20, 1, 52, uint64_t>(l_NMMU_MM_PIPE_THREAD_MODE_MULTI_THREAD_MODE_DYN_ST_EN_HANGP_DIS_MT_INV ); + l_scom_buffer.insert<24, 1, 57, uint64_t>(l_NMMU_MM_PIPE_THREAD_MODE_MULTI_THREAD_MODE_DYN_ST_EN_HANGP_DIS_MT_INV ); + l_scom_buffer.insert<26, 1, 58, uint64_t>(l_NMMU_MM_PIPE_THREAD_MODE_MULTI_THREAD_MODE_DYN_ST_EN_HANGP_DIS_MT_INV ); + } + } + + if ((l_TGT0_ATTR_CHIP_EC_FEATURE_NMMU_DMT_DD2 == literal_0)) + { + l_scom_buffer.insert<0, 12, 52, uint64_t>(literal_0x00E ); + } + else if ((l_TGT0_ATTR_CHIP_EC_FEATURE_NMMU_DMT_DD2 != literal_0)) + { + l_scom_buffer.insert<0, 12, 52, uint64_t>(literal_0x000 ); + } + + constexpr auto l_NMMU_MM_CFG_NMMU_CTL_TW_RDX_PWC_DIS_ON = 0x1; + l_scom_buffer.insert<52, 1, 63, uint64_t>(l_NMMU_MM_CFG_NMMU_CTL_TW_RDX_PWC_DIS_ON ); + + if (((l_chip_id == 0x5) && (l_chip_ec == 0x20)) ) + { + constexpr auto l_NMMU_MM_CFG_NMMU_CTL_TW_LCO_RDX_EN_ON = 0x1; + l_scom_buffer.insert<44, 1, 63, uint64_t>(l_NMMU_MM_CFG_NMMU_CTL_TW_LCO_RDX_EN_ON ); + } + + if (((l_chip_id == 0x5) && (l_chip_ec == 0x20)) ) + { + constexpr auto l_NMMU_MM_CFG_NMMU_CTL_TW_LCO_RDX_PDE_EN_ON = 0x1; + l_scom_buffer.insert<51, 1, 63, uint64_t>(l_NMMU_MM_CFG_NMMU_CTL_TW_LCO_RDX_PDE_EN_ON ); } - l_scom_buffer.insert<30, 1, 59, uint64_t>(literal_0b11111 ); - l_scom_buffer.insert<60, 4, 60, uint64_t>(literal_0b11111 ); - l_scom_buffer.insert<0, 12, 52, uint64_t>(literal_0x00E ); FAPI_TRY(fapi2::putScom(TGT0, 0x5012c52ull, l_scom_buffer)); } { FAPI_TRY(fapi2::getScom( TGT0, 0x5012c53ull, l_scom_buffer )); + l_scom_buffer.insert<32, 16, 48, uint64_t>(literal_0x0258 ); + if (((l_chip_id == 0x5) && (l_chip_ec == 0x10)) ) { - constexpr auto l_NMMU_MM_PIPE_THREAD_MODE_SINGLE_THREAD_MODE_ST_INV = 0x70; - l_scom_buffer.insert<2, 2, 60, uint64_t>(l_NMMU_MM_PIPE_THREAD_MODE_SINGLE_THREAD_MODE_ST_INV ); + if ((l_TGT0_ATTR_CHIP_EC_FEATURE_NMMU_DMT_DD2 == literal_0)) + { + constexpr auto l_NMMU_MM_PIPE_THREAD_MODE_SINGLE_THREAD_MODE_ST_INV = 0x70; + l_scom_buffer.insert<2, 2, 60, uint64_t>(l_NMMU_MM_PIPE_THREAD_MODE_SINGLE_THREAD_MODE_ST_INV ); + } + else if ((l_TGT0_ATTR_CHIP_EC_FEATURE_NMMU_DMT_DD2 != literal_0)) + { + constexpr auto l_NMMU_MM_PIPE_THREAD_MODE_MULTI_THREAD_MODE_DYN_ST_EN_HANGP_DIS_MT_INV = 0xb; + l_scom_buffer.insert<2, 2, 60, uint64_t>(l_NMMU_MM_PIPE_THREAD_MODE_MULTI_THREAD_MODE_DYN_ST_EN_HANGP_DIS_MT_INV ); + } } else if (((l_chip_id == 0x5) && (l_chip_ec == 0x20)) ) { - constexpr auto l_NMMU_MM_PIPE_THREAD_MODE_SINGLE_THREAD_MODE_ST_INV = 0xe00; - l_scom_buffer.insert<2, 2, 55, uint64_t>(l_NMMU_MM_PIPE_THREAD_MODE_SINGLE_THREAD_MODE_ST_INV ); + if ((l_TGT0_ATTR_CHIP_EC_FEATURE_NMMU_DMT_DD2 == literal_0)) + { + constexpr auto l_NMMU_MM_PIPE_THREAD_MODE_SINGLE_THREAD_MODE_ST_INV = 0xe00; + l_scom_buffer.insert<2, 2, 55, uint64_t>(l_NMMU_MM_PIPE_THREAD_MODE_SINGLE_THREAD_MODE_ST_INV ); + } + else if ((l_TGT0_ATTR_CHIP_EC_FEATURE_NMMU_DMT_DD2 != literal_0)) + { + constexpr auto l_NMMU_MM_PIPE_THREAD_MODE_MULTI_THREAD_MODE_DYN_ST_EN_HANGP_DIS_MT_INV = 0x177; + l_scom_buffer.insert<2, 2, 55, uint64_t>(l_NMMU_MM_PIPE_THREAD_MODE_MULTI_THREAD_MODE_DYN_ST_EN_HANGP_DIS_MT_INV ); + } } - l_scom_buffer.insert<32, 16, 48, uint64_t>(literal_0x0258 ); FAPI_TRY(fapi2::putScom(TGT0, 0x5012c53ull, l_scom_buffer)); } { @@ -150,14 +271,37 @@ fapi2::ReturnCode p9_mmu_scom(const fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>& if (((l_chip_id == 0x5) && (l_chip_ec == 0x10)) ) { - constexpr auto l_NMMU_MM_PIPE_THREAD_MODE_SINGLE_THREAD_MODE_ST_INV = 0x70; - l_scom_buffer.insert<16, 1, 58, uint64_t>(l_NMMU_MM_PIPE_THREAD_MODE_SINGLE_THREAD_MODE_ST_INV ); + if ((l_TGT0_ATTR_CHIP_EC_FEATURE_NMMU_DMT_DD2 == literal_0)) + { + constexpr auto l_NMMU_MM_PIPE_THREAD_MODE_SINGLE_THREAD_MODE_ST_INV = 0x70; + l_scom_buffer.insert<16, 1, 58, uint64_t>(l_NMMU_MM_PIPE_THREAD_MODE_SINGLE_THREAD_MODE_ST_INV ); + } + else if ((l_TGT0_ATTR_CHIP_EC_FEATURE_NMMU_DMT_DD2 != literal_0)) + { + constexpr auto l_NMMU_MM_PIPE_THREAD_MODE_MULTI_THREAD_MODE_DYN_ST_EN_HANGP_DIS_MT_INV = 0xb; + l_scom_buffer.insert<16, 1, 58, uint64_t>(l_NMMU_MM_PIPE_THREAD_MODE_MULTI_THREAD_MODE_DYN_ST_EN_HANGP_DIS_MT_INV ); + } } else if (((l_chip_id == 0x5) && (l_chip_ec == 0x20)) ) { - constexpr auto l_NMMU_MM_PIPE_THREAD_MODE_SINGLE_THREAD_MODE_ST_INV = 0xe00; - l_scom_buffer.insert<16, 1, 53, uint64_t>(l_NMMU_MM_PIPE_THREAD_MODE_SINGLE_THREAD_MODE_ST_INV ); - l_scom_buffer.insert<58, 2, 59, uint64_t>(l_NMMU_MM_PIPE_THREAD_MODE_SINGLE_THREAD_MODE_ST_INV ); + if ((l_TGT0_ATTR_CHIP_EC_FEATURE_NMMU_DMT_DD2 == literal_0)) + { + constexpr auto l_NMMU_MM_PIPE_THREAD_MODE_SINGLE_THREAD_MODE_ST_INV = 0xe00; + l_scom_buffer.insert<16, 1, 53, uint64_t>(l_NMMU_MM_PIPE_THREAD_MODE_SINGLE_THREAD_MODE_ST_INV ); + l_scom_buffer.insert<58, 2, 59, uint64_t>(l_NMMU_MM_PIPE_THREAD_MODE_SINGLE_THREAD_MODE_ST_INV ); + } + else if ((l_TGT0_ATTR_CHIP_EC_FEATURE_NMMU_DMT_DD2 != literal_0)) + { + constexpr auto l_NMMU_MM_PIPE_THREAD_MODE_MULTI_THREAD_MODE_DYN_ST_EN_HANGP_DIS_MT_INV = 0x177; + l_scom_buffer.insert<16, 1, 53, uint64_t>(l_NMMU_MM_PIPE_THREAD_MODE_MULTI_THREAD_MODE_DYN_ST_EN_HANGP_DIS_MT_INV ); + l_scom_buffer.insert<58, 2, 59, uint64_t>(l_NMMU_MM_PIPE_THREAD_MODE_MULTI_THREAD_MODE_DYN_ST_EN_HANGP_DIS_MT_INV ); + } + } + + if (((l_chip_id == 0x5) && (l_chip_ec == 0x20)) ) + { + constexpr auto l_NMMU_MM_CFG_TWSM_SPLIT_MODE_TWSM_SPLIT_08_TLB_04_SLB = 0x0; + l_scom_buffer.insert<57, 1, 62, uint64_t>(l_NMMU_MM_CFG_TWSM_SPLIT_MODE_TWSM_SPLIT_08_TLB_04_SLB ); } FAPI_TRY(fapi2::putScom(TGT0, 0x5012c54ull, l_scom_buffer)); @@ -165,22 +309,63 @@ fapi2::ReturnCode p9_mmu_scom(const fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>& { FAPI_TRY(fapi2::getScom( TGT0, 0x5012c55ull, l_scom_buffer )); + constexpr auto l_NMMU_MM_CFG_NMMU_CTL_TLB_ISS543B_FIX_EN_ON = 0x1; + l_scom_buffer.insert<53, 1, 63, uint64_t>(l_NMMU_MM_CFG_NMMU_CTL_TLB_ISS543B_FIX_EN_ON ); + if (((l_chip_id == 0x5) && (l_chip_ec == 0x10)) ) { - constexpr auto l_NMMU_MM_PIPE_THREAD_MODE_SINGLE_THREAD_MODE_ST_INV = 0x70; - l_scom_buffer.insert<16, 1, 59, uint64_t>(l_NMMU_MM_PIPE_THREAD_MODE_SINGLE_THREAD_MODE_ST_INV ); + if ((l_TGT0_ATTR_CHIP_EC_FEATURE_NMMU_DMT_DD2 == literal_0)) + { + constexpr auto l_NMMU_MM_PIPE_THREAD_MODE_SINGLE_THREAD_MODE_ST_INV = 0x70; + l_scom_buffer.insert<16, 1, 59, uint64_t>(l_NMMU_MM_PIPE_THREAD_MODE_SINGLE_THREAD_MODE_ST_INV ); + } + else if ((l_TGT0_ATTR_CHIP_EC_FEATURE_NMMU_DMT_DD2 != literal_0)) + { + constexpr auto l_NMMU_MM_PIPE_THREAD_MODE_MULTI_THREAD_MODE_DYN_ST_EN_HANGP_DIS_MT_INV = 0xb; + l_scom_buffer.insert<16, 1, 59, uint64_t>(l_NMMU_MM_PIPE_THREAD_MODE_MULTI_THREAD_MODE_DYN_ST_EN_HANGP_DIS_MT_INV ); + } } else if (((l_chip_id == 0x5) && (l_chip_ec == 0x20)) ) { - constexpr auto l_NMMU_MM_PIPE_THREAD_MODE_SINGLE_THREAD_MODE_ST_INV = 0xe00; - l_scom_buffer.insert<16, 1, 54, uint64_t>(l_NMMU_MM_PIPE_THREAD_MODE_SINGLE_THREAD_MODE_ST_INV ); - l_scom_buffer.insert<58, 2, 61, uint64_t>(l_NMMU_MM_PIPE_THREAD_MODE_SINGLE_THREAD_MODE_ST_INV ); + if ((l_TGT0_ATTR_CHIP_EC_FEATURE_NMMU_DMT_DD2 == literal_0)) + { + constexpr auto l_NMMU_MM_PIPE_THREAD_MODE_SINGLE_THREAD_MODE_ST_INV = 0xe00; + l_scom_buffer.insert<16, 1, 54, uint64_t>(l_NMMU_MM_PIPE_THREAD_MODE_SINGLE_THREAD_MODE_ST_INV ); + l_scom_buffer.insert<58, 2, 61, uint64_t>(l_NMMU_MM_PIPE_THREAD_MODE_SINGLE_THREAD_MODE_ST_INV ); + } + else if ((l_TGT0_ATTR_CHIP_EC_FEATURE_NMMU_DMT_DD2 != literal_0)) + { + constexpr auto l_NMMU_MM_PIPE_THREAD_MODE_MULTI_THREAD_MODE_DYN_ST_EN_HANGP_DIS_MT_INV = 0x177; + l_scom_buffer.insert<16, 1, 54, uint64_t>(l_NMMU_MM_PIPE_THREAD_MODE_MULTI_THREAD_MODE_DYN_ST_EN_HANGP_DIS_MT_INV ); + l_scom_buffer.insert<58, 2, 61, uint64_t>(l_NMMU_MM_PIPE_THREAD_MODE_MULTI_THREAD_MODE_DYN_ST_EN_HANGP_DIS_MT_INV ); + } + } + + if (((l_chip_id == 0x5) && (l_chip_ec == 0x20)) ) + { + constexpr auto l_NMMU_MM_MPSS_MODE_MPSS_ENA_PREF_PGSZ_ENA_G_64KB_H_64KB = 0x155; + l_scom_buffer.insert<19, 1, 54, uint64_t>(l_NMMU_MM_MPSS_MODE_MPSS_ENA_PREF_PGSZ_ENA_G_64KB_H_64KB ); + l_scom_buffer.insert<56, 1, 55, uint64_t>(l_NMMU_MM_MPSS_MODE_MPSS_ENA_PREF_PGSZ_ENA_G_64KB_H_64KB ); + l_scom_buffer.insert<44, 8, 56, uint64_t>(l_NMMU_MM_MPSS_MODE_MPSS_ENA_PREF_PGSZ_ENA_G_64KB_H_64KB ); + } + + if ((l_TGT0_ATTR_CHIP_EC_FEATURE_NMMU_DMT_DD2 == literal_0)) + { + constexpr auto l_NMMU_MM_CFG_NMMU_CTL_TLB_HASH_PID_DIS_ON = 0x1; + l_scom_buffer.insert<21, 1, 63, uint64_t>(l_NMMU_MM_CFG_NMMU_CTL_TLB_HASH_PID_DIS_ON ); + } + else if ((l_TGT0_ATTR_CHIP_EC_FEATURE_NMMU_DMT_DD2 != literal_0)) + { + constexpr auto l_NMMU_MM_CFG_NMMU_CTL_TLB_HASH_PID_DIS_OFF = 0x0; + l_scom_buffer.insert<21, 1, 63, uint64_t>(l_NMMU_MM_CFG_NMMU_CTL_TLB_HASH_PID_DIS_OFF ); + } + + if (((l_chip_id == 0x5) && (l_chip_ec == 0x20)) ) + { + constexpr auto l_NMMU_MM_CFG_TWSM_SPLIT_MODE_TWSM_SPLIT_08_TLB_04_SLB = 0x0; + l_scom_buffer.insert<57, 1, 63, uint64_t>(l_NMMU_MM_CFG_TWSM_SPLIT_MODE_TWSM_SPLIT_08_TLB_04_SLB ); } - constexpr auto l_NMMU_MM_CFG_NMMU_CTL_TLB_HASH_PID_DIS_ON = 0x1; - l_scom_buffer.insert<21, 1, 63, uint64_t>(l_NMMU_MM_CFG_NMMU_CTL_TLB_HASH_PID_DIS_ON ); - constexpr auto l_NMMU_MM_CFG_NMMU_CTL_TLB_ISS543B_FIX_EN_ON = 0x1; - l_scom_buffer.insert<53, 1, 63, uint64_t>(l_NMMU_MM_CFG_NMMU_CTL_TLB_ISS543B_FIX_EN_ON ); FAPI_TRY(fapi2::putScom(TGT0, 0x5012c55ull, l_scom_buffer)); } |