summaryrefslogtreecommitdiffstats
path: root/src/usr/hwpf/plat/fapiPlatAttributeService.C
diff options
context:
space:
mode:
authorNick Bofferding <bofferdn@us.ibm.com>2011-09-08 00:06:56 -0500
committerNicholas E. Bofferding <bofferdn@us.ibm.com>2011-09-19 13:18:30 -0500
commitb08159eb20f2a0ccfe2d654f56a6fe2079bec98e (patch)
tree5248e5cea65eff0ba758ed5d50bad1b26884e883 /src/usr/hwpf/plat/fapiPlatAttributeService.C
parentea37c1fc02819175e8ede86718a3afc904c723bc (diff)
downloadtalos-hostboot-b08159eb20f2a0ccfe2d654f56a6fe2079bec98e.tar.gz
talos-hostboot-b08159eb20f2a0ccfe2d654f56a6fe2079bec98e.zip
Implement support for generating the PNOR targeting image
- Generate PNOR targeting image as part of the build process - Load it into SIMICS physical memory - Access image from targeting service at correct virtual address - Bridge fapi attributes to host boot attributes using direct macro - Support multidimensional arrays for simple attributes - Removed support for fake PNOR image Change-Id: I45d986d69397940a165c850d0db0fdeccd137d4d Reviewed-on: http://gfw160.austin.ibm.com:8080/gerrit/341 Tested-by: Jenkins Server Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com> Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com> Reviewed-by: CAMVAN T. NGUYEN <ctnguyen@us.ibm.com> Reviewed-by: Nicholas E. Bofferding <bofferdn@us.ibm.com>
Diffstat (limited to 'src/usr/hwpf/plat/fapiPlatAttributeService.C')
-rw-r--r--src/usr/hwpf/plat/fapiPlatAttributeService.C100
1 files changed, 100 insertions, 0 deletions
diff --git a/src/usr/hwpf/plat/fapiPlatAttributeService.C b/src/usr/hwpf/plat/fapiPlatAttributeService.C
new file mode 100644
index 000000000..e72e637f5
--- /dev/null
+++ b/src/usr/hwpf/plat/fapiPlatAttributeService.C
@@ -0,0 +1,100 @@
+// IBM_PROLOG_BEGIN_TAG
+// This is an automatically generated prolog.
+//
+// $Source: src/usr/hwpf/plat/fapiPlatAttributeService.C $
+//
+// IBM CONFIDENTIAL
+//
+// COPYRIGHT International Business Machines Corp. 2011
+//
+// 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 other-
+// wise divested of its trade secrets, irrespective of what has
+// been deposited with the U.S. Copyright Office.
+//
+// Origin: 30
+//
+// IBM_PROLOG_END
+
+/**
+ * @file fapiPlatAttributeService.C
+ *
+ * @brief Implements HWP attribute -> HB attribute bridging functions
+ *
+ * Note that platform code must provide the implementation.
+ */
+
+//******************************************************************************
+// Includes
+//******************************************************************************
+
+#include <targeting/targetservice.H>
+#include <errl/errlentry.H>
+#include <errl/errltypes.H>
+#include <hwpf/plat/fapiPlatAttributeService.H>
+#include <hwpf/plat/fapiPlatReasonCodes.H>
+
+//******************************************************************************
+// Implementation
+//******************************************************************************
+
+namespace fapi
+{
+
+namespace platAttrSvc
+{
+
+//******************************************************************************
+// fapi::platAttrSvc::getSystemTarget
+//******************************************************************************
+
+TARGETING::Target* getSystemTarget()
+{
+ TARGETING::Target* l_pTarget = NULL;
+ TARGETING::targetService().getTopLevelTarget(l_pTarget);
+ assert(l_pTarget);
+ return l_pTarget;
+}
+
+//******************************************************************************
+// fapi::platAttrSvc::createAttrAccessError
+//******************************************************************************
+
+fapi::ReturnCode createAttrAccessError(
+ const TARGETING::ATTRIBUTE_ID i_targAttrId,
+ const fapi::AttributeId i_fapiAttrId,
+ const fapi::Target* const i_pFapiTarget)
+{
+ /*
+ * @errortype
+ * @moduleid fapi::MOD_PLAT_ATTR_SVC_CREATE_ATTR_ACCESS_ERROR
+ * @reasoncode fapi::RC_FAILED_TO_ACCESS_ATTRIBUTE
+ * @userdata1 Top 32 bits = platform attribute ID, lower 32 bits =
+ * FAPI attribute ID
+ * @userdata2 FAPI target type, or NULL if system target
+ * @devdesc Failed to get requested attribute.
+ * Possible causes: Invalid target, attribute not implemented,
+ * attribute not present on given target, target service not
+ * initialized
+ */
+ errlHndl_t l_pError = new ERRORLOG::ErrlEntry(
+ ERRORLOG::ERRL_SEV_INFORMATIONAL,
+ fapi::MOD_PLAT_ATTR_SVC_CREATE_ATTR_ACCESS_ERROR,
+ fapi::RC_FAILED_TO_ACCESS_ATTRIBUTE,
+ (static_cast<uint64_t>(i_targAttrId) << 32)
+ | (static_cast<uint64_t>(i_fapiAttrId)),
+ i_pFapiTarget ? i_pFapiTarget->getType(): NULL);
+
+ fapi::ReturnCode l_rc = fapi::FAPI_RC_PLAT_ERR_SEE_DATA;
+ l_rc.setPlatData(reinterpret_cast<void *>(l_pError));
+ return l_rc;
+}
+
+} // End platAttrSvc namespace
+
+} // End fapi namespace
OpenPOWER on IntegriCloud