diff options
| author | Dan Crowell <dcrowell@us.ibm.com> | 2017-05-02 10:07:11 -0500 |
|---|---|---|
| committer | Matthew A. Ploetz <maploetz@us.ibm.com> | 2017-05-16 09:45:26 -0400 |
| commit | 6f8db833da1b2738243de3632a1c8e32ec150db6 (patch) | |
| tree | 4d0e860b03f812de299455c78801ea480bc5a9ec /src/usr | |
| parent | 1f81cfb64752bf4b9139404856f6f9b7dc7acf1e (diff) | |
| download | blackbird-hostboot-6f8db833da1b2738243de3632a1c8e32ec150db6.tar.gz blackbird-hostboot-6f8db833da1b2738243de3632a1c8e32ec150db6.zip | |
Fix up some i2c testcases
Enable a few of the i2c testcases and fix up a broken one
Change-Id: Ic7111579e058a31bc1f37a5cb3d21a71d91d8128
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/39940
Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com>
Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com>
Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com>
Reviewed-by: Martin Gloff <mgloff@us.ibm.com>
Reviewed-by: Elizabeth K. Liner <eliner@us.ibm.com>
Reviewed-by: Matthew A. Ploetz <maploetz@us.ibm.com>
Diffstat (limited to 'src/usr')
| -rwxr-xr-x | src/usr/i2c/eepromdd.C | 16 | ||||
| -rwxr-xr-x | src/usr/i2c/i2c.C | 9 | ||||
| -rwxr-xr-x | src/usr/i2c/test/eepromddtest.H | 4 | ||||
| -rwxr-xr-x | src/usr/i2c/test/i2ctest.H | 40 |
4 files changed, 47 insertions, 22 deletions
diff --git a/src/usr/i2c/eepromdd.C b/src/usr/i2c/eepromdd.C index 1b9dba739..7c1fb69fc 100755 --- a/src/usr/i2c/eepromdd.C +++ b/src/usr/i2c/eepromdd.C @@ -1843,7 +1843,7 @@ class isSameEeprom void add_to_list( std::list<EepromInfo_t>& i_list, TARGETING::Target* i_targ ) { - TRACDCOMP(g_trac_eeprom,"Targ %.8X",TARGETING::get_huid(i_targ)); + TRACFCOMP(g_trac_eeprom,"Targ %.8X",TARGETING::get_huid(i_targ)); // try all defined types of EEPROMs for( eeprom_chip_types_t eep_type = FIRST_CHIP_TYPE; @@ -1906,6 +1906,7 @@ void add_to_list( std::list<EepromInfo_t>& i_list, if( !found_eep ) { + TRACDCOMP(g_trac_eeprom,"eep_type=%d not found",eep_type); //nothing to do continue; } @@ -1916,6 +1917,7 @@ void add_to_list( std::list<EepromInfo_t>& i_list, exists ); if( !exists ) { + TRACDCOMP(g_trac_eeprom,"no master path"); continue; } @@ -1925,6 +1927,7 @@ void add_to_list( std::list<EepromInfo_t>& i_list, if( NULL == i2cm ) { //not sure how this could happen, but just skip it + TRACDCOMP(g_trac_eeprom,"no target"); continue; } @@ -1933,6 +1936,7 @@ void add_to_list( std::list<EepromInfo_t>& i_list, TARGETING::targetService().getTopLevelTarget( sys ); if( i2cm == sys ) { + TRACDCOMP(g_trac_eeprom,"sys target"); continue; } @@ -1955,6 +1959,7 @@ void add_to_list( std::list<EepromInfo_t>& i_list, if( (eep_info.engine > I2C_BUS_MAX_ENGINE(speeds)) || (eep_info.port > I2C_BUS_MAX_PORT(speeds)) ) { + TRACDCOMP(g_trac_eeprom,"bad engine/port"); continue; } eep_info.busFreq = speeds[eep_info.engine][eep_info.port]; @@ -1962,6 +1967,7 @@ void add_to_list( std::list<EepromInfo_t>& i_list, } else { + TRACDCOMP(g_trac_eeprom,"eep_type=%d, Speed=0",eep_type); continue; } @@ -1973,11 +1979,11 @@ void add_to_list( std::list<EepromInfo_t>& i_list, { // didn't find it in our list so stick it into the output list i_list.push_back(eep_info); - TRACDCOMP(g_trac_eeprom,"--Adding i2cm=%.8X, type=%d, eng=%d, port=%d, addr=%.2X for %.8X", TARGETING::get_huid(i2cm),eep_type,eepromData.engine,eepromData.port, eep_info.devAddr, TARGETING::get_huid(eep_info.assocTarg)); + TRACFCOMP(g_trac_eeprom,"--Adding i2cm=%.8X, type=%d, eng=%d, port=%d, addr=%.2X for %.8X", TARGETING::get_huid(i2cm),eep_type,eepromData.engine,eepromData.port, eep_info.devAddr, TARGETING::get_huid(eep_info.assocTarg)); } else { - TRACDCOMP(g_trac_eeprom,"--Skipping duplicate i2cm=%.8X, type=%d, eng=%d, port=%d, addr=%.2X for %.8X", TARGETING::get_huid(i2cm),eep_type,eepromData.engine,eepromData.port, eep_info.devAddr, TARGETING::get_huid(eep_info.assocTarg)); + TRACFCOMP(g_trac_eeprom,"--Skipping duplicate i2cm=%.8X, type=%d, eng=%d, port=%d, addr=%.2X for %.8X", TARGETING::get_huid(i2cm),eep_type,eepromData.engine,eepromData.port, eep_info.devAddr, TARGETING::get_huid(eep_info.assocTarg)); } } } @@ -1988,7 +1994,7 @@ void add_to_list( std::list<EepromInfo_t>& i_list, */ void getEEPROMs( std::list<EepromInfo_t>& o_info ) { - TRACDCOMP(g_trac_eeprom,">>getEEPROMs()"); + TRACFCOMP(g_trac_eeprom,">>getEEPROMs()"); // We only want to have a single entry in our list per // physical EEPROM. Since multiple targets could be @@ -2056,7 +2062,7 @@ void getEEPROMs( std::list<EepromInfo_t>& o_info ) add_to_list( o_info, *dimm_itr ); } - TRACDCOMP(g_trac_eeprom,"<<getEEPROMs()"); + TRACFCOMP(g_trac_eeprom,"<<getEEPROMs()"); } diff --git a/src/usr/i2c/i2c.C b/src/usr/i2c/i2c.C index 38924975b..e969bae78 100755 --- a/src/usr/i2c/i2c.C +++ b/src/usr/i2c/i2c.C @@ -3762,7 +3762,7 @@ errlHndl_t i2cRegisterOp ( DeviceFW::OperationType i_opType, void getMasterInfo( const TARGETING::Target* i_chip, std::list<MasterInfo_t>& o_info ) { - TRACDCOMP(g_trac_i2c,"getMasterInfo(%.8X)",TARGETING::get_huid(i_chip)); + TRACFCOMP(g_trac_i2c,"getMasterInfo(%.8X)",TARGETING::get_huid(i_chip)); TARGETING::TYPE l_type = i_chip->getAttr<TARGETING::ATTR_TYPE>(); for( uint32_t engine = 0; engine < I2C_BUS_ATTR_MAX_ENGINE; @@ -3786,7 +3786,7 @@ void getMasterInfo( const TARGETING::Target* i_chip, // Local Bus = PIB_CLK / 4 info.freq = info.freq/16; //convert nest to local bus - TRACDCOMP(g_trac_i2c,"getMasterInfo(%.8X): pushing back engine=%d, scomAddr=0x%X",TARGETING::get_huid(i_chip), engine, info.scomAddr); + TRACFCOMP(g_trac_i2c,"getMasterInfo(%.8X): pushing back engine=%d, scomAddr=0x%X",TARGETING::get_huid(i_chip), engine, info.scomAddr); o_info.push_back(info); } @@ -3821,15 +3821,18 @@ void getDeviceInfo( TARGETING::Target* i_i2cMaster, i2cm != l_i2cInfo.end(); ++i2cm ) { + TRACDCOMP(g_trac_i2c,"i2c loop - eng=%.8X", TARGETING::get_huid(i_i2cMaster)); /* I2C Busses */ std::list<EEPROM::EepromInfo_t>::iterator l_eep = l_eepromInfo.begin(); while( l_eep != l_eepromInfo.end() ) { + TRACDCOMP(g_trac_i2c,"eeprom loop - eng=%.8X, port=%.8X", TARGETING::get_huid(l_eep->i2cMaster), l_eep->engine ); DeviceInfo_t l_currentDI; //ignore the devices that aren't on the current target if( l_eep->i2cMaster != i_i2cMaster ) { + TRACDCOMP(g_trac_i2c,"skipping unmatched i2cmaster"); l_eep = l_eepromInfo.erase(l_eep); continue; } @@ -3837,6 +3840,7 @@ void getDeviceInfo( TARGETING::Target* i_i2cMaster, //skip the devices that are on a different engine else if( l_eep->engine != i2cm->engine) { + TRACDCOMP(g_trac_i2c,"skipping umatched engine"); ++l_eep; continue; } @@ -3864,6 +3868,7 @@ void getDeviceInfo( TARGETING::Target* i_i2cMaster, break; } + TRACDCOMP(g_trac_i2c,"Adding addr=%X", l_eep->devAddr); o_deviceInfo.push_back(l_currentDI); l_eep = l_eepromInfo.erase(l_eep); } //end of eeprom iter diff --git a/src/usr/i2c/test/eepromddtest.H b/src/usr/i2c/test/eepromddtest.H index cdd6c4b20..6ab6bd6d2 100755 --- a/src/usr/i2c/test/eepromddtest.H +++ b/src/usr/i2c/test/eepromddtest.H @@ -5,7 +5,7 @@ /* */ /* OpenPOWER HostBoot Project */ /* */ -/* Contributors Listed Below - COPYRIGHT 2011,2015 */ +/* Contributors Listed Below - COPYRIGHT 2011,2017 */ /* [+] International Business Machines Corp. */ /* */ /* */ @@ -656,6 +656,7 @@ class EEPROMTest: public CxxTest::TestSuite */ void test_getEEPROMs( void ) { + TRACFCOMP( g_trac_eeprom, ENTER_MRK"test_getEEPROMs" ); std::list<EEPROM::EepromInfo_t> info; getEEPROMs( info ); for( std::list<EEPROM::EepromInfo_t>::iterator eep = info.begin(); @@ -664,6 +665,7 @@ class EEPROMTest: public CxxTest::TestSuite { TRACFCOMP( g_trac_eeprom, "Found EEPROM: Master=%.8X, Eng=%d, Port=%d, Freq=%d, Addr=%.2X, Dev=%d, Targ=%.8X", TARGETING::get_huid(eep->i2cMaster), eep->engine, eep->port, eep->busFreq, eep->devAddr, eep->device, eep->assocTarg ); } + TRACFCOMP( g_trac_eeprom, EXIT_MRK"test_getEEPROMs" ); } }; diff --git a/src/usr/i2c/test/i2ctest.H b/src/usr/i2c/test/i2ctest.H index cad73ada1..faa4fd1a2 100755 --- a/src/usr/i2c/test/i2ctest.H +++ b/src/usr/i2c/test/i2ctest.H @@ -70,7 +70,7 @@ class I2CTest: public CxxTest::TestSuite * Add other targets to this testcase when their support is * added. */ - void testI2CDirect ( void ) + void _testI2CDirect ( void ) //@fixme-RTC:123019 { errlHndl_t err = NULL; int cmds = 0; @@ -354,7 +354,7 @@ class I2CTest: public CxxTest::TestSuite * Add other targets to this testcase when their support is * added. */ - void testI2COffset ( void ) + void _testI2COffset ( void ) //@fixme-RTC:123019 { errlHndl_t err = NULL; int cmds = 0; @@ -631,7 +631,7 @@ class I2CTest: public CxxTest::TestSuite * needed by PHYP to ensure that the I2C masters are * setup correctly on the system. */ - void testI2CSetupActiveMasters ( void ) + void _testI2CSetupActiveMasters ( void ) //@fixme-RTC:123019 { errlHndl_t err = NULL; int fails = 0; @@ -662,7 +662,7 @@ class I2CTest: public CxxTest::TestSuite * Test that i2cSetBusVariables() and the functions it uses * are returning expected values. */ - void testI2cSetBusVariables ( void ) + void _testI2cSetBusVariables ( void ) //@fixme-RTC:123019 { errlHndl_t err = NULL; int fails = 0; @@ -820,7 +820,7 @@ class I2CTest: public CxxTest::TestSuite * to be sure that an error is returned, and that the error returned * is the correct error. */ - void testI2CInvalidTarget ( void ) + void _testI2CInvalidTarget ( void ) //@fixme-RTC:123019 { errlHndl_t err = NULL; int fails = 0; @@ -864,7 +864,7 @@ class I2CTest: public CxxTest::TestSuite * This test will pass in an invalid Operation type. It * is expected that an error log is to be returned. */ - void testI2CInvalidOperation ( void ) + void _testI2CInvalidOperation ( void ) //@fixme-RTC:123019 { errlHndl_t err = NULL; int64_t fails = 0, num_ops = 0; @@ -921,7 +921,7 @@ class I2CTest: public CxxTest::TestSuite fails, num_ops ); } - void testI2cForceReset(void) + void _testI2cForceReset(void) //@fixme-RTC:123019 { @@ -1031,24 +1031,36 @@ class I2CTest: public CxxTest::TestSuite void test_getDeviceInfo( void ) { - TRACFCOMP(g_trac_i2c, "test_getDeviceInfo - Start"); - - TARGETING::TargetService& tS = TARGETING::targetService(); - TARGETING::Target * sys = NULL; - tS.getTopLevelTarget(sys); + TRACFCOMP(g_trac_i2c, ENTER_MRK"test_getDeviceInfo"); std::vector<I2C::DeviceInfo_t> l_deviceInfo; - getDeviceInfo( sys, l_deviceInfo); + // Loop through every chip + TARGETING::TargetHandleList allchips; + TARGETING::getAllChips( allchips, TARGETING::TYPE_NA ); + for( auto &tgt : allchips ) + { + getDeviceInfo( tgt, l_deviceInfo); + } std::vector<I2C::DeviceInfo_t>::const_iterator devInfo_iter; for(devInfo_iter = l_deviceInfo.begin(); devInfo_iter != l_deviceInfo.end(); devInfo_iter++) { - TRACFCOMP(g_trac_i2c, "Found Device Info: Engine %d",devInfo_iter->engine); + TRACFCOMP(g_trac_i2c, "Found Device Info: Engine=%d, Port=%d", + devInfo_iter->engine, + devInfo_iter->masterPort); + TRACFCOMP(g_trac_i2c, "Type=%.2X, addr=%X, slavePort=%d", + devInfo_iter->deviceType, + devInfo_iter->addr, + devInfo_iter->slavePort); + TRACFCOMP(g_trac_i2c, "busFreqKhz=%d, purpose=%X", + devInfo_iter->busFreqKhz, + devInfo_iter->devicePurpose) } + TRACFCOMP(g_trac_i2c, EXIT_MRK"test_getDeviceInfo"); } /** |

