diff options
author | Dan Crowell <dcrowell@us.ibm.com> | 2017-06-21 16:36:37 -0500 |
---|---|---|
committer | Daniel M. Crowell <dcrowell@us.ibm.com> | 2017-07-12 09:29:52 -0400 |
commit | 2b564d1a7192bff7d8bf0c341b610a850fee08af (patch) | |
tree | ee9b44321eba0b60195f11054c9676d01b43a86a | |
parent | fca25b78f035f51789b97770295c4f45eca97a03 (diff) | |
download | talos-hostboot-2b564d1a7192bff7d8bf0c341b610a850fee08af.tar.gz talos-hostboot-2b564d1a7192bff7d8bf0c341b610a850fee08af.zip |
Add VNDR:NV support to Planar VPD
Also enabled a testcase to enforce the enum ordering
Change-Id: I08a9fa881f4f6d591d409e5a5e494a4a5f1d9ec2
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/42246
Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com>
Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com>
Tested-by: Jenkins OP HW <op-hw-jenkins+hostboot@us.ibm.com>
Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com>
Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
-rw-r--r-- | src/include/usr/vpd/pvpdenums.H | 1 | ||||
-rw-r--r-- | src/usr/vpd/pvpd.H | 1 | ||||
-rwxr-xr-x | src/usr/vpd/test/pvpdtest.H | 109 |
3 files changed, 111 insertions, 0 deletions
diff --git a/src/include/usr/vpd/pvpdenums.H b/src/include/usr/vpd/pvpdenums.H index 28fddb376..e432a867a 100644 --- a/src/include/usr/vpd/pvpdenums.H +++ b/src/include/usr/vpd/pvpdenums.H @@ -83,6 +83,7 @@ namespace PVPD VZ = 0x17, LX = 0x18, MB = 0x19, + NV = 0x1A, // Last Keyword PVPD_LAST_KEYWORD, diff --git a/src/usr/vpd/pvpd.H b/src/usr/vpd/pvpd.H index 71d90d084..e3e947521 100644 --- a/src/usr/vpd/pvpd.H +++ b/src/usr/vpd/pvpd.H @@ -105,6 +105,7 @@ namespace PVPD { VZ, "VZ" }, { LX, "LX" }, { MB, "MB" }, + { NV, "NV" }, // ------------------------------------------------------------------- // DO NOT USE!! This is for test purposes ONLY! diff --git a/src/usr/vpd/test/pvpdtest.H b/src/usr/vpd/test/pvpdtest.H new file mode 100755 index 000000000..d06dace81 --- /dev/null +++ b/src/usr/vpd/test/pvpdtest.H @@ -0,0 +1,109 @@ +/* IBM_PROLOG_BEGIN_TAG */ +/* This is an automatically generated prolog. */ +/* */ +/* $Source: src/usr/vpd/test/pvpdtest.H $ */ +/* */ +/* OpenPOWER HostBoot Project */ +/* */ +/* Contributors Listed Below - COPYRIGHT 2013,2017 */ +/* [+] International Business Machines Corp. */ +/* */ +/* */ +/* Licensed under the Apache License, Version 2.0 (the "License"); */ +/* you may not use this file except in compliance with the License. */ +/* You may obtain a copy of the License at */ +/* */ +/* http://www.apache.org/licenses/LICENSE-2.0 */ +/* */ +/* Unless required by applicable law or agreed to in writing, software */ +/* distributed under the License is distributed on an "AS IS" BASIS, */ +/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or */ +/* implied. See the License for the specific language governing */ +/* permissions and limitations under the License. */ +/* */ +/* IBM_PROLOG_END_TAG */ +#ifndef __PVPDTEST_H +#define __PVPDTEST_H + +/** + * @file pvpdtest.H + * + * @brief Test cases for pvpd code + */ +#include <sys/time.h> + +#include <cxxtest/TestSuite.H> +#include <errl/errlmanager.H> +#include <errl/errlentry.H> +#include <devicefw/driverif.H> +#include <targeting/common/predicates/predicatectm.H> + +#include <vpd/pvpdenums.H> +#include <vpd/vpdreasoncodes.H> +#include "../pvpd.H" +#include "../ipvpd.H" + +extern trace_desc_t* g_trac_vpd; + +using namespace TARGETING; + + +class pvpdTest: public CxxTest::TestSuite +{ + public: + + /** + * @brief This function will test the numerical order of the pvpdRecords + * and pvpdKeywords structures. + */ + void testpvpdCheckStructOrder ( void ) + { + uint64_t fails = 0x0; + VPD::vpdRecord prevRecord = PVPD::PVPD_FIRST_RECORD; + VPD::vpdKeyword prevKeyword = PVPD::PVPD_FIRST_KEYWORD; + + TRACFCOMP( g_trac_vpd, + ENTER_MRK"testpvpdCheckStructOrder()" ); + + // Check the pvpdRecords structure for proper order + uint32_t entry = 0x0; + for( entry = 0; + entry < (sizeof(PVPD::pvpdRecords)/ + sizeof(PVPD::pvpdRecords[0])); + entry++ ) + { + if( !(PVPD::pvpdRecords[entry].record >= prevRecord) ) + { + fails++; + TS_FAIL( "testpvpdCheckStructOrder() - Record table out of " + "order! Cur Record: 0x%04x, Prev Record: 0x%04x", + PVPD::pvpdRecords[entry].record, + prevRecord ); + } + prevRecord = PVPD::pvpdRecords[entry].record; + } + + // Check the pvpdKeywords structure for proper order + for( entry = 0; + entry < (sizeof(PVPD::pvpdKeywords)/ + sizeof(PVPD::pvpdKeywords[0])); + entry++ ) + { + if( !(PVPD::pvpdKeywords[entry].keyword >= prevKeyword) ) + { + fails++; + TS_FAIL( "testpvpdCheckStructOrder() - " + "Keyword table out of order! Cur Keyword: 0x%04x, Prev Keyword: 0x%04x", + PVPD::pvpdKeywords[entry].keyword, + prevKeyword ); + } + prevKeyword = PVPD::pvpdKeywords[entry].keyword; + } + + TRACFCOMP( g_trac_vpd, + "testpvpdCheckStructOrder - %d fails", + fails ); + } +}; + +#endif //__PVPDTEST_H |