summaryrefslogtreecommitdiffstats
path: root/src/occ_gpe0/firdata/scom_util.c
diff options
context:
space:
mode:
authorPrachi Gupta <pragupta@us.ibm.com>2017-07-17 17:43:01 -0500
committerWilliam A. Bryan <wilbryan@us.ibm.com>2017-07-21 17:51:40 -0400
commitb796b12052f5542945bf6d1a831f8d67a502a0ef (patch)
treec3eb6825606ce714b5d020b1092c5d6c05d06027 /src/occ_gpe0/firdata/scom_util.c
parent3d71bd95e10f82ae2a96e6ebc929dc2ca7b1b63c (diff)
downloadtalos-occ-b796b12052f5542945bf6d1a831f8d67a502a0ef.tar.gz
talos-occ-b796b12052f5542945bf6d1a831f8d67a502a0ef.zip
rt_xstop_analysis: single proc fir collection is working, without pnor writes
Change-Id: Ib49d3b9d52c8f4e1054e9b0c0d609a6e13908ddb Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/43245 Reviewed-by: ILYA SMIRNOV <ismirno@us.ibm.com> Reviewed-by: Zane C. Shelley <zshelle@us.ibm.com> Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> Reviewed-by: Brian J. Stegmiller <bjs@us.ibm.com> Reviewed-by: William A. Bryan <wilbryan@us.ibm.com>
Diffstat (limited to 'src/occ_gpe0/firdata/scom_util.c')
-rw-r--r--src/occ_gpe0/firdata/scom_util.c83
1 files changed, 35 insertions, 48 deletions
diff --git a/src/occ_gpe0/firdata/scom_util.c b/src/occ_gpe0/firdata/scom_util.c
index 491c213..5f5656a 100644
--- a/src/occ_gpe0/firdata/scom_util.c
+++ b/src/occ_gpe0/firdata/scom_util.c
@@ -30,8 +30,7 @@
#include <scom_util.h>
#include "scom_addr_util.h"
#include <sbe_fifo.h>
-
-bool G_request_created = FALSE;
+#include <ppe42_scom.h>
enum {
/*FSI addresses are byte offsets, so need to multiply by 4
@@ -340,47 +339,6 @@ int32_t translate_addr( SCOM_Trgt_t i_trgt, uint64_t i_addr, uint64_t * o_addr )
}
/**
- * @brief Performs a getscom operation with no address translation.
- * @param i_chip Chip to SCOM.
- * @param i_addr Address to SCOM.
- * @param o_val Returned value.
- * @return Non-SUCCESS if an internal function fails. SUCCESS otherwise.
- */
-int32_t getscomraw( SCOM_Trgt_t i_chip, uint32_t i_addr, uint64_t * o_val )
-{
- int32_t l_rc = SUCCESS;
-
- //Use SBE FIFO if it's a slave proc
- if(!i_chip.isMaster)
- {
- return getFifoScom(&i_chip, i_addr, o_val);
- }
- *o_val = 0;
- l_rc = FAIL;
-
- return l_rc;
-}
-
-/**
- * @brief Perform a putscom operation with no address translation.
- * @param i_chip Chip to SCOM.
- * @param i_addr Address to SCOM.
- * @param i_val Value to write.
- * @return Non-SUCCESS if an internal function fails. SUCCESS otherwise.
- */
-int32_t putscomraw( SCOM_Trgt_t i_chip, uint32_t i_addr, uint64_t i_val )
-{
- int32_t l_rc = SUCCESS;
-
- //Use SBE FIFO if it's a slave proc
- if(!i_chip.isMaster)
- {
- return putFifoScom(&i_chip, i_addr, i_val);
- }
- return l_rc;
-}
-
-/**
* @brief Executes standard getscom.
* @param i_trgt Chip to SCOM.
* @param i_addr Address to SCOM.
@@ -399,8 +357,15 @@ int32_t SCOM_getScom( SCOM_Trgt_t i_trgt, uint32_t i_addr, uint64_t * o_val )
rc = translate_addr( i_trgt, i_addr, &trans_addr );
if ( SUCCESS == rc )
{
- /* Do the SCOM. */
- rc = getscomraw( chip_targ, trans_addr, o_val );
+ //Use SBE FIFO if it's a slave proc
+ if(!chip_targ.isMaster)
+ {
+ return getFifoScom(&chip_targ, trans_addr, o_val);
+ }
+ else
+ {
+ rc = getscom_abs(trans_addr, o_val);
+ }
}
return rc;
@@ -447,7 +412,14 @@ int32_t SCOM_getIdScom( SCOM_Trgt_t i_trgt, uint64_t i_addr, uint32_t * o_val )
data_buffer |= 0x8000000000000000;
/* perform write before the read with the new */
- rc = putscomraw( i_trgt, phys_addr, data_buffer );
+ if(!chip_targ.isMaster)
+ {
+ rc = putFifoScom(&chip_targ, phys_addr, data_buffer);
+ }
+ else
+ {
+ rc = putscom_abs(phys_addr, data_buffer);
+ }
if ( SUCCESS != rc ) return rc;
// Loop on read until we see done, error, or we timeout
@@ -457,7 +429,15 @@ int32_t SCOM_getIdScom( SCOM_Trgt_t i_trgt, uint64_t i_addr, uint32_t * o_val )
{
/* Now perform the op requested using the passed in */
/* IO_Buffer to pass the read data back to caller. */
- rc = getscomraw( chip_targ, phys_addr, &(scomout.data64) );
+ //Use SBE FIFO if it's a slave proc
+ if(!chip_targ.isMaster)
+ {
+ rc = getFifoScom(&chip_targ, trans_addr, &(scomout.data64));
+ }
+ else
+ {
+ rc = getscom_abs(trans_addr, &(scomout.data64));
+ }
if ( SUCCESS != rc ) return rc;
/* Check for PIB error. */
@@ -512,7 +492,14 @@ int32_t SCOM_putScom( SCOM_Trgt_t i_trgt, uint32_t i_addr, uint64_t i_val )
if ( SUCCESS == l_rc )
{
/* Do the SCOM. */
- l_rc = putscomraw( l_chip_targ, l_trans_addr, i_val );
+ if(!l_chip_targ.isMaster)
+ {
+ return putFifoScom(&l_chip_targ, i_addr, i_val);
+ }
+ else
+ {
+ l_rc = putscom_abs(l_trans_addr, i_val);
+ }
}
return l_rc;
OpenPOWER on IntegriCloud