summaryrefslogtreecommitdiffstats
path: root/src/include/usr/hwpf
diff options
context:
space:
mode:
Diffstat (limited to 'src/include/usr/hwpf')
-rwxr-xr-xsrc/include/usr/hwpf/hwp/getPllRingAttr.H66
-rw-r--r--src/include/usr/hwpf/plat/fapiPlatAttributeService.H210
2 files changed, 276 insertions, 0 deletions
diff --git a/src/include/usr/hwpf/hwp/getPllRingAttr.H b/src/include/usr/hwpf/hwp/getPllRingAttr.H
new file mode 100755
index 000000000..fde18436b
--- /dev/null
+++ b/src/include/usr/hwpf/hwp/getPllRingAttr.H
@@ -0,0 +1,66 @@
+/* IBM_PROLOG_BEGIN_TAG */
+/* This is an automatically generated prolog. */
+/* */
+/* $Source: src/include/usr/hwpf/hwp/getPllRingAttr.H $ */
+/* */
+/* IBM CONFIDENTIAL */
+/* */
+/* COPYRIGHT International Business Machines Corp. 2013 */
+/* */
+/* 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 */
+// $Id: getPllRingAttr.H,v 1.1 2013/09/16 15:40:22 dpeterso Exp $
+/**
+ * @file getPllRingAttr.H
+ *
+ * @brief Prototype for getPllRingAttr() -
+ * fetch PLL ring attributes based on chip EC and frequencies
+ * from data from static arrays (fapiPllRingAttr.H)
+ */
+
+ #ifndef _HWP_GETPLLRINGATTR_
+ #define _HWP_GETPLLRINGATTR_
+
+#include <fapi.H>
+#define MAX_PLL_RING_SIZE_BYTES 256
+
+//#include <fapiPllRingAttr.H>
+
+
+// function pointer typedef definition for HWP call support
+typedef fapi::ReturnCode (*getPllRingAttr_FP_t)
+ (const fapi::AttributeId, const fapi::Target &, uint32_t &, uint8_t *);
+
+extern "C"
+{
+/**
+ * @brief get specified PLL ring attribute for the specified target CPU.
+ *
+ * @param i_attrId - fapi attribute requested by the caller.
+ * @param i_fapiTarget - cpu target
+ * @param o_ringLength - out: size of ring buffer that caller has
+ * allocated
+ * @param 0_data - out: PLL ring data.
+ *
+ * @return fapi::ReturnCode - FAPI_RC_SUCCESS if success,
+ * relevant error code for failure.
+ */
+ fapi::ReturnCode getPllRingAttr( const fapi::AttributeId i_attrId,
+ const fapi::Target i_pChipTarget,
+ uint32_t & o_ringBitLength,
+ uint8_t *o_data);
+
+}
+
+#endif
diff --git a/src/include/usr/hwpf/plat/fapiPlatAttributeService.H b/src/include/usr/hwpf/plat/fapiPlatAttributeService.H
index 270cd543f..6e5d3b0e6 100644
--- a/src/include/usr/hwpf/plat/fapiPlatAttributeService.H
+++ b/src/include/usr/hwpf/plat/fapiPlatAttributeService.H
@@ -555,6 +555,30 @@ fapi::ReturnCode fapiPlatDimmGetSpareDram (
const fapi::Target * i_pTarget,
uint8_t &o_data);
+/**
+ * @brief This function is called by the FAPI_ATTR_GET macro when getting
+ * PLL ring attributes. It should not be called directly.
+ *
+ * @param[in] i_targAttrId fapi attribute ID
+ * @param[in] i_target Target pointer to operate on
+ * @param[in] o_data Pointer to ring data (or flush data)
+ */
+fapi::ReturnCode fapiPlatGetPllAttr(const fapi::AttributeId i_attrId,
+ const fapi::Target * const i_pChipTarget,
+ uint8_t *o_data);
+
+/**
+ * @brief This function is called by the FAPI_ATTR_GET macro when getting
+ * PLL ring attributes. It should not be called directly.
+ *
+ * @param[in] i_targAttrId fapi attribute ID
+ * @param[in] i_target Target pointer to operate on
+ * @param[in] o_pllRingLength PLL ring length
+ */
+fapi::ReturnCode fapiPlatGetPllAttr(const fapi::AttributeId i_attrId,
+ const fapi::Target * const i_pChipTarget,
+ uint32_t (&o_pllRingLength));
+
} // namespace platAttrSvc
} // namespace fapi
@@ -1561,4 +1585,190 @@ fapi::ReturnCode fapiPlatDimmGetSpareDram (
fapi::FAPI_RC_SUCCESS : fapi::platAttrSvc::fapiPlatDimmGetSpareDram\
(PTARGET, VAL)
+//------------------------------------------------------------------------------
+// MACROs to route ATTR PLL Ring accesses to the correct HWSV function
+//------------------------------------------------------------------------------
+// DATA accesses
+#define ATTR_PROC_AB_BNDY_PLL_DATA_GETMACRO(ID, PTARGET, VAL) \
+ fapi::AttrOverrideSync::getAttrOverrideFunc(fapi::ID, PTARGET, &VAL) ?\
+ fapi::FAPI_RC_SUCCESS :\
+ ( fapi::platAttrSvc::fapiPlatGetPllAttr( \
+ ATTR_PROC_AB_BNDY_PLL_DATA, PTARGET, VAL ))
+#define ATTR_PROC_AB_BNDY_PLL_FOR_DCCAL_DATA_GETMACRO(ID, PTARGET, VAL) \
+ fapi::AttrOverrideSync::getAttrOverrideFunc(fapi::ID, PTARGET, &VAL) ?\
+ fapi::FAPI_RC_SUCCESS :\
+ ( fapi::platAttrSvc::fapiPlatGetPllAttr( \
+ ATTR_PROC_AB_BNDY_PLL_FOR_DCCAL_DATA, PTARGET, VAL ))
+#define ATTR_PROC_PB_BNDY_DMIPLL_DATA_GETMACRO(ID, PTARGET, VAL) \
+ fapi::AttrOverrideSync::getAttrOverrideFunc(fapi::ID, PTARGET, &VAL) ?\
+ fapi::FAPI_RC_SUCCESS :\
+ ( fapi::platAttrSvc::fapiPlatGetPllAttr( \
+ ATTR_PROC_PB_BNDY_DMIPLL_DATA, PTARGET, VAL ))
+#define ATTR_PROC_PB_BNDY_DMIPLL_FOR_DCCAL_DATA_GETMACRO(ID, PTARGET, VAL) \
+ fapi::AttrOverrideSync::getAttrOverrideFunc(fapi::ID, PTARGET, &VAL) ?\
+ fapi::FAPI_RC_SUCCESS :\
+ ( fapi::platAttrSvc::fapiPlatGetPllAttr( \
+ ATTR_PROC_PB_BNDY_DMIPLL_FOR_DCCAL_DATA, PTARGET, VAL ))
+#define ATTR_PROC_PCI_BNDY_PLL_DATA_GETMACRO(ID, PTARGET, VAL) \
+ fapi::AttrOverrideSync::getAttrOverrideFunc(fapi::ID, PTARGET, &VAL) ?\
+ fapi::FAPI_RC_SUCCESS :\
+ ( fapi::platAttrSvc::fapiPlatGetPllAttr( \
+ ATTR_PROC_PCI_BNDY_PLL_DATA, PTARGET, VAL ))
+#define ATTR_PROC_PERV_BNDY_PLL_DATA_GETMACRO(ID, PTARGET, VAL) \
+ fapi::AttrOverrideSync::getAttrOverrideFunc(fapi::ID, PTARGET, &VAL) ?\
+ fapi::FAPI_RC_SUCCESS :\
+ ( fapi::platAttrSvc::fapiPlatGetPllAttr( \
+ ATTR_PROC_PERV_BNDY_PLL_DATA, PTARGET, VAL ))
+#define ATTR_MEMB_TP_BNDY_PLL_DATA_GETMACRO(ID, PTARGET, VAL) \
+ fapi::AttrOverrideSync::getAttrOverrideFunc(fapi::ID, PTARGET, &VAL) ?\
+ fapi::FAPI_RC_SUCCESS :\
+ ( fapi::platAttrSvc::fapiPlatGetPllAttr( \
+ ATTR_MEMB_TP_BNDY_PLL_DATA, PTARGET, VAL ))
+
+#define ATTR_MEMB_TP_BNDY_PLL_FOR_DCCAL_DATA_GETMACRO(ID, PTARGET, VAL) \
+ fapi::AttrOverrideSync::getAttrOverrideFunc(fapi::ID, PTARGET, &VAL) ?\
+ fapi::FAPI_RC_SUCCESS :\
+ ( fapi::platAttrSvc::fapiPlatGetPllAttr( \
+ ATTR_MEMB_TP_BNDY_PLL_FOR_DCCAL_DATA, PTARGET, VAL ))
+#define ATTR_MEMB_TP_BNDY_PLL_NEST4000_MEM1066_DATA_GETMACRO(ID, PTARGET, VAL) \
+ fapi::AttrOverrideSync::getAttrOverrideFunc(fapi::ID, PTARGET, &VAL) ?\
+ fapi::FAPI_RC_SUCCESS :\
+ ( fapi::platAttrSvc::fapiPlatGetPllAttr( \
+ ATTR_MEMB_TP_BNDY_PLL_NEST4000_MEM1066_DATA, PTARGET, VAL ))
+#define ATTR_MEMB_TP_BNDY_PLL_NEST4000_MEM1333_DATA_GETMACRO(ID, PTARGET, VAL) \
+ fapi::AttrOverrideSync::getAttrOverrideFunc(fapi::ID, PTARGET, &VAL) ?\
+ fapi::FAPI_RC_SUCCESS :\
+ ( fapi::platAttrSvc::fapiPlatGetPllAttr( \
+ ATTR_MEMB_TP_BNDY_PLL_NEST4000_MEM1333_DATA, PTARGET, VAL ))
+#define ATTR_MEMB_TP_BNDY_PLL_NEST4000_MEM1600_DATA_GETMACRO(ID, PTARGET, VAL) \
+ fapi::AttrOverrideSync::getAttrOverrideFunc(fapi::ID, PTARGET, &VAL) ?\
+ fapi::FAPI_RC_SUCCESS :\
+ ( fapi::platAttrSvc::fapiPlatGetPllAttr( \
+ ATTR_MEMB_TP_BNDY_PLL_NEST4000_MEM1600_DATA, PTARGET, VAL ))
+#define ATTR_MEMB_TP_BNDY_PLL_NEST4000_MEM1866_DATA_GETMACRO(ID, PTARGET, VAL) \
+ fapi::AttrOverrideSync::getAttrOverrideFunc(fapi::ID, PTARGET, &VAL) ?\
+ fapi::FAPI_RC_SUCCESS :\
+ ( fapi::platAttrSvc::fapiPlatGetPllAttr( \
+ ATTR_MEMB_TP_BNDY_PLL_NEST4000_MEM1866_DATA, PTARGET, VAL ))
+#define ATTR_MEMB_TP_BNDY_PLL_NEST4800_MEM1066_DATA_GETMACRO(ID, PTARGET, VAL) \
+ fapi::AttrOverrideSync::getAttrOverrideFunc(fapi::ID, PTARGET, &VAL) ?\
+ fapi::FAPI_RC_SUCCESS :\
+ ( fapi::platAttrSvc::fapiPlatGetPllAttr( \
+ ATTR_MEMB_TP_BNDY_PLL_NEST4800_MEM1066_DATA, PTARGET, VAL ))
+#define ATTR_MEMB_TP_BNDY_PLL_NEST4800_MEM1333_DATA_GETMACRO(ID, PTARGET, VAL) \
+ fapi::AttrOverrideSync::getAttrOverrideFunc(fapi::ID, PTARGET, &VAL) ?\
+ fapi::FAPI_RC_SUCCESS :\
+ ( fapi::platAttrSvc::fapiPlatGetPllAttr( \
+ ATTR_MEMB_TP_BNDY_PLL_NEST4800_MEM1333_DATA, PTARGET, VAL ))
+#define ATTR_MEMB_TP_BNDY_PLL_NEST4800_MEM1600_DATA_GETMACRO(ID, PTARGET, VAL) \
+ fapi::AttrOverrideSync::getAttrOverrideFunc(fapi::ID, PTARGET, &VAL) ?\
+ fapi::FAPI_RC_SUCCESS :\
+ ( fapi::platAttrSvc::fapiPlatGetPllAttr( \
+ ATTR_MEMB_TP_BNDY_PLL_NEST4800_MEM1600_DATA, PTARGET, VAL ))
+#define ATTR_MEMB_TP_BNDY_PLL_NEST4800_MEM1866_DATA_GETMACRO(ID, PTARGET, VAL) \
+ fapi::AttrOverrideSync::getAttrOverrideFunc(fapi::ID, PTARGET, &VAL) ?\
+ fapi::FAPI_RC_SUCCESS :\
+ ( fapi::platAttrSvc::fapiPlatGetPllAttr( \
+ ATTR_MEMB_TP_BNDY_PLL_NEST4800_MEM1866_DATA, PTARGET, VAL ))
+
+// FLUSH accesses
+#define ATTR_PROC_AB_BNDY_PLL_FLUSH_GETMACRO(ID, PTARGET, VAL) \
+ fapi::AttrOverrideSync::getAttrOverrideFunc(fapi::ID, PTARGET, &VAL) ?\
+ fapi::FAPI_RC_SUCCESS :\
+ ( fapi::platAttrSvc::fapiPlatGetPllAttr( \
+ ATTR_PROC_AB_BNDY_PLL_FLUSH, PTARGET, VAL ))
+#define ATTR_PROC_PB_BNDY_DMIPLL_FLUSH_GETMACRO(ID, PTARGET, VAL) \
+ fapi::AttrOverrideSync::getAttrOverrideFunc(fapi::ID, PTARGET, &VAL) ?\
+ fapi::FAPI_RC_SUCCESS :\
+ ( fapi::platAttrSvc::fapiPlatGetPllAttr( \
+ ATTR_PROC_PB_BNDY_DMIPLL_FLUSH, PTARGET, VAL ))
+#define ATTR_PROC_PCI_BNDY_PLL_FLUSH_GETMACRO(ID, PTARGET, VAL) \
+ fapi::AttrOverrideSync::getAttrOverrideFunc(fapi::ID, PTARGET, &VAL) ?\
+ fapi::FAPI_RC_SUCCESS :\
+ ( fapi::platAttrSvc::fapiPlatGetPllAttr( \
+ ATTR_PROC_PCI_BNDY_PLL_FLUSH, PTARGET, VAL ))
+#define ATTR_PROC_PERV_BNDY_PLL_FLUSH_GETMACRO(ID, PTARGET, VAL) \
+ fapi::AttrOverrideSync::getAttrOverrideFunc(fapi::ID, PTARGET, &VAL) ?\
+ fapi::FAPI_RC_SUCCESS :\
+ ( fapi::platAttrSvc::fapiPlatGetPllAttr( \
+ ATTR_PROC_PERV_BNDY_PLL_FLUSH, PTARGET, VAL ))
+#define ATTR_MEMB_TP_BNDY_PLL_FLUSH_GETMACRO(ID, PTARGET, VAL) \
+ fapi::AttrOverrideSync::getAttrOverrideFunc(fapi::ID, PTARGET, &VAL) ?\
+ fapi::FAPI_RC_SUCCESS :\
+ ( fapi::platAttrSvc::fapiPlatGetPllAttr( \
+ ATTR_MEMB_TP_BNDY_PLL_FLUSH, PTARGET, VAL))
+
+// LENGTH accesses
+#define ATTR_PROC_AB_BNDY_PLL_LENGTH_GETMACRO(ID, PTARGET, VAL) \
+ fapi::AttrOverrideSync::getAttrOverrideFunc(fapi::ID, PTARGET, &VAL) ?\
+ fapi::FAPI_RC_SUCCESS :\
+ ( fapi::platAttrSvc::fapiPlatGetPllAttr( \
+ ATTR_PROC_AB_BNDY_PLL_LENGTH, PTARGET, VAL ))
+#define ATTR_PROC_PB_BNDY_DMIPLL_LENGTH_GETMACRO(ID, PTARGET, VAL) \
+ fapi::AttrOverrideSync::getAttrOverrideFunc(fapi::ID, PTARGET, &VAL) ?\
+ fapi::FAPI_RC_SUCCESS :\
+ ( fapi::platAttrSvc::fapiPlatGetPllAttr( \
+ ATTR_PROC_PB_BNDY_DMIPLL_LENGTH, PTARGET, VAL ))
+#define ATTR_PROC_PCI_BNDY_PLL_LENGTH_GETMACRO(ID, PTARGET, VAL) \
+ fapi::AttrOverrideSync::getAttrOverrideFunc(fapi::ID, PTARGET, &VAL) ?\
+ fapi::FAPI_RC_SUCCESS :\
+ ( fapi::platAttrSvc::fapiPlatGetPllAttr( \
+ ATTR_PROC_PCI_BNDY_PLL_LENGTH, PTARGET, VAL ))
+#define ATTR_PROC_PERV_BNDY_PLL_LENGTH_GETMACRO(ID, PTARGET, VAL) \
+ fapi::AttrOverrideSync::getAttrOverrideFunc(fapi::ID, PTARGET, &VAL) ?\
+ fapi::FAPI_RC_SUCCESS :\
+ ( fapi::platAttrSvc::fapiPlatGetPllAttr( \
+ ATTR_PROC_PERV_BNDY_PLL_LENGTH, PTARGET, VAL ))
+#define ATTR_MEMB_TP_BNDY_PLL_LENGTH_GETMACRO(ID, PTARGET, VAL) \
+ fapi::AttrOverrideSync::getAttrOverrideFunc(fapi::ID, PTARGET, &VAL) ?\
+ fapi::FAPI_RC_SUCCESS :\
+ ( fapi::platAttrSvc::fapiPlatGetPllAttr( \
+ ATTR_MEMB_TP_BNDY_PLL_LENGTH, PTARGET, VAL ))
+
+#define ATTR_MEMB_TP_BNDY_PLL_FOR_DCCAL_LENGTH_GETMACRO(ID, PTARGET, VAL) \
+ fapi::AttrOverrideSync::getAttrOverrideFunc(fapi::ID, PTARGET, &VAL) ?\
+ fapi::FAPI_RC_SUCCESS :\
+ ( fapi::platAttrSvc::fapiPlatGetPllAttr( \
+ ATTR_MEMB_TP_BNDY_PLL_FOR_DCCAL_LENGTH, PTARGET, VAL ))
+#define ATTR_MEMB_TP_BNDY_PLL_NEST4000_MEM1066_LENGTH_GETMACRO(ID, PTARGET, VAL) \
+ fapi::AttrOverrideSync::getAttrOverrideFunc(fapi::ID, PTARGET, &VAL) ?\
+ fapi::FAPI_RC_SUCCESS :\
+ ( fapi::platAttrSvc::fapiPlatGetPllAttr( \
+ ATTR_MEMB_TP_BNDY_PLL_NEST4000_MEM1066_LENGTH, PTARGET, VAL ))
+#define ATTR_MEMB_TP_BNDY_PLL_NEST4000_MEM1333_LENGTH_GETMACRO(ID, PTARGET, VAL) \
+ fapi::AttrOverrideSync::getAttrOverrideFunc(fapi::ID, PTARGET, &VAL) ?\
+ fapi::FAPI_RC_SUCCESS :\
+ ( fapi::platAttrSvc::fapiPlatGetPllAttr( \
+ ATTR_MEMB_TP_BNDY_PLL_NEST4000_MEM1333_LENGTH, PTARGET, VAL ))
+#define ATTR_MEMB_TP_BNDY_PLL_NEST4000_MEM1600_LENGTH_GETMACRO(ID, PTARGET, VAL) \
+ fapi::AttrOverrideSync::getAttrOverrideFunc(fapi::ID, PTARGET, &VAL) ?\
+ fapi::FAPI_RC_SUCCESS :\
+ ( fapi::platAttrSvc::fapiPlatGetPllAttr( \
+ ATTR_MEMB_TP_BNDY_PLL_NEST4000_MEM1600_LENGTH, PTARGET, VAL ))
+#define ATTR_MEMB_TP_BNDY_PLL_NEST4000_MEM1866_LENGTH_GETMACRO(ID, PTARGET, VAL) \
+ fapi::AttrOverrideSync::getAttrOverrideFunc(fapi::ID, PTARGET, &VAL) ?\
+ fapi::FAPI_RC_SUCCESS :\
+ ( fapi::platAttrSvc::fapiPlatGetPllAttr( \
+ ATTR_MEMB_TP_BNDY_PLL_NEST4000_MEM1866_LENGTH, PTARGET, VAL ))
+#define ATTR_MEMB_TP_BNDY_PLL_NEST4800_MEM1066_LENGTH_GETMACRO(ID, PTARGET, VAL) \
+ fapi::AttrOverrideSync::getAttrOverrideFunc(fapi::ID, PTARGET, &VAL) ?\
+ fapi::FAPI_RC_SUCCESS :\
+ ( fapi::platAttrSvc::fapiPlatGetPllAttr( \
+ ATTR_MEMB_TP_BNDY_PLL_NEST4800_MEM1066_LENGTH, PTARGET, VAL ))
+#define ATTR_MEMB_TP_BNDY_PLL_NEST4800_MEM1333_LENGTH_GETMACRO(ID, PTARGET, VAL) \
+ fapi::AttrOverrideSync::getAttrOverrideFunc(fapi::ID, PTARGET, &VAL) ?\
+ fapi::FAPI_RC_SUCCESS :\
+ ( fapi::platAttrSvc::fapiPlatGetPllAttr( \
+ ATTR_MEMB_TP_BNDY_PLL_NEST4800_MEM1333_LENGTH, PTARGET, VAL ))
+#define ATTR_MEMB_TP_BNDY_PLL_NEST4800_MEM1600_LENGTH_GETMACRO(ID, PTARGET, VAL) \
+ fapi::AttrOverrideSync::getAttrOverrideFunc(fapi::ID, PTARGET, &VAL) ?\
+ fapi::FAPI_RC_SUCCESS :\
+ ( fapi::platAttrSvc::fapiPlatGetPllAttr( \
+ ATTR_MEMB_TP_BNDY_PLL_NEST4800_MEM1600_LENGTH, PTARGET, VAL ))
+#define ATTR_MEMB_TP_BNDY_PLL_NEST4800_MEM1866_LENGTH_GETMACRO(ID, PTARGET, VAL) \
+ fapi::AttrOverrideSync::getAttrOverrideFunc(fapi::ID, PTARGET, &VAL) ?\
+ fapi::FAPI_RC_SUCCESS :\
+ ( fapi::platAttrSvc::fapiPlatGetPllAttr( \
+ ATTR_MEMB_TP_BNDY_PLL_NEST4800_MEM1866_LENGTH, PTARGET, VAL ))
+
#endif // FAPIPLATATTRIBUTESERVICE_H_
OpenPOWER on IntegriCloud