summaryrefslogtreecommitdiffstats
path: root/src/usr/diag/prdf/common
diff options
context:
space:
mode:
authorCaleb Palmer <cnpalmer@us.ibm.com>2018-04-23 08:55:42 -0500
committerZane C. Shelley <zshelle@us.ibm.com>2018-05-18 10:39:40 -0400
commit41a25f11016a7847565e323f42615e460354afa4 (patch)
treec83727db6669e6f9a52bec739db452a90bcf6165 /src/usr/diag/prdf/common
parent1b04e458595a9e9c5c04dd322f90d4c44129e111 (diff)
downloadtalos-hostboot-41a25f11016a7847565e323f42615e460354afa4.tar.gz
talos-hostboot-41a25f11016a7847565e323f42615e460354afa4.zip
PRD: Resume maint cmd support for MBA
Change-Id: I77b56983eba633104f8b15d6b608cb490c5be48d RTC: 191647 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/57918 Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Reviewed-by: Brian J. Stegmiller <bjs@us.ibm.com> Reviewed-by: Benjamin J. Weisenbeck <bweisenb@us.ibm.com> Reviewed-by: Matt Derksen <mderkse1@us.ibm.com> Reviewed-by: Zane C. Shelley <zshelle@us.ibm.com> Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/59013 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>
Diffstat (limited to 'src/usr/diag/prdf/common')
-rw-r--r--src/usr/diag/prdf/common/plat/mem/prdfMemAddress.C11
-rw-r--r--src/usr/diag/prdf/common/plat/mem/prdfMemAddress.H12
2 files changed, 22 insertions, 1 deletions
diff --git a/src/usr/diag/prdf/common/plat/mem/prdfMemAddress.C b/src/usr/diag/prdf/common/plat/mem/prdfMemAddress.C
index 5893d6dc9..de44ed87e 100644
--- a/src/usr/diag/prdf/common/plat/mem/prdfMemAddress.C
+++ b/src/usr/diag/prdf/common/plat/mem/prdfMemAddress.C
@@ -103,6 +103,17 @@ MemAddr MemAddr::fromMaintAddr<TYPE_MBA>( uint64_t i_addr )
return MemAddr( MemRank(mrnk, srnk), bnk, row, col );
}
+template<>
+uint64_t MemAddr::toMaintAddr<TYPE_MBA>() const
+{
+ return ( ((uint64_t) iv_rnk.getMaster() << 60) |
+ ((uint64_t) iv_rnk.getSlave() << 57) |
+ ((uint64_t) iv_bnk << 53) |
+ ((uint64_t)(iv_row & 0x1ffff) << 36) | // r16-r0
+ ((uint64_t) iv_col << 24) |
+ ((uint64_t)(iv_row & 0x20000) << 13) ); // r17
+}
+
//------------------------------------------------------------------------------
// Address Accessor Functions
//------------------------------------------------------------------------------
diff --git a/src/usr/diag/prdf/common/plat/mem/prdfMemAddress.H b/src/usr/diag/prdf/common/plat/mem/prdfMemAddress.H
index 4b1fc07fb..b0b86af04 100644
--- a/src/usr/diag/prdf/common/plat/mem/prdfMemAddress.H
+++ b/src/usr/diag/prdf/common/plat/mem/prdfMemAddress.H
@@ -87,12 +87,22 @@ class MemAddr
static MemAddr fromReadAddr( uint64_t i_addr );
/**
- * @brief Creates a MemAddr from a maintenance address.
+ * @brief Creates a MemAddr from the current maintenance address.
* @param i_addr 64-bit address.
*/
template<TARGETING::TYPE T>
static MemAddr fromMaintAddr( uint64_t i_addr );
+ /**
+ * @brief Converts internal data structure to a maintenance address.
+ * @return A uint64_t version of the address.
+ * @note Does not include error type. This is because in most cases we
+ * will use this function to write out to hardware and in doing so
+ * we will want to clear the status bits anyway.
+ */
+ template<TARGETING::TYPE T>
+ uint64_t toMaintAddr() const;
+
/** @return This address's rank. */
const MemRank& getRank() const { return iv_rnk; }
OpenPOWER on IntegriCloud