summaryrefslogtreecommitdiffstats
path: root/src/occ_405/amec
diff options
context:
space:
mode:
authormbroyles <mbroyles@us.ibm.com>2017-06-23 20:13:06 -0500
committerWilliam A. Bryan <wilbryan@us.ibm.com>2017-06-30 16:10:39 -0400
commit82156a8c51a11cf1173c5c4064cad903339b07ed (patch)
treeac60f96955ed414bcf71cfcc58e68b09f8818c33 /src/occ_405/amec
parentcfb296e1b662022f9f0f86a0a566eae67196f414 (diff)
downloadtalos-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-xsrc/occ_405/amec/amec_slave_smh.c71
-rwxr-xr-xsrc/occ_405/amec/amec_slave_smh.h6
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);
OpenPOWER on IntegriCloud