diff options
author | Richard J. Knight <rjknight@us.ibm.com> | 2014-12-10 06:34:26 -0600 |
---|---|---|
committer | A. Patrick Williams III <iawillia@us.ibm.com> | 2015-01-16 14:01:04 -0600 |
commit | 5236a087c01445bf80b7883e7cb9bd50540ce138 (patch) | |
tree | c0c865b63e8084905964a1ea181474f5543be4fb /src/usr/ipmi | |
parent | 502ab08f36997744743ef03dea7dc4bc882d9af1 (diff) | |
download | talos-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.C | 64 |
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 |