summaryrefslogtreecommitdiffstats
path: root/src/usr/errl/errlentry.C
diff options
context:
space:
mode:
Diffstat (limited to 'src/usr/errl/errlentry.C')
-rw-r--r--src/usr/errl/errlentry.C63
1 files changed, 61 insertions, 2 deletions
diff --git a/src/usr/errl/errlentry.C b/src/usr/errl/errlentry.C
index b31ef8b8c..3d183b923 100644
--- a/src/usr/errl/errlentry.C
+++ b/src/usr/errl/errlentry.C
@@ -540,11 +540,11 @@ void ErrlEntry::addHwCallout(const TARGETING::Target *i_target,
#ifdef CONFIG_ERRL_ENTRY_TRACE
TRACFCOMP(g_trac_errl, ENTER_MRK
"addHwCallout(\"MASTER_PROC_SENTINEL\" 0x%x 0x%x 0x%x)",
- i_target, i_priority, i_deconfigState, i_gardErrorType);
+ i_priority, i_deconfigState, i_gardErrorType);
#else
TRACDCOMP(g_trac_errl, ENTER_MRK
"addHwCallout(\"MASTER_PROC_SENTINEL\" 0x%x 0x%x 0x%x)",
- i_target, i_priority, i_deconfigState, i_gardErrorType);
+ i_priority, i_deconfigState, i_gardErrorType);
#endif
//need to override deconfig value to avoid possible deadlocks
@@ -1060,6 +1060,14 @@ void ErrlEntry::setSubSystemIdBasedOnCallouts()
"callout to determine SSID", pData->sensorType);
iv_User.setSubSys(getSubSystem(pData->sensorType));
}
+ else if (pData->type == HWAS::I2C_DEVICE_CALLOUT)
+ {
+ TRACFCOMP(g_trac_errl, INFO_MRK
+ "setting subsystem for type 0x%x "
+ "callout to I2C Device", pData->type);
+
+ iv_User.setSubSys(EPUB_CEC_HDW_I2C_DEVS);
+ }
else
{
TRACFCOMP(g_trac_errl, ERR_MRK
@@ -1809,6 +1817,57 @@ bool ErrlEntry::isSevVisible( void )
return l_vis;
}
+void ErrlEntry::addI2cDeviceCallout(const TARGETING::Target *i_i2cMaster,
+ const uint8_t i_engine,
+ const uint8_t i_port,
+ const uint8_t i_address,
+ const HWAS::callOutPriority i_priority)
+{
+ do {
+
+ if (i_i2cMaster == nullptr ||
+ i_i2cMaster == TARGETING::MASTER_PROCESSOR_CHIP_TARGET_SENTINEL)
+ {
+
+ TRACFCOMP(g_trac_errl, ERR_MRK
+ "addI2cDeviceCallout mistakenly called with %s target. "
+ "Adding high priority callout to the error log.",
+ i_i2cMaster? "MASTER_SENTINEL": "nullptr");
+ addProcedureCallout( HWAS::EPUB_PRC_HB_CODE,
+ HWAS::SRCI_PRIORITY_HIGH);
+ collectTrace(ERRL_COMP_NAME);
+ break;
+ }
+
+ #ifdef CONFIG_ERRL_ENTRY_TRACE
+ TRACFCOMP(g_trac_errl, ENTER_MRK
+ "addI2cDeviceCallout(i2cm=0x%.8x e=0x%x p=0x%x devAddr=0x%x pri=0x%x)",
+ get_huid(i_i2cMaster), i_engine, i_port, i_address, i_priority);
+ #else
+ TRACDCOMP(g_trac_errl, ENTER_MRK
+ "addI2cDeviceCallout(i2cm=0x%.8x e=0x%x p=0x%x devAddr=0x%x pri=0x%x)",
+ get_huid(i_i2cMaster), i_engine, i_port, i_address, i_priority);
+ #endif
+
+ const void* pData = nullptr;
+ uint32_t size = 0;
+ TARGETING::EntityPath* ep = nullptr;
+ getTargData( i_i2cMaster, ep, pData, size );
+
+
+ ErrlUserDetailsCallout(pData, size,
+ i_engine, i_port, i_address, i_priority).addToLog(this);
+
+ if (ep)
+ {
+ delete ep;
+ ep = nullptr;
+ }
+
+ } while (0);
+
+
+} // addI2cDeviceCallout
} // End namespace
OpenPOWER on IntegriCloud