summaryrefslogtreecommitdiffstats
path: root/src/occ_405
diff options
context:
space:
mode:
authorWael El-Essawy <welessa@us.ibm.com>2015-11-30 14:58:43 -0600
committerWilliam A. Bryan <wilbryan@us.ibm.com>2015-12-04 14:03:28 -0600
commit0694c6bb509e5d91a7f2c7b1f4924e114500dca1 (patch)
tree74f7869436c57df025578370670035a49e46979c /src/occ_405
parent74ad39e79ccd4d423adea15d82a87fa70ec9b56f (diff)
downloadtalos-occ-0694c6bb509e5d91a7f2c7b1f4924e114500dca1.tar.gz
talos-occ-0694c6bb509e5d91a7f2c7b1f4924e114500dca1.zip
Update Proc Core sensors in amec_slv_states for 24 cores
- maintain 8 core data collection states versus 16 rtls ticks core scheduling scheme, utilizing substates to perform 4 ms full 24 cores data collection. - introduce 4 substates, and distribute them over time (1,3,5,7) - spread core data collection over 8 subsates, reading 3 cores data each time. - eliminate gpe_bulk_core_data_t type - reset dts elements using for loop instead of memset - create amec_update_proc_core_group function and G_sensor_update_pattern array to easily modify core data sensors update pattern Change-Id: Idd752c6ea77829ac308e2089f6582db472c8badc RTC: 140094 RTC: 140183 RTC: 140186 Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/22347 Tested-by: Wael Elessawy <welessa@us.ibm.com> Reviewed-by: Martha Broyles <mbroyles@us.ibm.com> Reviewed-by: William A. Bryan <wilbryan@us.ibm.com>
Diffstat (limited to 'src/occ_405')
-rwxr-xr-xsrc/occ_405/amec/amec_freq.c2
-rwxr-xr-xsrc/occ_405/amec/amec_health.c2
-rwxr-xr-xsrc/occ_405/amec/amec_sensors_core.c24
-rwxr-xr-xsrc/occ_405/amec/amec_slave_smh.c834
-rwxr-xr-xsrc/occ_405/amec/amec_slave_smh.h40
-rwxr-xr-xsrc/occ_405/amec/amec_smh.h3
-rwxr-xr-xsrc/occ_405/amec/amec_sys.h6
-rwxr-xr-xsrc/occ_405/proc/proc_data.c2
8 files changed, 815 insertions, 98 deletions
diff --git a/src/occ_405/amec/amec_freq.c b/src/occ_405/amec/amec_freq.c
index 9ae4c03..025e088 100755
--- a/src/occ_405/amec/amec_freq.c
+++ b/src/occ_405/amec/amec_freq.c
@@ -878,7 +878,7 @@ void amec_verify_pstate()
#if 0
uint8_t l_core = 0;
int8_t l_pstate_from_fmax = 0;
- gpe_bulk_core_data_t * l_core_data_ptr;
+ CoreData * l_core_data_ptr;
pmc_pmsr_ffcdc_data_t l_pmc_pmsr_ffdc;
errlHndl_t l_err = NULL;
diff --git a/src/occ_405/amec/amec_health.c b/src/occ_405/amec/amec_health.c
index 85c7a7d..58092fc 100755
--- a/src/occ_405/amec/amec_health.c
+++ b/src/occ_405/amec/amec_health.c
@@ -858,7 +858,7 @@ void amec_health_check_proc_timeout()
static uint32_t L_read_fail_cnt = 0;
uint8_t i = 0;
uint8_t l_bad_core_index = 0;
- gpe_bulk_core_data_t *l_core_data_ptr = NULL;
+ CoreData *l_core_data_ptr = NULL;
/*------------------------------------------------------------------------*/
/* Code */
diff --git a/src/occ_405/amec/amec_sensors_core.c b/src/occ_405/amec/amec_sensors_core.c
index 37452e6..7527e44 100755
--- a/src/occ_405/amec/amec_sensors_core.c
+++ b/src/occ_405/amec/amec_sensors_core.c
@@ -52,9 +52,9 @@
/******************************************************************************/
/* Forward Declarations */
/******************************************************************************/
-void amec_calc_dts_sensors(gpe_bulk_core_data_t * i_core_data_ptr, uint8_t i_core);
-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_dts_sensors(CoreData * i_core_data_ptr, uint8_t i_core);
+void amec_calc_freq_and_util_sensors(CoreData * i_core_data_ptr, uint8_t i_core);
+void amec_calc_ips_sensors(CoreData * i_core_data_ptr, uint8_t i_core);
void amec_calc_spurr(uint8_t i_core);
//*************************************************************************
@@ -72,7 +72,7 @@ void amec_calc_spurr(uint8_t i_core);
// End Function Specification
void amec_update_proc_core_sensors(uint8_t i_core)
{
- gpe_bulk_core_data_t *l_core_data_ptr;
+ CoreData *l_core_data_ptr;
uint16_t l_temp16 = 0;
uint32_t l_temp32 = 0;
@@ -90,6 +90,7 @@ void amec_update_proc_core_sensors(uint8_t i_core)
//-------------------------------------------------------
amec_calc_dts_sensors(l_core_data_ptr, i_core);
+// @TODO - TEMP: frequency and utilization sensors are not enabled yet.
/*
//-------------------------------------------------------
// Util / Freq
@@ -99,7 +100,7 @@ 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().
@@ -177,7 +178,7 @@ uint8_t G_quadWeight = 1;
// Thread: RealTime Loop
//
// End Function Specification
-void amec_calc_dts_sensors(gpe_bulk_core_data_t * i_core_data_ptr, uint8_t i_core)
+void amec_calc_dts_sensors(CoreData * i_core_data_ptr, uint8_t i_core)
{
#define DTS_PER_CORE 2
#define DTS_INVALID_MASK 0x0C00
@@ -192,7 +193,10 @@ void amec_calc_dts_sensors(gpe_bulk_core_data_t * i_core_data_ptr, uint8_t i_cor
uint8_t l_dtsCnt = 0; //Number of valid Core DTSs
//Clear DTS array.
- memset((void *)&(l_dts[0]), 0, sizeof(l_dts));
+ for (k = 0; k < DTS_PER_CORE; k++)
+ {
+ l_dts[k] = 0;
+ }
if (i_core_data_ptr != NULL)
{
@@ -271,8 +275,8 @@ void amec_calc_dts_sensors(gpe_bulk_core_data_t * i_core_data_ptr, uint8_t i_cor
//
// 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)
+#if 0
+void amec_calc_freq_and_util_sensors(CoreData * i_core_data_ptr, uint8_t i_core)
{
BOOLEAN l_core_sleep_winkle = FALSE;
uint32_t l_pm_state_hist_reg = 0;
@@ -609,7 +613,7 @@ void amec_calc_freq_and_util_sensors(gpe_bulk_core_data_t * i_core_data_ptr, uin
}
-void amec_calc_ips_sensors(gpe_bulk_core_data_t * i_core_data_ptr, uint8_t i_core)
+void amec_calc_ips_sensors(CoreData * i_core_data_ptr, uint8_t i_core)
{
#define TWO_PWR_24_MASK 0x00FFFFFF
#define TWO_PWR_20_MASK 0x000FFFFF
diff --git a/src/occ_405/amec/amec_slave_smh.c b/src/occ_405/amec/amec_slave_smh.c
index 141e1c3..1b7543f 100755
--- a/src/occ_405/amec/amec_slave_smh.c
+++ b/src/occ_405/amec/amec_slave_smh.c
@@ -75,26 +75,80 @@ smh_state_t G_amec_slv_state = {AMEC_INITIAL_STATE,
// Number of ticks for periodically updating VRM-related data
#define AMEC_UPDATE_VRM_TICKS 4000
-// @TODO - TEMP: Not Ready yet in Phase 1.
-#if 0
+// This table presents the core data sensors collection pattern.
+// This pattern is not completely rbitrary, and it must always
+// follow track the GPE request pattern for the data collection.
+// The choice made here is for 3 cores data collection every 2 tick,
+// with a maximum latency of 2 ticks (counting the dispatch tick).
+#define CORES_PER_STATE 3
+
+const uint8_t G_sensor_update_pattern[AMEC_SMH_STATES_PER_LVL][CORES_PER_STATE] =
+{
+ { 23, 0, 12 }, // Group 0
+ { 1, 2, 13 }, // Group 1
+ { 14, 3, 15 }, // Group 2
+ { 4, 5, 16 }, // Group 3
+ { 17, 6, 18 }, // Group 4
+ { 7, 8, 19 }, // Group 5
+ { 20, 9, 21 }, // Group 6
+ { 10, 11, 22 } // Group 7
+};
+
+// --------------------------------------------------------
+// AMEC Slave State 1 Substate Table
+// --------------------------------------------------------
+// Each function inside this state table runs once every 16ms.
+//
+// No Substates
+//
+const smh_tbl_t amec_slv_state_1_substate_table[AMEC_SMH_STATES_PER_LVL] =
+{
+ {amec_slv_substate_1_0, NULL},
+ {amec_slv_substate_1_1, NULL},
+ {amec_slv_substate_1_2, NULL},
+ {amec_slv_substate_1_3, NULL},
+ {amec_slv_substate_1_4, NULL},
+ {amec_slv_substate_1_5, NULL},
+ {amec_slv_substate_1_6, NULL},
+ {amec_slv_substate_1_7, NULL},
+};
+
+// --------------------------------------------------------
+// AMEC Slave State 3 Substate Table
+// --------------------------------------------------------
+// Each function inside this state table runs once every 16ms.
+//
+// No Substates
+//
+const smh_tbl_t amec_slv_state_3_substate_table[AMEC_SMH_STATES_PER_LVL] =
+{
+ {amec_slv_substate_3_0, NULL},
+ {amec_slv_substate_3_1, NULL},
+ {amec_slv_substate_3_2, NULL},
+ {amec_slv_substate_3_3, NULL},
+ {amec_slv_substate_3_4, NULL},
+ {amec_slv_substate_3_5, NULL},
+ {amec_slv_substate_3_6, NULL},
+ {amec_slv_substate_3_7, NULL},
+};
// --------------------------------------------------------
-// AMEC Slave State 6 Substate Table
+// AMEC Slave State 5 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] =
+const smh_tbl_t amec_slv_state_5_substate_table[AMEC_SMH_STATES_PER_LVL] =
{
- {amec_slv_substate_6_0, NULL},
- {amec_slv_substate_6_1, NULL},
- {amec_slv_substate_6_2, NULL},
- {amec_slv_substate_6_3, NULL},
- {amec_slv_substate_6_4, NULL},
- {amec_slv_substate_6_5, NULL},
- {amec_slv_substate_6_6, NULL},
- {amec_slv_substate_6_7, NULL},
+ {amec_slv_substate_5_0, NULL},
+ {amec_slv_substate_5_1, NULL},
+ {amec_slv_substate_5_2, NULL},
+ {amec_slv_substate_5_3, NULL},
+ {amec_slv_substate_5_4, NULL},
+ {amec_slv_substate_5_5, NULL},
+ {amec_slv_substate_5_6, NULL},
+ {amec_slv_substate_5_7, NULL},
};
// --------------------------------------------------------
@@ -116,7 +170,6 @@ 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
@@ -128,13 +181,13 @@ const smh_tbl_t amec_slv_state_7_substate_table[AMEC_SMH_STATES_PER_LVL] =
const smh_tbl_t amec_slv_state_table[AMEC_SMH_STATES_PER_LVL] =
{
{amec_slv_state_0, NULL},
- {amec_slv_state_1, NULL},
+ {amec_slv_state_1, amec_slv_state_1_substate_table},
{amec_slv_state_2, NULL},
- {amec_slv_state_3, NULL},
+ {amec_slv_state_3, amec_slv_state_3_substate_table},
{amec_slv_state_4, NULL},
- {amec_slv_state_5, NULL},
- {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},
+ {amec_slv_state_5, amec_slv_state_5_substate_table},
+ {amec_slv_state_6, NULL},
+ {amec_slv_state_7, amec_slv_state_7_substate_table},
};
@@ -442,8 +495,6 @@ void amec_slv_state_0(void)
//-------------------------------------------------------
// Update Proc Core sensors (for this tick)
//-------------------------------------------------------
- amec_update_proc_core_sensors(CORE_0);
- amec_update_proc_core_sensors(CORE_8);
/* Not yet supported
//-------------------------------------------------------
@@ -494,8 +545,7 @@ void amec_slv_state_1(void)
//-------------------------------------------------------
// Update Proc Core sensors (for this tick)
//-------------------------------------------------------
- amec_update_proc_core_sensors(CORE_1);
- amec_update_proc_core_sensors(CORE_9);
+
/* Not yet supported
//-------------------------------------------------------
@@ -525,8 +575,6 @@ void amec_slv_state_2(void)
//-------------------------------------------------------
// Update Proc Core sensors (for this tick)
//-------------------------------------------------------
- amec_update_proc_core_sensors(CORE_2);
- amec_update_proc_core_sensors(CORE_10);
/* Not yet supported
//-------------------------------------------------------
@@ -553,8 +601,6 @@ void amec_slv_state_3(void)
//-------------------------------------------------------
// Update Proc Core sensors (for this tick)
//-------------------------------------------------------
- amec_update_proc_core_sensors(CORE_3);
- amec_update_proc_core_sensors(CORE_11);
/* Not yet supported
//-------------------------------------------------------
@@ -586,7 +632,6 @@ void amec_slv_state_4(void)
//-------------------------------------------------------
// Update Proc Core sensors (for this tick)
//-------------------------------------------------------
- amec_update_proc_core_sensors(CORE_4);
/* Not yet supported
//-------------------------------------------------------
@@ -613,7 +658,6 @@ void amec_slv_state_5(void)
//-------------------------------------------------------
// Update Proc Core sensors (for this tick)
//-------------------------------------------------------
- amec_update_proc_core_sensors(CORE_5);
/* Not yet supported
//-------------------------------------------------------
@@ -645,7 +689,6 @@ void amec_slv_state_6(void)
//-------------------------------------------------------
// Update Proc Core sensors (for this tick)
//-------------------------------------------------------
- amec_update_proc_core_sensors(CORE_6);
/* Not yet supported
//-------------------------------------------------------
@@ -670,7 +713,6 @@ void amec_slv_state_7(void)
//-------------------------------------------------------
// Update Proc Core sensors (for this tick)
//-------------------------------------------------------
- amec_update_proc_core_sensors(CORE_7);
/* Not yet supported
//-------------------------------------------------------
@@ -680,30 +722,234 @@ void amec_slv_state_7(void)
*/
}
-// @TODO - TEMP: Not Ready yet in Phase 1.
-#if 0
// Function Specification
//
-// Name: amec_slv_substate_6_0
-// amec_slv_substate_6_1
-// amec_slv_substate_6_2
-// amec_slv_substate_6_3
-// amec_slv_substate_6_4
-// amec_slv_substate_6_5
-// amec_slv_substate_6_6
-// amec_slv_substate_6_7
-//
-// Description: slave substate amec_slv_substate_6_0
-// slave substate amec_slv_substate_6_1
-// slave substate amec_slv_substate_6_2
-// slave substate amec_slv_substate_6_3
-// slave substate amec_slv_substate_6_4
-// slave substate amec_slv_substate_6_5
-// slave substate amec_slv_substate_6_6
-// slave substate amec_slv_substate_6_7
+// Name: amec_slv_substate_1_0
+// amec_slv_substate_1_1
+// amec_slv_substate_1_2
+// amec_slv_substate_1_3
+// amec_slv_substate_1_4
+// amec_slv_substate_1_5
+// amec_slv_substate_1_6
+// amec_slv_substate_1_7
+//
+// Description: slave substate amec_slv_substate_1_0
+// slave substate amec_slv_substate_1_1
+// slave substate amec_slv_substate_1_2
+// slave substate amec_slv_substate_1_3
+// slave substate amec_slv_substate_1_4
+// slave substate amec_slv_substate_1_5
+// slave substate amec_slv_substate_1_6
+// slave substate amec_slv_substate_1_7
+//
+// End Function Specification
+void amec_slv_substate_1_0(void)
+{
+ /*------------------------------------------------------------------------*/
+ /* Local Variables */
+ /*------------------------------------------------------------------------*/
+
+ /*------------------------------------------------------------------------*/
+ /* Code */
+ /*------------------------------------------------------------------------*/
+ AMEC_DBG("\tAMEC Slave State 1.0: Core Data[%d, %d, %d]\n",
+ G_sensor_update_pattern[0][0],
+ G_sensor_update_pattern[0][1],
+ G_sensor_update_pattern[0][2]);
+
+ //-------------------------------------------------------
+ // Update Proc Core sensors (for this substate)
+ //-------------------------------------------------------
+ amec_update_proc_core_group(0);
+}
+
+void amec_slv_substate_1_1(void)
+{
+ /*------------------------------------------------------------------------*/
+ /* Local Variables */
+ /*------------------------------------------------------------------------*/
+
+ /*------------------------------------------------------------------------*/
+ /* Code */
+ /*------------------------------------------------------------------------*/
+ AMEC_DBG("\tAMEC Slave State 1.1: Core Data[%d, %d, %d]\n",
+ G_sensor_update_pattern[4][0],
+ G_sensor_update_pattern[4][1],
+ G_sensor_update_pattern[4][2]);
+
+ //-------------------------------------------------------
+ // Update Proc Core sensors (for this substate)
+ //-------------------------------------------------------
+ amec_update_proc_core_group(4);
+}
+
+
+void amec_slv_substate_1_2(void)
+{
+ /*------------------------------------------------------------------------*/
+ /* Local Variables */
+ /*------------------------------------------------------------------------*/
+
+ /*------------------------------------------------------------------------*/
+ /* Code */
+ /*------------------------------------------------------------------------*/
+ AMEC_DBG("\tAMEC Slave State 1.2: Core Data[%d, %d, %d]\n",
+ G_sensor_update_pattern[0][0],
+ G_sensor_update_pattern[0][1],
+ G_sensor_update_pattern[0][2]);
+
+ //-------------------------------------------------------
+ // Update Proc Core sensors (for this substate)
+ //-------------------------------------------------------
+ amec_update_proc_core_group(0);
+}
+
+void amec_slv_substate_1_3(void)
+{
+ /*------------------------------------------------------------------------*/
+ /* Local Variables */
+ /*------------------------------------------------------------------------*/
+
+ /*------------------------------------------------------------------------*/
+ /* Code */
+ /*------------------------------------------------------------------------*/
+ AMEC_DBG("\tAMEC Slave State 1.3: Core Data[%d, %d, %d]\n",
+ G_sensor_update_pattern[4][0],
+ G_sensor_update_pattern[4][1],
+ G_sensor_update_pattern[4][2]);
+
+ //-------------------------------------------------------
+ // Update Proc Core sensors (for this substate)
+ //-------------------------------------------------------
+ amec_update_proc_core_group(4);
+}
+
+
+void amec_slv_substate_1_4(void)
+{
+ /*------------------------------------------------------------------------*/
+ /* Local Variables */
+ /*------------------------------------------------------------------------*/
+
+ /*------------------------------------------------------------------------*/
+ /* Code */
+ /*------------------------------------------------------------------------*/
+ AMEC_DBG("\tAMEC Slave State 1.4: Core Data[%d, %d, %d]\n",
+ G_sensor_update_pattern[0][0],
+ G_sensor_update_pattern[0][1],
+ G_sensor_update_pattern[0][2]);
+
+ //-------------------------------------------------------
+ // Update Proc Core sensors (for this substate)
+ //-------------------------------------------------------
+ amec_update_proc_core_group(0);
+}
+
+void amec_slv_substate_1_5(void)
+{
+ /*------------------------------------------------------------------------*/
+ /* Local Variables */
+ /*------------------------------------------------------------------------*/
+
+ /*------------------------------------------------------------------------*/
+ /* Code */
+ /*------------------------------------------------------------------------*/
+ AMEC_DBG("\tAMEC Slave State 1.5: Core Data[%d, %d, %d]\n",
+ G_sensor_update_pattern[4][0],
+ G_sensor_update_pattern[4][1],
+ G_sensor_update_pattern[4][2]);
+
+
+ //-------------------------------------------------------
+ // Update Proc Core sensors (for this substate)
+ //-------------------------------------------------------
+ amec_update_proc_core_group(4);
+}
+
+
+void amec_slv_substate_1_6(void)
+{
+ /*------------------------------------------------------------------------*/
+ /* Local Variables */
+ /*------------------------------------------------------------------------*/
+
+ /*------------------------------------------------------------------------*/
+ /* Code */
+ /*------------------------------------------------------------------------*/
+ AMEC_DBG("\tAMEC Slave State 1.6: Core Data[%d, %d, %d]\n",
+ G_sensor_update_pattern[0][0],
+ G_sensor_update_pattern[0][1],
+ G_sensor_update_pattern[0][2]);
+
+ //-------------------------------------------------------
+ // Update Proc Core sensors (for this substate)
+ //-------------------------------------------------------
+ amec_update_proc_core_group(0);
+}
+
+void amec_slv_substate_1_7(void)
+{
+ /*------------------------------------------------------------------------*/
+ /* Local Variables */
+ /*------------------------------------------------------------------------*/
+
+ /*------------------------------------------------------------------------*/
+ /* Code */
+ /*------------------------------------------------------------------------*/
+ AMEC_DBG("\tAMEC Slave State 1.7: Core Data[%d, %d, %d]\n",
+ G_sensor_update_pattern[4][0],
+ G_sensor_update_pattern[4][1],
+ G_sensor_update_pattern[4][2]);
+
+ //-------------------------------------------------------
+ // Update Proc Core sensors (for this substate)
+ //-------------------------------------------------------
+ amec_update_proc_core_group(4);
+}
+
+
+// Function Specification
+//
+// Name: amec_slv_substate_3_0
+// amec_slv_substate_3_1
+// amec_slv_substate_3_2
+// amec_slv_substate_3_3
+// amec_slv_substate_3_4
+// amec_slv_substate_3_5
+// amec_slv_substate_3_6
+// amec_slv_substate_3_7
+//
+// Description: slave substate amec_slv_substate_3_0
+// slave substate amec_slv_substate_3_1
+// slave substate amec_slv_substate_3_2
+// slave substate amec_slv_substate_3_3
+// slave substate amec_slv_substate_3_4
+// slave substate amec_slv_substate_3_5
+// slave substate amec_slv_substate_3_6
+// slave substate amec_slv_substate_3_7
//
// End Function Specification
-void amec_slv_substate_6_0(void)
+void amec_slv_substate_3_0(void)
+{
+ /*------------------------------------------------------------------------*/
+ /* Local Variables */
+ /*------------------------------------------------------------------------*/
+
+ /*------------------------------------------------------------------------*/
+ /* Code */
+ /*------------------------------------------------------------------------*/
+ AMEC_DBG("\tAMEC Slave State 3.0: Core Data[%d, %d, %d]\n",
+ G_sensor_update_pattern[1][0],
+ G_sensor_update_pattern[1][1],
+ G_sensor_update_pattern[1][2]);
+
+ //-------------------------------------------------------
+ // Update Proc Core sensors (for this substate)
+ //-------------------------------------------------------
+ amec_update_proc_core_group(1);
+}
+
+void amec_slv_substate_3_1(void)
{
/*------------------------------------------------------------------------*/
/* Local Variables */
@@ -712,13 +958,185 @@ void amec_slv_substate_6_0(void)
/*------------------------------------------------------------------------*/
/* Code */
/*------------------------------------------------------------------------*/
- AMEC_DBG("\tAMEC Slave State 6.0\n");
+ AMEC_DBG("\tAMEC Slave State 3.1: Core Data[%d, %d, %d]\n",
+ G_sensor_update_pattern[5][0],
+ G_sensor_update_pattern[5][1],
+ G_sensor_update_pattern[5][2]);
+
+ //-------------------------------------------------------
+ // Update Proc Core sensors (for this substate)
+ //-------------------------------------------------------
+ amec_update_proc_core_group(5);
+}
+void amec_slv_substate_3_2(void)
+{
+ /*------------------------------------------------------------------------*/
+ /* Local Variables */
+ /*------------------------------------------------------------------------*/
+
+ /*------------------------------------------------------------------------*/
+ /* Code */
+ /*------------------------------------------------------------------------*/
+ AMEC_DBG("\tAMEC Slave State 3.2: Core Data[%d, %d, %d]\n",
+ G_sensor_update_pattern[1][0],
+ G_sensor_update_pattern[1][1],
+ G_sensor_update_pattern[1][2]);
+
+ //-------------------------------------------------------
+ // Update Proc Core sensors (for this substate)
+ //-------------------------------------------------------
+ amec_update_proc_core_group(1);
+}
+
+void amec_slv_substate_3_3(void)
+{
+ /*------------------------------------------------------------------------*/
+ /* Local Variables */
+ /*------------------------------------------------------------------------*/
+
+ /*------------------------------------------------------------------------*/
+ /* Code */
+ /*------------------------------------------------------------------------*/
+ AMEC_DBG("\tAMEC Slave State 3.3: Core Data[%d, %d, %d]\n",
+ G_sensor_update_pattern[5][0],
+ G_sensor_update_pattern[5][1],
+ G_sensor_update_pattern[5][2]);
+
+ //-------------------------------------------------------
+ // Update Proc Core sensors (for this substate)
+ //-------------------------------------------------------
+ amec_update_proc_core_group(5);
+}
+
+void amec_slv_substate_3_4(void)
+{
+ /*------------------------------------------------------------------------*/
+ /* Local Variables */
+ /*------------------------------------------------------------------------*/
+
+ /*------------------------------------------------------------------------*/
+ /* Code */
+ /*------------------------------------------------------------------------*/
+ AMEC_DBG("\tAMEC Slave State 3.4: Core Data[%d, %d, %d]\n",
+ G_sensor_update_pattern[1][0],
+ G_sensor_update_pattern[1][1],
+ G_sensor_update_pattern[1][2]);
+
+ //-------------------------------------------------------
+ // Update Proc Core sensors (for this substate)
+ //-------------------------------------------------------
+ amec_update_proc_core_group(1);
+}
+
+void amec_slv_substate_3_5(void)
+{
+ /*------------------------------------------------------------------------*/
+ /* Local Variables */
+ /*------------------------------------------------------------------------*/
+
+ /*------------------------------------------------------------------------*/
+ /* Code */
+ /*------------------------------------------------------------------------*/
+ AMEC_DBG("\tAMEC Slave State 3.5: Core Data[%d, %d, %d]\n",
+ G_sensor_update_pattern[5][0],
+ G_sensor_update_pattern[5][1],
+ G_sensor_update_pattern[5][2]);
+
+ //-------------------------------------------------------
+ // Update Proc Core sensors (for this substate)
+ //-------------------------------------------------------
+ amec_update_proc_core_group(5);
+}
+
+void amec_slv_substate_3_6(void)
+{
+ /*------------------------------------------------------------------------*/
+ /* Local Variables */
+ /*------------------------------------------------------------------------*/
+
+ /*------------------------------------------------------------------------*/
+ /* Code */
+ /*------------------------------------------------------------------------*/
+ AMEC_DBG("\tAMEC Slave State 3.6: Core Data[%d, %d, %d]\n",
+ G_sensor_update_pattern[1][0],
+ G_sensor_update_pattern[1][1],
+ G_sensor_update_pattern[1][2]);
+
+ //-------------------------------------------------------
+ // Update Proc Core sensors (for this substate)
+ //-------------------------------------------------------
+ amec_update_proc_core_group(1);
+}
+
+
+void amec_slv_substate_3_7(void)
+{
+ /*------------------------------------------------------------------------*/
+ /* Local Variables */
+ /*------------------------------------------------------------------------*/
+
+ /*------------------------------------------------------------------------*/
+ /* Code */
+ /*------------------------------------------------------------------------*/
+ AMEC_DBG("\tAMEC Slave State 3.7: Core Data[%d, %d, %d]\n",
+ G_sensor_update_pattern[5][0],
+ G_sensor_update_pattern[5][1],
+ G_sensor_update_pattern[5][2]);
+
+ //-------------------------------------------------------
+ // Update Proc Core sensors (for this substate)
+ //-------------------------------------------------------
+ amec_update_proc_core_group(5);
+}
+
+
+// Function Specification
+//
+// Name: amec_slv_substate_5_0
+// amec_slv_substate_5_1
+// amec_slv_substate_5_2
+// amec_slv_substate_5_3
+// amec_slv_substate_5_4
+// amec_slv_substate_5_5
+// amec_slv_substate_5_6
+// amec_slv_substate_5_7
+//
+// Description: slave substate amec_slv_substate_5_0
+// slave substate amec_slv_substate_5_1
+// slave substate amec_slv_substate_5_2
+// slave substate amec_slv_substate_5_3
+// slave substate amec_slv_substate_5_4
+// slave substate amec_slv_substate_5_5
+// slave substate amec_slv_substate_5_6
+// slave substate amec_slv_substate_5_7
+//
+// End Function Specification
+void amec_slv_substate_5_0(void)
+{
+ /*------------------------------------------------------------------------*/
+ /* Local Variables */
+ /*------------------------------------------------------------------------*/
+
+ /*------------------------------------------------------------------------*/
+ /* Code */
+ /*------------------------------------------------------------------------*/
+ AMEC_DBG("\tAMEC Slave State 5.0: Core Data[%d, %d, %d]\n",
+ G_sensor_update_pattern[2][0],
+ G_sensor_update_pattern[2][1],
+ G_sensor_update_pattern[2][2]);
+
+ //-------------------------------------------------------
+ // Update Proc Core sensors (for this substate)
+ //-------------------------------------------------------
+ amec_update_proc_core_group(2);
+
+// @TODO - TEMP: Not Ready yet in Phase 1.
// Call processor-based thermal controller
- amec_controller_proc_thermal();
+// amec_controller_proc_thermal();
}
-void amec_slv_substate_6_1(void)
+void amec_slv_substate_5_1(void)
{
/*------------------------------------------------------------------------*/
/* Local Variables */
@@ -727,18 +1145,145 @@ void amec_slv_substate_6_1(void)
/*------------------------------------------------------------------------*/
/* Code */
/*------------------------------------------------------------------------*/
- AMEC_DBG("\tAMEC Slave State 6.1\n");
+ AMEC_DBG("\tAMEC Slave State 5.1: Core Data[%d, %d, %d]\n",
+ G_sensor_update_pattern[6][0],
+ G_sensor_update_pattern[6][1],
+ G_sensor_update_pattern[6][2]);
+
+ //-------------------------------------------------------
+ // Update Proc Core sensors (for this substate)
+ //-------------------------------------------------------
+ amec_update_proc_core_group(6);
+// @TODO - TEMP: Not Ready yet in Phase 1.
// Call controller on VRHOT signal from processor regulator
- amec_controller_vrhotproc();
+// amec_controller_vrhotproc();
+}
+
+
+void amec_slv_substate_5_2(void)
+{
+ /*------------------------------------------------------------------------*/
+ /* Local Variables */
+ /*------------------------------------------------------------------------*/
+
+ /*------------------------------------------------------------------------*/
+ /* Code */
+ /*------------------------------------------------------------------------*/
+ AMEC_DBG("\tAMEC Slave State 5.2: Core Data[%d, %d, %d]\n",
+ G_sensor_update_pattern[2][0],
+ G_sensor_update_pattern[2][1],
+ G_sensor_update_pattern[2][2]);
+
+ //-------------------------------------------------------
+ // Update Proc Core sensors (for this substate)
+ //-------------------------------------------------------
+ amec_update_proc_core_group(2);
+}
+
+void amec_slv_substate_5_3(void)
+{
+ /*------------------------------------------------------------------------*/
+ /* Local Variables */
+ /*------------------------------------------------------------------------*/
+
+ /*------------------------------------------------------------------------*/
+ /* Code */
+ /*------------------------------------------------------------------------*/
+ AMEC_DBG("\tAMEC Slave State 5.3: Core Data[%d, %d, %d]\n",
+ G_sensor_update_pattern[6][0],
+ G_sensor_update_pattern[6][1],
+ G_sensor_update_pattern[6][2]);
+
+
+ //-------------------------------------------------------
+ // Update Proc Core sensors (for this substate)
+ //-------------------------------------------------------
+ amec_update_proc_core_group(6);
+}
+
+
+void amec_slv_substate_5_4(void)
+{
+ /*------------------------------------------------------------------------*/
+ /* Local Variables */
+ /*------------------------------------------------------------------------*/
+
+ /*------------------------------------------------------------------------*/
+ /* Code */
+ /*------------------------------------------------------------------------*/
+ AMEC_DBG("\tAMEC Slave State 5.4: Core Data[%d, %d, %d]\n",
+ G_sensor_update_pattern[2][0],
+ G_sensor_update_pattern[2][1],
+ G_sensor_update_pattern[2][2]);
+
+ //-------------------------------------------------------
+ // Update Proc Core sensors (for this substate)
+ //-------------------------------------------------------
+ amec_update_proc_core_group(2);
+}
+
+void amec_slv_substate_5_5(void)
+{
+ /*------------------------------------------------------------------------*/
+ /* Local Variables */
+ /*------------------------------------------------------------------------*/
+
+ /*------------------------------------------------------------------------*/
+ /* Code */
+ /*------------------------------------------------------------------------*/
+ AMEC_DBG("\tAMEC Slave State 5.5: Core Data[%d, %d, %d]\n",
+ G_sensor_update_pattern[6][0],
+ G_sensor_update_pattern[6][1],
+ G_sensor_update_pattern[6][2]);
+
+ //-------------------------------------------------------
+ // Update Proc Core sensors (for this substate)
+ //-------------------------------------------------------
+ amec_update_proc_core_group(6);
+}
+
+
+void amec_slv_substate_5_6(void)
+{
+ /*------------------------------------------------------------------------*/
+ /* Local Variables */
+ /*------------------------------------------------------------------------*/
+
+ /*------------------------------------------------------------------------*/
+ /* Code */
+ /*------------------------------------------------------------------------*/
+ AMEC_DBG("\tAMEC Slave State 5.6: Core Data[%d, %d, %d]\n",
+ G_sensor_update_pattern[2][0],
+ G_sensor_update_pattern[2][1],
+ G_sensor_update_pattern[2][2]);
+
+ //-------------------------------------------------------
+ // Update Proc Core sensors (for this substate)
+ //-------------------------------------------------------
+ amec_update_proc_core_group(2);
+}
+
+void amec_slv_substate_5_7(void)
+{
+ /*------------------------------------------------------------------------*/
+ /* Local Variables */
+ /*------------------------------------------------------------------------*/
+
+ /*------------------------------------------------------------------------*/
+ /* Code */
+ /*------------------------------------------------------------------------*/
+ AMEC_DBG("\tAMEC Slave State 5.7: Core Data[%d, %d, %d]\n",
+ G_sensor_update_pattern[6][0],
+ G_sensor_update_pattern[6][1],
+ G_sensor_update_pattern[6][2]);
+
+ //-------------------------------------------------------
+ // Update Proc Core sensors (for this substate)
+ //-------------------------------------------------------
+ amec_update_proc_core_group(6);
}
-void amec_slv_substate_6_2(void){AMEC_DBG("\tAMEC Slave State 6.2\n");}
-void amec_slv_substate_6_3(void){AMEC_DBG("\tAMEC Slave State 6.3\n");}
-void amec_slv_substate_6_4(void){AMEC_DBG("\tAMEC Slave State 6.4\n");}
-void amec_slv_substate_6_5(void){AMEC_DBG("\tAMEC Slave State 6.5\n");}
-void amec_slv_substate_6_6(void){AMEC_DBG("\tAMEC Slave State 6.6\n");}
-void amec_slv_substate_6_7(void){AMEC_DBG("\tAMEC Slave State 6.7\n");}
// Function Specification
//
@@ -770,21 +1315,147 @@ void amec_slv_substate_7_0(void)
/*------------------------------------------------------------------------*/
/* Code */
/*------------------------------------------------------------------------*/
- AMEC_DBG("\tAMEC Slave State 7.0\n");
+ AMEC_DBG("\tAMEC Slave State 7.0: Core Data[%d, %d, %d]\n",
+ G_sensor_update_pattern[3][0],
+ G_sensor_update_pattern[3][1],
+ G_sensor_update_pattern[3][2]);
+
+ //-------------------------------------------------------
+ // Update Proc Core sensors (for this substate)
+ //-------------------------------------------------------
+ amec_update_proc_core_group(3);
+// @TODO - TEMP: Not Ready yet in Phase 1.
+/*
// Call memory thermal controller based on DIMM temperature
amec_controller_dimm_thermal();
// Call memory thermal controller based on Centaur temperature
amec_controller_centaur_thermal();
+*/
+
+}
+
+void amec_slv_substate_7_1(void)
+{
+ /*------------------------------------------------------------------------*/
+ /* Local Variables */
+ /*------------------------------------------------------------------------*/
+
+ /*------------------------------------------------------------------------*/
+ /* Code */
+ /*------------------------------------------------------------------------*/
+ AMEC_DBG("\tAMEC Slave State 7.1: Core Data[%d, %d, %d]\n",
+ G_sensor_update_pattern[7][0],
+ G_sensor_update_pattern[7][1],
+ G_sensor_update_pattern[7][2]);
+
+ //-------------------------------------------------------
+ // Update Proc Core sensors (for this substate)
+ //-------------------------------------------------------
+ amec_update_proc_core_group(7);
+}
+
+void amec_slv_substate_7_2(void)
+{
+ /*------------------------------------------------------------------------*/
+ /* Local Variables */
+ /*------------------------------------------------------------------------*/
+
+ /*------------------------------------------------------------------------*/
+ /* Code */
+ /*------------------------------------------------------------------------*/
+ AMEC_DBG("\tAMEC Slave State 7.2: Core Data[%d, %d, %d]\n",
+ G_sensor_update_pattern[3][0],
+ G_sensor_update_pattern[3][1],
+ G_sensor_update_pattern[3][2]);
+
+ //-------------------------------------------------------
+ // Update Proc Core sensors (for this substate)
+ //-------------------------------------------------------
+ amec_update_proc_core_group(3);
+}
+
+void amec_slv_substate_7_3(void)
+{
+ /*------------------------------------------------------------------------*/
+ /* Local Variables */
+ /*------------------------------------------------------------------------*/
+
+ /*------------------------------------------------------------------------*/
+ /* Code */
+ /*------------------------------------------------------------------------*/
+ AMEC_DBG("\tAMEC Slave State 7.3: Core Data[%d, %d, %d]\n",
+ G_sensor_update_pattern[7][0],
+ G_sensor_update_pattern[7][1],
+ G_sensor_update_pattern[7][2]);
+
+ //-------------------------------------------------------
+ // Update Proc Core sensors (for this substate)
+ //-------------------------------------------------------
+ amec_update_proc_core_group(7);
+}
+
+void amec_slv_substate_7_4(void)
+{
+ /*------------------------------------------------------------------------*/
+ /* Local Variables */
+ /*------------------------------------------------------------------------*/
+
+ /*------------------------------------------------------------------------*/
+ /* Code */
+ /*------------------------------------------------------------------------*/
+ AMEC_DBG("\tAMEC Slave State 7.4: Core Data[%d, %d, %d]\n",
+ G_sensor_update_pattern[3][0],
+ G_sensor_update_pattern[3][1],
+ G_sensor_update_pattern[3][2]);
+
+ //-------------------------------------------------------
+ // Update Proc Core sensors (for this substate)
+ //-------------------------------------------------------
+ amec_update_proc_core_group(3);
+}
+
+void amec_slv_substate_7_5(void)
+{
+ /*------------------------------------------------------------------------*/
+ /* Local Variables */
+ /*------------------------------------------------------------------------*/
+
+ /*------------------------------------------------------------------------*/
+ /* Code */
+ /*------------------------------------------------------------------------*/
+ AMEC_DBG("\tAMEC Slave State 7.5: Core Data[%d, %d, %d]\n",
+ G_sensor_update_pattern[7][0],
+ G_sensor_update_pattern[7][1],
+ G_sensor_update_pattern[7][2]);
+
+ //-------------------------------------------------------
+ // Update Proc Core sensors (for this substate)
+ //-------------------------------------------------------
+ amec_update_proc_core_group(7);
+}
+
+void amec_slv_substate_7_6(void)
+{
+ /*------------------------------------------------------------------------*/
+ /* Local Variables */
+ /*------------------------------------------------------------------------*/
+
+ /*------------------------------------------------------------------------*/
+ /* Code */
+ /*------------------------------------------------------------------------*/
+ AMEC_DBG("\tAMEC Slave State 7.6: Core Data[%d, %d, %d]\n",
+ G_sensor_update_pattern[3][0],
+ G_sensor_update_pattern[3][1],
+ G_sensor_update_pattern[3][2]);
+
+ //-------------------------------------------------------
+ // Update Proc Core sensors (for this substate)
+ //-------------------------------------------------------
+ amec_update_proc_core_group(3);
}
-void amec_slv_substate_7_1(void){AMEC_DBG("\tAMEC Slave State 7.1\n");}
-void amec_slv_substate_7_2(void){AMEC_DBG("\tAMEC Slave State 7.2\n");}
-void amec_slv_substate_7_3(void){AMEC_DBG("\tAMEC Slave State 7.3\n");}
-void amec_slv_substate_7_4(void){AMEC_DBG("\tAMEC Slave State 7.4\n");}
-void amec_slv_substate_7_5(void){AMEC_DBG("\tAMEC Slave State 7.5\n");}
-void amec_slv_substate_7_6(void){AMEC_DBG("\tAMEC Slave State 7.6\n");}
void amec_slv_substate_7_7(void)
{
@@ -795,12 +1466,31 @@ void amec_slv_substate_7_7(void)
/*------------------------------------------------------------------------*/
/* Code */
/*------------------------------------------------------------------------*/
- AMEC_DBG("\tAMEC Slave State 7.7\n");
+ AMEC_DBG("\tAMEC Slave State 7.7: Core Data[%d, %d, %d]\n",
+ G_sensor_update_pattern[7][0],
+ G_sensor_update_pattern[7][1],
+ G_sensor_update_pattern[7][2]);
- // Call health monitor to check for processor error temperature conditions
- amec_health_check_proc_temp();
+ //-------------------------------------------------------
+ // Update Proc Core sensors (for this substate)
+ //-------------------------------------------------------
+ amec_update_proc_core_group(7);
+
+// @TODO - TEMP: Not Ready yet in Phase 1.
+// Call health monitor to check for processor error temperature conditions
+// amec_health_check_proc_temp();
}
-#endif // #if 0 - @TODO - TEMP: Not Ready yet in Phase 1.
+
+void amec_update_proc_core_group(uint8_t group)
+{
+ int i;
+ for(i =0; i < CORES_PER_STATE; i++)
+ {
+ amec_update_proc_core_sensors(G_sensor_update_pattern[group][i]);
+ }
+}
+
+
/*----------------------------------------------------------------------------*/
/* End */
/*----------------------------------------------------------------------------*/
diff --git a/src/occ_405/amec/amec_slave_smh.h b/src/occ_405/amec/amec_slave_smh.h
index 884d480..729a2ba 100755
--- a/src/occ_405/amec/amec_slave_smh.h
+++ b/src/occ_405/amec/amec_slave_smh.h
@@ -72,6 +72,8 @@ extern bool G_apss_lower_pmax_rail;
void amec_slv_check_apss_fail(void);
void amec_slv_pstate_uplift_check(void);
+void amec_update_proc_core_group(uint8_t);
+
// PRE: slave common tasks
void amec_slv_common_tasks_pre(void);
// POST: slave common tasks
@@ -87,15 +89,35 @@ void amec_slv_state_5(void);
void amec_slv_state_6(void);
void amec_slv_state_7(void);
-// Slave SubState 6
-void amec_slv_substate_6_0(void);
-void amec_slv_substate_6_1(void);
-void amec_slv_substate_6_2(void);
-void amec_slv_substate_6_3(void);
-void amec_slv_substate_6_4(void);
-void amec_slv_substate_6_5(void);
-void amec_slv_substate_6_6(void);
-void amec_slv_substate_6_7(void);
+// Slave SubState 1
+void amec_slv_substate_1_0(void);
+void amec_slv_substate_1_1(void);
+void amec_slv_substate_1_2(void);
+void amec_slv_substate_1_3(void);
+void amec_slv_substate_1_4(void);
+void amec_slv_substate_1_5(void);
+void amec_slv_substate_1_6(void);
+void amec_slv_substate_1_7(void);
+
+// Slave SubState 3
+void amec_slv_substate_3_0(void);
+void amec_slv_substate_3_1(void);
+void amec_slv_substate_3_2(void);
+void amec_slv_substate_3_3(void);
+void amec_slv_substate_3_4(void);
+void amec_slv_substate_3_5(void);
+void amec_slv_substate_3_6(void);
+void amec_slv_substate_3_7(void);
+
+// Slave SubState 5
+void amec_slv_substate_5_0(void);
+void amec_slv_substate_5_1(void);
+void amec_slv_substate_5_2(void);
+void amec_slv_substate_5_3(void);
+void amec_slv_substate_5_4(void);
+void amec_slv_substate_5_5(void);
+void amec_slv_substate_5_6(void);
+void amec_slv_substate_5_7(void);
// Slave SubState 7
void amec_slv_substate_7_0(void);
diff --git a/src/occ_405/amec/amec_smh.h b/src/occ_405/amec/amec_smh.h
index ff03f4f..9588aa7 100755
--- a/src/occ_405/amec/amec_smh.h
+++ b/src/occ_405/amec/amec_smh.h
@@ -56,12 +56,13 @@
#define AMEC_INITIAL_STATE 0
+// We cycle through all states twice per tick cycle (8 states, 16 ticks)
#define AMEC_SMH_STATES_PER_LVL 8
// Number of uS in 1 RTL tick (250=250us)
#define AMEC_US_PER_TICK MICS_PER_TICK
+
// Number of uS in 1 full period of the AMEC State Machine
-// We cycle through the 8 states twice per tick cycle (16 ticks), so 8 * 250us = 2ms
#define AMEC_US_PER_SMH_PERIOD (AMEC_SMH_STATES_PER_LVL * MICS_PER_TICK)
// Number of <AMEC_US_PER_SMH_PERIOD> that happen in 1 second
#define AMEC_SMH_PERIODS_IN_1SEC (10000000 / AMEC_US_PER_SMH_PERIOD)
diff --git a/src/occ_405/amec/amec_sys.h b/src/occ_405/amec/amec_sys.h
index 77cf382..f305669 100755
--- a/src/occ_405/amec/amec_sys.h
+++ b/src/occ_405/amec/amec_sys.h
@@ -39,7 +39,7 @@
#include <amec_oversub.h>
#include <amec_amester.h>
#include <amec_pcap.h>
-
+#include <amec_smh.h>
//*************************************************************************
// Externs
//*************************************************************************
@@ -54,8 +54,8 @@
// 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 States in the AMEC State Machine (= AMEC_SMH_STATES_PER_LVL)
+#define NUM_AMEC_SMH_STATES AMEC_SMH_STATES_PER_LVL
// Number of PORE-GPE Engines
#define NUM_GPE_ENGINES 2
diff --git a/src/occ_405/proc/proc_data.c b/src/occ_405/proc/proc_data.c
index 68aae42..17fb40d 100755
--- a/src/occ_405/proc/proc_data.c
+++ b/src/occ_405/proc/proc_data.c
@@ -473,7 +473,7 @@ void print_core_data_sensors(uint8_t core)
if( l_core_data != NULL )
{
PROC_DBG("-------------------------------");
- PROC_DBG("Core [%x] Sensors Data", core);
+ PROC_DBG("Core [%d] Sensors Data", core);
PROC_DBG("Sensor Core[0] reading: 0x%04X [Valid:%d]", l_core_data->dts.core[0].fields.reading, l_core_data->dts.core[0].fields.valid);
PROC_DBG("Sensor Core[1] reading: 0x%04X [Valid:%d]", l_core_data->dts.core[1].fields.reading, l_core_data->dts.core[1].fields.valid);
PROC_DBG("Sensor Cache reading: 0x%04X [Valid:%d]", l_core_data->dts.cache.fields.reading, l_core_data->dts.cache.fields.valid);
OpenPOWER on IntegriCloud