diff options
author | Chris Cain <cjcain@us.ibm.com> | 2016-10-13 16:11:32 -0500 |
---|---|---|
committer | Christopher J. Cain <cjcain@us.ibm.com> | 2016-10-14 17:14:58 -0400 |
commit | 5cca3dd9adc644ef8cb7bb251f6b43e85ba9f780 (patch) | |
tree | 078f81c18618ea0bb01d4e91a77a2db17dbb1123 /src/occ_gpe0/apss_read.c | |
parent | 609700b4ae20895c3d0713c8cfcb4717915b2bcd (diff) | |
download | talos-occ-5cca3dd9adc644ef8cb7bb251f6b43e85ba9f780.tar.gz talos-occ-5cca3dd9adc644ef8cb7bb251f6b43e85ba9f780.zip |
OCC Active state changes required for Simics
Change-Id: Ic6e65bcddaefd5213042707feffcf1272133e532
RTC: 161266
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/31190
Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com>
Reviewed-by: Martha Broyles <mbroyles@us.ibm.com>
Reviewed-by: William A. Bryan <wilbryan@us.ibm.com>
Diffstat (limited to 'src/occ_gpe0/apss_read.c')
-rw-r--r-- | src/occ_gpe0/apss_read.c | 51 |
1 files changed, 27 insertions, 24 deletions
diff --git a/src/occ_gpe0/apss_read.c b/src/occ_gpe0/apss_read.c index 12e7102..9ffd334 100644 --- a/src/occ_gpe0/apss_read.c +++ b/src/occ_gpe0/apss_read.c @@ -55,18 +55,15 @@ void apss_start_pwr_meas_read(ipc_msg_t* cmd, void* arg) // the ipc arguments passed through the ipc_msg_t structure, has a pointer // to the G_gpe_start_pwr_meas_read_args struct. +#ifdef DEBUG_APSS_SEQ + PK_TRACE("apss_start_pwr_meas_read: enter"); +#endif + int rc; uint64_t regValue; // a pointer to hold the putscom_abs register value ipc_async_cmd_t *async_cmd = (ipc_async_cmd_t*)cmd; apss_start_args_t *args = (apss_start_args_t*)async_cmd->cmd_data; - // clear error, ffdc, and rc (feedback to 405) - // These may be overwritten by error codes if errors occur - // REVIEW: Since the OCC clears these fields, do we really have to repeat this here? - args->error.error = 0; - args->error.rc = 0; - args->error.ffdc = 0; - do{ // wait for ADC completion, or timeout after 5 micro seconds. @@ -158,11 +155,15 @@ void apss_start_pwr_meas_read(ipc_msg_t* cmd, void* arg) } while(0); +#ifdef DEBUG_APSS_SEQ + PK_TRACE("apss_start_pwr_meas_read: calling ipc_send_rsp()"); +#endif + // send back a response, IPC success even if ffdc/rc are non zeros rc = ipc_send_rsp(cmd, IPC_RC_SUCCESS); if(rc) { - PK_TRACE("apss_start_pwr_meas_read: Failed to send response back. Halting GPE0", rc); + PK_TRACE("apss_start_pwr_meas_read: Failed to send response back. Halting GPE0. rc = 0x%08X", rc); gpe_set_ffdc(&(args->error), 0x00, GPE_RC_IPC_SEND_FAILED, rc); pk_halt(); } @@ -195,13 +196,9 @@ void apss_continue_pwr_meas_read(ipc_msg_t* cmd, void* arg) ipc_async_cmd_t *async_cmd = (ipc_async_cmd_t*)cmd; apss_continue_args_t *args = (apss_continue_args_t*)async_cmd->cmd_data; - // Clear error, ffdc, and rc (feedback to 405) - // These may be overwritten by error codes if errors occur - // REVIEW: Since the OCC clears these fields, do we really have to repeat this here? - args->error.error = 0; - args->error.rc = 0; - args->error.ffdc = 0; - +#ifdef DEBUG_APSS_SEQ + PK_TRACE("apss_continue_pwr_meas_read: enter"); +#endif do{ // wait for ADC completion, or timeout after 100 micro seconds. @@ -261,11 +258,16 @@ void apss_continue_pwr_meas_read(ipc_msg_t* cmd, void* arg) } } while(0); +#ifdef DEBUG_APSS_SEQ + PK_TRACE("apss_continue_pwr_meas_read: calling ipc_send_rsp()"); +#endif + // send back a response, IPC success (even if ffdc/rc are non zeros) rc = ipc_send_rsp(cmd, IPC_RC_SUCCESS); if(rc) { - PK_TRACE("apss_continue_pwr_meas_read: Failed to send response back. Halting GPE0", rc); + PK_TRACE("apss_continue_pwr_meas_read: Failed to send response back. Halting GPE0. rc = 0x%08x", + rc); gpe_set_ffdc(&(args->error), 0x00, GPE_RC_IPC_SEND_FAILED, rc); pk_halt(); } @@ -293,17 +295,14 @@ void apss_complete_pwr_meas_read(ipc_msg_t* cmd, void* arg) // the ipc arguments are passed through the ipc_msg_t structure, has a pointer // to the G_gpe_complete_pwr_meas_read_args +#ifdef DEBUG_APSS_SEQ + PK_TRACE("apss_complete_pwr_meas_read: enter"); +#endif + int rc; ipc_async_cmd_t *async_cmd = (ipc_async_cmd_t*)cmd; apss_complete_args_t *args = (apss_complete_args_t*)async_cmd->cmd_data; - // clear error, ffdc, and rc (feedback to 405) - // These may be overwritten by error codes if errors occur - // REVIEW: Since the OCC clears these fields, do we really have to repeat this here? - args->error.error = 0; - args->error.rc = 0; - args->error.ffdc = 0; - do { // wait for ADC completion, or timeout after 100 micro seconds. // scom register SPIPSS_ADC_STATUS_REG's bit 0 (HWCTRL_ONGOING) @@ -342,11 +341,15 @@ void apss_complete_pwr_meas_read(ipc_msg_t* cmd, void* arg) } } while(0); +#ifdef DEBUG_APSS_SEQ + PK_TRACE("apss_complete_pwr_meas_read: calling ipc_send_rsp()"); +#endif + // send back a response, IPC success (even if ffdc/rc are non zeros) rc = ipc_send_rsp(cmd, IPC_RC_SUCCESS); if(rc) { - PK_TRACE("apss_complete_pwr_meas_read: Failed to send response back. Halting GPE0", rc); + PK_TRACE("apss_complete_pwr_meas_read: Failed to send response back. Halting GPE0. rc = 0x%08X", rc); gpe_set_ffdc(&(args->error), 0x00, GPE_RC_IPC_SEND_FAILED, rc); pk_halt(); } |