diff options
author | Andres Lugo <aalugore@us.ibm.com> | 2014-11-13 11:57:02 -0600 |
---|---|---|
committer | A. Patrick Williams III <iawillia@us.ibm.com> | 2014-12-09 12:03:20 -0600 |
commit | fd5e3a64c72a176a6610631dfb248aaa5058ae93 (patch) | |
tree | b4b3e77def3a08f86d2453922605b202ba595365 /src/usr/i2c/eepromdd.C | |
parent | d1f7475ae5459ab567a361dd6cbb4ef1278764b3 (diff) | |
download | talos-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-x | src/usr/i2c/eepromdd.C | 64 |
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 |