diff options
Diffstat (limited to 'src/usr')
-rw-r--r-- | src/usr/fapi2/plat_hw_access.C | 136 | ||||
-rw-r--r-- | src/usr/fapi2/plat_utils.C | 293 | ||||
-rw-r--r-- | src/usr/isteps/istep11/makefile | 1 | ||||
-rw-r--r-- | src/usr/scan/scandd.C | 6 |
4 files changed, 251 insertions, 185 deletions
diff --git a/src/usr/fapi2/plat_hw_access.C b/src/usr/fapi2/plat_hw_access.C index e39632ccc..5fbabee11 100644 --- a/src/usr/fapi2/plat_hw_access.C +++ b/src/usr/fapi2/plat_hw_access.C @@ -928,12 +928,13 @@ ReturnCode platModifyRing(const Target<TARGET_TYPE_ALL>& i_target, return l_rc; } -/// @brief passing a 'Put Ring from Image' message to SBE with RingId_t -ReturnCode platPutRing(const Target<TARGET_TYPE_ALL>& i_target, +/// @brief 'Put Ring from Image' to centaur - overloaded template function for +// TARGET_TYPE_MEMBUF_CHIP targets +ReturnCode platPutRing(const Target<TARGET_TYPE_MEMBUF_CHIP>& i_target, const RingId_t i_ringID, - const RingMode i_ringMode = RING_MODE_HEADER_CHECK) + const RingMode i_ringMode) { - FAPI_DBG("Entering: platPutRing() with RingId_t"); + FAPI_DBG("Entering: platPutRing() with RingId_t for TARGET_TYPE_MEMBUF_CHIP"); ReturnCode l_rc = FAPI2_RC_SUCCESS; errlHndl_t l_err = NULL; @@ -941,45 +942,74 @@ ReturnCode platPutRing(const Target<TARGET_TYPE_ALL>& i_target, // trace in common fapi2_hw_access.H bool l_traceit = platIsScanTraceEnabled(); - //convert const RingId_t to RingId_t - RingId_t l_ringID = reinterpret_cast<RingId_t>(i_ringID); + unsigned char * l_ringData = nullptr; + size_t l_ringLength = 0; + uint64_t l_ringAddress = 0; - // Extract the component pointer - TARGETING::Target* l_target = - reinterpret_cast<TARGETING::Target*>(i_target.get()); - - // Grab the name of the target - TARGETING::ATTR_FAPI_NAME_type l_targName = {0}; - fapi2::toString(i_target, l_targName, sizeof(l_targName)); - - uint64_t l_flag = platGetDDScanMode(i_ringMode); - size_t l_size = (size_t) 0; - - FAPI_DBG("platPutRing l_target : %.16llX i_targetType %.16llX", - l_target, - l_target->getAttr<TARGETING::ATTR_TYPE>()); - - FAPI_DBG("platPutRing l_RingID :" - " %.16llX i_ringMode %.16llX l_flag %.16llX", - static_cast<uint64_t>(l_ringID), i_ringMode, l_flag ); - - l_err = deviceWrite(l_target, - nullptr, - l_size, - DEVICE_SCAN_SBE_ADDRESS(l_ringID,i_ringMode,l_flag)); + // grab the ring data from the cen.hw_image + l_rc = get_ring(i_target, i_ringID, l_ringData, + l_ringLength, l_ringAddress); - if(l_err) + if( l_rc == fapi2::FAPI2_RC_SUCCESS ) { - FAPI_ERR("platPutRing: deviceWrite returns error!"); - // Add the error log pointer as data to the ReturnCode - l_rc.setPlatDataPtr(reinterpret_cast<void *> (l_err)); - } + if( l_ringLength != 0 ) + { + // Extract the component pointer + TARGETING::Target* l_target = + reinterpret_cast<TARGETING::Target*>(i_target.get()); - if (l_traceit) + // Grab the name of the target + TARGETING::ATTR_FAPI_NAME_type l_targName = {0}; + fapi2::toString(i_target, l_targName, sizeof(l_targName)); + + uint64_t l_flag = platGetDDScanMode(i_ringMode); + + FAPI_DBG("platPutRing l_target : %.16llX i_targetType %.16llX", + l_target, + l_target->getAttr<TARGETING::ATTR_TYPE>()); + + FAPI_DBG("platPutRing i_RingID :" + " %.16llX i_ringMode %.16llX l_flag %.16llX l_ringLength %.16llX", + static_cast<uint64_t>(i_ringID), i_ringMode, + l_flag,static_cast<uint64_t>(l_ringLength)); + + // calculate the buffer size based on the number of bits + // in the ring, + size_t l_bufferSize = ((l_ringLength + 7) >> 3); + + l_err = deviceWrite(l_target, + l_ringData, + l_bufferSize, + DEVICE_SCAN_ADDRESS(l_ringAddress,l_ringLength,l_flag)); + + if(l_err) + { + FAPI_ERR("platPutRing: deviceWrite returns error!"); + // Add the error log pointer as data to the ReturnCode + l_rc.setPlatDataPtr(reinterpret_cast<void *> (l_err)); + } + + if (l_traceit) + { + FAPI_SCAN("TRACE : PUTRING w RingId_t : %s : %.16llX", + l_targName, + static_cast<uint64_t>(i_ringID)); + } + } + else + { + // $TODO RTC:171739 - add error case, current procedure calls + // with ring ids for rings which currently do not have any known + // content but were scanned in p8 - Joe confirmed these rings do + // not currently have content - we will need to decide if procedure + // should be updated to remove the calls or we continue to ignore + FAPI_INF("platPutRing: called with unsupported ring ID %d!", i_ringID); + } + } + else { - FAPI_SCAN("TRACE : PUTRING w RingId_t : %s : %.16llX", - l_targName, - static_cast<uint64_t>(l_ringID)); + // get_ring() call failed + FAPI_ERR("get_ring() returned error"); } FAPI_DBG(EXIT_MRK "platPutRing() with RingId_t"); @@ -994,20 +1024,20 @@ uint64_t platGetDDScanMode(const uint32_t i_ringMode) uint32_t l_scanMode = 0; if ( ((i_ringMode & fapi2::RING_MODE_SET_PULSE_NO_OPCG_COND) == - fapi2::RING_MODE_SET_PULSE_NO_OPCG_COND) || - ((i_ringMode & fapi2::RING_MODE_SET_PULSE_NSL) == - fapi2::RING_MODE_SET_PULSE_NSL) || - ((i_ringMode & fapi2::RING_MODE_SET_PULSE_SL) == - fapi2::RING_MODE_SET_PULSE_SL) || - ((i_ringMode & fapi2::RING_MODE_SET_PULSE_ALL) == - fapi2::RING_MODE_SET_PULSE_ALL) ) + fapi2::RING_MODE_SET_PULSE_NO_OPCG_COND) || + ((i_ringMode & fapi2::RING_MODE_SET_PULSE_NSL) == + fapi2::RING_MODE_SET_PULSE_NSL) || + ((i_ringMode & fapi2::RING_MODE_SET_PULSE_SL) == + fapi2::RING_MODE_SET_PULSE_SL) || + ((i_ringMode & fapi2::RING_MODE_SET_PULSE_ALL) == + fapi2::RING_MODE_SET_PULSE_ALL) ) { l_scanMode |= SCAN::SET_PULSE; } // Header Check if ((i_ringMode & fapi2::RING_MODE_NO_HEADER_CHECK) == - fapi2::RING_MODE_NO_HEADER_CHECK ) + fapi2::RING_MODE_NO_HEADER_CHECK ) { l_scanMode |= SCAN::NO_HEADER_CHECK; } @@ -1023,8 +1053,8 @@ void platSetOpMode(const OpModes i_mode) { FAPI_INF("Setting fapi2::opMode to be 0x%x", i_mode); opMode = static_cast<OpModes>( - static_cast<uint8_t>(opMode) | static_cast<uint8_t>(i_mode) - ); + static_cast<uint8_t>(opMode) | static_cast<uint8_t>(i_mode) + ); return; } @@ -1056,11 +1086,11 @@ uint8_t platGetPIBErrorMask(void) // -------------------------------------------------------------------------- /** -* @brief Determine if a given target is on the master proc chip -* @param[in] i_Target TARGETING::Target which op is being called on -* @param[out] i_isMaster True if on master proc chip, false if not -* @return errlHndl_t -*/ + * @brief Determine if a given target is on the master proc chip + * @param[in] i_Target TARGETING::Target which op is being called on + * @param[out] i_isMaster True if on master proc chip, false if not + * @return errlHndl_t + */ errlHndl_t isOnMasterProc(TARGETING::Target * i_target, bool & o_isMaster) { errlHndl_t l_errl = nullptr; diff --git a/src/usr/fapi2/plat_utils.C b/src/usr/fapi2/plat_utils.C index a1b95ec8f..9659476da 100644 --- a/src/usr/fapi2/plat_utils.C +++ b/src/usr/fapi2/plat_utils.C @@ -43,6 +43,10 @@ #include <hwpf_fapi2_reasoncodes.H> #include <attributeenums.H> +// $TODO RTC:171739 - get the ring from cen.hw_ref_image in pnor +// remove when get_ring is using the hw image +#include <ring_data.H> + #if __HOSTBOOT_RUNTIME #include "handleSpecialWakeup.H" #endif @@ -73,6 +77,35 @@ namespace fapi2 //thread_local ReturnCode current_err; ReturnCode current_err; +// $TODO RTC:171739 - get the ring from cen.hw_ref_image in pnor +// This temp verion of the function will return hardcoded +// ring data for the ring ids required for step 11 BUP +template<> +ReturnCode get_ring(Target<TARGET_TYPE_MEMBUF_CHIP>i_target, + const uint16_t ringId, + unsigned char *&o_ringData, + size_t &o_ringLength, + uint64_t &o_ringAddress) +{ + + o_ringLength = 0; + o_ringData = nullptr; + o_ringAddress = 0; + + RING_MAP::iterator it; + // search for the ring id in the map + it = ringMap.find(ringId); + if (it != ringMap.end()) + { + // found it + o_ringAddress = it->second.ringAddress; + o_ringLength = it->second.ringLength; + o_ringData = it->second.ringData; + } + + return ReturnCode(); +} + /// /// @brief Translates a FAPI callout priority to an HWAS callout priority /// @@ -81,16 +114,16 @@ ReturnCode current_err; /// @return HWAS callout priority /// HWAS::callOutPriority xlateCalloutPriority( - const fapi2::CalloutPriorities::CalloutPriority i_fapiPri) + const fapi2::CalloutPriorities::CalloutPriority i_fapiPri) { // Use the CalloutPriority enum value as an index HWAS::callOutPriority l_priority = HWAS::SRCI_PRIORITY_HIGH; size_t l_index = i_fapiPri; const HWAS::callOutPriority HWAS_PRI[] = {HWAS::SRCI_PRIORITY_LOW, - HWAS::SRCI_PRIORITY_MED, - HWAS::SRCI_PRIORITY_HIGH, - HWAS::SRCI_PRIORITY_NONE}; + HWAS::SRCI_PRIORITY_MED, + HWAS::SRCI_PRIORITY_HIGH, + HWAS::SRCI_PRIORITY_NONE}; if (l_index < (sizeof(HWAS_PRI)/sizeof(HWAS::callOutPriority))) { @@ -99,7 +132,7 @@ HWAS::callOutPriority xlateCalloutPriority( else { FAPI_ERR("fapi2::xlateCalloutPriority: Unknown priority 0x%x, assuming HIGH", - i_fapiPri); + i_fapiPri); } return l_priority; @@ -113,7 +146,7 @@ HWAS::callOutPriority xlateCalloutPriority( /// * @return HWAS Clock HW callout /// HWAS::clockTypeEnum xlateClockHwCallout( - const fapi2::HwCallouts::HwCallout i_fapiClock) + const fapi2::HwCallouts::HwCallout i_fapiClock) { // Use the HwCallout enum value as an index HWAS::clockTypeEnum l_clock = HWAS::TODCLK_TYPE; @@ -132,7 +165,7 @@ HWAS::clockTypeEnum xlateClockHwCallout( else { FAPI_ERR("fapi::xlateClockHwCallout: Unknown clock 0x%x, assuming TOD", - i_fapiClock); + i_fapiClock); } return l_clock; @@ -146,7 +179,7 @@ HWAS::clockTypeEnum xlateClockHwCallout( /// * @return HWAS part HW callout /// HWAS::partTypeEnum xlatePartHwCallout( - const fapi2::HwCallouts::HwCallout i_fapiPart) + const fapi2::HwCallouts::HwCallout i_fapiPart) { // Use the HwCallout enum value as an index HWAS::partTypeEnum l_part = HWAS::NO_PART_TYPE; @@ -156,39 +189,39 @@ HWAS::partTypeEnum xlatePartHwCallout( switch (i_fapiPart) { - case HwCallouts::FLASH_CONTROLLER_PART: - l_part = HWAS::FLASH_CONTROLLER_PART_TYPE; - break; - case HwCallouts::PNOR_PART: - l_part = HWAS::PNOR_PART_TYPE; - break; - case HwCallouts::SBE_SEEPROM_PART: - l_part = HWAS::SBE_SEEPROM_PART_TYPE; - break; - case HwCallouts::VPD_PART: - l_part = HWAS::VPD_PART_TYPE; - break; - case HwCallouts::LPC_SLAVE_PART: - l_part = HWAS::LPC_SLAVE_PART_TYPE; - break; - case HwCallouts::GPIO_EXPANDER_PART: - l_part = HWAS::GPIO_EXPANDER_PART_TYPE; - break; - case HwCallouts::SPIVID_SLAVE_PART: - l_part = HWAS::SPIVID_SLAVE_PART_TYPE; - break; - case HwCallouts::TOD_CLOCK: - l_part = HWAS::TOD_CLOCK; - break; - case HwCallouts::MEM_REF_CLOCK: - l_part = HWAS::MEM_REF_CLOCK; - break; - case HwCallouts::PROC_REF_CLOCK: - l_part = HWAS::PROC_REF_CLOCK; - break; - case HwCallouts::PCI_REF_CLOCK: - l_part = HWAS::PCI_REF_CLOCK; - break; + case HwCallouts::FLASH_CONTROLLER_PART: + l_part = HWAS::FLASH_CONTROLLER_PART_TYPE; + break; + case HwCallouts::PNOR_PART: + l_part = HWAS::PNOR_PART_TYPE; + break; + case HwCallouts::SBE_SEEPROM_PART: + l_part = HWAS::SBE_SEEPROM_PART_TYPE; + break; + case HwCallouts::VPD_PART: + l_part = HWAS::VPD_PART_TYPE; + break; + case HwCallouts::LPC_SLAVE_PART: + l_part = HWAS::LPC_SLAVE_PART_TYPE; + break; + case HwCallouts::GPIO_EXPANDER_PART: + l_part = HWAS::GPIO_EXPANDER_PART_TYPE; + break; + case HwCallouts::SPIVID_SLAVE_PART: + l_part = HWAS::SPIVID_SLAVE_PART_TYPE; + break; + case HwCallouts::TOD_CLOCK: + l_part = HWAS::TOD_CLOCK; + break; + case HwCallouts::MEM_REF_CLOCK: + l_part = HWAS::MEM_REF_CLOCK; + break; + case HwCallouts::PROC_REF_CLOCK: + l_part = HWAS::PROC_REF_CLOCK; + break; + case HwCallouts::PCI_REF_CLOCK: + l_part = HWAS::PCI_REF_CLOCK; + break; } @@ -203,7 +236,7 @@ HWAS::partTypeEnum xlatePartHwCallout( /// * @return HWAS procedure callout /// HWAS::epubProcedureID xlateProcedureCallout( - const fapi2::ProcedureCallouts::ProcedureCallout i_fapiProc) + const fapi2::ProcedureCallouts::ProcedureCallout i_fapiProc) { // Use the ProcedureCallout enum value as an index HWAS::epubProcedureID l_proc = HWAS::EPUB_PRC_HB_CODE; @@ -223,7 +256,7 @@ HWAS::epubProcedureID xlateProcedureCallout( else { FAPI_ERR("fapi2::xlateProcedureCallout: Unknown proc 0x%x, assuming CODE", - i_fapiProc); + i_fapiProc); } return l_proc; @@ -237,96 +270,96 @@ HWAS::epubProcedureID xlateProcedureCallout( /// * @param[o] o_type Targeting type /// void xlateTargetType(const fapi2::TargetType i_targetType, - TARGETING::CLASS & o_class, - TARGETING::TYPE & o_type) + TARGETING::CLASS & o_class, + TARGETING::TYPE & o_type) { switch (i_targetType) { - case fapi2::TARGET_TYPE_SYSTEM: - o_class = TARGETING::CLASS_SYS; - o_type = TARGETING::TYPE_SYS; - break; - case fapi2::TARGET_TYPE_DIMM: - o_class = TARGETING::CLASS_LOGICAL_CARD; - o_type = TARGETING::TYPE_DIMM; - break; - case fapi2::TARGET_TYPE_PROC_CHIP: - o_class = TARGETING::CLASS_CHIP; - o_type = TARGETING::TYPE_PROC; - break; - case fapi2::TARGET_TYPE_MEMBUF_CHIP: - o_class = TARGETING::CLASS_CHIP; - o_type = TARGETING::TYPE_MEMBUF; - break; - case fapi2::TARGET_TYPE_EX: - o_class = TARGETING::CLASS_UNIT; - o_type = TARGETING::TYPE_EX; - break; - case fapi2::TARGET_TYPE_MBA: - o_class = TARGETING::CLASS_UNIT; - o_type = TARGETING::TYPE_MBA; - break; - case fapi2::TARGET_TYPE_MCS: - o_class = TARGETING::CLASS_UNIT; - o_type = TARGETING::TYPE_MCS; - break; - case fapi2::TARGET_TYPE_XBUS: - o_class = TARGETING::CLASS_UNIT; - o_type = TARGETING::TYPE_XBUS; - break; - case fapi2::TARGET_TYPE_L4: - o_class = TARGETING::CLASS_UNIT; - o_type = TARGETING::TYPE_L4; - break; - case fapi2::TARGET_TYPE_CORE: - o_class = TARGETING::CLASS_UNIT; - o_type = TARGETING::TYPE_CORE; - break; - case fapi2::TARGET_TYPE_EQ: - o_class = TARGETING::CLASS_UNIT; - o_type = TARGETING::TYPE_EQ; - break; - case fapi2::TARGET_TYPE_MCA: - o_class = TARGETING::CLASS_UNIT; - o_type = TARGETING::TYPE_MCA; - break; - case fapi2::TARGET_TYPE_MCBIST: - o_class = TARGETING::CLASS_UNIT; - o_type = TARGETING::TYPE_MCBIST; - break; - case fapi2::TARGET_TYPE_MI: - o_class = TARGETING::CLASS_UNIT; - o_type = TARGETING::TYPE_MI; - break; - case fapi2::TARGET_TYPE_CAPP: - o_class = TARGETING::CLASS_UNIT; - o_type = TARGETING::TYPE_CAPP; - break; - case fapi2::TARGET_TYPE_DMI: - o_class = TARGETING::CLASS_UNIT; - o_type = TARGETING::TYPE_DMI; - break; - case fapi2::TARGET_TYPE_OBUS: - o_class = TARGETING::CLASS_UNIT; - o_type = TARGETING::TYPE_OBUS; - break; - case fapi2::TARGET_TYPE_OBUS_BRICK: - o_class = TARGETING::CLASS_UNIT; - o_type = TARGETING::TYPE_OBUS_BRICK; - break; - case fapi2::TARGET_TYPE_SBE: - o_class = TARGETING::CLASS_UNIT; - o_type = TARGETING::TYPE_SBE; - break; - case fapi2::TARGET_TYPE_PPE: - o_class = TARGETING::CLASS_UNIT; - o_type = TARGETING::TYPE_PPE; - break; - case fapi2::TARGET_TYPE_PERV: - o_class = TARGETING::CLASS_UNIT; - o_type = TARGETING::TYPE_PERV; - break; - case fapi2::TARGET_TYPE_PEC: + case fapi2::TARGET_TYPE_SYSTEM: + o_class = TARGETING::CLASS_SYS; + o_type = TARGETING::TYPE_SYS; + break; + case fapi2::TARGET_TYPE_DIMM: + o_class = TARGETING::CLASS_LOGICAL_CARD; + o_type = TARGETING::TYPE_DIMM; + break; + case fapi2::TARGET_TYPE_PROC_CHIP: + o_class = TARGETING::CLASS_CHIP; + o_type = TARGETING::TYPE_PROC; + break; + case fapi2::TARGET_TYPE_MEMBUF_CHIP: + o_class = TARGETING::CLASS_CHIP; + o_type = TARGETING::TYPE_MEMBUF; + break; + case fapi2::TARGET_TYPE_EX: + o_class = TARGETING::CLASS_UNIT; + o_type = TARGETING::TYPE_EX; + break; + case fapi2::TARGET_TYPE_MBA: + o_class = TARGETING::CLASS_UNIT; + o_type = TARGETING::TYPE_MBA; + break; + case fapi2::TARGET_TYPE_MCS: + o_class = TARGETING::CLASS_UNIT; + o_type = TARGETING::TYPE_MCS; + break; + case fapi2::TARGET_TYPE_XBUS: + o_class = TARGETING::CLASS_UNIT; + o_type = TARGETING::TYPE_XBUS; + break; + case fapi2::TARGET_TYPE_L4: + o_class = TARGETING::CLASS_UNIT; + o_type = TARGETING::TYPE_L4; + break; + case fapi2::TARGET_TYPE_CORE: + o_class = TARGETING::CLASS_UNIT; + o_type = TARGETING::TYPE_CORE; + break; + case fapi2::TARGET_TYPE_EQ: + o_class = TARGETING::CLASS_UNIT; + o_type = TARGETING::TYPE_EQ; + break; + case fapi2::TARGET_TYPE_MCA: + o_class = TARGETING::CLASS_UNIT; + o_type = TARGETING::TYPE_MCA; + break; + case fapi2::TARGET_TYPE_MCBIST: + o_class = TARGETING::CLASS_UNIT; + o_type = TARGETING::TYPE_MCBIST; + break; + case fapi2::TARGET_TYPE_MI: + o_class = TARGETING::CLASS_UNIT; + o_type = TARGETING::TYPE_MI; + break; + case fapi2::TARGET_TYPE_CAPP: + o_class = TARGETING::CLASS_UNIT; + o_type = TARGETING::TYPE_CAPP; + break; + case fapi2::TARGET_TYPE_DMI: + o_class = TARGETING::CLASS_UNIT; + o_type = TARGETING::TYPE_DMI; + break; + case fapi2::TARGET_TYPE_OBUS: + o_class = TARGETING::CLASS_UNIT; + o_type = TARGETING::TYPE_OBUS; + break; + case fapi2::TARGET_TYPE_OBUS_BRICK: + o_class = TARGETING::CLASS_UNIT; + o_type = TARGETING::TYPE_OBUS_BRICK; + break; + case fapi2::TARGET_TYPE_SBE: + o_class = TARGETING::CLASS_UNIT; + o_type = TARGETING::TYPE_SBE; + break; + case fapi2::TARGET_TYPE_PPE: + o_class = TARGETING::CLASS_UNIT; + o_type = TARGETING::TYPE_PPE; + break; + case fapi2::TARGET_TYPE_PERV: + o_class = TARGETING::CLASS_UNIT; + o_type = TARGETING::TYPE_PERV; + break; + case fapi2::TARGET_TYPE_PEC: o_class = TARGETING::CLASS_UNIT; o_type = TARGETING::TYPE_PEC; break; diff --git a/src/usr/isteps/istep11/makefile b/src/usr/isteps/istep11/makefile index 3bb30c1ab..7c9a10c80 100644 --- a/src/usr/isteps/istep11/makefile +++ b/src/usr/isteps/istep11/makefile @@ -49,6 +49,7 @@ EXTRAINCDIR += ${ROOTPATH}/src/import/chips/p9/utils/ EXTRAINCDIR += ${ROOTPATH}/src/import/chips/centaur/common/include/ EXTRAINCDIR += ${ROOTPATH}/src/import/chips/p9/utils/imageProcs/ EXTRAINCDIR += ${ROOTPATH}/src/import/chips/common/utils/imageProcs/ +EXTRAINCDIR += ${ROOTPATH}/src/import/chips/centaur/utils/imageProcs/ EXTRAINCDIR += ${ROOTPATH}/src/import/ EXTRAINCDIR += ${ROOTPATH}/obj/genfiles/ EXTRAINCDIR += ${ROOTPATH}/src/usr/isteps/ diff --git a/src/usr/scan/scandd.C b/src/usr/scan/scandd.C index 21f34939a..a02bc9cae 100644 --- a/src/usr/scan/scandd.C +++ b/src/usr/scan/scandd.C @@ -460,9 +460,9 @@ errlHndl_t scanDoPibScan( DeviceFW::OperationType i_opType, // where the ring you want to scan is located. All other chiplet rings // eg. 0203xxxx 0303xxxx stays the same. This is only special with // 0003xxxx" - if ((l_isCentaur) && ((l_scanTypeAddr & 0x01000000) == 0x0)) + if ((l_isCentaur) && ((l_scanTypeAddr & 0x03000000) == 0x0)) { - l_scanTypeAddr |= 0x01000000; + l_scanTypeAddr |= 0x01000000; } // bits 16-31 select the scan type select register @@ -897,6 +897,8 @@ errlHndl_t scanDoPibScan( DeviceFW::OperationType i_opType, } }while(0); + TRACFCOMP( g_trac_scandd,"SCAN::scanDoPibScan> End:::"); + mutex_unlock(l_mutex); return l_err; |