summaryrefslogtreecommitdiffstats
path: root/src/include/usr/hwpf/plat/fapiPlatAttributeService.H
diff options
context:
space:
mode:
authorDean Sanner <dsanner@us.ibm.com>2013-09-23 12:46:48 -0500
committerA. Patrick Williams III <iawillia@us.ibm.com>2013-10-03 10:58:50 -0500
commit2005f2b4c6d477e5dafa16c447c8d7f43ae16c19 (patch)
treeac98b6848b010f42e6daa625826c3d37b97ffab5 /src/include/usr/hwpf/plat/fapiPlatAttributeService.H
parent591ccab48c225369a23fa231472ceebb4f31e6ce (diff)
downloadblackbird-hostboot-2005f2b4c6d477e5dafa16c447c8d7f43ae16c19.tar.gz
blackbird-hostboot-2005f2b4c6d477e5dafa16c447c8d7f43ae16c19.zip
Dynamically determine PLL ATTR based on freq and chip IDEC
Change-Id: I733760ecbc995d429de862fe56ad44fcc3aae228 RTC: 69918 Reviewed-on: http://gfw160.austin.ibm.com:8080/gerrit/6305 Tested-by: Jenkins Server Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Diffstat (limited to 'src/include/usr/hwpf/plat/fapiPlatAttributeService.H')
-rw-r--r--src/include/usr/hwpf/plat/fapiPlatAttributeService.H210
1 files changed, 210 insertions, 0 deletions
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