diff options
-rw-r--r-- | src/include/usr/devicefw/userif.H | 26 | ||||
-rw-r--r-- | src/include/usr/vpd/memd_vpdenums.H | 180 | ||||
-rw-r--r-- | src/usr/fapi2/plat_vpd_access.C | 5 | ||||
-rw-r--r-- | src/usr/vpd/ipvpd.H | 22 | ||||
-rw-r--r-- | src/usr/vpd/memd_vpd.C | 228 | ||||
-rw-r--r-- | src/usr/vpd/memd_vpd.H | 227 | ||||
-rw-r--r-- | src/usr/vpd/vpd.H | 3 | ||||
-rw-r--r-- | src/usr/vpd/vpd.mk | 3 |
8 files changed, 688 insertions, 6 deletions
diff --git a/src/include/usr/devicefw/userif.H b/src/include/usr/devicefw/userif.H index 5f42ff8f4..286deabb1 100644 --- a/src/include/usr/devicefw/userif.H +++ b/src/include/usr/devicefw/userif.H @@ -67,6 +67,7 @@ namespace DeviceFW SIO, AHB_SIO, DVPD, // Direct access memory VPD + MEMD_VPD, LAST_ACCESS_TYPE, }; @@ -252,6 +253,31 @@ namespace DeviceFW DeviceFW::DVPD, static_cast<uint64_t>(( i_record )),\ static_cast<uint64_t>(( i_keyword )),\ static_cast<uint64_t>(( i_location )) + + /** + * Construct the device addressing parameters for the DVPD (Direct access + * memory VPD) device ops. + * @param[in] i_record - The enumeration of the DVPD record to access. + * @param[in] i_keyword - The enumeration of the DVPD keyword, located + * within the i_record Record to access. + */ + #define DEVICE_MEMD_VPD_ADDRESS( i_record, i_keyword )\ + DEVICE_MEMD_VPD_FORCE_ADDRESS( i_record, i_keyword, VPD::PNOR ) + + /** + * Construct the device addressing parameters for the DVPD device ops. + * @param[in] i_record - The enumeration of the DVPD record to access. + * @param[in] i_keyword - The enumeration of the DVPD keyword, located + * within the i_record Record to access. + * @param[in] i_location - The location of the data (PNOR/SEEPROM) + see vpd_if.H + */ + #define DEVICE_MEMD_VPD_FORCE_ADDRESS( i_record, i_keyword, i_location )\ + DeviceFW::MEMD_VPD, static_cast<uint64_t>(( i_record )),\ + static_cast<uint64_t>(( i_keyword )),\ + static_cast<uint64_t>(( i_location )) + + /** * Construct the device addressing parameters for the SCAN device ops. * @param[in] i_ring - The ring address to scan diff --git a/src/include/usr/vpd/memd_vpdenums.H b/src/include/usr/vpd/memd_vpdenums.H new file mode 100644 index 000000000..345d77d60 --- /dev/null +++ b/src/include/usr/vpd/memd_vpdenums.H @@ -0,0 +1,180 @@ +/* IBM_PROLOG_BEGIN_TAG */ +/* This is an automatically generated prolog. */ +/* */ +/* $Source: src/include/usr/vpd/memd_vpdenums.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 __MEMD_VPDENUMS_H +#define __MEMD_VPDENUMS_H + +#include <vpd/ipvpdenums.H> + +namespace MEMD_VPD +{ + + /** + * @brief Enumeration for the MEMD_VPD Records that contain + * the keyword enumerations below. + */ + enum MEMD_VPDRecord + { + MEMD_VPD_FIRST_RECORD = 0x00, + VINI = MEMD_VPD_FIRST_RECORD, + MEMD = 0x01, + + // Last Record + MEMD_VPD_LAST_RECORD, + MEMD_VPD_TEST_RECORD, // Test purposes ONLY! + + //Start common IPVPD enums + MEMD_VPD_INVALID_RECORD = IPVPD::INVALID_RECORD, + }; + + /** + * @brief Enumerations for MEMD_VPD keywords that can be + * accessed in the MEMD_VPD. + */ + enum MEMD_VPDKeyword + { + MEMD_VPD_FIRST_KEYWORD = 0x00, + B3 = MEMD_VPD_FIRST_KEYWORD, + B4 = 0x01, + B7 = 0x02, + CC = 0x03, + CE = 0x04, + CT = 0x05, + DR = 0x06, + FC = 0x07, + FN = 0x08, + HE = 0x09, + HW = 0x0a, + I2 = 0x0b, + IN = 0x0c, + J0 = 0x0d, + J1 = 0x0e, + J2 = 0x0f, + J3 = 0x10, + J4 = 0x11, + J5 = 0x12, + J6 = 0x13, + J7 = 0x14, + J8 = 0x15, + J9 = 0x16, + JA = 0x17, + JB = 0x18, + JC = 0x19, + JD = 0x1a, + JE = 0x1b, + JF = 0x1c, + JG = 0x1d, + JH = 0x1e, + JI = 0x1f, + JJ = 0x20, + JK = 0x21, + JL = 0x22, + JM = 0x23, + JN = 0x24, + JO = 0x25, + JP = 0x26, + JQ = 0x27, + JR = 0x28, + JS = 0x29, + JT = 0x2a, + JU = 0x2b, + JV = 0x2c, + JW = 0x2d, + JX = 0x2e, + JY = 0x2f, + JZ = 0x30, + LX = 0x31, + MR = 0x32, + MT = 0x33, + PF = 0x34, + PN = 0x35, + PR = 0x36, + RB = 0x37, + RG = 0x38, + RT = 0x39, + SE = 0x3a, + SN = 0x3b, + SO = 0x3c, + TM = 0x3d, + VM = 0x3e, + VZ = 0x3f, + X0 = 0x40, + X1 = 0x41, + X2 = 0x42, + X3 = 0x43, + X4 = 0x44, + X5 = 0x45, + X6 = 0x46, + X7 = 0x47, + X8 = 0x48, + X9 = 0x49, + XA = 0x4a, + XB = 0x4b, + XC = 0x4c, + XD = 0x4d, + XE = 0x4e, + XF = 0x4f, + XG = 0x50, + XH = 0x51, + XI = 0x52, + XJ = 0x53, + XK = 0x54, + XL = 0x55, + XM = 0x56, + XN = 0x57, + XO = 0x58, + XP = 0x59, + XQ = 0x5a, + XR = 0x5b, + XS = 0x5c, + XT = 0x5d, + XU = 0x5e, + XV = 0x5f, + XW = 0x60, + XX = 0x61, + XY = 0x62, + XZ = 0x63, + Q0 = 0x64, + Q1 = 0x65, + Q2 = 0x66, + Q3 = 0x67, + Q4 = 0x68, + Q5 = 0x69, + Q6 = 0x6A, + Q7 = 0x6B, + Q8 = 0x6C, + CK = 0X6D, + + // Last Keyword + MEMD_VPD_LAST_KEYWORD, + MEMD_VPD_TEST_KEYWORD, // Test purposes ONLY! + + //Start common IPVPD enums + FULL_RECORD = IPVPD::FULL_RECORD, + MEMD_VPD_INVALID_KEYWORD = IPVPD::INVALID_KEYWORD, + }; + +}; // end MEMD_VPD + +#endif diff --git a/src/usr/fapi2/plat_vpd_access.C b/src/usr/fapi2/plat_vpd_access.C index 878441898..3adc5b514 100644 --- a/src/usr/fapi2/plat_vpd_access.C +++ b/src/usr/fapi2/plat_vpd_access.C @@ -5,7 +5,7 @@ /* */ /* OpenPOWER HostBoot Project */ /* */ -/* Contributors Listed Below - COPYRIGHT 2012,2016 */ +/* Contributors Listed Below - COPYRIGHT 2012,2017 */ /* [+] International Business Machines Corp. */ /* */ /* */ @@ -35,7 +35,8 @@ #include <p9_get_mem_vpd_keyword.H> #include <attribute_service.H> #include <vpd/dvpdenums.H> - +#include <vpd/memd_vpdenums.H> +#include <pnor/pnorif.H> //The following can be uncommented for unit testing //#undef FAPI_DBG diff --git a/src/usr/vpd/ipvpd.H b/src/usr/vpd/ipvpd.H index e4c416238..299233eac 100644 --- a/src/usr/vpd/ipvpd.H +++ b/src/usr/vpd/ipvpd.H @@ -5,7 +5,7 @@ /* */ /* OpenPOWER HostBoot Project */ /* */ -/* Contributors Listed Below - COPYRIGHT 2013,2015 */ +/* Contributors Listed Below - COPYRIGHT 2013,2017 */ /* [+] Google Inc. */ /* [+] International Business Machines Corp. */ /* */ @@ -378,7 +378,7 @@ class IpVpdFacade * * @return bool - True if the record is found, False otherwise. */ - bool recordPresent( const char * i_record, + virtual bool recordPresent( const char * i_record, uint16_t & offset, TARGETING::Target * i_target, VPD::vpdCmdTarget i_location ); @@ -719,6 +719,24 @@ class IpVpdFacade const recordInfo* iv_vpdRecords; /** + * @brief Returns the cached pnor address + * + */ + inline static uint64_t getPnorAddr(const IpVpdFacade& x) + { + return x.iv_cachePnorAddr; + } + + /** + * @brief Set the cached pnor address to the given value + * + */ + inline void setPnorAddr(uint64_t i_pnorAddr) + { + this->iv_cachePnorAddr = i_pnorAddr; + } + + /** * @brief Number of VPD Records for current chip * */ diff --git a/src/usr/vpd/memd_vpd.C b/src/usr/vpd/memd_vpd.C new file mode 100644 index 000000000..22147100e --- /dev/null +++ b/src/usr/vpd/memd_vpd.C @@ -0,0 +1,228 @@ +/* IBM_PROLOG_BEGIN_TAG */ +/* This is an automatically generated prolog. */ +/* */ +/* $Source: src/usr/vpd/memd_vpd.C $ */ +/* */ +/* 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 */ +// ---------------------------------------------- +// Includes +// ---------------------------------------------- +#include <string.h> +#include <endian.h> +#include <trace/interface.H> +#include <errl/errlentry.H> +#include <errl/errlmanager.H> +#include <targeting/common/targetservice.H> +#include <targeting/common/util.H> +#include <targeting/common/utilFilter.H> +#include <devicefw/driverif.H> +#include <vfs/vfs.H> +#include <vpd/vpdreasoncodes.H> +#include <vpd/memd_vpdenums.H> +#include <vpd/vpd_if.H> +#include <i2c/eepromif.H> +#include <config.h> +#include "memd_vpd.H" +#include "cvpd.H" +#include "vpd.H" +#include "pvpd.H" +#include <initservice/initserviceif.H> + +// ---------------------------------------------- +// Trace definitions +// ---------------------------------------------- +extern trace_desc_t* g_trac_vpd; + + +// ------------------------ +// Macros for unit testing +//#define TRACUCOMP(args...) TRACFCOMP(args) +#define TRACUCOMP(args...) +//#define TRACSSCOMP(args...) TRACFCOMP(args) +#define TRACSSCOMP(args...) + +namespace MEMD_VPD +{ + // ---------------------------------------------- + // Globals + // ---------------------------------------------- + mutex_t g_mutex = MUTEX_INITIALIZER; + + + /** + * @brief This function will perform the steps required to do a read from + * the Hostboot MEMD_VPD data. + * + * @param[in] i_opType - Operation Type - See DeviceFW::OperationType in + * driververif.H + * + * @param[in] i_target - Processor Target device + * + * @param [in/out] io_buffer - Pointer to the data that was read from + * the target device. This parameter, when set to NULL, will return + * the keyword size value in io_buflen. + * + * @param [in/out] io_buflen - Length of the buffer to be read or written + * to/from the target. This value should indicate the size of the + * io_buffer parameter that has been allocated. Being returned it + * will indicate the number of valid bytes in the buffer being + * returned. This parameter will contain the size of a keyword when + * the io_buffer parameter is passed in NULL. + * + * @param [in] i_accessType - Access Type - See DeviceFW::AccessType in + * usrif.H + * + * @param [in] i_args - This is an argument list for the device driver + * framework. + * + * @return errlHndl_t - NULL if successful, otherwise a pointer to the + * error log. + */ + errlHndl_t MEMD_VPDRead ( DeviceFW::OperationType i_opType, + TARGETING::Target * i_target, + void * io_buffer, + size_t & io_buflen, + int64_t i_accessType, + va_list i_args ) + { + errlHndl_t err = NULL; + IpVpdFacade::input_args_t args; + args.record = ((MEMD_VPDRecord)va_arg( i_args, uint64_t )); + args.keyword = ((MEMD_VPDKeyword)va_arg( i_args, uint64_t )); + args.location = ((VPD::vpdCmdTarget)va_arg( i_args, uint64_t )); + + TRACSSCOMP( g_trac_vpd, + ENTER_MRK"MEMD_VPDRead()" ); + + err = Singleton<MEMD_VpdFacade>::instance().read(i_target, + io_buffer, + io_buflen, + args); + + return err; + } + + + /** + * @brief This function will perform the steps required to do a write to + * the Hostboot MEMD_VPD data. + * + * @param[in] i_opType - Operation Type - See DeviceFW::OperationType in + * driververif.H + * + * @param[in] i_target - Processor Target device + * + * @param [in/out] io_buffer - Pointer to the data that was read from + * the target device. It will also be used to contain data to + * be written to the device. + * + * @param [in/out] io_buflen - Length of the buffer to be read or written + * to/from the target. This value should indicate the size of the + * io_buffer parameter that has been allocated. Being returned it + * will indicate the number of valid bytes in the buffer being + * returned. + * + * @param [in] i_accessType - Access Type - See DeviceFW::AccessType in + * usrif.H + * + * @param [in] i_args - This is an argument list for the device driver + * framework. + * + * @return errlHndl_t - NULL if successful, otherwise a pointer to the + * error log. + */ + errlHndl_t MEMD_VPDWrite ( DeviceFW::OperationType i_opType, + TARGETING::Target * i_target, + void * io_buffer, + size_t & io_buflen, + int64_t i_accessType, + va_list i_args ) + { + errlHndl_t err = NULL; + IpVpdFacade::input_args_t args; + args.record = ((MEMD_VPDRecord)va_arg( i_args, uint64_t )); + args.keyword = ((MEMD_VPDKeyword)va_arg( i_args, uint64_t )); + args.location = ((VPD::vpdCmdTarget)va_arg( i_args, uint64_t )); + + TRACSSCOMP( g_trac_vpd, + ENTER_MRK"MEMD_VPDWrite()" ); + + + err = Singleton<MEMD_VpdFacade>::instance().write(i_target, + io_buffer, + io_buflen, + args); + + return err; + } + + // Register with the routing code + DEVICE_REGISTER_ROUTE( DeviceFW::READ, + DeviceFW::MEMD_VPD, + TARGETING::TYPE_MCS, + MEMD_VPDRead ); + DEVICE_REGISTER_ROUTE( DeviceFW::WRITE, + DeviceFW::MEMD_VPD, + TARGETING::TYPE_MCS, + MEMD_VPDWrite ); + +}; // end namespace MEMD_VPD + + +//MEMD_VpdFacade Class Functions +/** + * @brief Constructor + * Planar VPD is included in the Centaur PNOR section. + * Including with Centaur vpd minimizes the number of PNOR sections. + */ +MEMD_VpdFacade::MEMD_VpdFacade() : +IpVpdFacade(MEMD_VPD::SECTION_SIZE, + MEMD_VPD::MAX_SECTIONS, + MEMD_VPD::MEMD_VPDRecords, + (sizeof(MEMD_VPD::MEMD_VPDRecords)/sizeof( + MEMD_VPD::MEMD_VPDRecords[0])), + MEMD_VPD::MEMD_VPDKeywords, + (sizeof(MEMD_VPD::MEMD_VPDKeywords)/sizeof( + MEMD_VPD::MEMD_VPDKeywords[0])), + PNOR::MEMD, // note use of MEMD + MEMD_VPD::g_mutex, + VPD::VPD_INVALID) // Direct access memory +{ + TRACUCOMP(g_trac_vpd, "MEMD_VpdFacade::MEMD_VpdFacade> " ); + + iv_configInfo.vpdReadPNOR = true; + iv_configInfo.vpdReadHW = false; + iv_configInfo.vpdWritePNOR = false; + iv_configInfo.vpdWriteHW = false; +} + +/** + * @brief returns true if the record is present in this facade. + * this will always return true in this function + */ +bool MEMD_VpdFacade::recordPresent( const char * i_record, + uint16_t & offset, + TARGETING::Target * i_target, + VPD::vpdCmdTarget i_location ) +{ + offset = 0; + return true; +} diff --git a/src/usr/vpd/memd_vpd.H b/src/usr/vpd/memd_vpd.H new file mode 100644 index 000000000..d94532b4a --- /dev/null +++ b/src/usr/vpd/memd_vpd.H @@ -0,0 +1,227 @@ +/* IBM_PROLOG_BEGIN_TAG */ +/* This is an automatically generated prolog. */ +/* */ +/* $Source: src/usr/vpd/memd_vpd.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 __MEMD_VPD_H +#define __MEMD_VPD_H + + +/** + * @file MEMD_VPD.H + * + * @brief Provides the interfaces for the MEMD_VPD device driver + * + */ + +// ---------------------------------------------- +// Includes +// ---------------------------------------------- +#include <errl/errlentry.H> +#include <vpd/memd_vpdenums.H> + +#include "ipvpd.H" +#include <config.h> + +namespace MEMD_VPD +{ + + enum + { + MAX_SECTIONS = 1, + SECTION_SIZE = 0x6000, + }; + + + /** + * @brief Conversion of MEMD_VPD Records to corresponding character + * representation. + */ + const IpVpdFacade::recordInfo MEMD_VPDRecords[] = + { + // ------------------------------------------------------------------- + // NOTE: This list must remain an ordered list! There is a + // testcase that checks this. When adding new entries to the + // list, be sure that the keyword in each entry (value 0) + // are in ascending order. + // ------------------------------------------------------------------- + { MEMD, "MEMD" }, + + // ------------------------------------------------------------------- + // DO NOT USE!! This is for test purposes ONLY! + { MEMD_VPD_TEST_RECORD, "TEST" }, + // ------------------------------------------------------------------- + }; + + /** + * @brief Conversion of MEMD_VPD Keywords to corresponding character + * representation. + */ + const IpVpdFacade::keywordInfo MEMD_VPDKeywords[] = + { + // ------------------------------------------------------------------- + // NOTE: This list must remain an ordered list! There is a + // testcase that checks this. When adding new entries to + // the list, be sure that the keyword in each entry (value 0) + // are in ascending order. + // ------------------------------------------------------------------- + { B3, "B3" }, + { B4, "B4" }, + { B7, "B7" }, + { CC, "CC" }, + { CE, "CE" }, + { CT, "CT" }, + { DR, "DR" }, + { FC, "FC" }, + { FN, "FN" }, + { HE, "HE" }, + { HW, "HW" }, + { I2, "I2" }, + { IN, "IN" }, + { J0, "J0" }, + { J1, "J1" }, + { J2, "J2" }, + { J3, "J3" }, + { J4, "J4" }, + { J5, "J5" }, + { J6, "J6" }, + { J7, "J7" }, + { J8, "J8" }, + { J9, "J9" }, + { JA, "JA" }, + { JB, "JB" }, + { JC, "JC" }, + { JD, "JD" }, + { JE, "JE" }, + { JF, "JF" }, + { JG, "JG" }, + { JH, "JH" }, + { JI, "JI" }, + { JJ, "JJ" }, + { JK, "JK" }, + { JL, "JL" }, + { JM, "JM" }, + { JN, "JN" }, + { JO, "JO" }, + { JP, "JP" }, + { JQ, "JQ" }, + { JR, "JR" }, + { JS, "JS" }, + { JT, "JT" }, + { JU, "JU" }, + { JV, "JV" }, + { JW, "JW" }, + { JX, "JX" }, + { JY, "JY" }, + { JZ, "JZ" }, + { LX, "LX" }, + { MR, "MR" }, + { MT, "MT" }, + { PF, "PF" }, + { PN, "PN" }, + { PR, "PR" }, + { RB, "RB" }, + { RG, "RG" }, + { RT, "RT" }, + { SE, "SE" }, + { SN, "SN" }, + { SO, "SO" }, + { TM, "TM" }, + { VM, "VM" }, + { VZ, "VZ" }, + { X0, "X0" }, + { X1, "X1" }, + { X2, "X2" }, + { X3, "X3" }, + { X4, "X4" }, + { X5, "X5" }, + { X6, "X6" }, + { X7, "X7" }, + { X8, "X8" }, + { X9, "X9" }, + { XA, "XA" }, + { XB, "XB" }, + { XC, "XC" }, + { XD, "XD" }, + { XE, "XE" }, + { XF, "XF" }, + { XG, "XG" }, + { XH, "XH" }, + { XI, "XI" }, + { XJ, "XJ" }, + { XK, "XK" }, + { XL, "XL" }, + { XM, "XM" }, + { XN, "XN" }, + { XO, "XO" }, + { XP, "XP" }, + { XQ, "XQ" }, + { XR, "XR" }, + { XS, "XS" }, + { XT, "XT" }, + { XU, "XU" }, + { XV, "XV" }, + { XW, "XW" }, + { XX, "XX" }, + { XY, "XY" }, + { XZ, "XZ" }, + { Q0, "Q0" }, + { Q1, "Q1" }, + { Q2, "Q2" }, + { Q3, "Q3" }, + { Q4, "Q4" }, + { Q5, "Q5" }, + { Q6, "Q6" }, + { Q7, "Q7" }, + { Q8, "Q8" }, + { CK, "CK" }, + + // ------------------------------------------------------------------- + // DO NOT USE!! This is for test purposes ONLY! + { MEMD_VPD_TEST_KEYWORD, "ZZ" }, + // ------------------------------------------------------------------- + + //Common ipvpd + { FULL_RECORD, "FL"}, + }; + +}; // end MEMD_VPD namespace + +class MEMD_VpdFacade: public IpVpdFacade +{ + public: + + /** + * @brief Constructor + */ + MEMD_VpdFacade( ); + + + protected: + virtual bool recordPresent( const char * i_record, + uint16_t & offset, + TARGETING::Target * i_target, + VPD::vpdCmdTarget i_location ); + + +}; +#endif // __MEMD_VPD_H diff --git a/src/usr/vpd/vpd.H b/src/usr/vpd/vpd.H index 99340c0cd..c7fb329ae 100644 --- a/src/usr/vpd/vpd.H +++ b/src/usr/vpd/vpd.H @@ -5,7 +5,7 @@ /* */ /* OpenPOWER HostBoot Project */ /* */ -/* Contributors Listed Below - COPYRIGHT 2013,2016 */ +/* Contributors Listed Below - COPYRIGHT 2013,2017 */ /* [+] International Business Machines Corp. */ /* */ /* */ @@ -47,6 +47,7 @@ struct pnorInformation */ enum VPD_MSG_TYPE { + VPD_INVALID = 0x0000, VPD_WRITE_DIMM = 0x00C1, //< DIMM SPD VPD_WRITE_PROC = 0x00C2, //< Processor MVPD VPD_WRITE_MEMBUF = 0x00C3, //< Centaur FRU VPD diff --git a/src/usr/vpd/vpd.mk b/src/usr/vpd/vpd.mk index 58702127e..d07a2bbea 100644 --- a/src/usr/vpd/vpd.mk +++ b/src/usr/vpd/vpd.mk @@ -5,7 +5,7 @@ # # OpenPOWER HostBoot Project # -# Contributors Listed Below - COPYRIGHT 2013,2016 +# Contributors Listed Below - COPYRIGHT 2013,2017 # [+] International Business Machines Corp. # # @@ -29,5 +29,6 @@ OBJS += mvpd.o OBJS += cvpd.o OBJS += pvpd.o OBJS += dvpd.o +OBJS += memd_vpd.o OBJS += spd.o OBJS += errlud_vpd.o |