summaryrefslogtreecommitdiffstats
path: root/src/usr/fapi2
diff options
context:
space:
mode:
authorDzuy Nguyen <dzuy@us.ibm.com>2017-11-01 08:54:12 -0500
committerDaniel M. Crowell <dcrowell@us.ibm.com>2017-12-01 15:22:31 -0500
commitc71ed1c414501ce568f914e38b2ddbbc9c258cb6 (patch)
treecb222fe6f89fc1905454576f0a75745cdc70282b /src/usr/fapi2
parent6bc72e2973d1868fcccf74f696bcb9bf08a62951 (diff)
downloadtalos-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.C30
-rw-r--r--src/usr/fapi2/test/fapi2PllBucketTest.H131
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
OpenPOWER on IntegriCloud