diff options
Diffstat (limited to 'src/usr/hdat/hdatiohub.C')
-rw-r--r-- | src/usr/hdat/hdatiohub.C | 45 |
1 files changed, 37 insertions, 8 deletions
diff --git a/src/usr/hdat/hdatiohub.C b/src/usr/hdat/hdatiohub.C index c2f5d7eea..c9be567ff 100644 --- a/src/usr/hdat/hdatiohub.C +++ b/src/usr/hdat/hdatiohub.C @@ -5,7 +5,7 @@ /* */ /* OpenPOWER HostBoot Project */ /* */ -/* Contributors Listed Below - COPYRIGHT 2016,2018 */ +/* Contributors Listed Below - COPYRIGHT 2016,2019 */ /* [+] International Business Machines Corp. */ /* */ /* */ @@ -54,7 +54,6 @@ vpdData mvpdData[] = { PVPD::VINI, PVPD::B4 }, { PVPD::VINI, PVPD::B7 }, { PVPD::VINI, PVPD::PF }, - { PVPD::VINI, PVPD::LX }, }; const HdatKeywordInfo l_pvpdKeywords[] = @@ -74,7 +73,18 @@ const HdatKeywordInfo l_pvpdKeywords[] = { PVPD::B4, "B4" }, { PVPD::B7, "B7" }, { PVPD::PF, "PF" }, - { PVPD::LX, "LX" }, +}; + +vpdData pvpdDataAxone[] = +{ + { PVPD::OPFR, PVPD::VP }, + { PVPD::OPFR, PVPD::VS }, +}; + +const HdatKeywordInfo l_pvpdKeywordsAxone[] = +{ + { PVPD::VP, "VP" }, + { PVPD::VS, "VS" }, }; extern trace_desc_t *g_trac_hdat; @@ -653,13 +663,28 @@ errlHndl_t HdatIoHubFru::addDaughterCard(uint32_t i_resourceId, // told to allow for on the constructor if (iv_actDaughterCnt < iv_maxDaughters) { + //Get the processor model + auto l_model = TARGETING::targetService().getProcessorModel(); + if ( l_vpdType == FRU_BP ) { - - uint32_t i_num = sizeof(mvpdData)/sizeof(mvpdData[0]); - l_vpdObj = new HdatVpd(l_errlHndl, i_resourceId,i_target, - HDAT_KID_STRUCT_NAME,i_index,BP, - mvpdData,i_num,l_pvpdKeywords); + //@TODO:RTC 213229(Remove HDAT hack or Axone) + //Check whether the code can be more fault tolerant by avoiding + //model check + if(l_model == TARGETING::MODEL_NIMBUS) + { + uint32_t i_num = sizeof(mvpdData)/sizeof(mvpdData[0]); + l_vpdObj = new HdatVpd(l_errlHndl, i_resourceId,i_target, + HDAT_KID_STRUCT_NAME,i_index,BP, + mvpdData,i_num,l_pvpdKeywords); + } + else if(l_model == TARGETING::MODEL_AXONE) + { + uint32_t i_num = sizeof(pvpdDataAxone)/sizeof(pvpdDataAxone[0]); + l_vpdObj = new HdatVpd(l_errlHndl, i_resourceId,i_target, + HDAT_KID_STRUCT_NAME,i_index,BP, + pvpdDataAxone,i_num,l_pvpdKeywordsAxone); + } } //@TODO: RTC 148660 pci slots and cards @@ -900,6 +925,10 @@ errlHndl_t hdatLoadIoData(const hdatMsAddr_t &i_msAddr, { l_hub->hdatModuleId = HDAT_MODULE_TYPE_ID_NIMBUS_LAGRANGE; } + else if(l_model == TARGETING::MODEL_AXONE) + { + l_hub->hdatModuleId = HDAT_MODULE_TYPE_ID_AXONE_HOPPER; + } else if(l_model == TARGETING::MODEL_CUMULUS) { l_hub->hdatModuleId = HDAT_MODULE_TYPE_ID_CUMULUS_DUOMO; |