diff options
author | Dzuy Nguyen <dzuy@us.ibm.com> | 2017-11-01 08:54:12 -0500 |
---|---|---|
committer | Daniel M. Crowell <dcrowell@us.ibm.com> | 2017-12-01 15:22:31 -0500 |
commit | c71ed1c414501ce568f914e38b2ddbbc9c258cb6 (patch) | |
tree | cb222fe6f89fc1905454576f0a75745cdc70282b /src/usr/fapi2 | |
parent | 6bc72e2973d1868fcccf74f696bcb9bf08a62951 (diff) | |
download | talos-hostboot-c71ed1c414501ce568f914e38b2ddbbc9c258cb6.tar.gz talos-hostboot-c71ed1c414501ce568f914e38b2ddbbc9c258cb6.zip |
Add support for OBUS PLL buckets
Add MRW support for ATTR_FREQ_O_MHZ attribute
Add MACRO functions for ATTR_OB[0-3]_PLL_BUCKET attribute
Change-Id: I75d02192bc09c9814fccadadb6aed69606508a58
RTC: 176188
CMVC-Prereq: 1039767
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/48890
Reviewed-by: Christian R. Geddes <crgeddes@us.ibm.com>
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>
Tested-by: Jenkins OP HW <op-hw-jenkins+hostboot@us.ibm.com>
Reviewed-by: William G. Hoffa <wghoffa@us.ibm.com>
Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
Diffstat (limited to 'src/usr/fapi2')
-rw-r--r-- | src/usr/fapi2/attribute_service.C | 30 | ||||
-rw-r--r-- | src/usr/fapi2/test/fapi2PllBucketTest.H | 131 |
2 files changed, 161 insertions, 0 deletions
diff --git a/src/usr/fapi2/attribute_service.C b/src/usr/fapi2/attribute_service.C index 2bd43d2e4..4a2cb2500 100644 --- a/src/usr/fapi2/attribute_service.C +++ b/src/usr/fapi2/attribute_service.C @@ -61,6 +61,7 @@ #include <targeting/common/utilFilter.H> #include <targeting/common/util.H> #include <../memory/lib/shared/mss_const.H> +#include <util/utilcommonattr.H> #include <secureboot/service.H> @@ -1792,6 +1793,35 @@ ReturnCode platGetMBvpdAttr( return rc; } +//****************************************************************************** +// fapi::platAttrSvc::getPllBucket function +//****************************************************************************** +ReturnCode getPllBucket(const Target<TARGET_TYPE_ALL>& i_fapiTarget, + uint8_t & o_bucket_val, + const uint8_t i_index) +{ + fapi2::ReturnCode l_rc; + errlHndl_t l_errl = nullptr; + + TARGETING::Target * l_chipTarget = nullptr; + l_errl = getTargetingTarget(i_fapiTarget, l_chipTarget); + if(l_errl) + { + FAPI_ERR("getPllBucket: Error from getTargetingTarget"); + l_rc.setPlatDataPtr(reinterpret_cast<void *> (l_errl)); + } + else + { + l_errl = Util::getObusPllBucket(l_chipTarget, o_bucket_val, i_index); + if (l_errl) + { + FAPI_ERR("getPllBucket: Error from getObusPllBucket"); + l_rc.setPlatDataPtr(reinterpret_cast<void *> (l_errl)); + } + } + return l_rc; +} + } // End platAttrSvc namespace } // End fapi2 namespace diff --git a/src/usr/fapi2/test/fapi2PllBucketTest.H b/src/usr/fapi2/test/fapi2PllBucketTest.H new file mode 100644 index 000000000..72ddf17e1 --- /dev/null +++ b/src/usr/fapi2/test/fapi2PllBucketTest.H @@ -0,0 +1,131 @@ +/* IBM_PROLOG_BEGIN_TAG */ +/* This is an automatically generated prolog. */ +/* */ +/* $Source: src/usr/fapi2/test/fapi2PllBucketTest.H $ */ +/* */ +/* OpenPOWER HostBoot Project */ +/* */ +/* Contributors Listed Below - COPYRIGHT 2016,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 __PLL_BUCKET_TEST_H__ +#define __PLL_BUCKET_TEST_H__ + +/** + * @file fapi2PllBucketTest.H + * + * @brief Test case for WOF access code + */ + +#include <stdio.h> +#include <cxxtest/TestSuite.H> +#include <errl/errlmanager.H> +#include <errl/errlentry.H> +#include <fapi2.H> +#include <devicefw/userif.H> +#include <utilFilter.H> + +using namespace TARGETING; + +class PllBucketTest: public CxxTest::TestSuite +{ +public: + + /** + * @brief Test OB[0,1,2,3]_PLL_BUCKET access attribute + * + */ + void testPllBucket (void) + { + FAPI_INF("testPllBucket: ENTER"); + + fapi2::ReturnCode l_rc; + + TARGETING::TargetHandleList l_chipList; + TARGETING::getAllChips(l_chipList, TARGETING::TYPE_PROC); + TARGETING::Target * l_target = NULL; + + for (uint8_t i = 0; i < l_chipList.size(); i++) + { + if(TARGETING::MODEL_NIMBUS == + l_chipList[i]->getAttr<TARGETING::ATTR_MODEL>()) + { + uint8_t l_bucket[4] = {255, 255, 255, 255}; + l_target = l_chipList[i]; + fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP> + fapi2_procTarget(l_target); + + //Perform test on OB0 + FAPI_DBG("test OB0_PLL_BUCKET on chip HUID: %.8X", + TARGETING::get_huid(l_target)); + + FAPI_ATTR_GET(fapi2::ATTR_OB0_PLL_BUCKET, + l_target, + l_bucket[0]); + if(l_bucket[0] == 255) + { + TS_FAIL("testPllBucket: OB0_PLL_BUCKET failed, got: %d", + l_bucket[0]); + } + + //Perform test on OB1 + FAPI_DBG("test OB1_PLL_BUCKET on chip HUID: %.8X", + TARGETING::get_huid(l_target)); + + FAPI_ATTR_GET(fapi2::ATTR_OB1_PLL_BUCKET, + l_target, + l_bucket[1]); + if(l_bucket[1] == 255) + { + TS_FAIL("testPllBucket: OB1_PLL_BUCKET failed, got: %d", + l_bucket[1]); + } + + //Perform test on OB2 + FAPI_DBG("test OB2_PLL_BUCKET on chip HUID: %.8X", + TARGETING::get_huid(l_target)); + + FAPI_ATTR_GET(fapi2::ATTR_OB2_PLL_BUCKET, + l_target, + l_bucket[2]); + if(l_bucket[2] == 255) + { + TS_FAIL("testPllBucket: OB2_PLL_BUCKET failed, got: %d", + l_bucket[2]); + } + + //Perform test on OB3 + FAPI_DBG("test OB3_PLL_BUCKET on chip HUID: %.8X", + TARGETING::get_huid(l_target)); + + FAPI_ATTR_GET(fapi2::ATTR_OB3_PLL_BUCKET, + l_target, + l_bucket[3]); + if(l_bucket[3] == 255) + { + TS_FAIL("testPllBucket: OB3_PLL_BUCKET failed, got: %d", + l_bucket[3]); + } + } + } + FAPI_INF("testPllBucket: EXIT."); + + } // testPllBucket + +}; + +#endif |