From fd5e3a64c72a176a6610631dfb248aaa5058ae93 Mon Sep 17 00:00:00 2001 From: Andres Lugo Date: Thu, 13 Nov 2014 11:57:02 -0600 Subject: 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 --- src/usr/i2c/eepromdd.C | 64 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) (limited to 'src/usr/i2c/eepromdd.C') 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 #include #include +#include #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 -- cgit v1.2.1