diff options
author | Fadi Kassem <fmkassem@us.ibm.com> | 2015-11-24 12:53:55 -0600 |
---|---|---|
committer | Wael Elessawy <welessa@us.ibm.com> | 2015-11-25 11:01:55 -0600 |
commit | 74ad39e79ccd4d423adea15d82a87fa70ec9b56f (patch) | |
tree | 3b68128274cd4c0cef4d0f7f5550b14e83c99c41 /src | |
parent | 7e5cdacb586068de60e1d10cb2e04ff7fb737e96 (diff) | |
download | talos-occ-74ad39e79ccd4d423adea15d82a87fa70ec9b56f.tar.gz talos-occ-74ad39e79ccd4d423adea15d82a87fa70ec9b56f.zip |
Enable Slave DTS calculation and sensor update.
Change-Id: I0feb572e650322326ce9a6c7b2affd9e58cd6b8d
RTC:140183
Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/22303
Reviewed-by: Wael Elessawy <welessa@us.ibm.com>
Tested-by: Wael Elessawy <welessa@us.ibm.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/include/core_data.h | 2 | ||||
-rwxr-xr-x | src/occ_405/amec/amec_analytics.c | 4 | ||||
-rw-r--r-- | src/occ_405/amec/amec_controller.c | 4 | ||||
-rwxr-xr-x | src/occ_405/amec/amec_health.c | 6 | ||||
-rw-r--r-- | src/occ_405/amec/amec_init.c | 16 | ||||
-rwxr-xr-x | src/occ_405/amec/amec_sensors_core.c | 237 | ||||
-rwxr-xr-x | src/occ_405/amec/amec_sensors_core.h | 1 | ||||
-rwxr-xr-x | src/occ_405/amec/amec_slave_smh.c | 32 | ||||
-rwxr-xr-x | src/occ_405/amec/amec_sys.h | 10 | ||||
-rwxr-xr-x | src/occ_405/amec/amec_tasks.c | 4 | ||||
-rwxr-xr-x | src/occ_405/cmdh/cmdh_fsp_cmds.c | 4 | ||||
-rwxr-xr-x | src/occ_405/cmdh/cmdh_fsp_cmds_datacnfg.c | 2 | ||||
-rwxr-xr-x | src/occ_405/dcom/dcom.h | 4 | ||||
-rw-r--r-- | src/occ_405/occLinkInputFile | 1 | ||||
-rwxr-xr-x | src/occ_405/proc/proc_data.c | 3 | ||||
-rwxr-xr-x | src/occ_405/sensor/sensor_enum.h | 28 | ||||
-rwxr-xr-x | src/occ_405/sensor/sensor_info.c | 6 | ||||
-rwxr-xr-x | src/occ_405/sensor/sensor_table.c | 12 | ||||
-rwxr-xr-x | src/occ_405/ssx_app_cfg.h | 1 | ||||
-rwxr-xr-x | src/occ_405/thread/chom.c | 4 | ||||
-rwxr-xr-x | src/occ_405/thread/thrm_thread.c | 2 | ||||
-rw-r--r-- | src/occ_405/topfiles.mk | 1 |
22 files changed, 161 insertions, 223 deletions
diff --git a/src/include/core_data.h b/src/include/core_data.h index 1b271fa..b7070cd 100644 --- a/src/include/core_data.h +++ b/src/include/core_data.h @@ -150,6 +150,8 @@ typedef struct CoreDataPcbSlave pcb_slave; //16 } CoreData; +typedef CoreData gpe_bulk_core_data_t; + /** * Get core data * @param[in] The system core number [0-23] diff --git a/src/occ_405/amec/amec_analytics.c b/src/occ_405/amec/amec_analytics.c index 8b65f6d..376ef46 100755 --- a/src/occ_405/amec/amec_analytics.c +++ b/src/occ_405/amec/amec_analytics.c @@ -249,7 +249,7 @@ void amec_analytics_main(void) g_amec->g44_avg[(i*MSA)+14] = g_amec->g44_avg[(i*MSA)+14] + tempaccum/100; g_amec->g44_avg[(i*MSA)+15] = g_amec->g44_avg[(i*MSA)+15] + - (UINT32)g_amec->proc[i].temp2ms.sample; // hottest processor core temperature (average??) + (UINT32)g_amec->proc[i].temp4ms.sample; // hottest processor core temperature (average??) // major changes below to accommodate Group 45 @@ -360,7 +360,7 @@ void amec_analytics_main(void) g_amec->g44_avg[(i * MSA) + 86 + m] = g_amec->g44_avg[(i * MSA) + 86 + m] + (UINT32)(g_amec->proc[i].core[j].ips2ms.sample / 50); // accumulate average MIPS for this core g_amec->g44_avg[(i * MSA) + 98 + m] = g_amec->g44_avg[(i * MSA) + 98 + m] + - (UINT32)g_amec->proc[i].core[j].temp2ms.sample; // accumulate average temperature for this core + (UINT32)g_amec->proc[i].core[j].temp4ms.sample; // accumulate average temperature for this core g_amec->g44_avg[(i * MSA) + 110 + m] = g_amec->g44_avg[(i * MSA) + 110 + m] + (UINT32)((g_amec->proc[i].core[j].cmbw2ms.sample) / 156); // accumulate average memory bandwidth for this core //@mw713 /156, was /78 (overflow issues) temp16 = ((g_amec->proc[i].core[j].mcpifd2ms.sample) / 100); // accumulate average busy latency counter for this core diff --git a/src/occ_405/amec/amec_controller.c b/src/occ_405/amec/amec_controller.c index 0b8b7e1..d0ecfc3 100644 --- a/src/occ_405/amec/amec_controller.c +++ b/src/occ_405/amec/amec_controller.c @@ -87,9 +87,9 @@ void amec_controller_proc_thermal() /*------------------------------------------------------------------------*/ /* Code */ /*------------------------------------------------------------------------*/ - // Get TEMP2MSP0PEAK sensor, which is hottest core temperature in OCC + // Get TEMP4MSP0PEAK sensor, which is hottest core temperature in OCC // processor - l_sensor = getSensorByGsid(TEMP2MSP0PEAK); + l_sensor = getSensorByGsid(TEMP4MSP0PEAK); // Use the highest temperature of all processors in 0.1 degrees C l_thermal_winner = l_sensor->sample * 10; diff --git a/src/occ_405/amec/amec_health.c b/src/occ_405/amec/amec_health.c index 4efad15..85c7a7d 100755 --- a/src/occ_405/amec/amec_health.c +++ b/src/occ_405/amec/amec_health.c @@ -760,9 +760,9 @@ void amec_health_check_proc_temp() /*------------------------------------------------------------------------*/ do { - // Get TEMP2MSP0PEAK sensor, which is hottest core temperature + // Get TEMP4MSP0PEAK sensor, which is hottest core temperature // in OCC processor - l_sensor = getSensorByGsid(TEMP2MSP0PEAK); + l_sensor = getSensorByGsid(TEMP4MSP0PEAK); l_ot_error = g_amec->thermalproc.ot_error; // Check to see if we exceeded our error temperature @@ -874,7 +874,7 @@ void amec_health_check_proc_timeout() } // Check if this core's temperature sensor has been updated - l_sensor = AMECSENSOR_ARRAY_PTR(TEMP2MSP0C0,i); + l_sensor = AMECSENSOR_ARRAY_PTR(TEMP4MSP0C0,i); if (l_sensor->update_tag == G_core_temp_update_tag[i]) { // If the update tag is not changing, then this core's diff --git a/src/occ_405/amec/amec_init.c b/src/occ_405/amec/amec_init.c index bd2d0d2..18da9f5 100644 --- a/src/occ_405/amec/amec_init.c +++ b/src/occ_405/amec/amec_init.c @@ -179,12 +179,12 @@ void amec_init_vector_sensors(void) #define VECTOR_ADD_ELEM_FAILURE 2 //----------------------------------------------------- - // TEMP2MSP0 Vector Sensor + // TEMP4MSP0 Vector Sensor //----------------------------------------------------- - amec_vectorize_core_sensor(AMECSENSOR_PTR(TEMP2MSP0), - &g_amec_sys.proc[0].temp2ms_vector, + amec_vectorize_core_sensor(AMECSENSOR_PTR(TEMP4MSP0), + &g_amec_sys.proc[0].temp4ms_vector, VECTOR_OP_AVG, - TEMP2MSP0C0); + TEMP4MSP0C0); //----------------------------------------------------- // FREQA2MSP0 Vector Sensor @@ -203,12 +203,12 @@ void amec_init_vector_sensors(void) IPS2MSP0C0); //----------------------------------------------------- - // TEMP2MSP0PEAK Vector Sensor + // TEMP4MSP0PEAK Vector Sensor //----------------------------------------------------- - amec_vectorize_core_sensor(AMECSENSOR_PTR(TEMP2MSP0PEAK), - &g_amec_sys.proc[0].temp2mspeak_vector, + amec_vectorize_core_sensor(AMECSENSOR_PTR(TEMP4MSP0PEAK), + &g_amec_sys.proc[0].temp4mspeak_vector, VECTOR_OP_MAX, - TEMP2MSP0C0); + TEMP4MSP0C0); //----------------------------------------------------- // UTIL2MSP0 Vector Sensor diff --git a/src/occ_405/amec/amec_sensors_core.c b/src/occ_405/amec/amec_sensors_core.c index bdea518..37452e6 100755 --- a/src/occ_405/amec/amec_sensors_core.c +++ b/src/occ_405/amec/amec_sensors_core.c @@ -26,7 +26,7 @@ /******************************************************************************/ /* Includes */ /******************************************************************************/ -#include <occ_common.h> +//#include <occ_common.h> #include <ssx.h> #include <errl.h> // Error logging #include "sensor.h" @@ -43,6 +43,7 @@ #include "amec_service_codes.h" #include <amec_sensors_core.h> #include "amec_perfcount.h" +#include "proc_shared.h" /******************************************************************************/ /* Globals */ @@ -52,7 +53,6 @@ /* Forward Declarations */ /******************************************************************************/ void amec_calc_dts_sensors(gpe_bulk_core_data_t * i_core_data_ptr, uint8_t i_core); -//void amec_calc_cpm_sensors(gpe_bulk_core_data_t * i_core_data_ptr, uint8_t i_core); //CPM - Commented out as requested by Malcolm void amec_calc_freq_and_util_sensors(gpe_bulk_core_data_t * i_core_data_ptr, uint8_t i_core); void amec_calc_ips_sensors(gpe_bulk_core_data_t * i_core_data_ptr, uint8_t i_core); void amec_calc_spurr(uint8_t i_core); @@ -63,48 +63,6 @@ void amec_calc_spurr(uint8_t i_core); // Function Specification // -// Name: amec_update_fast_core_data_sensors -// -// Description: Updates sensors that have data grabbed by the fast core data -// task. -// -// Thread: RealTime Loop -// -// End Function Specification -void amec_update_fast_core_data_sensors(void) -{ - // ------------------------------------------------------ - // Update Fast Core Data Sensors - // ------------------------------------------------------ - // SensorNameCx = PCBS Local Pstate Freq Target (per core) - // TODclock = TOD Clock? - - // Need to comment this out because l_tod is always zero, which messes - // up proper sensor updates. Proper updating is done below in the core level - // sensor updates. - - //gpe_fast_core_data_t * l_core = proc_get_fast_core_data_ptr(); - // uint32_t l_tod = l_core->tod; - - //if( l_core != NULL) - //{ - // GPEtickdur0 = duration of last tick's PORE-GPE0 duration - // sensor_update( AMECSENSOR_PTR(TODclock0), CONVERT_UINT32_UINT8_UPPER_HIGH(l_tod) ); - // sensor_update( AMECSENSOR_PTR(TODclock1), CONVERT_UINT32_UINT16_MIDDLE(l_tod) ); - // sensor_update( AMECSENSOR_PTR(TODclock2), ((uint16_t) (CONVERT_UINT32_UINT8_LOWER_LOW(l_tod))) << 8); - //} - - // TODO: Don't know what to update from the PCBS LPstate Target Freq Status Reg - //for(int i=0; i++; i<MAX_NUM_HW_CORES) - //{ - // sensor_update(&sensor, - // G_read_fast_core_data_ptr->core_data[i].pcbs_lpstate_freq_target_sr); - //} -} - - -// Function Specification -// // Name: amec_update_proc_core_sensors // // Description: Update all the sensors for a given proc @@ -114,10 +72,9 @@ void amec_update_fast_core_data_sensors(void) // End Function Specification void amec_update_proc_core_sensors(uint8_t i_core) { - gpe_bulk_core_data_t * l_core_data_ptr; - int i; - uint16_t l_temp16 = 0; - uint32_t l_temp32 = 0; + gpe_bulk_core_data_t *l_core_data_ptr; + uint16_t l_temp16 = 0; + uint32_t l_temp32 = 0; // Make sure the core is present, and that it has updated data. if(CORE_PRESENT(i_core) && CORE_UPDATED(i_core)) @@ -133,11 +90,7 @@ void amec_update_proc_core_sensors(uint8_t i_core) //------------------------------------------------------- amec_calc_dts_sensors(l_core_data_ptr, i_core); - //------------------------------------------------------- - //CPM - Commented out as requested by Malcolm - // ------------------------------------------------------ - // amec_calc_cpm_sensors(l_core_data_ptr, i_core); - +/* //------------------------------------------------------- // Util / Freq //------------------------------------------------------- @@ -146,12 +99,12 @@ void amec_update_proc_core_sensors(uint8_t i_core) { amec_calc_freq_and_util_sensors(l_core_data_ptr,i_core); } - + //------------------------------------------------------- // Performance counter - This function should be called // after amec_calc_freq_and_util_sensors(). //------------------------------------------------------- - amec_calc_dps_util_counters(i_core); + //amec_calc_dps_util_counters(i_core); //------------------------------------------------------- // IPS @@ -165,7 +118,7 @@ void amec_update_proc_core_sensors(uint8_t i_core) //------------------------------------------------------- // SPURR //------------------------------------------------------- - amec_calc_spurr(i_core); + //amec_calc_spurr(i_core); // ------------------------------------------------------ // Update PREVIOUS values for next time @@ -188,7 +141,7 @@ void amec_update_proc_core_sensors(uint8_t i_core) { g_amec->proc[0].core[i_core].thread[i].prev_PC_RUN_Th_CYCLES = l_core_data_ptr->per_thread[i].run_cycles; } - +*/ // Final step is to update TOD sensors // Extract 32 bits with 16usec resolution l_temp32 = (uint32_t)(G_dcom_slv_inbox_doorbell_rx.tod>>13); @@ -205,6 +158,13 @@ void amec_update_proc_core_sensors(uint8_t i_core) } +// Core Weight - Weight factor for core DTS used to calculate a core temp +// TODO - fmk - to be changed once we have TMGT config data with weights. +// Suggest adding core weight to g_amec struct +// TEMP - Using the same weight for all cores. +uint8_t G_coreWeight = 2; +uint8_t G_quadWeight = 1; + // Function Specification // // Name: amec_calc_dts_sensors @@ -212,141 +172,93 @@ void amec_update_proc_core_sensors(uint8_t i_core) // Description: Compute core temperature. This function is called every // 2ms/core. // +// PreCondition: The core is present. +// // Thread: RealTime Loop // // End Function Specification void amec_calc_dts_sensors(gpe_bulk_core_data_t * i_core_data_ptr, uint8_t i_core) { -#define DTS_PER_CORE 4 +#define DTS_PER_CORE 2 #define DTS_INVALID_MASK 0x0C00 - uint32_t k, l_core_avg, l_core_hot, l_sensor_count; - uint32_t l_oha_status_reg = 0; - uint32_t l_pm_state_hist_reg = 0; - uint16_t l_dts[DTS_PER_CORE]; - BOOLEAN l_update_sensor = FALSE; - - // Build up array of DTS values - // DTS sensors are in the format of uint64_t dts0 : 12; - // uint64_t thermal_trip0 : 2; - // uint64_t spare0 : 1; - // uint64_t valid0 : 1; - // - // so we will need to convert them before they are used in loop below. - l_dts[0] = i_core_data_ptr->dts_cpm.sensors_v0.fields.dts0; - l_dts[1] = i_core_data_ptr->dts_cpm.sensors_v0.fields.dts1; - l_dts[2] = i_core_data_ptr->dts_cpm.sensors_v0.fields.dts2; - l_dts[3] = i_core_data_ptr->dts_cpm.sensors_v1.fields.dts4; - // Read the low-order bytes of the OHA Status register - l_oha_status_reg = i_core_data_ptr->oha.oha_ro_status_reg.words.low_order; + uint32_t l_coreTemp = 0; + uint8_t k = 0; + uint16_t l_dts[DTS_PER_CORE]; + uint16_t l_quadDts = 0; + BOOLEAN l_update_sensor = FALSE; + uint16_t l_core_hot = 0; + uint8_t l_dtsCnt = 0; //Number of valid Core DTSs - // Read the high-order bytes of PM State History register for this core - l_pm_state_hist_reg = i_core_data_ptr->pcb_slave.pm_history.words.high_order; + //Clear DTS array. + memset((void *)&(l_dts[0]), 0, sizeof(l_dts)); - // Check if we were able to collect core data - if(l_oha_status_reg & CORE_DATA_CORE_SENSORS_COLLECTED) + if (i_core_data_ptr != NULL) { - // Check if all DTS readings in the core are valid. The field sensors_v0 - // contains core-related data - if(i_core_data_ptr->dts_cpm.sensors_v0.fields.valid0 || - i_core_data_ptr->dts_cpm.sensors_v0.fields.valid1 || - i_core_data_ptr->dts_cpm.sensors_v0.fields.valid2) - { - l_update_sensor = TRUE; - } - } - // Check if we were able to collect L3 data - if(l_oha_status_reg & CORE_DATA_L3_SENSORS_COLLECTED) - { - // Check if DTS reading in the L3 is valid. The field sensors_v1 contains - // L3-related data - if(i_core_data_ptr->dts_cpm.sensors_v1.fields.valid4) + //the Core DTS temperatures are considered in the calculation only if: + // - They are valid. + // - Non-zero + // - Non-negative + for (k = 0; k < DTS_PER_CORE; k++) + { + //Check validity + if (i_core_data_ptr->dts.core[k].fields.valid) { - l_update_sensor = TRUE; - } - } - // Check if this core has been in fast winkle OR deep winkle - if(((l_pm_state_hist_reg & OCC_PM_STATE_MASK) == OCC_PAST_FAST_WINKLE) || - ((l_pm_state_hist_reg & OCC_PM_STATE_MASK) == OCC_PAST_DEEP_WINKLE)) - { - l_update_sensor = TRUE; - } + l_dts[k] = i_core_data_ptr->dts.core[k].fields.reading; + l_dtsCnt++; - // Update the thermal sensor associated with this core - if(l_update_sensor) - { - //calculate average temperature from all DTS's for this core - for(l_sensor_count = DTS_PER_CORE, l_core_hot = 0, - l_core_avg = 0, k = 0; - k < DTS_PER_CORE; k++) - { //Hardware bug workaround: Temperatures reaching 0 degrees C //can show up as negative numbers. To fix this, we discount //values that have the 2 MSB's set. - if((l_dts[k] & DTS_INVALID_MASK) == DTS_INVALID_MASK) + if(((l_dts[k] & DTS_INVALID_MASK) == DTS_INVALID_MASK) || + (l_dts[k] == 0)) { - l_dts[k] = 0; + l_dts[k] = 0; + l_dtsCnt--; } - l_core_avg += l_dts[k]; - if(l_dts[k] > l_core_hot) - { - l_core_hot = l_dts[k]; - } - // Assume 0 degrees to mean bad sensor and don't let it bring the - // average reading down. - else if(l_dts[k] == 0) + if (l_dts[k] > l_core_hot) { - l_sensor_count--; + l_core_hot = l_dts[k]; } } + } //for loop - if(l_sensor_count == DTS_PER_CORE) - { - //For the common case, compiler converts this to a fast multiplication - //operation when one of the operands is a constant. - l_core_avg /= DTS_PER_CORE; - } - else if(l_sensor_count) //prevent div by 0 if all sensors are zero + //The core DTSs are considered only if we have at least 1 valid core DTS and + //a non-zero G_coreWeight. + if (l_dtsCnt && G_coreWeight) + { + l_update_sensor = TRUE; + } + + //The Quad DTS value is considered only if we have a valid Quad DTS and + //a non-zero quad weight. + if (i_core_data_ptr->dts.cache.fields.valid && G_quadWeight) + { + l_quadDts = i_core_data_ptr->dts.cache.fields.reading; + l_update_sensor = TRUE; + } + + // Update the thermal sensor associated with this core + if(l_update_sensor) + { + //Formula: + // (Cwt(CoreDTS1 + CoreDTS2) + (Qwt*QuadDTS)) + // ------------------------------------------ + // (2*Cwt + Qwt) + if ((G_coreWeight && l_dtsCnt) || G_quadWeight) { - //otherwise, use the slower division routine when both operands are - //unknown at compile time. - l_core_avg /= l_sensor_count; + l_coreTemp = ((G_coreWeight *(l_dts[0] + l_dts[1])) + (G_quadWeight * l_quadDts)) + / ((l_dtsCnt * G_coreWeight) + G_quadWeight); } // Update sensors & Interim Data - sensor_update( AMECSENSOR_ARRAY_PTR(TEMP2MSP0C0,i_core), l_core_avg); + sensor_update( AMECSENSOR_ARRAY_PTR(TEMP4MSP0C0,i_core), l_coreTemp); g_amec->proc[0].core[i_core].dts_hottest = l_core_hot; - } -} - - -//CPM - Commented out as requested by Malcolm -/* void amec_calc_cpm_sensors(gpe_bulk_core_data_t * i_core_data_ptr, uint8_t i_core) -{ -#define CPM_PER_CORE 4 - - uint32_t k, l_cpm_min = 0xffffffff; - uint16_t l_cpm[CPM_PER_CORE]; - - l_cpm[0] = i_core_data_ptr->dts_cpm.sensors_v8.fields.encoded_cpm0; - l_cpm[1] = i_core_data_ptr->dts_cpm.sensors_v8.fields.encoded_cpm1; - l_cpm[2] = i_core_data_ptr->dts_cpm.sensors_v8.fields.encoded_cpm2; - l_cpm[3] = i_core_data_ptr->dts_cpm.sensors_v9.fields.encoded_cpm4; - - //calculate min CPM from all CPM's for this core - for(k = 0; k < CPM_PER_CORE; k++) - { - if(l_cpm[k] < l_cpm_min) - { - l_cpm_min = l_cpm[k]; } } - - sensor_update( AMECSENSOR_ARRAY_PTR(CPM2MSP0C0,i_core), l_cpm_min); } -*/ // Function Specification // @@ -358,6 +270,8 @@ void amec_calc_dts_sensors(gpe_bulk_core_data_t * i_core_data_ptr, uint8_t i_cor // Thread: RealTime Loop // // End Function Specification +// TEMP - Not supported yet. +#if 0 void amec_calc_freq_and_util_sensors(gpe_bulk_core_data_t * i_core_data_ptr, uint8_t i_core) { BOOLEAN l_core_sleep_winkle = FALSE; @@ -876,6 +790,7 @@ void amec_calc_spurr(uint8_t i_core) sensor_update( AMECSENSOR_ARRAY_PTR(SPURR2MSP0C0,i_core), (uint16_t) temp32); } } +#endif /*----------------------------------------------------------------------------*/ /* End */ diff --git a/src/occ_405/amec/amec_sensors_core.h b/src/occ_405/amec/amec_sensors_core.h index e018925..90d6aef 100755 --- a/src/occ_405/amec/amec_sensors_core.h +++ b/src/occ_405/amec/amec_sensors_core.h @@ -53,7 +53,6 @@ /*----------------------------------------------------------------------------*/ /* Function Declarations */ /*----------------------------------------------------------------------------*/ -void amec_update_fast_core_data_sensors(void); void amec_update_proc_core_sensors(uint8_t i_core); diff --git a/src/occ_405/amec/amec_slave_smh.c b/src/occ_405/amec/amec_slave_smh.c index 93e96eb..141e1c3 100755 --- a/src/occ_405/amec/amec_slave_smh.c +++ b/src/occ_405/amec/amec_slave_smh.c @@ -116,6 +116,8 @@ const smh_tbl_t amec_slv_state_7_substate_table[AMEC_SMH_STATES_PER_LVL] = {amec_slv_substate_7_7, NULL}, }; +#endif // #if 0 @TODO - TEMP: Not Ready yet in Phase 1. + // -------------------------------------------------------- // Main AMEC Slave State Table // -------------------------------------------------------- @@ -131,11 +133,11 @@ const smh_tbl_t amec_slv_state_table[AMEC_SMH_STATES_PER_LVL] = {amec_slv_state_3, NULL}, {amec_slv_state_4, NULL}, {amec_slv_state_5, NULL}, - {amec_slv_state_6, amec_slv_state_6_substate_table}, - {amec_slv_state_7, amec_slv_state_7_substate_table}, + {amec_slv_state_6, NULL}, //Substate not yet supported: amec_slv_state_6_substate_table}, + {amec_slv_state_7, NULL}, //Substate not yet supported: amec_slv_state_7_substate_table}, }; -#endif // #if 0 @TODO - TEMP: Not Ready yet in Phase 1. + // This sets up the function pointer that will be called to update the // fw timings when the AMEC Slave State Machine finishes. @@ -424,7 +426,7 @@ void amec_slv_common_tasks_post(void) amec_tb_record(AMEC_TB_250US); } } - +#endif // #if 0 - @TODO - TEMP: Not Ready yet in Phase 1. // Function Specification // @@ -443,6 +445,7 @@ void amec_slv_state_0(void) amec_update_proc_core_sensors(CORE_0); amec_update_proc_core_sensors(CORE_8); +/* Not yet supported //------------------------------------------------------- // Update Centaur sensors (for this tick) //------------------------------------------------------- @@ -462,8 +465,8 @@ void amec_slv_state_0(void) //------------------------------------------------------- // Update vector sensors //------------------------------------------------------- - sensor_vector_update(AMECSENSOR_PTR(TEMP2MSP0), 1); - sensor_vector_update(AMECSENSOR_PTR(TEMP2MSP0PEAK),1); + sensor_vector_update(AMECSENSOR_PTR(TEMP4MSP0), 1); + sensor_vector_update(AMECSENSOR_PTR(TEMP4MSP0PEAK),1); sensor_vector_update(AMECSENSOR_PTR(FREQA2MSP0), 1); sensor_vector_update(AMECSENSOR_PTR(IPS2MSP0), 1); sensor_vector_update(AMECSENSOR_PTR(UTIL2MSP0), 1); @@ -471,6 +474,7 @@ void amec_slv_state_0(void) // Call the trace function for 2ms tracing if it has been configured via // Amester. If not configured, this call will return immediately. amec_tb_record(AMEC_TB_2MS); +*/ } @@ -493,6 +497,7 @@ void amec_slv_state_1(void) amec_update_proc_core_sensors(CORE_1); amec_update_proc_core_sensors(CORE_9); +/* Not yet supported //------------------------------------------------------- // Update Centaur sensors (for this tick) //------------------------------------------------------- @@ -502,6 +507,7 @@ void amec_slv_state_1(void) // Update Proc Level Centaur/DIMM Temperature sensors //------------------------------------------------------- amec_update_centaur_temp_sensors(); +*/ } @@ -522,10 +528,12 @@ void amec_slv_state_2(void) amec_update_proc_core_sensors(CORE_2); amec_update_proc_core_sensors(CORE_10); +/* Not yet supported //------------------------------------------------------- // Update Centaur sensors (for this tick) //------------------------------------------------------- amec_update_centaur_sensors(CENTAUR_2); +*/ } @@ -548,6 +556,7 @@ void amec_slv_state_3(void) amec_update_proc_core_sensors(CORE_3); amec_update_proc_core_sensors(CORE_11); +/* Not yet supported //------------------------------------------------------- // Update Centaur sensors (for this tick) //------------------------------------------------------- @@ -557,6 +566,7 @@ void amec_slv_state_3(void) // Perform amec_analytics (set amec_analytics_slot to 3) //------------------------------------------------------- amec_analytics_main(); +*/ } @@ -578,10 +588,12 @@ void amec_slv_state_4(void) //------------------------------------------------------- amec_update_proc_core_sensors(CORE_4); +/* Not yet supported //------------------------------------------------------- // Update Centaur sensors (for this tick) //------------------------------------------------------- amec_update_centaur_sensors(CENTAUR_4); +*/ } @@ -603,6 +615,7 @@ void amec_slv_state_5(void) //------------------------------------------------------- amec_update_proc_core_sensors(CORE_5); +/* Not yet supported //------------------------------------------------------- // Update Centaur sensors (for this tick) //------------------------------------------------------- @@ -612,6 +625,7 @@ void amec_slv_state_5(void) // Update partition sensors for DPS algorithms (for this tick) //------------------------------------------------------- amec_dps_main(); +*/ } @@ -633,10 +647,12 @@ void amec_slv_state_6(void) //------------------------------------------------------- amec_update_proc_core_sensors(CORE_6); +/* Not yet supported //------------------------------------------------------- // Update Centaur sensors (for this tick) //------------------------------------------------------- amec_update_centaur_sensors(CENTAUR_6); +*/ } @@ -656,12 +672,16 @@ void amec_slv_state_7(void) //------------------------------------------------------- amec_update_proc_core_sensors(CORE_7); +/* Not yet supported //------------------------------------------------------- // Update Centaur sensors (for this tick) //------------------------------------------------------- amec_update_centaur_sensors(CENTAUR_7); +*/ } +// @TODO - TEMP: Not Ready yet in Phase 1. +#if 0 // Function Specification // // Name: amec_slv_substate_6_0 diff --git a/src/occ_405/amec/amec_sys.h b/src/occ_405/amec/amec_sys.h index 0383701..77cf382 100755 --- a/src/occ_405/amec/amec_sys.h +++ b/src/occ_405/amec/amec_sys.h @@ -288,7 +288,7 @@ typedef struct sensor_t mcpifd2ms; sensor_t mcpifi2ms; sensor_t spurr2ms; - sensor_t temp2ms; + sensor_t temp4ms; sensor_t util2ms; sensor_t nutil3s; sensor_t mstl2ms; @@ -454,10 +454,10 @@ typedef struct sensor_t sleepcnt2ms; sensor_t winkcnt2ms; sensor_t sp250us; - sensor_t temp2ms; - vectorSensor_t temp2ms_vector; - sensor_t temp2mspeak; - vectorSensor_t temp2mspeak_vector; + sensor_t temp4ms; + vectorSensor_t temp4ms_vector; + sensor_t temp4mspeak; + vectorSensor_t temp4mspeak_vector; sensor_t util2ms; vectorSensor_t util2ms_vector; diff --git a/src/occ_405/amec/amec_tasks.c b/src/occ_405/amec/amec_tasks.c index 7925507..0b68331 100755 --- a/src/occ_405/amec/amec_tasks.c +++ b/src/occ_405/amec/amec_tasks.c @@ -279,10 +279,10 @@ void task_amec_slave( task_t *i_self) amec_slv_common_tasks_pre(); -// @TODO TEMP: Not ready yet in phase 1 -/* amec_generic_smh( amec_slv_state_table, &G_amec_slv_state, &G_amec_slv_state_timings ); +// @TODO TEMP: Not ready yet in phase 1 +/* amec_slv_common_tasks_post(); */ // Set the total AMEC int task time for this tick, to the duration of the slave tasks. diff --git a/src/occ_405/cmdh/cmdh_fsp_cmds.c b/src/occ_405/cmdh/cmdh_fsp_cmds.c index 458ab71..03dae96 100755 --- a/src/occ_405/cmdh/cmdh_fsp_cmds.c +++ b/src/occ_405/cmdh/cmdh_fsp_cmds.c @@ -312,8 +312,8 @@ ERRL_RC cmdh_poll_v10(cmdh_fsp_rsp_t * o_rsp_ptr) { if(CORE_PRESENT(k)) { - l_tempSensorList[l_sensorHeader.count].id = G_amec_sensor_list[TEMP2MSP0C0 + k]->ipmi_sid; - l_tempSensorList[l_sensorHeader.count].value = G_amec_sensor_list[TEMP2MSP0C0 + k]->sample; + l_tempSensorList[l_sensorHeader.count].id = G_amec_sensor_list[TEMP4MSP0C0 + k]->ipmi_sid; + l_tempSensorList[l_sensorHeader.count].value = G_amec_sensor_list[TEMP4MSP0C0 + k]->sample; l_sensorHeader.count++; } } diff --git a/src/occ_405/cmdh/cmdh_fsp_cmds_datacnfg.c b/src/occ_405/cmdh/cmdh_fsp_cmds_datacnfg.c index 1b3a918..44eaf09 100755 --- a/src/occ_405/cmdh/cmdh_fsp_cmds_datacnfg.c +++ b/src/occ_405/cmdh/cmdh_fsp_cmds_datacnfg.c @@ -1483,7 +1483,7 @@ errlHndl_t data_store_sys_config(const cmdh_fsp_cmd_t * i_cmd_ptr, //Core Temp and Freq sensors are always in sequence in the table for (l_coreIndex = 0; l_coreIndex < MAX_CORES; l_coreIndex++) { - AMECSENSOR_PTR(TEMP2MSP0C0 + l_coreIndex)->ipmi_sid = l_cmd2_ptr->sys_config.core_sid[(l_coreIndex * 2)]; + AMECSENSOR_PTR(TEMP4MSP0C0 + l_coreIndex)->ipmi_sid = l_cmd2_ptr->sys_config.core_sid[(l_coreIndex * 2)]; AMECSENSOR_PTR(FREQA2MSP0C0 + l_coreIndex)->ipmi_sid = l_cmd2_ptr->sys_config.core_sid[(l_coreIndex * 2) + 1]; } } diff --git a/src/occ_405/dcom/dcom.h b/src/occ_405/dcom/dcom.h index 7aaf652..175f037 100755 --- a/src/occ_405/dcom/dcom.h +++ b/src/occ_405/dcom/dcom.h @@ -191,8 +191,8 @@ typedef struct __attribute__ ((packed)) uint16_t pwr250usmemp0; // [94] uint16_t sleepcnt2msp0; // [96] uint16_t winkcnt2msp0; // [98] - uint16_t temp2msp0; // [100] - uint16_t temp2msp0peak; // [102] + uint16_t temp4msp0; // [100] + uint16_t temp4msp0peak; // [102] uint16_t util2msp0cy[MAX_CORES]; // [104] uint16_t vrfan250usmem; // [128] uint16_t vrfan250usproc; // [130] diff --git a/src/occ_405/occLinkInputFile b/src/occ_405/occLinkInputFile index c2e3c68..7995f7e 100644 --- a/src/occ_405/occLinkInputFile +++ b/src/occ_405/occLinkInputFile @@ -5,6 +5,7 @@ INPUT ( amec_data.o amec_part.o amec_sensors_fw.o amec_sensors_power.o + amec_sensors_core.o amec_slave_smh.o amec_tasks.o apss.o diff --git a/src/occ_405/proc/proc_data.c b/src/occ_405/proc/proc_data.c index b7f823a..68aae42 100755 --- a/src/occ_405/proc/proc_data.c +++ b/src/occ_405/proc/proc_data.c @@ -35,7 +35,8 @@ #include "apss.h" #include "state.h" #include "proc_data_control.h" -#include "core_data.h" + + //Global array of core data buffers GPE_BUFFER(CoreData G_core_data[MAX_NUM_FW_CORES+NUM_CORE_DATA_DOUBLE_BUF+NUM_CORE_DATA_EMPTY_BUF]) = {{{0}}}; diff --git a/src/occ_405/sensor/sensor_enum.h b/src/occ_405/sensor/sensor_enum.h index ec2fd9e..bbd46f1 100755 --- a/src/occ_405/sensor/sensor_enum.h +++ b/src/occ_405/sensor/sensor_enum.h @@ -122,8 +122,8 @@ enum e_gsid SLEEPCNT2MSP0, WINKCNT2MSP0, SP250USP0, - TEMP2MSP0, - TEMP2MSP0PEAK, + TEMP4MSP0, + TEMP4MSP0PEAK, UTIL2MSP0, VRFAN250USPROC, VRHOT250USPROC, @@ -206,18 +206,18 @@ enum e_gsid SPURR2MSP0C10, SPURR2MSP0C11, - TEMP2MSP0C0, - TEMP2MSP0C1, - TEMP2MSP0C2, - TEMP2MSP0C3, - TEMP2MSP0C4, - TEMP2MSP0C5, - TEMP2MSP0C6, - TEMP2MSP0C7, - TEMP2MSP0C8, - TEMP2MSP0C9, - TEMP2MSP0C10, - TEMP2MSP0C11, + TEMP4MSP0C0, + TEMP4MSP0C1, + TEMP4MSP0C2, + TEMP4MSP0C3, + TEMP4MSP0C4, + TEMP4MSP0C5, + TEMP4MSP0C6, + TEMP4MSP0C7, + TEMP4MSP0C8, + TEMP4MSP0C9, + TEMP4MSP0C10, + TEMP4MSP0C11, UTIL2MSP0C0, UTIL2MSP0C1, diff --git a/src/occ_405/sensor/sensor_info.c b/src/occ_405/sensor/sensor_info.c index 89d7578..b94bd30 100755 --- a/src/occ_405/sensor/sensor_info.c +++ b/src/occ_405/sensor/sensor_info.c @@ -227,8 +227,8 @@ const sensor_info_t G_sensor_info[] = SENSOR_INFO_T_ENTRY( SLEEPCNT2MSP0, "#\0", AMEC_SENSOR_TYPE_PERF, AMEC_SENSOR_LOC_PROC, AMEC_SENSOR_NONUM, AMEEFP_2MS_IN_HZ, AMEFP( 1, 0) ), SENSOR_INFO_T_ENTRY( WINKCNT2MSP0, "#\0", AMEC_SENSOR_TYPE_PERF, AMEC_SENSOR_LOC_PROC, AMEC_SENSOR_NONUM, AMEEFP_2MS_IN_HZ, AMEFP( 1, 0) ), SENSOR_INFO_T_ENTRY( SP250USP0, "%\0", AMEC_SENSOR_TYPE_FREQ, AMEC_SENSOR_LOC_PROC, AMEC_SENSOR_NONUM, AMEEFP_250US_IN_HZ, AMEFP( 1, 0) ), - SENSOR_INFO_T_ENTRY( TEMP2MSP0, "C\0", AMEC_SENSOR_TYPE_TEMP, AMEC_SENSOR_LOC_PROC, AMEC_SENSOR_NONUM, AMEEFP_2MS_IN_HZ, AMEFP( 1, 0) ), - SENSOR_INFO_T_ENTRY( TEMP2MSP0PEAK, "C\0", AMEC_SENSOR_TYPE_TEMP, AMEC_SENSOR_LOC_PROC, AMEC_SENSOR_NONUM, AMEEFP_2MS_IN_HZ, AMEFP( 1, 0) ), + SENSOR_INFO_T_ENTRY( TEMP4MSP0, "C\0", AMEC_SENSOR_TYPE_TEMP, AMEC_SENSOR_LOC_PROC, AMEC_SENSOR_NONUM, AMEEFP_2MS_IN_HZ, AMEFP( 1, 0) ), + SENSOR_INFO_T_ENTRY( TEMP4MSP0PEAK, "C\0", AMEC_SENSOR_TYPE_TEMP, AMEC_SENSOR_LOC_PROC, AMEC_SENSOR_NONUM, AMEEFP_2MS_IN_HZ, AMEFP( 1, 0) ), SENSOR_INFO_T_ENTRY( UTIL2MSP0, "%\0", AMEC_SENSOR_TYPE_UTIL, AMEC_SENSOR_LOC_PROC, AMEC_SENSOR_NONUM, AMEEFP_2MS_IN_HZ, AMEFP( 1,-2) ), SENSOR_INFO_T_ENTRY( VRFAN250USPROC, "pin\0", AMEC_SENSOR_TYPE_TEMP, AMEC_SENSOR_LOC_VRM, AMEC_SENSOR_NONUM, AMEEFP_250US_IN_HZ, AMEFP( 1, 0) ), SENSOR_INFO_T_ENTRY( VRHOT250USPROC, "pin\0", AMEC_SENSOR_TYPE_TEMP, AMEC_SENSOR_LOC_VRM, AMEC_SENSOR_NONUM, AMEEFP_250US_IN_HZ, AMEFP( 1, 0) ), @@ -246,7 +246,7 @@ const sensor_info_t G_sensor_info[] = SENS_CORE_ENTRY_SET( NOTBZE2MSP0C , "cyc\0", AMEC_SENSOR_TYPE_PERF, AMEC_SENSOR_LOC_CORE, AMEC_SENSOR_NONUM, AMEEFP_2MS_IN_HZ, AMEFP( 1, 0) ), SENS_CORE_ENTRY_SET( NOTFIN2MSP0C , "cyc\0", AMEC_SENSOR_TYPE_PERF, AMEC_SENSOR_LOC_CORE, AMEC_SENSOR_NONUM, AMEEFP_2MS_IN_HZ, AMEFP( 1, 0) ), SENS_CORE_ENTRY_SET( SPURR2MSP0C , "%\0", AMEC_SENSOR_TYPE_PERF, AMEC_SENSOR_LOC_CORE, AMEC_SENSOR_NONUM, AMEEFP_2MS_IN_HZ, AMEFP( 1, 0) ), - SENS_CORE_ENTRY_SET( TEMP2MSP0C , "C\0", AMEC_SENSOR_TYPE_TEMP, AMEC_SENSOR_LOC_CORE, AMEC_SENSOR_NONUM, AMEEFP_2MS_IN_HZ, AMEFP( 1, 0) ), + SENS_CORE_ENTRY_SET( TEMP4MSP0C , "C\0", AMEC_SENSOR_TYPE_TEMP, AMEC_SENSOR_LOC_CORE, AMEC_SENSOR_NONUM, AMEEFP_2MS_IN_HZ, AMEFP( 1, 0) ), SENS_CORE_ENTRY_SET( UTIL2MSP0C , "%\0", AMEC_SENSOR_TYPE_UTIL, AMEC_SENSOR_LOC_CORE, AMEC_SENSOR_NONUM, AMEEFP_2MS_IN_HZ, AMEFP( 1,-2) ), SENS_CORE_ENTRY_SET( NUTIL3SP0C , "%\0", AMEC_SENSOR_TYPE_UTIL, AMEC_SENSOR_LOC_CORE, AMEC_SENSOR_NONUM, AMEEFP_3S_IN_HZ, AMEFP( 1,-2) ), SENS_CORE_ENTRY_SET( MSTL2MSP0C , "cpi\0", AMEC_SENSOR_TYPE_PERF, AMEC_SENSOR_LOC_CORE, AMEC_SENSOR_NONUM, AMEEFP_2MS_IN_HZ, AMEFP( 1, 0) ), diff --git a/src/occ_405/sensor/sensor_table.c b/src/occ_405/sensor/sensor_table.c index 86786e0..8df70d0 100755 --- a/src/occ_405/sensor/sensor_table.c +++ b/src/occ_405/sensor/sensor_table.c @@ -276,8 +276,8 @@ const sensor_ptr_t G_amec_sensor_list[] = SENSOR_PTR( SLEEPCNT2MSP0, &g_amec_sys.proc[0].sleepcnt2ms), SENSOR_PTR( WINKCNT2MSP0, &g_amec_sys.proc[0].winkcnt2ms), SENSOR_PTR( SP250USP0, &g_amec_sys.proc[0].sp250us), - SENSOR_PTR( TEMP2MSP0, &g_amec_sys.proc[0].temp2ms), - SENSOR_PTR( TEMP2MSP0PEAK, &g_amec_sys.proc[0].temp2mspeak), + SENSOR_PTR( TEMP4MSP0, &g_amec_sys.proc[0].temp4ms), + SENSOR_PTR( TEMP4MSP0PEAK, &g_amec_sys.proc[0].temp4mspeak), SENSOR_PTR( UTIL2MSP0, &g_amec_sys.proc[0].util2ms), SENSOR_PTR( VRFAN250USPROC, &g_amec_sys.sys.vrfan250usproc), SENSOR_PTR( VRHOT250USPROC, &g_amec_sys.sys.vrhot250usproc), @@ -291,7 +291,7 @@ const sensor_ptr_t G_amec_sensor_list[] = CORE_SENSOR_PTRS( NOTBZE2MSP0C , &g_amec_sys.proc[0].core, mcpifd2ms), CORE_SENSOR_PTRS( NOTFIN2MSP0C , &g_amec_sys.proc[0].core, mcpifi2ms), CORE_SENSOR_PTRS( SPURR2MSP0C , &g_amec_sys.proc[0].core, spurr2ms), - CORE_SENSOR_PTRS( TEMP2MSP0C , &g_amec_sys.proc[0].core, temp2ms), + CORE_SENSOR_PTRS( TEMP4MSP0C , &g_amec_sys.proc[0].core, temp4ms), CORE_SENSOR_PTRS( UTIL2MSP0C , &g_amec_sys.proc[0].core, util2ms), CORE_SENSOR_PTRS( NUTIL3SP0C , &g_amec_sys.proc[0].core, nutil3s), CORE_SENSOR_PTRS( MSTL2MSP0C , &g_amec_sys.proc[0].core, mstl2ms), @@ -428,8 +428,8 @@ const minisensor_ptr_t G_amec_mini_sensor_list[] INIT_SECTION = MINI_SENSOR_PTR( SLEEPCNT2MSP0, &G_dcom_slv_outbox_tx.sleepcnt2msp0), MINI_SENSOR_PTR( WINKCNT2MSP0, &G_dcom_slv_outbox_tx.winkcnt2msp0), MINI_SENSOR_PTR( SP250USP0, NULL), - MINI_SENSOR_PTR( TEMP2MSP0, &G_dcom_slv_outbox_tx.temp2msp0), - MINI_SENSOR_PTR( TEMP2MSP0PEAK, &G_dcom_slv_outbox_tx.temp2msp0peak), + MINI_SENSOR_PTR( TEMP4MSP0, &G_dcom_slv_outbox_tx.temp4msp0), + MINI_SENSOR_PTR( TEMP4MSP0PEAK, &G_dcom_slv_outbox_tx.temp4msp0peak), MINI_SENSOR_PTR( UTIL2MSP0, &G_dcom_slv_outbox_tx.util2msp0), MINI_SENSOR_PTR( VRFAN250USPROC, &G_dcom_slv_outbox_tx.vrfan250usproc), MINI_SENSOR_PTR( VRHOT250USPROC, NULL), @@ -443,7 +443,7 @@ const minisensor_ptr_t G_amec_mini_sensor_list[] INIT_SECTION = CORE_MINI_SENSOR_PTRS( NOTBZE2MSP0C, &G_dcom_slv_outbox_tx.mcpifd2msp0cy ), CORE_MINI_SENSOR_PTRS( NOTFIN2MSP0C, &G_dcom_slv_outbox_tx.mcpifi2msp0cy ), CORE_MINI_SENSOR_PTRS_NULL( SPURR2MSP0C ), - CORE_MINI_SENSOR_PTRS_NULL( TEMP2MSP0C ), + CORE_MINI_SENSOR_PTRS_NULL( TEMP4MSP0C ), CORE_MINI_SENSOR_PTRS( UTIL2MSP0C, &G_dcom_slv_outbox_tx.util2msp0cy ), CORE_MINI_SENSOR_PTRS( NUTIL3SP0C, &G_dcom_slv_outbox_tx.nutil3sp0cy ), CORE_MINI_SENSOR_PTRS_NULL( MSTL2MSP0C ), diff --git a/src/occ_405/ssx_app_cfg.h b/src/occ_405/ssx_app_cfg.h index bd998e4..980373c 100755 --- a/src/occ_405/ssx_app_cfg.h +++ b/src/occ_405/ssx_app_cfg.h @@ -1,4 +1,3 @@ - /* IBM_PROLOG_BEGIN_TAG */ /* This is an automatically generated prolog. */ /* */ diff --git a/src/occ_405/thread/chom.c b/src/occ_405/thread/chom.c index b75bda8..35e0bf1 100755 --- a/src/occ_405/thread/chom.c +++ b/src/occ_405/thread/chom.c @@ -238,9 +238,9 @@ void chom_update_sensors() // update chom sensors which has multiple mini-sensor source for (i = 0 ; i<MAX_OCCS ; i++) { - if (G_dcom_slv_outbox_rx[i].temp2msp0peak > l_max_core_temp) + if (G_dcom_slv_outbox_rx[i].temp4msp0peak > l_max_core_temp) { - l_max_core_temp = G_dcom_slv_outbox_rx[i].temp2msp0peak; + l_max_core_temp = G_dcom_slv_outbox_rx[i].temp4msp0peak; } if (G_dcom_slv_outbox_rx[i].temp2mscent > l_max_cent_temp) diff --git a/src/occ_405/thread/thrm_thread.c b/src/occ_405/thread/thrm_thread.c index 853cf0e..c64c30f 100755 --- a/src/occ_405/thread/thrm_thread.c +++ b/src/occ_405/thread/thrm_thread.c @@ -390,7 +390,7 @@ void thrm_thread_main() // Determine if additional cooling is required for processors // For processors, use the hottest of the core averages - l_sensor = getSensorByGsid(TEMP2MSP0PEAK); + l_sensor = getSensorByGsid(TEMP4MSP0PEAK); l_IncreaseFans |= thrm_thread_fan_control(DATA_FRU_PROC, l_sensor->sample); diff --git a/src/occ_405/topfiles.mk b/src/occ_405/topfiles.mk index 2daa6bc..1ff4b8a 100644 --- a/src/occ_405/topfiles.mk +++ b/src/occ_405/topfiles.mk @@ -29,6 +29,7 @@ TOP-C-SOURCES = amec/amec_data.c \ amec/amec_part.c \ amec/amec_sensors_fw.c \ amec/amec_sensors_power.c \ + amec/amec_sensors_core.c \ amec/amec_slave_smh.c \ amec/amec_tasks.c \ amec/sensor_power.c \ |