summaryrefslogtreecommitdiffstats
path: root/src/occ_gpe0/gpe_util.c
diff options
context:
space:
mode:
authorWilliam Bryan <wilbryan@us.ibm.com>2015-12-09 13:16:53 -0600
committerWilliam A. Bryan <wilbryan@us.ibm.com>2016-01-15 17:42:33 -0600
commit2860679a6509d0cac8530601c40a94db6a4ef766 (patch)
tree331ded5de829a76f943c51bbca5d22d3dcc678b3 /src/occ_gpe0/gpe_util.c
parentff50d1ba87a4affe60b26d581b668f12a355de29 (diff)
downloadtalos-occ-2860679a6509d0cac8530601c40a94db6a4ef766.tar.gz
talos-occ-2860679a6509d0cac8530601c40a94db6a4ef766.zip
Enabled reading CCSR via OCI
RTC: 140187 Change-Id: I3ad92658c18e76f58b3e7c9733e97cff437c7cdc Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/22581 Tested-by: FSP CI Jenkins Reviewed-by: Martha Broyles <mbroyles@us.ibm.com> Reviewed-by: Wael Elessawy <welessa@us.ibm.com>
Diffstat (limited to 'src/occ_gpe0/gpe_util.c')
-rw-r--r--src/occ_gpe0/gpe_util.c27
1 files changed, 24 insertions, 3 deletions
diff --git a/src/occ_gpe0/gpe_util.c b/src/occ_gpe0/gpe_util.c
index 10996d4..42125a9 100644
--- a/src/occ_gpe0/gpe_util.c
+++ b/src/occ_gpe0/gpe_util.c
@@ -172,6 +172,15 @@ void busy_wait(uint32_t t_microseconds)
MFDEC(current_decrementer_value);
}
+/*
+ * Function Specification
+ *
+ * Name: ipc_scom_operation
+ *
+ * Description: Does a getscom or putscom for the 405
+ *
+ * End Function Specification
+ */
void ipc_scom_operation(ipc_msg_t* cmd, void* arg)
{
int l_rc;
@@ -181,16 +190,28 @@ void ipc_scom_operation(ipc_msg_t* cmd, void* arg)
if (scom_op->read)
{
l_rc = getscom_abs(scom_op->addr, &scom_op->data);
+ if( l_rc )
+ {
+ PK_TRACE("ipc_scom_operation: Error doing getscom! rc: 0x%08X addr: 0x%08X", l_rc, scom_op->addr);
+ gpe_set_ffdc(&(scom_op->error), scom_op->addr, GPE_RC_SCOM_GET_FAILED, l_rc);
+ }
}
else
{
l_rc = putscom_abs(scom_op->addr, scom_op->data);
+ if( l_rc )
+ {
+ PK_TRACE("ipc_scom_operation: Error doing putscom! rc: 0x%08X addr: 0x%08X", l_rc, scom_op->addr);
+ gpe_set_ffdc(&(scom_op->error), scom_op->addr, GPE_RC_SCOM_PUT_FAILED, l_rc);
+ }
}
+ // send back a response, IPC success even if ffdc/rc are non zeros
+ l_rc = ipc_send_rsp(cmd, IPC_RC_SUCCESS);
if(l_rc)
{
- scom_op->rc = l_rc;
- PK_TRACE("Error doing generic scom! RC: 0x%08X Addr: 0x%08X Read: %d Data: 0x%08X", l_rc,
- scom_op->addr, scom_op->read, scom_op->data);
+ PK_TRACE("ipc_scom_operation: Failed to send response back. Halting GPE0", l_rc);
+ gpe_set_ffdc(&(scom_op->error), 0x00, GPE_RC_IPC_SEND_FAILED, l_rc);
+ pk_halt();
}
}
OpenPOWER on IntegriCloud