summaryrefslogtreecommitdiffstats
path: root/src/occ/amec/amec_master_smh.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/occ/amec/amec_master_smh.h')
-rwxr-xr-xsrc/occ/amec/amec_master_smh.h169
1 files changed, 169 insertions, 0 deletions
diff --git a/src/occ/amec/amec_master_smh.h b/src/occ/amec/amec_master_smh.h
new file mode 100755
index 0000000..bc3e47f
--- /dev/null
+++ b/src/occ/amec/amec_master_smh.h
@@ -0,0 +1,169 @@
+/******************************************************************************
+// @file amec_master_smh.h
+// @brief OCC AMEC Master SMH header file
+*/
+/******************************************************************************
+ *
+ * @page ChangeLogs Change Logs
+ * @section _amec_master_smh_h amec_master_smh.h
+ * @verbatim
+ *
+ * Flag Def/Fea Userid Date Description
+ * ------- ---------- -------- ---------- ----------------------------------
+ * thallet 11/08/2011 New file
+ * @th00a thallet 02/03/2012 Worst case FW timings in AMEC Sensors
+ * @rc003 rickylie 02/03/2012 Verify & Clean Up OCC Headers & Comments
+ * @pb00E pbavari 03/11/2012 Added correct include file
+ * @gs006 884384 gjsilva 05/30/2013 Support for mnfg auto-slewing function
+ * @db001 897459 deepthib 08/03/2013 Power cap mismatch & under pcap functions
+ * @gs015 905166 gjsilva 11/04/2013 Full support for IPS function
+ * @rt004 908817 tapiar 12/11/2013 Expand G_active_slave_pcaps arrray to also carry
+ * valid pcap byte from slaves
+ * @gs025 913663 gjsilva 01/30/2014 Full fupport for soft frequency boundaries
+ *
+ * @endverbatim
+ *
+ *///*************************************************************************/
+
+#ifndef _AMEC_MASTER_SMH_H
+#define _AMEC_MASTER_SMH_H
+
+//*************************************************************************
+// Includes
+//*************************************************************************
+//@pb00Ec - changed from common.h to occ_common.h for ODE support
+#include <occ_common.h>
+#include <ssx.h>
+#include <ssx_app_cfg.h>
+#include <amec_smh.h>
+
+//*************************************************************************
+// Externs
+//*************************************************************************
+
+//*************************************************************************
+// Macros
+//*************************************************************************
+
+//*************************************************************************
+// Defines/Enums
+//*************************************************************************
+#define AMEC_MST_STATE() AMEC_STATE(&G_amec_mst_state);
+#define AMEC_MST_SUBSTATE() AMEC_SUBSTATE(&G_amec_mst_state);
+#define AMEC_MST_SUB_SUBSTATE() AMEC_SUB_SUBSTATE(&G_amec_mst_state);
+
+#define AMEC_MST_STATE_NEXT() AMEC_STATE_NEXT(&G_amec_mst_state);
+#define AMEC_MST_SUBSTATE_NEXT() AMEC_SUBSTATE_NEXT(&G_amec_mst_state);
+#define AMEC_MST_SUB_SUBSTATE_NEXT() AMEC_SUB_SUBSTATE_NEXT(&G_amec_mst_state);
+
+#define AMEC_MST_SET_MNFG_FMIN(a) AMEC_MST_CUR_MNFG_FMIN() = a
+#define AMEC_MST_SET_MNFG_FMAX(a) AMEC_MST_CUR_MNFG_FMAX() = a
+#define AMEC_MST_SET_MNFG_FSTEP(a) g_amec->mnfg_parms.fstep = a
+#define AMEC_MST_SET_MNFG_DELAY(a) g_amec->mnfg_parms.delay = a
+#define AMEC_MST_START_AUTO_SLEW() g_amec->mnfg_parms.auto_slew = 1
+#define AMEC_MST_STOP_AUTO_SLEW() g_amec->mnfg_parms.auto_slew = 0
+#define AMEC_MST_CUR_SLEW_COUNT() g_amec->mnfg_parms.slew_counter
+#define AMEC_MST_CUR_MNFG_FMIN() g_amec->mnfg_parms.fmin
+#define AMEC_MST_CUR_MNFG_FMAX() g_amec->mnfg_parms.fmax
+
+//*************************************************************************
+// Structures
+//*************************************************************************
+
+//*************************************************************************
+// Globals
+//*************************************************************************
+extern const smh_tbl_t amec_mst_state_table[AMEC_SMH_STATES_PER_LVL];
+extern smh_state_t G_amec_mst_state;
+extern smh_state_timing_t G_amec_mst_state_timings;
+
+typedef struct
+{
+ uint16_t active_pcap;
+ uint8_t pcap_valid;
+ uint8_t reserved;
+}slave_pcap_info_t;
+
+extern slave_pcap_info_t G_slave_active_pcaps[MAX_OCCS]; //@db001a @rt004c
+extern uint8_t G_pcaps_mismatch_count; //@db001a
+extern uint8_t G_over_cap_count; //@db001a
+extern uint16_t G_mst_soft_fmin;
+extern uint16_t G_mst_soft_fmax;
+
+//*************************************************************************
+// Function Prototypes
+//*************************************************************************
+void amec_mst_update_smh_sensors(int i_smh_state, uint32_t i_duration);
+
+// PRE: master common tasks
+void amec_mst_common_tasks_pre(void);
+// POST: master common tasks
+void amec_mst_common_tasks_post(void);
+
+// Master auto-slewing function
+void amec_master_auto_slew(void);
+// OCC Power cap mismatch function @db001a
+void amec_mst_check_pcaps_match(void);
+// Check if under power cap function @db001a
+void amex_mst_check_under_pcap(void);
+// Idle Power Saver main algorithm
+void amec_mst_ips_main(void);
+// Get the current Idle Power Saver active status
+uint8_t AMEC_mst_get_ips_active_status();
+void amec_mst_gen_soft_freq(void);
+
+// Master States
+void amec_mst_state_0(void);
+void amec_mst_state_1(void);
+void amec_mst_state_2(void);
+void amec_mst_state_3(void);
+void amec_mst_state_4(void);
+void amec_mst_state_5(void);
+void amec_mst_state_6(void);
+void amec_mst_state_7(void);
+
+// Master SubState 0
+void amec_mst_substate_0_0(void);
+void amec_mst_substate_0_1(void);
+void amec_mst_substate_0_4(void);
+void amec_mst_substate_0_7(void);
+
+// Master SubState 3
+void amec_mst_substate_3_0(void);
+void amec_mst_substate_3_1(void);
+void amec_mst_substate_3_2(void);
+void amec_mst_substate_3_6(void);
+void amec_mst_substate_3_7(void);
+
+// Master Sub-SubState 3
+void amec_mst_sub_substate_3_0_0(void);
+void amec_mst_sub_substate_3_0_1(void);
+void amec_mst_sub_substate_3_0_7(void);
+
+// Master SubState 6
+void amec_mst_substate_6_0(void);
+void amec_mst_substate_6_1(void);
+void amec_mst_substate_6_2(void);
+void amec_mst_substate_6_3(void);
+void amec_mst_substate_6_4(void);
+void amec_mst_substate_6_5(void);
+void amec_mst_substate_6_6(void);
+void amec_mst_substate_6_7(void);
+
+void amec_mst_substate_3_0(void);
+void amec_mst_substate_3_1(void);
+
+void amec_mst_sub_substate_6_1_0(void);
+void amec_mst_sub_substate_6_1_1(void);
+void amec_mst_sub_substate_6_1_2(void);
+void amec_mst_sub_substate_6_1_3(void);
+void amec_mst_sub_substate_6_1_4(void);
+void amec_mst_sub_substate_6_1_5(void);
+void amec_mst_sub_substate_6_1_6(void);
+void amec_mst_sub_substate_6_1_7(void);
+
+//*************************************************************************
+// Functions
+//*************************************************************************
+
+#endif
OpenPOWER on IntegriCloud