diff options
author | Missy Connell <missyc@us.ibm.com> | 2012-04-12 13:03:04 -0500 |
---|---|---|
committer | A. Patrick Williams III <iawillia@us.ibm.com> | 2012-04-16 10:22:21 -0500 |
commit | d82aa02fa9b3fb5a5ca512241bc796ac8be3b9fd (patch) | |
tree | 09a4c400845b2cd4c9b394f1fb42609fa4b8c3bc /src | |
parent | e680dbb8a2fbc423665a274cf60f88d7550d37c0 (diff) | |
download | talos-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')
-rw-r--r-- | src/usr/scom/scom.C | 10 | ||||
-rw-r--r-- | src/usr/scom/scom.H | 10 | ||||
-rw-r--r-- | src/usr/scom/test/scomtest.H | 10 |
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]); |