summaryrefslogtreecommitdiffstats
path: root/src/usr/hdat/hdatiohub.C
diff options
context:
space:
mode:
Diffstat (limited to 'src/usr/hdat/hdatiohub.C')
-rw-r--r--src/usr/hdat/hdatiohub.C45
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;
OpenPOWER on IntegriCloud