diff options
author | Ben Gass <bgass@us.ibm.com> | 2017-07-14 13:16:38 -0500 |
---|---|---|
committer | Daniel M. Crowell <dcrowell@us.ibm.com> | 2017-09-10 14:18:34 -0400 |
commit | 0d0d6f0a627f5eaa99d25a581164b6048d7b025c (patch) | |
tree | 72094cdb090aef9adccbd2a2c2451d4e1922ebde /src/import/chips/p9/procedures/hwp/initfiles/p9c_mi_scom.C | |
parent | 979b92660d5bc4d27fb388612040f4740df007dd (diff) | |
download | talos-hostboot-0d0d6f0a627f5eaa99d25a581164b6048d7b025c.tar.gz talos-hostboot-0d0d6f0a627f5eaa99d25a581164b6048d7b025c.zip |
Updates for Cumulus dmi/mi/mc initfiles
Includes workaround for HW413362
Replaces patches 43055 and 43056
Change-Id: I55f19c0de2323026ce636d6723fee3fed18abd75
Original-Change-Id: I95a4602e36250f6ec9dcd8bb1a590c9f29d3f22a
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/43158
Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com>
Reviewed-by: LENNARD G. STREAT <lstreat@us.ibm.com>
Tested-by: Hostboot CI <hostboot-ci+hostboot@us.ibm.com>
Dev-Ready: Brent Wieman <bwieman@us.ibm.com>
Reviewed-by: SHELTON LEUNG <sleung@us.ibm.com>
Reviewed-by: Joseph J. McGill <jmcgill@us.ibm.com>
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/45852
Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com>
Tested-by: Jenkins OP HW <op-hw-jenkins+hostboot@us.ibm.com>
Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com>
Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
Diffstat (limited to 'src/import/chips/p9/procedures/hwp/initfiles/p9c_mi_scom.C')
-rw-r--r-- | src/import/chips/p9/procedures/hwp/initfiles/p9c_mi_scom.C | 86 |
1 files changed, 78 insertions, 8 deletions
diff --git a/src/import/chips/p9/procedures/hwp/initfiles/p9c_mi_scom.C b/src/import/chips/p9/procedures/hwp/initfiles/p9c_mi_scom.C index a4c927719..348ec4ef2 100644 --- a/src/import/chips/p9/procedures/hwp/initfiles/p9c_mi_scom.C +++ b/src/import/chips/p9/procedures/hwp/initfiles/p9c_mi_scom.C @@ -30,32 +30,40 @@ using namespace fapi2; constexpr uint64_t literal_7 = 7; +constexpr uint64_t literal_16 = 16; +constexpr uint64_t literal_8 = 8; constexpr uint64_t literal_1 = 1; constexpr uint64_t literal_0x19 = 0x19; +constexpr uint64_t literal_0 = 0; constexpr uint64_t literal_0b0000000000001000000 = 0b0000000000001000000; constexpr uint64_t literal_0b0000000000001000 = 0b0000000000001000; +constexpr uint64_t literal_0b01 = 0b01; +constexpr uint64_t literal_5 = 5; fapi2::ReturnCode p9c_mi_scom(const fapi2::Target<fapi2::TARGET_TYPE_MI>& TGT0, const fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>& TGT1) { { uint64_t l_def_ENABLE_PREFETCH_DROP_PROMOTE_BASIC = literal_1; - uint64_t l_def_ENABLE_DYNAMIC_64_128B_READS = literal_1; + uint64_t l_def_ENABLE_DYNAMIC_64_128B_READS = literal_0; uint64_t l_def_ENABLE_ECRESP = literal_1; uint64_t l_def_ENABLE_AMO_CACHING = literal_1; + uint64_t l_def_ENABLE_MCU_TIMEOUTS = literal_1; fapi2::buffer<uint64_t> l_scom_buffer; { FAPI_TRY(fapi2::getScom( TGT0, 0x5010810ull, l_scom_buffer )); l_scom_buffer.insert<46, 4, 60, uint64_t>(literal_7 ); + l_scom_buffer.insert<50, 5, 59, uint64_t>(literal_16 ); + l_scom_buffer.insert<55, 6, 58, uint64_t>(literal_8 ); - if (l_def_ENABLE_PREFETCH_DROP_PROMOTE_BASIC) + if ((l_def_ENABLE_PREFETCH_DROP_PROMOTE_BASIC == literal_1)) { constexpr auto l_MC01_PBI01_SCOMFIR_MCPERF1_ENABLE_PF_DROP_CMDLIST_ON = 0x1; l_scom_buffer.insert<61, 1, 63, uint64_t>(l_MC01_PBI01_SCOMFIR_MCPERF1_ENABLE_PF_DROP_CMDLIST_ON ); } - if (l_def_ENABLE_PREFETCH_DROP_PROMOTE_BASIC) + if ((l_def_ENABLE_PREFETCH_DROP_PROMOTE_BASIC == literal_1)) { l_scom_buffer.insert<32, 7, 57, uint64_t>(literal_0x19 ); } @@ -65,8 +73,8 @@ fapi2::ReturnCode p9c_mi_scom(const fapi2::Target<fapi2::TARGET_TYPE_MI>& TGT0, { FAPI_TRY(fapi2::getScom( TGT0, 0x5010811ull, l_scom_buffer )); - constexpr auto l_MC01_PBI01_SCOMFIR_MCMODE0_ENABLE_CENTAUR_PERFMON_COMMAND_ON = 0x1; - l_scom_buffer.insert<48, 1, 63, uint64_t>(l_MC01_PBI01_SCOMFIR_MCMODE0_ENABLE_CENTAUR_PERFMON_COMMAND_ON ); + constexpr auto l_MC01_PBI01_SCOMFIR_MCMODE0_ENABLE_CENTAUR_PERFMON_COMMAND_OFF = 0x0; + l_scom_buffer.insert<48, 1, 63, uint64_t>(l_MC01_PBI01_SCOMFIR_MCMODE0_ENABLE_CENTAUR_PERFMON_COMMAND_OFF ); constexpr auto l_MC01_PBI01_SCOMFIR_MCMODE0_ENABLE_EMERGENCY_THROTTLE_ON = 0x1; l_scom_buffer.insert<21, 1, 63, uint64_t>(l_MC01_PBI01_SCOMFIR_MCMODE0_ENABLE_EMERGENCY_THROTTLE_ON ); constexpr auto l_MC01_PBI01_SCOMFIR_MCMODE0_ENABLE_CENTAUR_CHECKSTOP_COMMAND_ON = 0x1; @@ -74,18 +82,25 @@ fapi2::ReturnCode p9c_mi_scom(const fapi2::Target<fapi2::TARGET_TYPE_MI>& TGT0, constexpr auto l_MC01_PBI01_SCOMFIR_MCMODE0_ENABLE_CENTAUR_TRACESTOP_COMMAND_ON = 0x1; l_scom_buffer.insert<23, 1, 63, uint64_t>(l_MC01_PBI01_SCOMFIR_MCMODE0_ENABLE_CENTAUR_TRACESTOP_COMMAND_ON ); - if (l_def_ENABLE_DYNAMIC_64_128B_READS) + if ((l_def_ENABLE_DYNAMIC_64_128B_READS == literal_1)) { constexpr auto l_MC01_PBI01_SCOMFIR_MCMODE0_ENABLE_64_128B_READ_ON = 0x1; l_scom_buffer.insert<9, 1, 63, uint64_t>(l_MC01_PBI01_SCOMFIR_MCMODE0_ENABLE_64_128B_READ_ON ); } + else if ((l_def_ENABLE_DYNAMIC_64_128B_READS == literal_0)) + { + constexpr auto l_MC01_PBI01_SCOMFIR_MCMODE0_ENABLE_64_128B_READ_OFF = 0x0; + l_scom_buffer.insert<9, 1, 63, uint64_t>(l_MC01_PBI01_SCOMFIR_MCMODE0_ENABLE_64_128B_READ_OFF ); + } - if (l_def_ENABLE_ECRESP) + if ((l_def_ENABLE_ECRESP == literal_1)) { constexpr auto l_MC01_PBI01_SCOMFIR_MCMODE0_CENTAURP_ENABLE_ECRESP_ON = 0x1; l_scom_buffer.insert<7, 1, 63, uint64_t>(l_MC01_PBI01_SCOMFIR_MCMODE0_CENTAURP_ENABLE_ECRESP_ON ); } + constexpr auto l_MC01_PBI01_SCOMFIR_MCMODE0_ASYNC_MODE_ON = 0x1; + l_scom_buffer.insert<6, 1, 63, uint64_t>(l_MC01_PBI01_SCOMFIR_MCMODE0_ASYNC_MODE_ON ); FAPI_TRY(fapi2::putScom(TGT0, 0x5010811ull, l_scom_buffer)); } { @@ -97,13 +112,68 @@ fapi2::ReturnCode p9c_mi_scom(const fapi2::Target<fapi2::TARGET_TYPE_MI>& TGT0, { FAPI_TRY(fapi2::getScom( TGT0, 0x5010813ull, l_scom_buffer )); - if (l_def_ENABLE_AMO_CACHING) + if ((l_def_ENABLE_AMO_CACHING == literal_1)) { l_scom_buffer.insert<24, 16, 48, uint64_t>(literal_0b0000000000001000 ); } FAPI_TRY(fapi2::putScom(TGT0, 0x5010813ull, l_scom_buffer)); } + { + FAPI_TRY(fapi2::getScom( TGT0, 0x501081bull, l_scom_buffer )); + + if ((l_def_ENABLE_MCU_TIMEOUTS == literal_1)) + { + constexpr auto l_MC01_PBI01_SCOMFIR_MCTO_SELECT_PB_HANG_PULSE_ON = 0x1; + l_scom_buffer.insert<0, 1, 63, uint64_t>(l_MC01_PBI01_SCOMFIR_MCTO_SELECT_PB_HANG_PULSE_ON ); + } + + constexpr auto l_MC01_PBI01_SCOMFIR_MCTO_SELECT_LOCAL_HANG_PULSE_OFF = 0x0; + l_scom_buffer.insert<1, 1, 63, uint64_t>(l_MC01_PBI01_SCOMFIR_MCTO_SELECT_LOCAL_HANG_PULSE_OFF ); + + if ((l_def_ENABLE_MCU_TIMEOUTS == literal_1)) + { + constexpr auto l_MC01_PBI01_SCOMFIR_MCTO_ENABLE_NONMIRROR_HANG_ON = 0x1; + l_scom_buffer.insert<32, 1, 63, uint64_t>(l_MC01_PBI01_SCOMFIR_MCTO_ENABLE_NONMIRROR_HANG_ON ); + } + + if ((l_def_ENABLE_MCU_TIMEOUTS == literal_1)) + { + constexpr auto l_MC01_PBI01_SCOMFIR_MCTO_ENABLE_MIRROR_HANG_ON = 0x1; + l_scom_buffer.insert<33, 1, 63, uint64_t>(l_MC01_PBI01_SCOMFIR_MCTO_ENABLE_MIRROR_HANG_ON ); + } + + if ((l_def_ENABLE_MCU_TIMEOUTS == literal_1)) + { + constexpr auto l_MC01_PBI01_SCOMFIR_MCTO_ENABLE_APO_HANG_ON = 0x1; + l_scom_buffer.insert<34, 1, 63, uint64_t>(l_MC01_PBI01_SCOMFIR_MCTO_ENABLE_APO_HANG_ON ); + } + + if ((l_def_ENABLE_MCU_TIMEOUTS == literal_1)) + { + constexpr auto l_MC01_PBI01_SCOMFIR_MCTO_ENABLE_CLIB_HANG_ON = 0x1; + l_scom_buffer.insert<35, 1, 63, uint64_t>(l_MC01_PBI01_SCOMFIR_MCTO_ENABLE_CLIB_HANG_ON ); + } + + l_scom_buffer.insert<2, 2, 62, uint64_t>(literal_0b01 ); + + if ((l_def_ENABLE_MCU_TIMEOUTS == literal_1)) + { + l_scom_buffer.insert<24, 8, 56, uint64_t>(literal_1 ); + } + + if ((l_def_ENABLE_MCU_TIMEOUTS == literal_1)) + { + l_scom_buffer.insert<5, 3, 61, uint64_t>(literal_7 ); + } + + if ((l_def_ENABLE_MCU_TIMEOUTS == literal_1)) + { + l_scom_buffer.insert<37, 3, 61, uint64_t>(literal_5 ); + } + + FAPI_TRY(fapi2::putScom(TGT0, 0x501081bull, l_scom_buffer)); + } }; fapi_try_exit: |