diff options
author | Mike Baiocchi <baiocchi@us.ibm.com> | 2014-01-09 08:13:06 -0600 |
---|---|---|
committer | A. Patrick Williams III <iawillia@us.ibm.com> | 2014-01-15 16:35:08 -0600 |
commit | 728120d7abd9c4d7ebfca8b212a2bdc4a4f93b4e (patch) | |
tree | 7d535ef36a6c6bec6501aee0a0baad502b127927 /src/usr/vpd/plugins | |
parent | f2ebd48e3d24964ddaabbbc0c93a25ef843aae47 (diff) | |
download | talos-hostboot-728120d7abd9c4d7ebfca8b212a2bdc4a4f93b4e.tar.gz talos-hostboot-728120d7abd9c4d7ebfca8b212a2bdc4a4f93b4e.zip |
Add Callouts to I2C and VPD drivers
Callouts were added to I2C, EEPROM, MVPD and CVPD (via IPVPD code),
and SPD code.
Change-Id: Ibcb14ea3a228a5175b6faed06189286b0e0526bc
RTC: 69113
Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/7966
Tested-by: Jenkins Server
Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Diffstat (limited to 'src/usr/vpd/plugins')
-rw-r--r-- | src/usr/vpd/plugins/VPD_COMP_ID_Parse.C | 27 | ||||
-rw-r--r-- | src/usr/vpd/plugins/errludP_vpd.H | 123 | ||||
-rw-r--r-- | src/usr/vpd/plugins/vpdUdParserFactory.H | 50 |
3 files changed, 200 insertions, 0 deletions
diff --git a/src/usr/vpd/plugins/VPD_COMP_ID_Parse.C b/src/usr/vpd/plugins/VPD_COMP_ID_Parse.C new file mode 100644 index 000000000..b840fdc83 --- /dev/null +++ b/src/usr/vpd/plugins/VPD_COMP_ID_Parse.C @@ -0,0 +1,27 @@ +/* IBM_PROLOG_BEGIN_TAG */ +/* This is an automatically generated prolog. */ +/* */ +/* $Source: src/usr/vpd/plugins/VPD_COMP_ID_Parse.C $ */ +/* */ +/* IBM CONFIDENTIAL */ +/* */ +/* COPYRIGHT International Business Machines Corp. 2014 */ +/* */ +/* p1 */ +/* */ +/* Object Code Only (OCO) source materials */ +/* Licensed Internal Code Source Materials */ +/* IBM HostBoot Licensed Internal Code */ +/* */ +/* The source code for this program is not published or otherwise */ +/* divested of its trade secrets, irrespective of what has been */ +/* deposited with the U.S. Copyright Office. */ +/* */ +/* Origin: 30 */ +/* */ +/* IBM_PROLOG_END_TAG */ +#include "errludparser.H" +#include "vpdUdParserFactory.H" + +ERRL_MAKE_UD_PARSER(VPD::UserDetailsParserFactory, hbfw::VPD_COMP_ID) + diff --git a/src/usr/vpd/plugins/errludP_vpd.H b/src/usr/vpd/plugins/errludP_vpd.H new file mode 100644 index 000000000..bc47d8436 --- /dev/null +++ b/src/usr/vpd/plugins/errludP_vpd.H @@ -0,0 +1,123 @@ +/* IBM_PROLOG_BEGIN_TAG */ +/* This is an automatically generated prolog. */ +/* */ +/* $Source: src/usr/vpd/plugins/errludP_vpd.H $ */ +/* */ +/* IBM CONFIDENTIAL */ +/* */ +/* COPYRIGHT International Business Machines Corp. 2014 */ +/* */ +/* p1 */ +/* */ +/* Object Code Only (OCO) source materials */ +/* Licensed Internal Code Source Materials */ +/* IBM HostBoot Licensed Internal Code */ +/* */ +/* The source code for this program is not published or otherwise */ +/* divested of its trade secrets, irrespective of what has been */ +/* deposited with the U.S. Copyright Office. */ +/* */ +/* Origin: 30 */ +/* */ +/* IBM_PROLOG_END_TAG */ +#ifndef ERRL_UDP_VPD_H +#define ERRL_UDP_VPD_H + +/** + * @file errludP_vpd.H + * + * Defines the ErrlUserDetailsParser classes that parse VPD FFDC + */ + +#include "errluserdetails.H" +#include <string.h> + +/** + * Some macros to manipulate data types cleanly + */ +#define TO_UINT8(ptr) (*(reinterpret_cast<uint8_t*>(ptr))) +#define TO_UINT16(ptr) (ntohs(*(reinterpret_cast<uint16_t*>(ptr)))) +#define TO_UINT32(ptr) (ntohl(*(reinterpret_cast<uint32_t*>(ptr)))) +#define TO_UINT64(ptr) (ntohll(*(reinterpret_cast<uint64_t*>(ptr)))) + +namespace VPD +{ + +/** + * @class UdParserVpdParms + * + * Parses UdParserVpdParms + */ +class UdParserVpdParms : public ERRORLOG::ErrlUserDetailsParser +{ +public: + /** + * @brief Constructor + */ + UdParserVpdParms() {} + + /** + * @brief Destructor + */ + virtual ~UdParserVpdParms() {} + + /** + * @brief Parses string user detail data from an error log + * + * @param i_version Version of the data + * @param i_parse ErrlUsrParser object for outputting information + * @param i_pBuffer Pointer to buffer containing detail data + * @param i_buflen Length of the buffer + */ + virtual void parse(errlver_t i_version, + ErrlUsrParser & i_parser, + void * i_pBuffer, + const uint32_t i_buflen) const + { + char* l_databuf = static_cast<char*>(i_pBuffer); + i_parser.PrintHeading("VPD Parameters"); + + //***** Memory Layout ***** + // 1 byte : Read / Not-Write + // 4 bytes : Target HUID + // 8 bytes : Length of In/Out Buffer + // 8 bytes : Record + // 8 bytes : Keyword + + uint8_t op = TO_UINT8(l_databuf); + l_databuf += sizeof(uint8_t); + if( op == 1 ) + { + i_parser.PrintHeading("VPD Read"); + } + else if( op == 0 ) + { + i_parser.PrintHeading("VPD Write"); + } + else + { + i_parser.PrintHeading("Unknown VPD Operation"); + } + + i_parser.PrintNumber("Target","%.8lX",TO_UINT32(l_databuf)); + l_databuf += sizeof(uint32_t); + i_parser.PrintNumber("Length of I/O Buffer","%.16lX", + TO_UINT64(l_databuf)); + l_databuf += sizeof(uint64_t); + i_parser.PrintNumber("Record","%.16lX",TO_UINT64(l_databuf)); + l_databuf += sizeof(uint64_t); + i_parser.PrintNumber("Keyword","%.16lX",TO_UINT64(l_databuf)); + l_databuf += sizeof(uint64_t); + + } + +private: + // Disabled + UdParserVpdParms(const UdParserVpdParms&); + UdParserVpdParms & operator=(const UdParserVpdParms&); +}; + + +} + +#endif diff --git a/src/usr/vpd/plugins/vpdUdParserFactory.H b/src/usr/vpd/plugins/vpdUdParserFactory.H new file mode 100644 index 000000000..89a24193c --- /dev/null +++ b/src/usr/vpd/plugins/vpdUdParserFactory.H @@ -0,0 +1,50 @@ +/* IBM_PROLOG_BEGIN_TAG */ +/* This is an automatically generated prolog. */ +/* */ +/* $Source: src/usr/vpd/plugins/vpdUdParserFactory.H $ */ +/* */ +/* IBM CONFIDENTIAL */ +/* */ +/* COPYRIGHT International Business Machines Corp. 2014 */ +/* */ +/* p1 */ +/* */ +/* Object Code Only (OCO) source materials */ +/* Licensed Internal Code Source Materials */ +/* IBM HostBoot Licensed Internal Code */ +/* */ +/* The source code for this program is not published or otherwise */ +/* divested of its trade secrets, irrespective of what has been */ +/* deposited with the U.S. Copyright Office. */ +/* */ +/* Origin: 30 */ +/* */ +/* IBM_PROLOG_END_TAG */ +#if !defined(_VPDUDPARSERFACTORY_H) +#define _VPDUDPARSERFACTORY_H + +#include "errludparserfactory.H" +#include "errludP_vpd.H" + +namespace VPD +{ + class UserDetailsParserFactory + : public ERRORLOG::ErrlUserDetailsParserFactory + { + public: + UserDetailsParserFactory() + { + registerParser<VPD::UdParserVpdParms> + (VPD_UDT_PARAMETERS); + } + + private: + + UserDetailsParserFactory(const UserDetailsParserFactory &); + UserDetailsParserFactory & operator= + (const UserDetailsParserFactory &); + }; +}; + +#endif + |