summaryrefslogtreecommitdiffstats
path: root/src/usr/i2c/eepromdd.C
diff options
context:
space:
mode:
authorAndres Lugo <aalugore@us.ibm.com>2014-11-13 11:57:02 -0600
committerA. Patrick Williams III <iawillia@us.ibm.com>2014-12-09 12:03:20 -0600
commitfd5e3a64c72a176a6610631dfb248aaa5058ae93 (patch)
treeb4b3e77def3a08f86d2453922605b202ba595365 /src/usr/i2c/eepromdd.C
parentd1f7475ae5459ab567a361dd6cbb4ef1278764b3 (diff)
downloadtalos-hostboot-fd5e3a64c72a176a6610631dfb248aaa5058ae93.tar.gz
talos-hostboot-fd5e3a64c72a176a6610631dfb248aaa5058ae93.zip
Remove errors in VPD presence detect for eeprom
RTC:117048 Change-Id: Ie63fb413cb9efb9d1ea450467efa500613939af2 Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/14494 Tested-by: Jenkins Server Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Diffstat (limited to 'src/usr/i2c/eepromdd.C')
-rwxr-xr-xsrc/usr/i2c/eepromdd.C64
1 files changed, 64 insertions, 0 deletions
diff --git a/src/usr/i2c/eepromdd.C b/src/usr/i2c/eepromdd.C
index d8c244af6..4fddd2d22 100755
--- a/src/usr/i2c/eepromdd.C
+++ b/src/usr/i2c/eepromdd.C
@@ -46,6 +46,7 @@
#include <i2c/eepromddreasoncodes.H>
#include <i2c/eepromif.H>
#include <i2c/i2creasoncodes.H>
+#include <i2c/i2cif.H>
#include "eepromdd.H"
#include "errlud_i2c.H"
@@ -253,6 +254,69 @@ errlHndl_t eepromPerformOp( DeviceFW::OperationType i_opType,
return err;
} // end eepromPerformOp
+//-------------------------------------------------------------------
+//eepromPresence
+//-------------------------------------------------------------------
+bool eepromPresence ( TARGETING::Target * i_target )
+{
+
+ TRACDCOMP(g_trac_eeprom, ENTER_MRK"eepromPresence()");
+
+ errlHndl_t err = NULL;
+ bool l_present = false;
+ TARGETING::Target * theTarget = NULL;
+
+ eeprom_addr_t i2cInfo;
+
+ i2cInfo.chip = EEPROM::VPD_PRIMARY;
+ i2cInfo.offset = 0;
+ do
+ {
+
+ // Read Attributes needed to complete the operation
+ err = eepromReadAttributes( i_target,
+ i2cInfo );
+
+ if( err )
+ {
+ TRACFCOMP(g_trac_eeprom,
+ ERR_MRK"Error in eepromPresence::eepromReadAttributes()");
+ break;
+ }
+
+ // Check to see if we need to find a new target for
+ // the I2C Master
+ err = eepromGetI2CMasterTarget( i_target,
+ i2cInfo,
+ theTarget );
+
+ if( err )
+ {
+ TRACFCOMP(g_trac_eeprom,
+ ERR_MRK"Error in eepromPresence::eepromGetI2Cmaster()");
+ break;
+ }
+
+ //Check for the target at the I2C level
+ l_present = I2C::i2cPresence(theTarget,
+ i2cInfo.port,
+ i2cInfo.engine,
+ i2cInfo.devAddr );
+
+ if( !l_present )
+ {
+ TRACDCOMP(g_trac_eeprom,
+ ERR_MRK"i2cPresence returned false! chip NOT present!");
+ break;
+ }
+
+ } while( 0 );
+
+ TRACDCOMP(g_trac_eeprom, EXIT_MRK"eepromPresence()");
+ return l_present;
+}
+
+
// ------------------------------------------------------------------
// eepromRead
OpenPOWER on IntegriCloud