summaryrefslogtreecommitdiffstats
path: root/src/usr/ipmi
diff options
context:
space:
mode:
authorRichard J. Knight <rjknight@us.ibm.com>2014-12-10 06:34:26 -0600
committerA. Patrick Williams III <iawillia@us.ibm.com>2015-01-16 14:01:04 -0600
commit5236a087c01445bf80b7883e7cb9bd50540ce138 (patch)
treec0c865b63e8084905964a1ea181474f5543be4fb /src/usr/ipmi
parent502ab08f36997744743ef03dea7dc4bc882d9af1 (diff)
downloadtalos-hostboot-5236a087c01445bf80b7883e7cb9bd50540ce138.tar.gz
talos-hostboot-5236a087c01445bf80b7883e7cb9bd50540ce138.zip
Add target to sensor number interface.
Added routine to return the fault sensor number from a target Change-Id: I4f3b48b145af243e920b0d0414ebfeb677080d49 RTC:1196220 Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/14833 Reviewed-by: Brian H. Horton <brianh@linux.ibm.com> Tested-by: Jenkins Server Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Diffstat (limited to 'src/usr/ipmi')
-rw-r--r--src/usr/ipmi/ipmisensor.C64
1 files changed, 61 insertions, 3 deletions
diff --git a/src/usr/ipmi/ipmisensor.C b/src/usr/ipmi/ipmisensor.C
index 33105161c..d478869f3 100644
--- a/src/usr/ipmi/ipmisensor.C
+++ b/src/usr/ipmi/ipmisensor.C
@@ -399,10 +399,10 @@ namespace SENSOR
// Helper function to search the sensor data for the correct sensor number
// based on the sensor name.
//
- uint16_t SensorBase::getSensorNumber()
+ uint8_t SensorBase::getSensorNumber()
{
- uint16_t l_sensor_number = INVALID_SENSOR;
+ uint8_t l_sensor_number = INVALID_SENSOR;
if( iv_target == NULL )
{
@@ -930,6 +930,64 @@ namespace SENSOR
updateBMCFaultSensorStatus();
};
-}; // end name space
+ // returns a sensor number based on input target type
+ uint8_t getFaultSensorNumber( TARGETING::TargetHandle_t i_pTarget )
+ {
+
+ TARGETING::TYPE l_type = i_pTarget->getAttr<TARGETING::ATTR_TYPE>();
+
+ uint8_t l_sensor_number = INVALID_SENSOR;
+
+ switch( l_type )
+ {
+ case TARGETING::TYPE_PROC:
+ case TARGETING::TYPE_CORE:
+ case TARGETING::TYPE_DIMM:
+ {
+ l_sensor_number = StatusSensor(i_pTarget).getSensorNumber();
+ break;
+ }
+
+ case TARGETING::TYPE_OSC:
+ case TARGETING::TYPE_OSCREFCLK:
+ case TARGETING::TYPE_OSCPCICLK:
+ {
+ TARGETING::TargetHandleList parentList;
+
+ // The clock fault sensors are associated with the NODE target
+ (void)getParentAffinityTargets (
+ parentList, i_pTarget, TARGETING::CLASS_ENC,
+ TARGETING::TYPE_NODE, false);
+
+ assert(parentList.size() == 1 );
+
+ TARGETING::TargetHandle_t l_node = parentList[0];
+
+ l_sensor_number =
+ SENSOR::FaultSensor( l_node, l_type ).getSensorNumber();
+
+ break;
+ }
+
+ default:
+ {
+ TARGETING::TargetHandle_t l_sys;
+
+ // get the "system error sensor number" associated with the
+ // system target.
+ TARGETING::targetService().getTopLevelTarget(l_sys);
+
+ l_sensor_number = SENSOR::FaultSensor(
+ l_sys, TARGETING::TYPE_NA ).getSensorNumber();
+
+ break;
+ }
+
+ }
+
+ return l_sensor_number;
+ }
+
+}; // end name space
OpenPOWER on IntegriCloud