diff options
| author | nagurram-in <nagendra.g@in.ibm.com> | 2016-10-03 07:26:30 -0500 |
|---|---|---|
| committer | Daniel M. Crowell <dcrowell@us.ibm.com> | 2016-11-14 21:29:58 -0500 |
| commit | 2da4b3794cb7ee133d1c4db6640aad99748ebf4b (patch) | |
| tree | 0ce57c885d1ae2c2c33743681fbcc98012d6958b /src/usr/hdat/hdatram.C | |
| parent | 3d95d418377ac2ede6d9ab217637cd53158736e9 (diff) | |
| download | blackbird-hostboot-2da4b3794cb7ee133d1c4db6640aad99748ebf4b.tar.gz blackbird-hostboot-2da4b3794cb7ee133d1c4db6640aad99748ebf4b.zip | |
HDAT changes for Witherspoon
Change-Id: I942362604938fe4f7511e21da9246236a939c176
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/30905
Tested-by: Jenkins Server <pfd-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>
Diffstat (limited to 'src/usr/hdat/hdatram.C')
| -rwxr-xr-x | src/usr/hdat/hdatram.C | 194 |
1 files changed, 194 insertions, 0 deletions
diff --git a/src/usr/hdat/hdatram.C b/src/usr/hdat/hdatram.C new file mode 100755 index 000000000..a0d671f8e --- /dev/null +++ b/src/usr/hdat/hdatram.C @@ -0,0 +1,194 @@ +/* IBM_PROLOG_BEGIN_TAG */ +/* This is an automatically generated prolog. */ +/* */ +/* $Source: src/usr/hdat/hdatram.C $ */ +/* */ +/* OpenPOWER HostBoot Project */ +/* */ +/* Contributors Listed Below - COPYRIGHT 2016 */ +/* [+] 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 */ + +/** + * @file hdatram.C + * + * @brief This file contains the implementation of the HdatRam class. + * + */ + +/*----------------------------------------------------------------------------*/ +/* Includes */ +/*----------------------------------------------------------------------------*/ +#include "hdatram.H" // HdatRam class definition +#include "hdatutil.H" // utility functions +#include "hdatmsvpd.H" + +#include <stdio.h> + + +namespace HDAT +{ +/*----------------------------------------------------------------------------*/ +/* Global variables */ +/*----------------------------------------------------------------------------*/ +uint32_t HdatRam::cv_actualCnt; + +vpdData cvpdData[] = +{ +// { CVPD::VINI, CVPD::RT }, + { CVPD::VINI, CVPD::DR }, + { CVPD::VINI, CVPD::FN }, + { CVPD::VINI, CVPD::PN }, + { CVPD::VINI, CVPD::SN }, + { CVPD::VINI, CVPD::CC }, +// { CVPD::VINI, CVPD::PR }, + //{ CVPD::VINI, CVPD::SZ }, + { CVPD::VINI, CVPD::HE }, + { CVPD::VINI, CVPD::CT }, + { CVPD::VINI, CVPD::HW }, + // { CVPD::VINI, CVPD::B3 }, + // { CVPD::VINI, CVPD::B4 }, + // { CVPD::VINI, CVPD::B7 }, + { CVPD::VINI, CVPD::PF }, +}; +/*----------------------------------------------------------------------------*/ +/* Constants */ +/*----------------------------------------------------------------------------*/ + + + +/** @brief See the prologue in hdatram.H + */ +HdatRam::HdatRam(errlHndl_t &o_errlHndl, + TARGETING::Target * i_target, + uint32_t i_resourceId, + uint32_t i_slcaIndex) + +: HdatHdif(o_errlHndl, HDAT_RAM_STRUCT_NAME, HDAT_RAM_LAST, cv_actualCnt++, + HDAT_NO_CHILD, HDAT_RAM_VERSION), + iv_kwdSize(0), iv_kwd(NULL) +{ + HDAT_ENTER(); + + + iv_fru.hdatResourceId = i_resourceId; + + if ( i_slcaIndex != 0) + { + iv_fru.hdatSlcaIdx = i_slcaIndex; + } + else + { + iv_fru.hdatSlcaIdx = i_target->getAttr<TARGETING::ATTR_SLCA_INDEX>(); + } + + hdatGetAsciiKwdForSpd(i_target,iv_kwdSize,iv_kwd); + + // Update the base class internal data pointers + // When the data is written to the file by commit(), it must be done in the + // same order as these addData() calls + this->addData(HDAT_RAM_FRU_ID, sizeof(hdatFruId_t)); + this->addData(HDAT_RAM_KWD, iv_kwdSize); + this->addData(HDAT_RAM_ID, sizeof(hdatRamAreaId_t)); + this->addData(HDAT_RAM_SIZE, sizeof(hdatRamAreaSize_t)); + this->align(); + + HDAT_EXIT(); + return; +} + + +/** @brief See the prologue in hdatram.H + */ +HdatRam::~HdatRam() +{ + HDAT_ENTER(); + + delete [] iv_kwd; + + HDAT_EXIT(); + return; +} + + +/** @brief See the prologue in hdatram.H + */ +uint32_t HdatRam::getRamSize() +{ + uint32_t l_size = 0; + // Start committing the base class data + l_size += this->getSize(); + + // Write the various pieces of data from this derived class + l_size += sizeof(hdatFruId_t); + if (iv_kwdSize > 0) + { + l_size += iv_kwdSize; + } + l_size += sizeof(hdatRamAreaId_t); + l_size += sizeof(hdatRamAreaSize_t); + + l_size+= this->endCommitSize(); + + return l_size; +} + +/** @brief See the prologue in hdatram.H + */ +void HdatRam::commit(UtilMem &i_data) +{ + + // Start committing the base class data + this->startCommit(i_data); + + i_data.write(&iv_fru, sizeof(hdatFruId_t)); + if (iv_kwdSize > 0) + { + i_data.write(iv_kwd,iv_kwdSize); + } + i_data.write(&iv_ramArea, sizeof(hdatRamAreaId_t)); + i_data.write(&iv_ramSize, sizeof(hdatRamAreaSize_t)); + + this->endCommit(i_data); + +} + + +/** @brief See the prologue in hdatram.H + */ +void HdatRam::prt() +{ + HDAT_INF(" **** HdatRam start ****"); + HDAT_INF(" cv_actualCnt = %u", cv_actualCnt); + HDAT_INF(" iv_kwdSize = %u", iv_kwdSize); + this->print(); + //hdatPrintFruId(&iv_fru); + hdatPrintKwd(iv_kwd, iv_kwdSize); + + HDAT_INF(" **hdatRamAreaId_t**"); + HDAT_INF(" hdatRamAreaId = %u", iv_ramArea.hdatRamAreaId); + HDAT_INF(" hdatRamStatus = 0X %04X", iv_ramArea.hdatRamStatus); + + HDAT_INF(" **hdatRamAreaSize_t**"); + HDAT_INF(" hdatReserved1 = %u", iv_ramSize.hdatReserved1); + HDAT_INF(" hdatRamTotalSize = %u", iv_ramSize.hdatRamTotalSize); + + HDAT_INF(" **** HdatRam end ****"); + + return; +} +} |

