diff options
Diffstat (limited to 'src/import/chips/p9/procedures/hwp/perv')
-rw-r--r-- | src/import/chips/p9/procedures/hwp/perv/p9_sbe_attr_setup.C | 33 |
1 files changed, 32 insertions, 1 deletions
diff --git a/src/import/chips/p9/procedures/hwp/perv/p9_sbe_attr_setup.C b/src/import/chips/p9/procedures/hwp/perv/p9_sbe_attr_setup.C index 827fa60b..28f060ab 100644 --- a/src/import/chips/p9/procedures/hwp/perv/p9_sbe_attr_setup.C +++ b/src/import/chips/p9/procedures/hwp/perv/p9_sbe_attr_setup.C @@ -5,7 +5,7 @@ /* */ /* OpenPOWER sbe Project */ /* */ -/* Contributors Listed Below - COPYRIGHT 2015,2016 */ +/* Contributors Listed Below - COPYRIGHT 2015,2017 */ /* [+] International Business Machines Corp. */ /* */ /* */ @@ -53,6 +53,7 @@ enum P9_SETUP_SBE_CONFIG_scratch4 ATTR_I2C_BUS_DIV_REF_LENGTH = 16, ATTR_BOOT_FLAGS_STARTBIT = 0, ATTR_BOOT_FLAGS_LENGTH = 32, + ATTR_PUMP_CHIP_IS_GROUP = 23, ATTR_PROC_FABRIC_GROUP_ID_STARTBIT = 26, ATTR_PROC_FABRIC_GROUP_ID_LENGTH = 3, ATTR_PROC_FABRIC_CHIP_ID_STARTBIT = 29, @@ -473,6 +474,8 @@ fapi2::ReturnCode p9_sbe_attr_setup(const } //read_scratch6_reg { + uint8_t l_pump_mode; + if ( l_read_scratch8.getBit<5>() ) { FAPI_DBG("Reading Scratch_reg6"); @@ -494,9 +497,23 @@ fapi2::ReturnCode p9_sbe_attr_setup(const } } + if (l_read_scratch_reg.getBit<ATTR_PUMP_CHIP_IS_GROUP>()) + { + l_pump_mode = fapi2::ENUM_ATTR_PROC_FABRIC_PUMP_MODE_CHIP_IS_GROUP; + } + else + { + l_pump_mode = fapi2::ENUM_ATTR_PROC_FABRIC_PUMP_MODE_CHIP_IS_NODE; + } + l_read_scratch_reg.extractToRight<26, 3>(l_read_2); l_read_scratch_reg.extractToRight<29, 3>(l_read_3); + FAPI_DBG("Setting up PUMP MODE"); + FAPI_TRY(FAPI_ATTR_SET(fapi2::ATTR_PROC_FABRIC_PUMP_MODE, + fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>(), + l_pump_mode)); + FAPI_DBG("Setting up MASTER_CHIP, FABRIC_GROUP_ID and CHIP_ID"); FAPI_TRY(FAPI_ATTR_SET(fapi2::ATTR_PROC_SBE_MASTER_CHIP, i_target_chip, l_read_1)); @@ -526,6 +543,20 @@ fapi2::ReturnCode p9_sbe_attr_setup(const l_read_scratch_reg.setBit<24>(); } + FAPI_DBG("Reading PUMP MODE"); + FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_PROC_FABRIC_PUMP_MODE, + fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>(), + l_pump_mode)); + + if (l_pump_mode == fapi2::ENUM_ATTR_PROC_FABRIC_PUMP_MODE_CHIP_IS_GROUP) + { + l_read_scratch_reg.setBit<ATTR_PUMP_CHIP_IS_GROUP>(); + } + else + { + l_read_scratch_reg.clearBit<ATTR_PUMP_CHIP_IS_GROUP>(); + } + FAPI_DBG("Reading ATTR_PROC_FABRIC_GROUP and CHIP_ID"); FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_PROC_FABRIC_GROUP_ID, i_target_chip, l_read_1)); |