diff options
author | Bill Hoffa <wghoffa@us.ibm.com> | 2017-06-09 15:54:47 -0500 |
---|---|---|
committer | William A. Bryan <wilbryan@us.ibm.com> | 2017-07-21 15:25:31 -0400 |
commit | c4b8c5c8953c984dc4908959b002be836a885dee (patch) | |
tree | 7d31332d5d0f7356da069f201e334d20a4d46e54 /src/occ_405/firdata/ast_mboxdd.c | |
parent | 237557e36673c70772d163913581cb9dfd83c96d (diff) | |
download | talos-occ-c4b8c5c8953c984dc4908959b002be836a885dee.tar.gz talos-occ-c4b8c5c8953c984dc4908959b002be836a885dee.zip |
rt_xstop_analysis: initial commit to get pnor acceses working
Change-Id: I1d0e07bfbbc206b9ade87befdb0d86c5bcc4385a
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/43045
Reviewed-by: Zane C. Shelley <zshelle@us.ibm.com>
Reviewed-by: ILYA SMIRNOV <ismirno@us.ibm.com>
Reviewed-by: Brian J. Stegmiller <bjs@us.ibm.com>
Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com>
Reviewed-by: William A. Bryan <wilbryan@us.ibm.com>
Diffstat (limited to 'src/occ_405/firdata/ast_mboxdd.c')
-rw-r--r-- | src/occ_405/firdata/ast_mboxdd.c | 63 |
1 files changed, 12 insertions, 51 deletions
diff --git a/src/occ_405/firdata/ast_mboxdd.c b/src/occ_405/firdata/ast_mboxdd.c index 4541a76..064bcca 100644 --- a/src/occ_405/firdata/ast_mboxdd.c +++ b/src/occ_405/firdata/ast_mboxdd.c @@ -35,20 +35,6 @@ #include <norflash.h> #include <ast_mboxdd.h> #include <lpc.h> -extern int TRACE_LPC; -int TRACE_MBOX = 0; - -/*****************************************************************************/ -/* C o n s t a n t s */ -/*****************************************************************************/ - -/*****************************************************************************/ -/* G l o b a l s */ -/*****************************************************************************/ - -/*****************************************************************************/ -/* M e t h o d s */ -/*****************************************************************************/ errorHndl_t writeRegSIO(uint8_t i_regAddr, uint8_t i_data) { @@ -110,7 +96,7 @@ errorHndl_t mboxOut(uint64_t i_addr, uint8_t i_byte) errorHndl_t mboxIn(uint64_t i_addr, uint8_t *o_byte) { - size_t len = sizeof(o_byte); + size_t len = sizeof(uint8_t); return lpc_read( LPC_TRANS_IO, i_addr + MBOX_IO_BASE, @@ -120,15 +106,13 @@ errorHndl_t mboxIn(uint64_t i_addr, uint8_t *o_byte) errorHndl_t doMessage( astMbox_t *io_mbox, mboxMessage_t *io_msg ) { - uint8_t* l_data = ((uint8_t*)((char*)&io_msg)); + uint8_t* l_data = (uint8_t*)io_msg; errorHndl_t l_err = NO_ERROR; uint8_t l_stat1; - uint8_t l_flags; uint32_t l_loops = 0; bool l_prot_error = false; int i; - TRAC_INFO( "doMessage(0x%02x)", io_msg->iv_cmd ); io_msg->iv_seq = io_mbox->iv_mboxMsgSeq++; do @@ -160,8 +144,6 @@ errorHndl_t doMessage( astMbox_t *io_mbox, mboxMessage_t *io_msg ) break; } - TRAC_INFO( "Command sent, waiting for response..."); - /* Wait for response */ while ( l_loops++ < MBOX_MAX_RESP_WAIT_US && !l_err ) { @@ -169,13 +151,7 @@ errorHndl_t doMessage( astMbox_t *io_mbox, mboxMessage_t *io_msg ) if ( l_err ) { - break; - } - - l_err = mboxIn(MBOX_FLAG_REG, &l_flags); - - if ( l_err ) - { + TRAC_ERR("doMessage error from MBOX_STATUS_1"); break; } @@ -183,29 +159,26 @@ errorHndl_t doMessage( astMbox_t *io_mbox, mboxMessage_t *io_msg ) { break; } - sleep(1000); } if ( l_err ) { - TRAC_INFO( "Got error waiting for response !"); + TRAC_ERR( "Got error waiting for response !"); break; } if ( !(l_stat1 & MBOX_STATUS1_RESP) ) { - TRAC_INFO( "Timeout waiting for response !"); + TRAC_ERR( "Timeout waiting for response !"); // Don't try to interrupt the BMC anymore l_err = mboxOut(MBOX_HOST_CTRL, 0); - if ( l_err) { //Note the command failed - TRAC_INFO( "Error communicating with MBOX daemon"); - TRAC_INFO( "Mbox status 1 reg: %x", l_stat1); - TRAC_INFO( "Mbox flag reg: %x", l_flags); + TRAC_ERR( "Error communicating with MBOX daemon"); + TRAC_ERR( "Mbox status 1 reg: %x", l_stat1); } // Tell the code below that we generated the error @@ -216,10 +189,9 @@ errorHndl_t doMessage( astMbox_t *io_mbox, mboxMessage_t *io_msg ) /* Clear status */ l_err = mboxOut(MBOX_STATUS_1, MBOX_STATUS1_RESP); - if (l_err) { - TRAC_INFO( "Got error clearing status"); + TRAC_ERR( "Got error clearing status"); break; } @@ -228,8 +200,6 @@ errorHndl_t doMessage( astMbox_t *io_mbox, mboxMessage_t *io_msg ) uint8_t old_seq = io_msg->iv_seq; // Read response - TRAC_INFO( "Reading response data..."); - for (i = 0; i < BMC_MBOX_DATA_REGS && !l_err; i++) { l_err = mboxIn(i, &l_data[i]); @@ -237,27 +207,21 @@ errorHndl_t doMessage( astMbox_t *io_mbox, mboxMessage_t *io_msg ) if ( l_err ) { - TRAC_INFO( "Got error reading response !"); + TRAC_ERR( "Got error reading response !"); break; } - TRAC_INFO( "Message: cmd:%02x seq:%02x a:%02x %02x %02x %02x %02x..resp:%02x", - io_msg->iv_cmd, io_msg->iv_seq, io_msg->iv_args[0], - io_msg->iv_args[1], io_msg->iv_args[2], io_msg->iv_args[3], - io_msg->iv_args[4], io_msg->iv_resp); - if (old_seq != io_msg->iv_seq) { - TRAC_INFO( "bad sequence number in mbox message, got %d want %d", + TRAC_ERR( "bad sequence number in mbox message, got %d want %d", io_msg->iv_seq, old_seq); - l_err = -1; break; } if (io_msg->iv_resp != MBOX_R_SUCCESS) { - TRAC_INFO( "BMC mbox command failed with err %d", + TRAC_ERR( "BMC mbox command failed with err %d", io_msg->iv_resp); l_err = -1; // Tell code below that we generated the error (not an LPC error) @@ -271,10 +235,9 @@ errorHndl_t doMessage( astMbox_t *io_mbox, mboxMessage_t *io_msg ) // If we got an LPC error, commit it and generate our own if ( l_err && !l_prot_error ) { + l_err = -1; } - TRAC_INFO( "doMessage() resp=0x%02x", - io_msg->iv_resp ); return l_err; } @@ -282,8 +245,6 @@ errorHndl_t initializeMbox(void) { errorHndl_t l_errl = NO_ERROR; - TRAC_INFO("initializeMBOX()"); - do { size_t reg_size = sizeof(uint8_t); |