diff options
author | mbroyles <mbroyles@us.ibm.com> | 2017-06-23 20:13:06 -0500 |
---|---|---|
committer | William A. Bryan <wilbryan@us.ibm.com> | 2017-06-30 16:10:39 -0400 |
commit | 82156a8c51a11cf1173c5c4064cad903339b07ed (patch) | |
tree | ac60f96955ed414bcf71cfcc58e68b09f8818c33 /src/occ_405/amec | |
parent | cfb296e1b662022f9f0f86a0a566eae67196f414 (diff) | |
download | talos-occ-82156a8c51a11cf1173c5c4064cad903339b07ed.tar.gz talos-occ-82156a8c51a11cf1173c5c4064cad903339b07ed.zip |
Support new in-band command/response interface and clear sensor command
Change-Id: Ic53e27d851023d99440aa1bfbdf5307920af3397
RTC: 158812
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/42512
Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com>
Reviewed-by: Shawn M. McCarney <shawnmm@us.ibm.com>
Reviewed-by: Christopher J. Cain <cjcain@us.ibm.com>
Reviewed-by: William A. Bryan <wilbryan@us.ibm.com>
Diffstat (limited to 'src/occ_405/amec')
-rwxr-xr-x | src/occ_405/amec/amec_slave_smh.c | 71 | ||||
-rwxr-xr-x | src/occ_405/amec/amec_slave_smh.h | 6 |
2 files changed, 75 insertions, 2 deletions
diff --git a/src/occ_405/amec/amec_slave_smh.c b/src/occ_405/amec/amec_slave_smh.c index b37ab45..cb349f8 100755 --- a/src/occ_405/amec/amec_slave_smh.c +++ b/src/occ_405/amec/amec_slave_smh.c @@ -62,6 +62,7 @@ #include <state.h> // For CURRENT_STATE(), OCC_STATE_* #include <cmdh_fsp_cmds_datacnfg.h> // For DATA_get_present_cnfgdata() #include <sensor_main_memory.h> // For main_mem_sensors_*() +#include <sensor_inband_cmd.h> // For inband_command_*() //*************************************************************************/ // Externs @@ -181,6 +182,25 @@ const smh_tbl_t amec_slv_state_5_substate_table[AMEC_SMH_STATES_PER_LVL] = }; // -------------------------------------------------------- +// AMEC Slave State 6 Substate Table +// -------------------------------------------------------- +// Each function inside this state table runs once every 16ms. +// +// No Substates +// +const smh_tbl_t amec_slv_state_6_substate_table[AMEC_SMH_STATES_PER_LVL] = +{ + {NULL, NULL}, // Substate 6.0 (not used) + {amec_slv_substate_6_1, NULL}, // Substate 6.1 + {NULL, NULL}, // Substate 6.2 (not used) + {amec_slv_substate_6_3, NULL}, // Substate 6.3 + {NULL, NULL}, // Substate 6.4 (not used) + {amec_slv_substate_6_5, NULL}, // Substate 6.5 + {NULL, NULL}, // Substate 6.6 (not used) + {amec_slv_substate_6_7, NULL}, // Substate 6.7 +}; + +// -------------------------------------------------------- // AMEC Slave State 7 Substate Table // -------------------------------------------------------- // Each function inside this state table runs once every 16ms. @@ -213,12 +233,11 @@ const smh_tbl_t amec_slv_state_table[AMEC_SMH_STATES_PER_LVL] = {amec_slv_state_3, amec_slv_state_3_substate_table}, {amec_slv_state_4, NULL}, {amec_slv_state_5, amec_slv_state_5_substate_table}, - {amec_slv_state_6, NULL}, + {amec_slv_state_6, amec_slv_state_6_substate_table}, {amec_slv_state_7, amec_slv_state_7_substate_table}, }; - // This sets up the function pointer that will be called to update the // fw timings when the AMEC Slave State Machine finishes. smh_state_timing_t G_amec_slv_state_timings = {amec_slv_update_smh_sensors}; @@ -431,6 +450,7 @@ void amec_slv_common_tasks_post(void) // Call the 250us trace recording if it has been configured via Amester. // If not configured, this call will return immediately. amec_tb_record(AMEC_TB_250US); + } else L_active_1tick = TRUE; @@ -443,6 +463,16 @@ void amec_slv_common_tasks_post(void) G_amec_opal_proc_throt_reason = MANUFACTURING_OVERRIDE; ssx_semaphore_post(&G_dcomThreadWakeupSem); } + // Check if an inband command is being processed + if(G_inband_occ_cmd_state != INBAND_OCC_CMD_NONE) + { + // call inband command handler if in active, char or obs state + if ( (IS_OCC_STATE_ACTIVE() && L_active_1tick) || IS_OCC_STATE_OBSERVATION() || + IS_OCC_STATE_CHARACTERIZATION() ) + { + inband_command_handler(); + } + } } // Function Specification @@ -1227,6 +1257,43 @@ void amec_slv_substate_5_7(void) amec_update_proc_core_group(6); } +// Function Specification +// +// Name: amec_slv_substate_6_1 +// amec_slv_substate_6_3 +// amec_slv_substate_6_5 +// amec_slv_substate_6_7 +// +// Description: slave substate amec_slv_substate_6_1 +// slave substate amec_slv_substate_6_3 +// slave substate amec_slv_substate_6_5 +// slave substate amec_slv_substate_6_7 +// other substates of state 6 are not currently used +// +// End Function Specification +void amec_slv_substate_6_1(void) +{ + AMEC_DBG("\tAMEC Slave State 6.1\n"); + inband_command_check(); +} + +void amec_slv_substate_6_3(void) +{ + AMEC_DBG("\tAMEC Slave State 6.3\n"); + inband_command_check(); +} + +void amec_slv_substate_6_5(void) +{ + AMEC_DBG("\tAMEC Slave State 6.5\n"); + inband_command_check(); +} + +void amec_slv_substate_6_7(void) +{ + AMEC_DBG("\tAMEC Slave State 6.7\n"); + inband_command_check(); +} // Function Specification // diff --git a/src/occ_405/amec/amec_slave_smh.h b/src/occ_405/amec/amec_slave_smh.h index a10f419..6cca955 100755 --- a/src/occ_405/amec/amec_slave_smh.h +++ b/src/occ_405/amec/amec_slave_smh.h @@ -124,6 +124,12 @@ void amec_slv_substate_5_5(void); void amec_slv_substate_5_6(void); void amec_slv_substate_5_7(void); +// Slave SubState 6 (4 SubStates unused) check for inband cmd every 4ms +void amec_slv_substate_6_1(void); +void amec_slv_substate_6_3(void); +void amec_slv_substate_6_5(void); +void amec_slv_substate_6_7(void); + // Slave SubState 7 void amec_slv_substate_7_0(void); void amec_slv_substate_7_1(void); |