diff options
Diffstat (limited to 'src/usr/diag/prdf/occ_firdata/prdfWriteHomerFirData.C')
-rw-r--r-- | src/usr/diag/prdf/occ_firdata/prdfWriteHomerFirData.C | 62 |
1 files changed, 29 insertions, 33 deletions
diff --git a/src/usr/diag/prdf/occ_firdata/prdfWriteHomerFirData.C b/src/usr/diag/prdf/occ_firdata/prdfWriteHomerFirData.C index d3b8a72ee..2e9b6f963 100644 --- a/src/usr/diag/prdf/occ_firdata/prdfWriteHomerFirData.C +++ b/src/usr/diag/prdf/occ_firdata/prdfWriteHomerFirData.C @@ -621,28 +621,11 @@ void getAddresses( TrgtMap_t & io_targMap ) 0x07013340, // OMIDLFIR }; - io_targMap[TRGT_OCMB][REG_GLBL] = + io_targMap[TRGT_OMIC][REG_REG] = { - 0x08040000, // MB_CHIPLET_CS_FIR - 0x08040001, // MB_CHIPLET_RE_FIR - 0x08040004, // MB_CHIPLET_SPA_FIR - }; - - io_targMap[TRGT_OCMB][REG_FIR] = - { - 0x0804000a, // MB_LFIR - 0x08010870, // MMIOFIR - 0x08011400, // SRQFIR - 0x08011800, // MCBISTFIR - 0x08011c00, // RDFFIR - 0x08012400, // TLXFIR - 0x08012800, // OMIDLFIR - }; - - io_targMap[TRGT_OCMB][REG_REG] = - { - 0x08040002, // MB_CHIPLET_FIR_MASK - 0x08040007, // MB_CHIPLET_SPA_FIR_MASK + 0x07013353, // DL0_ERROR_HOLD + 0x07013363, // DL1_ERROR_HOLD + 0x07013373, // DL2_ERROR_HOLD }; // EC level handling will be done with a @@ -721,15 +704,22 @@ void __initChipInfo( TargetHandle_t i_chip, HOMER_ChipType_t i_chipModel, uint32_t chipPos = getTargetPosition( i_chip ); PRDF_ASSERT( chipPos < i_maxChipsPerNode ); - // Get the chip FSI address. - FSI::FsiLinkInfo_t fsiInfo; - FSI::getFsiLinkInfo( i_chip, fsiInfo ); - // Fill in the HOMER chip info. o_chipInfo.hChipType = HOMER_getChip( i_chipModel ); o_chipInfo.hChipType.chipPos = chipPos; - o_chipInfo.hChipType.fsiBaseAddr = fsiInfo.baseAddr; o_chipInfo.hChipType.chipEcLevel = i_chip->getAttr<ATTR_EC>(); + + if( HOMER_CHIP_EXPLORER == i_chipModel ) + { + //@todo - RTC:201781 - Add i2c information + } + else + { + // Get the chip FSI address. + FSI::FsiLinkInfo_t fsiInfo; + FSI::getFsiLinkInfo( i_chip, fsiInfo ); + o_chipInfo.hChipType.fsiBaseAddr = fsiInfo.baseAddr; + } } // Returns a right justified config mask of the unit @@ -942,20 +932,26 @@ errlHndl_t getHwConfig( std::vector<HOMER_ChipInfo_t> & o_chipInfVector, // Iterate all of the OCMB chips. for ( auto & ocmb : getFunctionalTargetList(TYPE_OCMB_CHIP) ) { - // Get the chip model type. - HOMER_ChipType_t modelType = HOMER_CHIP_INVALID; - switch ( getChipModel(ocmb) ) + // Get the OCMB chip type. + HOMER_ChipType_t ocmbType = HOMER_CHIP_INVALID; + switch ( getChipId(ocmb) ) { - case MODEL_EXPLORER: modelType = HOMER_CHIP_EXPLORER; break; + case POWER_CHIPID::GEMINI_16: + // Skip Gemini OCMBs. They can exist, but PRD won't support + // them (set invalid). + ocmbType = HOMER_CHIP_INVALID; break; + case POWER_CHIPID::EXPLORER_16: + ocmbType = HOMER_CHIP_EXPLORER; break; default: - PRDF_ERR( FUNC "Unsupported chip model %d on 0x%08x", - modelType, getHuid(ocmb) ); + PRDF_ERR( FUNC "Unsupported chip ID 0x%08x on 0x%08x", + getChipId(ocmb), getHuid(ocmb) ); PRDF_ASSERT( false ); } + if ( HOMER_CHIP_INVALID == ocmbType ) continue; // Init the chip info. HOMER_ChipInfo_t ci; - __initChipInfo( ocmb, modelType, MAX_OCMB_PER_NODE, ci ); + __initChipInfo( ocmb, ocmbType, MAX_OCMB_PER_NODE, ci ); // NOTE: Explorer does not have any unit data. |