diff options
author | Stephan Broyles <sbroyles@us.ibm.com> | 2014-11-05 19:09:37 -0600 |
---|---|---|
committer | Stephan Broyles <sbroyles@us.ibm.com> | 2014-11-05 19:22:32 -0600 |
commit | 9976c207cdb20871880bd2f4cf123cf4cb6a8b0f (patch) | |
tree | 1cf9ed8f23085e6fe3e0e6046fc30dcb7e02ccf2 /src/occ/amec/amec_sys.h | |
parent | 2f8ce357b89d361b5091d88aea91416011b73ccb (diff) | |
download | talos-occ-9976c207cdb20871880bd2f4cf123cf4cb6a8b0f.tar.gz talos-occ-9976c207cdb20871880bd2f4cf123cf4cb6a8b0f.zip |
Added remaining occ files.
Change-Id: I91a748d3dcf3161a6a3eedcb376fcaf1e4dfe655
Diffstat (limited to 'src/occ/amec/amec_sys.h')
-rwxr-xr-x | src/occ/amec/amec_sys.h | 742 |
1 files changed, 742 insertions, 0 deletions
diff --git a/src/occ/amec/amec_sys.h b/src/occ/amec/amec_sys.h new file mode 100755 index 0000000..d86cca8 --- /dev/null +++ b/src/occ/amec/amec_sys.h @@ -0,0 +1,742 @@ +/****************************************************************************** +// @file amec_sys.h +// @brief OCC AMEC System Structure +*/ +/****************************************************************************** + * + * @page ChangeLogs Change Logs + * @section amec_sys.h AMEC_SYS.H + * @verbatim + * + * Flag Def/Fea Userid Date Description + * ------- ---------- -------- ---------- ---------------------------------- + * @th005 thallet 11/23/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 + * @th00b thallet 02/28/2012 Added Vector Sensors + * @pb00E pbavari 03/11/2012 Added correct include file + * @gs001 gsilva 08/03/2012 Added frequency points & freq SMH + * @th018 852950 thallet 09/12/2012 Added Centaur thermal readings + * @ly001 853751 lychen 09/17/2012 Support DPS algorithm + * @ry002 862116 ronda 11/26/2012 Support thermal controller for processor + * @th026 865074 thallet 12/21/2012 Updated Centaur sensors + * @at010 859992 alvinwan 11/07/2012 Added oversubscription feature + * @ry003 870734 ronda 02/20/2013 Thermal controller for memory + * @ry004 872358 ronda 02/27/2013 Added global memory speed request and throttle reason + * @th031 878471 thallet 04/15/2013 Centaur Throttles + * @gs006 884384 gjsilva 05/30/2013 Support for mnfg auto-slewing function + * @fk001 879727 fmkassem 04/16/2013 PCAP support. + * @gm004 892961 milesg 07/25/2013 Support memory auto slewing + * @gs008 894661 gjsilva 08/08/2013 Initial support for DPS-FP mode + * @rt001 897459 tapiar 08/09/2013 Update reason codes to be uint32_t + * @gm008 SW226989 milesg 09/30/2013 Sapphire initial support + * @gs014 903552 gjsilva 10/22/2013 Support for Amester parameter interface + * @gs015 905166 gjsilva 11/04/2013 Full support for IPS function + * @rt003 905677 tapiar 11/07/2013 save of proc/mem sensor data into g_amec + * @gs017 905990 gjsilva 11/13/2013 Full support for tunable parameters + * @fk002 905632 fmkassem 11/05/2013 Remove CriticalPathMonitor code + * @cl007 907196 lefurgy 11/15/2013 Fix freqa and ips sensors + * @gm013 907548 milesg 11/22/2013 Memory therm monitoring support + * @rt004 908817 tapiar 12/11/2013 Add valid pcap field to g_amec to be used + * by slaves when their pcap is valid + * @gs020 909320 gjsilva 12/12/2013 Support for VR_FAN thermal control + * @gm016 909061 milesg 12/10/2013 Support memory throttling due to temperature + * @gs023 912003 gjsilva 01/16/2014 Generate VRHOT signal and control loop + * @gs026 915840 gjsilva 02/13/2014 Support for Nvidia GPU power measurement + * @mw644 918066 mware 03/07/2014 Added data to enable freq_sens_busy and freq_sens_finish. + * @gs029 919478 gjsilva 03/26/2014 Fixed wrong values for sleep/winkle counters + * @gm039 922963 milesg 05/28/2014 Handle centaur nest LFIR 6 + * @gs043 943177 gjsilva 10/30/2014 Support for mem data packets in BMC-based systems + * + * @endverbatim + * + *///*************************************************************************/ + +#ifndef _AMEC_SYS_H +#define _AMEC_SYS_H + +//************************************************************************* +// Includes +//************************************************************************* +//@pb00Ec - changed from common.h to occ_common.h for ODE support +#include <occ_common.h> +#include <sensor.h> +#include <occ_sys_config.h> +#include <amec_part.h> // @ly001a +#include <amec_perfcount.h> // @ly001a +#include <mode.h> // @ly001a +#include <amec_controller.h> +#include <amec_oversub.h> // @at010a +#include <amec_amester.h> // @mw626 +#include <amec_pcap.h> // @fk001 + +//************************************************************************* +// Externs +//************************************************************************* + +//************************************************************************* +// Macros +//************************************************************************* + +//************************************************************************* +// Defines/Enums +//************************************************************************* +// This is an arbitrary number of FW probes for use internally. +#define NUM_AMEC_FW_PROBES 8 + +// Number of States in the AMEC State Machine (should always be 8) +#define NUM_AMEC_SMH_STATES 8 + +// Number of PORE-GPE Engines +#define NUM_GPE_ENGINES 2 +#define GPE_ENGINE_0 0 +#define GPE_ENGINE_1 1 + +//************************************************************************* +// Structures +//************************************************************************* + +//------------------------------------------------------------- +// FW Sub-structure +//------------------------------------------------------------- +typedef struct +{ + // Sensors + sensor_t ameintdur; + sensor_t amessdur[NUM_AMEC_SMH_STATES]; + sensor_t gpetickdur[NUM_GPE_ENGINES]; // @th00a + sensor_t prcdupdatedur; + sensor_t probe250us[NUM_AMEC_FW_PROBES]; + + // DPS update flag + uint8_t dps_no_update_flag; // 8 bit flag: =1, no updating allowed; =0, updating is allowed // @ly001a + +} amec_fw_t; + + +//------------------------------------------------------------- +// Fan Sub-structure +//------------------------------------------------------------- +typedef struct +{ + // Sensors + sensor_t fanspeedavg; + sensor_t pwr250usfan; + +} amec_fans_t; + +//------------------------------------------------------------- +// IO Sub-structure +//------------------------------------------------------------- +typedef struct +{ + // Sensors + sensor_t pwr250usio; + +} amec_io_t; + +//------------------------------------------------------------- +// Storage Sub-structure +//------------------------------------------------------------- +typedef struct +{ + // Sensors + sensor_t pwr250usstore; + +} amec_store_t; + +//------------------------------------------------------------- +// Proc Sub-structure +//------------------------------------------------------------- + +typedef struct +{ + // Sensors + sensor_t uvolt250us; + sensor_t volt250us; + +} amec_vrm_t; + + +typedef struct +{ + uint32_t wr_cnt_accum; + uint32_t rd_cnt_accum; + uint32_t pwrup_cnt_accum; + uint32_t act_cnt_accum; + uint32_t fr2_cnt_accum; + uint32_t l4_rd_cnt_accum; + uint32_t l4_wr_cnt_accum; + uint32_t intreq_base_accum; + uint32_t intreq_low_accum; + uint32_t intreq_med_accum; + uint32_t intreq_high_accum; + + uint16_t fr2_cnt; + uint16_t act_cnt; + uint16_t pwrup_cnt; + uint16_t memwrite2ms; + uint16_t memread2ms; + uint16_t l4wr2ms; + uint16_t l4rd2ms; + uint16_t mirb2ms; + uint16_t mirl2ms; + uint16_t mirm2ms; + uint16_t mirh2ms; + +} amec_chpair_perf_counter_t; + +//convenient format for storing throttle settings - gm016 +typedef union +{ + uint32_t word32; + struct + { + uint32_t mba_n: 16; + uint32_t chip_n: 16; + }; +} amec_cent_mem_speed_t; + +typedef struct +{ + // Sensors + sensor_t mac2ms; + sensor_t mpu2ms; + sensor_t mirb2ms; + sensor_t mirl2ms; + sensor_t mirm2ms; + sensor_t mirh2ms; + sensor_t mts2ms; + sensor_t memsp2ms; + sensor_t m4rd2ms; + sensor_t m4wr2ms; + + amec_chpair_perf_counter_t perf; + + // The most recent throttle value sent to this MBA + // This is used to only send values to the centaur when it changes. + amec_cent_mem_speed_t last_mem_speed_sent; +} amec_portpair_t; + +typedef struct +{ + uint32_t intreq_highlatency_accum; + uint32_t lp2exit_accum; + + uint16_t mirc2ms; + uint16_t mlp2_2ms; +} amec_centaur_perf_counter_t; + +#define FRU_SENSOR_STATUS_STALLED 0x01 +#define FRU_SENSOR_STATUS_ERROR 0x02 +#define FRU_SENSOR_STATUS_VALID_OLD 0x04 +#define FRU_TEMP_OUT_OF_RANGE 0x08 +#define FRU_SENSOR_STATUS_INVALID 0x10 //centaur only +#define FRU_TEMP_FAST_CHANGE 0x20 +#define FRU_SENSOR_CENT_NEST_FIR6 0x40 //centaur only -- gm039 + +typedef struct +{ + uint8_t cur_temp; + uint8_t sample_age; + uint8_t flags; + // Sensor ID for reporting temperature to BMC + uint16_t temp_sid; +}fru_temp_t; + +typedef struct +{ + // Sub-structures under Centaur + union + { + amec_portpair_t portpair[NUM_PORT_PAIRS_PER_CENTAUR]; + amec_portpair_t mba[NUM_PORT_PAIRS_PER_CENTAUR]; + }; // @th031 - Just a different name to refer to same thing + + // Sensors + sensor_t mlp2ms; + sensor_t mirc2ms; + + //hottest dimm temperature behind this centaur + sensor_t tempdimmax; + + //which of the 8 dimm temperatures was the hottest temperature + //(only changes when the max of tempdimmax changes) + sensor_t locdimmax; + + // Current dimm tempuratures + fru_temp_t dimm_temps[NUM_DIMMS_PER_CENTAUR]; + + // Hottest centaur temperature for this centaur + fru_temp_t centaur_hottest; + + // Sensor ID for reporting temperature to BMC + uint16_t temp_sid; + + amec_centaur_perf_counter_t perf; + +} amec_centaur_t; + +typedef struct +{ + // Sub-structures under MemCtl + amec_centaur_t centaur; + + // Sensors + sensor_t mrd2ms; + sensor_t mwr2ms; + +} amec_memctl_t; + +typedef struct +{ + //----------------------------------- + // Previous Tick Data + //----------------------------------- + uint32_t prev_PC_RUN_Th_CYCLES; + + //----------------------------------- + // Calculations & Interim Data + //----------------------------------- + uint16_t util2ms_thread; + +} amec_core_thread_t; + +typedef struct +{ + // Sub-structures under Core + amec_core_perf_counter_t core_perf; // @ly001c + amec_core_thread_t thread[MAX_THREADS_PER_CORE]; + + //----------------------------------- + // Sensors + //----------------------------------- +// sensor_t cpm2ms; //CPM - Commented out as requested by Malcolm + sensor_t freq250us; + sensor_t freqa2ms; // @mw626 + sensor_t ips2ms; + sensor_t mcpifd2ms; + sensor_t mcpifi2ms; + sensor_t spurr2ms; + sensor_t temp2ms; + sensor_t util2ms; + sensor_t nutil3s; + sensor_t mstl2ms; + sensor_t cmt2ms; + sensor_t cmbw2ms; + sensor_t ppic; + sensor_t pwrpx250us; + + //----------------------------------- + // Previous Tick Data + //----------------------------------- + uint32_t prev_PC_RAW_CYCLES; + uint32_t prev_PC_RUN_CYCLES; + uint32_t prev_PC_DISPATCH; + uint32_t prev_PC_COMPLETED; + uint32_t prev_PC_RAW_Th_CYCLES; + uint32_t prev_tod_2mhz; + uint32_t prev_lpar_mem_cnt[4]; + uint32_t prev_FREQ_SENS_BUSY; + uint32_t prev_FREQ_SENS_FINISH; + + //----------------------------------- + // Calculations & Interim Data + //----------------------------------- + // Dispatched Instructions per Second + uint16_t dps; + // Dispatched Instruction per Cycle + uint16_t dpc; + // Instructions per Cycle + uint16_t ipc; + // Hottest DTS sensor per core + uint16_t dts_hottest; + // Counter of number of samples for calculating average utilization & frequency + uint16_t sample_count; + // Array of memory bandwidth for each LPAR + uint16_t membw[4]; + + // Average utilization over a fixed time interval + uint32_t avg_util; + // Average frequency over a fixed time interval + uint32_t avg_freq; + + // --------------------------------- + // Frequency State Machine variables + // --------------------------------- + // Frequency request generated by the voting box + uint16_t f_request; + // Reason for the frequency request generated by the voting box + uint32_t f_reason; // @rt001c + // Current state of this core frequency state machine + uint8_t f_sms; + +} amec_core_t; + +//------------------------------------------------------------- +// System-wide Sub-structure +//------------------------------------------------------------- +typedef struct +{ + // Sensors + //sensor_t fake_sensor[NUM_OCCS]; + // +} amec_master_t; + + +//------------------------------------------------------------- +// System-wide Sub-structure +//------------------------------------------------------------- +typedef struct +{ + // System Sensors + sensor_t tempambient; + sensor_t altitude; + sensor_t pwr250us; + sensor_t pwr250usgpu; + + sensor_t vrfan250usmem; + sensor_t vrhot250usmem; + sensor_t vrfan250usproc; + sensor_t vrhot250usproc; + + // Chip Sensors + sensor_t todclock0; + sensor_t todclock1; + sensor_t todclock2; + + // Minimum Frequency that can be set in the current policy + uint16_t fmin; + + // Maximum Frequency that can be set in the current policy + uint16_t fmax; + + // Maximum speed in current policy + uint16_t max_speed; // @ly001a + + // Minimum speed in current policy + uint16_t min_speed; + + // Speed step size + uint16_t speed_step; + + // Speed step limit + uint16_t speed_step_limit; +} amec_systemwide_t; + +//@fk001a + +//Structure Defined in amec_slv_voting_box.odg +typedef struct +{ + //Maximum frequency allowed on this chip by the + //performance preserving boundary algorithm. Set by amec_ppb_fmax_calc + uint16_t ppb_fmax; + + //Maximum frequency allowed on this chip by the Pmax_clip register. + //Set by amec_pmax_clip_controller. + uint16_t pmax_clip_freq; + + //Maximum frequency allowed on this chip by the power capping algorithm for + //non-nominal cores. Set by amec_pcap_controller. + uint16_t proc_pcap_vote; + + //Minimum frequency that power capping is allowed to lower a nominal + //core to. Set by amec_pcap_calc. + uint16_t nom_pcap_fmin; + + //Maximum frequency allowed on this chip by the power capping algorithm for + //nominal cores. Set by amec_pcpa_controller. + uint16_t proc_pcap_nom_vote; + + //Maximum frequency allowed on this chip by the connector overcurrent algorithm. + //Set by amec_conn_oc_controller. + uint16_t conn_oc_vote; +} amec_proc_pwr_votes_t; + +//------------------------------------------------------------- +// Proc Structure +//------------------------------------------------------------- +typedef struct +{ + // Sub-structures under Proc + amec_core_t core[MAX_NUM_CORES]; + amec_memctl_t memctl[MAX_NUM_MEM_CONTROLLERS]; + amec_vrm_t vrm[NUM_PROC_VRMS]; + amec_proc_pwr_votes_t pwr_votes; // @fk001a + //amec_vrm_t memvrm[]; + + // Processor Sensors + sensor_t freqa2ms; // @mw626 + vectorSensor_t freqa2ms_vector; // @th00b @mw626 + sensor_t ips2ms; + vectorSensor_t ips2ms_vector; // @th00b + sensor_t memsp2ms; + vectorSensor_t memsp2ms_vector; // @th00b + sensor_t pwr250us; + sensor_t pwr250usvdd; + sensor_t cur250usvdd; + sensor_t pwr250usvcs; + sensor_t pwr250usmem; + sensor_t sleepcnt2ms; + sensor_t winkcnt2ms; + sensor_t sp250us; + sensor_t temp2ms; + vectorSensor_t temp2ms_vector; // @th00b + sensor_t temp2mspeak; + vectorSensor_t temp2mspeak_vector; // @th00b + sensor_t util2ms; + vectorSensor_t util2ms_vector; // @th00b + + // Memory Summary Sensors + sensor_t temp2mscent; + sensor_t temp2msdimm; + sensor_t memsp2ms_tls; + + // Error count for failing to read VR_FAN signal + uint8_t vrfan_error_count; + + // Calculations & Interim Data + uint16_t sleep_cnt; + uint16_t winkle_cnt; + + uint16_t core_max_freq; // Maximum requested freq for all cores on chip. @fk001a + + // Parameters used through Amester interface + // Note: keep core arrays here, not in per-cores structure so one parameter + // can be used to pass array. + uint32_t parm_f_reason[MAX_NUM_CORES]; // per-core frequency reason + uint16_t parm_f_override[MAX_NUM_CORES]; // per-core frequency override in MHz + uint8_t parm_f_override_enable; // enable using the frequency override + +} amec_proc_t; + + + +//------------------------------------------------------------- +// Mode Freq Structure // @ly001a +//------------------------------------------------------------- +typedef struct amec_mode_freq +{ + uint16_t fmin; + uint16_t fmax; + ///Minimum speed allowed based on fmin/fmax ratio + uint16_t min_speed; +} amec_mode_freq_t; + + +//------------------------------------------------------------- +// Parameters for manufacturing commands +//------------------------------------------------------------- +typedef struct amec_mnfg +{ + ///Auto-slewing flag: enable=1, disable=0 + uint8_t auto_slew; + ///Minimum frequency in MHz for auto-slewing + uint16_t fmin; + ///Maximum frequency in MHz for auto-slewing + uint16_t fmax; + ///Step size in MHz for auto-slewing + uint16_t fstep; + ///Additional delay in ticks for auto-slewing + uint16_t delay; + ///Frequency override to be sent to all slave OCCs + uint16_t foverride; + ///Counter of times we reached fmin or fmax + uint16_t slew_counter; + ///memory auto-slewing flag: enable=1, disable=0 + bool mem_autoslew; //gm004 + ///memory slewing count + uint32_t mem_slew_counter; //gm004 +} amec_mnfg_t; + +//------------------------------------------------------------- +// Parameters for Idle Power Save (IPS) mode +//------------------------------------------------------------- +typedef struct amec_ips +{ + ///Enable/Disable IPS (=0:disable; =1:enable) + uint8_t enable; + ///Current 'active' state of IPS (=0:inactive; =1:active) + uint8_t active; + ///IPS frequency request to be sent to all OCC Slaves + uint16_t freq_request; + ///Utilization threshold to enter idle condition (in hundreth of a percent) + uint16_t entry_threshold; + ///Utilization threshold to exit idle condition (in hundreth of a percent) + uint16_t exit_threshold; + ///Delay time to enter idle condition (in number of samples) + uint32_t entry_delay; + ///Delay time to exit idle condition (in number of samples) + uint32_t exit_delay; +}amec_ips_t; + + +//------------------------------------------------------------- +// +// AMEC/OCC Overall System Structure -- g_amec +// +// Description, etc... +// +// +//------------------------------------------------------------- +typedef struct +{ + //--------------------------------------------------------- + // + // System Management Settings + // + //--------------------------------------------------------- + // Global memory throttle reason + uint8_t mem_throttle_reason; + // Global memory speed request + uint16_t mem_speed_request; + + // Flag to enable frequency override in the voting box + uint8_t foverride_enable; + // Override frequency to be used by the voting box + uint16_t foverride; + // Idle Power Saver frequency request sent by Master OCC + uint16_t slv_ips_freq_request; + // Flag to indicate that the DPS parameters were overwritten by user + BOOLEAN slv_dps_param_overwrite; + + //--------------------------------------------------------- + // + // Physical Structure + // + //--------------------------------------------------------- + // Bulk Power Data + //amec_bulk_t bulk; + + // IO Data + amec_io_t io; + + // Storage Data + amec_store_t storage; + + // Fan Data + amec_fans_t fan; + + // Perf Data + //amec_perf_t perf; + + // Overall System Data + amec_systemwide_t sys; + + // Processor Card Data + // - This is an array of 1. This was initialized this way + // in the hopes of perhaps reusing some code from TPMD + // where there were multiple proc chips per TPMD. + amec_proc_t proc[NUM_PROC_CHIPS_PER_OCC]; + + // OCC Firmware Data + amec_fw_t fw; + + // AMEC Misc (Non-System-Heirachy) Data + //amec_amecfw_t fw_amec; + + // Sensors on master for calculations across multiple OCCs + //amec_master_t mstr; + + // Partition Information + amec_part_config_t part_config; // @ly001a + // Mode frequency table indexed by mode + amec_mode_freq_t part_mode_freq[OCC_INTERNAL_MODE_MAX_NUM]; // @ly001a + + //--------------------------------------------------------- + // + // Control Systems + // + //--------------------------------------------------------- + // Thermal Controller based on processor temperatures + amec_controller_t thermalproc; + // Thermal Controller based on Centaur temperatures + amec_controller_t thermalcent; + // Thermal Controller based on DIMM temperatures + amec_controller_t thermaldimm; + // Thermal Controller based on VRHOT signal from processor VRM + amec_controller_t vrhotproc; + + // Oversubscription Status + oversub_status_t oversub_status; // @at010a + + // Parameters for manufacturing commands + amec_mnfg_t mnfg_parms; + + // Parameters for Idle Power Save (IPS) mode + amec_ips_t mst_ips_parms; + + // PowerCap Data + amec_pcap_t pcap; //fk001a + + // Save off proc and mem sensor data for debug usage @rt003a + uint16_t proc_snr_pwr[MAX_NUM_CHIP_MODULES]; + uint16_t mem_snr_pwr[MAX_NUM_CHIP_MODULES]; + + // save off when pcap is considered valid @rt004a + uint8_t pcap_valid; + + //--------------------------------------------------------- + // + // Parameters for analytics function + // + //--------------------------------------------------------- + uint32_t r_cnt; // 32 bit counter of 250usec ticks @mw622 + void *stream_vector_map[STREAM_VECTOR_SIZE_EX]; // array holding sensor ptrs for writing to stream vector + uint16_t *ptr_stream_buffer; // 32 bit ptr to streaming buffer which contains 16 bit elements + uint32_t write_stream_index; // 32 bit index for next write into streaming buffer + uint32_t read_stream_index; // 32 bit index for next read from streaming buffer + uint16_t stream_buffer[STREAM_BUFFER_SIZE]; // stream buffer for vector recordings + uint8_t recordflag; // initially 0 until recording is valid + uint16_t stream_vector_delay; // 16 bit delay in msec before stream vector records (set to 0 to avoid delay) + uint8_t stream_vector_mode; // 8 bit mode control for stream vector mode: + // 0=stop recording + // 1=record unconditionally from begin to end of buffer, then stop + // 2=record unconditionally forever + // 3=record until a checkstop event is detected + uint8_t stream_vector_rate; // 8 bit mode control for stream vector recording: 0=fastest sampling on platform: (250usec on OCC), (250us*2^7=32msec on TPMD); 7=32msec + uint8_t stream_vector_group; // 8 bit group # that selects which group of sensors to record as a vector + uint8_t reset_prep; // input from TMGT to signal a reset of the OCC is desired (!=0) + uint16_t cent_l4_state[MAX_NUM_CENTAURS]; // holds current state of L4 state machine for Centaur k + uint16_t cent_l4_ipl_state[MAX_NUM_CENTAURS];// holds current state of L4 IPL state machine for Centaur k + uint8_t l4_powerdown_requestm; // input from OCC master to signal a desire to power down the L4s (!=0) + uint16_t probe_l4_centaur; // indicates which of the L4 Centaurs is being monitored by probe. + + uint32_t g44_avg[MAX_NUM_CHIP_MODULES*MAX_SENSORS_ANALYTICS]; // $mw417 @mw641 + uint16_t analytics_group; // parameter driven selection of analytics group $mw412 + uint8_t analytics_chip; // parameter to select which chip to monitor analytics on $mw417 + uint8_t analytics_option; // parameter to select which analytics options (=0 just selected chip) $mw417 + uint8_t analytics_bad_output_count; // 8 bit value used to throw away frames until good output has been averaged in amec_analytics buffer outputs @mw587 + uint8_t analytics_total_chips; // Total number of chips used in analytics sensor capture + uint8_t analytics_thermal_offset; // Current offset in cyclic thermal group output (8 in cycle) + uint8_t analytics_threadmode; // Selects which type of Group 44 averaging is done on per thread data: default=0 (average of non-zero thread utilizations), =1 (average of N), =2 (max of N) $mw457 + uint8_t analytics_threadcountmax; // Has the maximum number of threads per core for this processor architecture or for SMT modes. Default=4 on P7+. + uint8_t analytics_slot; // Which of 8 time slots that amec_analytics is called in + uint16_t analytics_array[48]; // Used to hold selected analytics group $mw412 + uint16_t packednapsleep[MAX_NUM_CHIP_MODULES]; // for group 44 support core bit maps of their napping cores (upper byte) and sleeping cores (lower byte) $mw374 + uint16_t total_memory_power; // holds the sum of all the memory power sensors (32msec) $mw371 + + //--------------------------------------------------------- + // + // Global Sensors + // + //--------------------------------------------------------- + +} amec_sys_t; + +//************************************************************************* +// Globals +//************************************************************************* +extern amec_sys_t * g_amec; + +//************************************************************************* +// Function Prototypes +//************************************************************************* +void amec_slave_init(void) INIT_SECTION; // @th00a + +//************************************************************************* +// Functions +//************************************************************************* + +#endif |