summaryrefslogtreecommitdiffstats
path: root/src/usr
diff options
context:
space:
mode:
authorMissy Connell <missyc@us.ibm.com>2012-04-12 13:03:04 -0500
committerA. Patrick Williams III <iawillia@us.ibm.com>2012-04-16 10:22:21 -0500
commitd82aa02fa9b3fb5a5ca512241bc796ac8be3b9fd (patch)
tree09a4c400845b2cd4c9b394f1fb42609fa4b8c3bc /src/usr
parente680dbb8a2fbc423665a274cf60f88d7550d37c0 (diff)
downloadtalos-hostboot-d82aa02fa9b3fb5a5ca512241bc796ac8be3b9fd.tar.gz
talos-hostboot-d82aa02fa9b3fb5a5ca512241bc796ac8be3b9fd.zip
Fix indirect scom error-status masks.
RTC: 40465 Change-Id: I1e45d659189c41b0bd6892060889ac1816858f61 Reviewed-on: http://gfw160.austin.ibm.com:8080/gerrit/890 Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com> Tested-by: Jenkins Server
Diffstat (limited to 'src/usr')
-rw-r--r--src/usr/scom/scom.C10
-rw-r--r--src/usr/scom/scom.H10
-rw-r--r--src/usr/scom/test/scomtest.H10
3 files changed, 14 insertions, 16 deletions
diff --git a/src/usr/scom/scom.C b/src/usr/scom/scom.C
index fb45740ed..d4cabd173 100644
--- a/src/usr/scom/scom.C
+++ b/src/usr/scom/scom.C
@@ -192,10 +192,11 @@ errlHndl_t checkIndirectAndDoScom(DeviceFW::OperationType i_opType,
if ((*((uint64_t *)io_buffer) & SCOM_IND_COMPLETE_MASK)
== SCOM_IND_COMPLETE_MASK)
{
- // check for bits 37-39 to be 011
+ // check for bits 33-35 to be 0
// indicating the read is valid
if ((*((uint64_t *)io_buffer) & SCOM_IND_ERROR_MASK)
- == SCOM_IND_READ_SUCCESS_MASK)
+ == 0)
+
{
// Clear out the other bits in the io_buffer
// register to only return the read data to caller
@@ -319,10 +320,11 @@ errlHndl_t checkIndirectAndDoScom(DeviceFW::OperationType i_opType,
if ((temp_io_buffer & SCOM_IND_COMPLETE_MASK)
== SCOM_IND_COMPLETE_MASK)
{
- // The write is valid when bits 37-39 are 010..
+ // The write is valid when bits 33-35 are 0..
// if not on return error
if ((temp_io_buffer & SCOM_IND_ERROR_MASK)
- != SCOM_IND_WRITE_SUCCESS_MASK)
+ != 0)
+
{
// bits did not get turned on.. set error to true.
l_indScomError = true;
diff --git a/src/usr/scom/scom.H b/src/usr/scom/scom.H
index 778faab13..bcb9f2fe2 100644
--- a/src/usr/scom/scom.H
+++ b/src/usr/scom/scom.H
@@ -33,17 +33,13 @@ namespace SCOM
{
enum ScomErrorMask
{
+ // checkf for complete bit .. bit 32
SCOM_IND_COMPLETE_MASK = 0x0000000080000000,
- // this mask if for bit 37-39 for a read/write
- SCOM_IND_ERROR_MASK = 0x000000007000000,
+ //check for bits 33-35
+ SCOM_IND_ERROR_MASK = 0x0000000070000000
};
- enum ScomValidMask
- {
- SCOM_IND_WRITE_SUCCESS_MASK = 0x000000002000000,
- SCOM_IND_READ_SUCCESS_MASK = 0x000000003000000,
- };
/**
* @brief Performs a SCom operation
diff --git a/src/usr/scom/test/scomtest.H b/src/usr/scom/test/scomtest.H
index 65ddd78ef..198a962ab 100644
--- a/src/usr/scom/test/scomtest.H
+++ b/src/usr/scom/test/scomtest.H
@@ -356,7 +356,7 @@ public:
// Setup some targets to use
enum {
- myPROC9,
+ myPROC0,
NUM_TARGETS
};
TARGETING::Target* scom_targets[NUM_TARGETS];
@@ -370,9 +370,9 @@ public:
TARGETING::EntityPath epath(TARGETING::EntityPath::PATH_PHYSICAL);
epath.addLast(TARGETING::TYPE_SYS,0);
epath.addLast(TARGETING::TYPE_NODE,0);
- epath.addLast(TARGETING::TYPE_PROC,9);
+ epath.addLast(TARGETING::TYPE_PROC,0);
- scom_targets[myPROC9] = TARGETING::targetService().toTarget(epath);
+ scom_targets[myPROC0] = TARGETING::targetService().toTarget(epath);
for( uint64_t x = 0; x < NUM_TARGETS; x++ )
{
@@ -401,8 +401,8 @@ public:
uint64_t addr;
uint64_t data;
} test_data[] = {
- { scom_targets[myPROC9], 0x80040C0102011A3F ,0x1234432112344321},
- { scom_targets[myPROC9], 0x800C140002011E3F, 0x123443211234ABAB},
+ { scom_targets[myPROC0], 0x8000F06002011A3F ,0x1234432112344321},
+ { scom_targets[myPROC0], 0x8000086002011E3F, 0x123443211234ABAB},
};
const uint64_t NUM_ADDRS = sizeof(test_data)/sizeof(test_data[0]);
OpenPOWER on IntegriCloud