From c749a8867ef8cc29551ce2d316aa12553b5ac3a5 Mon Sep 17 00:00:00 2001 From: Benjamin Weisenbeck Date: Mon, 28 Aug 2017 14:22:59 -0500 Subject: [PATCH] PRD: Reorganized some pll code Change-Id: I301e457d21acaeb00af5dfc89fc99aa8ea4585e7 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/45250 Tested-by: Jenkins Server Reviewed-by: Brian J. Stegmiller Reviewed-by: Zane C. Shelley Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/45569 Tested-by: Jenkins OP Build CI Tested-by: Jenkins OP HW Tested-by: FSP CI Jenkins --- src/usr/diag/prdf/common/plat/p9/prdfP9Pll.C | 173 +++++-------------- 1 file changed, 45 insertions(+), 128 deletions(-) diff --git a/src/usr/diag/prdf/common/plat/p9/prdfP9Pll.C b/src/usr/diag/prdf/common/plat/p9/prdfP9Pll.C index 11670657729..2f5994e2b46 100644 --- a/src/usr/diag/prdf/common/plat/p9/prdfP9Pll.C +++ b/src/usr/diag/prdf/common/plat/p9/prdfP9Pll.C @@ -60,55 +60,73 @@ enum OSC_SW_MF_REF = 37, }; -void ClearChipletParityError(ExtensibleChip * i_chip, - TARGETING::TYPE i_chpltType) +void getChpltList ( ExtensibleChip * i_chip, + TARGETING::TYPE i_chpltType, + const char * &o_errRegStr, + const char * &o_cfgRegStr, + ExtensibleChipList & o_chpltList ) { - #define PRDF_FUNC "[Proc::ClearChipletParityError ]" - - int32_t rc = SUCCESS; - const char * errRegStr = NULL; - + #define PRDF_FUNC "[Proc::getChpltList ]" switch (i_chpltType) { case TYPE_PROC: - errRegStr = "TP_ERROR_REG"; + o_errRegStr = "TP_ERROR_REG"; + o_cfgRegStr = "TP_CONFIG_REG"; break; case TYPE_OBUS: - errRegStr = "OBUS_ERROR_REG"; + o_errRegStr = "OBUS_ERROR_REG"; + o_cfgRegStr = "OBUS_CONFIG_REG"; break; case TYPE_XBUS: - errRegStr = "XBUS_ERROR_REG"; + o_errRegStr = "XBUS_ERROR_REG"; + o_cfgRegStr = "XBUS_CONFIG_REG"; break; case TYPE_PEC: - errRegStr = "PCI_ERROR_REG"; + o_errRegStr = "PCI_ERROR_REG"; + o_cfgRegStr = "PCI_CONFIG_REG"; break; case TYPE_MCBIST: - errRegStr = "MC_ERROR_REG"; + o_errRegStr = "MC_ERROR_REG"; + o_cfgRegStr = "MC_CONFIG_REG"; break; case TYPE_EQ: - errRegStr = "EQ_ERROR_REG"; + o_errRegStr = "EQ_ERROR_REG"; + o_cfgRegStr = "EQ_CONFIG_REG"; break; case TYPE_CORE: - errRegStr = "EC_ERROR_REG"; + o_errRegStr = "EC_ERROR_REG"; + o_cfgRegStr = "EC_CONFIG_REG"; break; default: - // Unexpected chiplet type, just return PRDF_ERR(PRDF_FUNC "Unexpected chiplet type %x for for 0x%08x", i_chpltType, i_chip->getHuid()); - return; + PRDF_ASSERT(false); } - ExtensibleChipList chpltList; - if ( i_chpltType == TYPE_PROC || i_chpltType == TYPE_XBUS ) { - chpltList.push_back(i_chip); + o_chpltList.push_back(i_chip); } else { - chpltList = PlatServices::getConnected(i_chip, i_chpltType); + o_chpltList = PlatServices::getConnected(i_chip, i_chpltType); } + #undef PRDF_FUNC +} + +void ClearChipletParityError(ExtensibleChip * i_chip, + TARGETING::TYPE i_chpltType) +{ + #define PRDF_FUNC "[Proc::ClearChipletParityError ]" + + int32_t rc = SUCCESS; + const char * errRegStr = nullptr; + const char * cfgRegStr = nullptr; + ExtensibleChipList chpltList; + + getChpltList( i_chip, i_chpltType, errRegStr, cfgRegStr, chpltList ); + for ( auto chplt : chpltList ) { SCAN_COMM_REGISTER_CLASS * errReg = chplt->getRegister(errRegStr); @@ -130,42 +148,11 @@ void ClearChipletPll(ExtensibleChip * i_chip, TARGETING::TYPE i_chpltType) #define PRDF_FUNC "[Proc::ClearChipletPll] " int32_t rc = SUCCESS; - const char * errRegStr = NULL; - - switch (i_chpltType) - { - case TYPE_PROC: - errRegStr = "TP_ERROR_REG"; - break; - case TYPE_OBUS: - errRegStr = "OBUS_ERROR_REG"; - break; - case TYPE_XBUS: - errRegStr = "XBUS_ERROR_REG"; - break; - case TYPE_PEC: - errRegStr = "PCI_ERROR_REG"; - break; - case TYPE_MCBIST: - errRegStr = "MC_ERROR_REG"; - break; - default: - // Unexpected chiplet type, just return - PRDF_ERR(PRDF_FUNC "Unexpected chiplet type %x for for 0x%08x", - i_chpltType, i_chip->getHuid()); - return; - } - + const char * errRegStr = nullptr; + const char * cfgRegStr = nullptr; ExtensibleChipList chpltList; - if ( i_chpltType == TYPE_PROC || i_chpltType == TYPE_XBUS ) - { - chpltList.push_back(i_chip); - } - else - { - chpltList = PlatServices::getConnected(i_chip, i_chpltType); - } + getChpltList( i_chip, i_chpltType, errRegStr, cfgRegStr, chpltList ); for ( auto chplt : chpltList ) { @@ -189,7 +176,6 @@ void ClearChipletPll(ExtensibleChip * i_chip, TARGETING::TYPE i_chpltType) errRegStr, chplt->getHuid()); continue; } - } #undef PRDF_FUNC @@ -200,42 +186,11 @@ void MaskChipletPll(ExtensibleChip * i_chip, TARGETING::TYPE i_chpltType) #define PRDF_FUNC "[Proc::MaskChipletPll] " int32_t rc = SUCCESS; - const char * cfgRegStr = NULL; - - switch (i_chpltType) - { - case TYPE_PROC: - cfgRegStr = "TP_CONFIG_REG"; - break; - case TYPE_OBUS: - cfgRegStr = "OBUS_CONFIG_REG"; - break; - case TYPE_XBUS: - cfgRegStr = "XBUS_CONFIG_REG"; - break; - case TYPE_PEC: - cfgRegStr = "PCI_CONFIG_REG"; - break; - case TYPE_MCBIST: - cfgRegStr = "MC_CONFIG_REG"; - break; - default: - // Unexpected chiplet type, just return - PRDF_ERR(PRDF_FUNC "Unexpected chiplet type %x for for 0x%08x", - i_chpltType, i_chip->getHuid()); - return; - } - + const char * errRegStr = nullptr; + const char * cfgRegStr = nullptr; ExtensibleChipList chpltList; - if ( i_chpltType == TYPE_PROC || i_chpltType == TYPE_XBUS ) - { - chpltList.push_back(i_chip); - } - else - { - chpltList = PlatServices::getConnected(i_chip, i_chpltType); - } + getChpltList( i_chip, i_chpltType, errRegStr, cfgRegStr, chpltList ); for ( auto chplt : chpltList ) { @@ -268,46 +223,9 @@ bool CheckChipletPll(ExtensibleChip * i_chip, TARGETING::TYPE i_chpltType) bool pllErrFound = false; const char * errRegStr = NULL; const char * cfgRegStr = NULL; - - switch (i_chpltType) - { - case TYPE_PROC: - errRegStr = "TP_ERROR_REG"; - cfgRegStr = "TP_CONFIG_REG"; - break; - case TYPE_OBUS: - errRegStr = "OBUS_ERROR_REG"; - cfgRegStr = "OBUS_CONFIG_REG"; - break; - case TYPE_XBUS: - errRegStr = "XBUS_ERROR_REG"; - cfgRegStr = "XBUS_CONFIG_REG"; - break; - case TYPE_PEC: - errRegStr = "PCI_ERROR_REG"; - cfgRegStr = "PCI_CONFIG_REG"; - break; - case TYPE_MCBIST: - errRegStr = "MC_ERROR_REG"; - cfgRegStr = "MC_CONFIG_REG"; - break; - default: - // Unexpected chiplet type, just return false - PRDF_ERR(PRDF_FUNC "Unexpected chiplet type %x for for 0x%08x", - i_chpltType, i_chip->getHuid()); - return false; - } - ExtensibleChipList chpltList; - if ( i_chpltType == TYPE_PROC || i_chpltType == TYPE_XBUS ) - { - chpltList.push_back(i_chip); - } - else - { - chpltList = PlatServices::getConnected(i_chip, i_chpltType); - } + getChpltList( i_chip, i_chpltType, errRegStr, cfgRegStr, chpltList ); for ( auto chplt : chpltList ) { @@ -346,7 +264,6 @@ bool CheckChipletPll(ExtensibleChip * i_chip, TARGETING::TYPE i_chpltType) int32_t CheckErrorType( ExtensibleChip * i_chip, uint32_t & o_errType ) { #define PRDF_FUNC "[Proc::CheckErrorType] " - int32_t rc = SUCCESS; SCAN_COMM_REGISTER_CLASS * TP_LFIR =