diff options
author | Andres Lugo-Reyes <aalugore@us.ibm.com> | 2016-12-12 14:48:59 -0600 |
---|---|---|
committer | William A. Bryan <wilbryan@us.ibm.com> | 2016-12-15 15:49:58 -0500 |
commit | 08961278f496e058964d217593a06303ea96b4f3 (patch) | |
tree | 1291d786b08ee9aea76819924a79a4ba5bcadc39 /src/occ_405/dcom | |
parent | e350693c96096f1e607423c974082bf3d0b2a7ae (diff) | |
download | talos-occ-08961278f496e058964d217593a06303ea96b4f3.tar.gz talos-occ-08961278f496e058964d217593a06303ea96b4f3.zip |
dcom/ thread/ rtls/ TODO clean up
Also moved files common to occ_405/, occ_gpe0/,
occ_gpe1/, etc, to a new common directory to keep
src/ clean
Change-Id: Ib45d70d048a135832592953c955a325d20fa19ae
RTC: 163363
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/33640
Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@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/dcom')
-rwxr-xr-x | src/occ_405/dcom/dcom.c | 10 | ||||
-rwxr-xr-x | src/occ_405/dcom/dcom.h | 42 | ||||
-rw-r--r-- | src/occ_405/dcom/dcomMasterTx.c | 42 | ||||
-rw-r--r-- | src/occ_405/dcom/dcomSlaveRx.c | 1 | ||||
-rwxr-xr-x | src/occ_405/dcom/dcomSlaveTx.c | 5 | ||||
-rwxr-xr-x | src/occ_405/dcom/dcom_thread.c | 4 |
6 files changed, 38 insertions, 66 deletions
diff --git a/src/occ_405/dcom/dcom.c b/src/occ_405/dcom/dcom.c index 6c086a2..399bfe1 100755 --- a/src/occ_405/dcom/dcom.c +++ b/src/occ_405/dcom/dcom.c @@ -40,7 +40,7 @@ #include <amec_data.h> #include <amec_sys.h> #include "scom.h" -#include "pss_constants.h" // @TODO: move with HW registers? +#include "pss_constants.h" extern uint8_t G_occ_interrupt_type; @@ -207,11 +207,11 @@ void dcom_initialize_pbax_queues(void) //disabled pbax send before configuring PBAX pbax_send_disable(); - // TODO: With the new design, PBAX node and chip IDs are set by hostboot - // Remove these ID parameters from the pbax_configure function? + // Node and Chip IDs are set by Hostboot and are not needed + // for pbax_configure l_rc = pbax_configure(G_occ_role, // master G_pbax_id.node_id, // node id - G_pbax_id.chip_id, // chipd id + G_pbax_id.chip_id, // chip id PBAX_CONFIGURE_RCV_GROUP_MASK); // group_mask if(l_rc != 0) @@ -267,7 +267,7 @@ void dcom_initialize_pbax_queues(void) { l_rc = pbax_target_create( &G_pbax_multicast_target, // target, PBAX_BROADCAST, // type - PBAX_SYSTEM, // scope TODO + PBAX_SYSTEM, // scope 0, // queue G_pbax_id.node_id, // node PBAX_BROADCAST_GROUP, // chip_or_group diff --git a/src/occ_405/dcom/dcom.h b/src/occ_405/dcom/dcom.h index 3ce5685..a5ffc1a 100755 --- a/src/occ_405/dcom/dcom.h +++ b/src/occ_405/dcom/dcom.h @@ -102,7 +102,7 @@ // general defines #define TOD_SIZE 6 #define NUM_TOD_SENSORS 3 -#define SLV_INBOX_RSV_SIZE 68 +#define SLV_INBOX_RSV_SIZE 150 #define SLV_MAILBOX_SIZE 32 #define SLV_OUTBOX_RSV_SIZE 618 #define DOORBELL_RSV_SIZE 1 @@ -121,7 +121,6 @@ typedef struct uint8_t chip_id :2; } pob_id_t; -// TODO may change in the future // For now pbax structure is same as pob id structure typedef pob_id_t pbax_id_t; @@ -129,7 +128,7 @@ typedef pob_id_t pbax_id_t; typedef struct { // Packet Type & Sequence Information - uint8_t seq; // [0] + uint8_t seq; // [0] - 1 byte uint8_t version; // [1] // From APSS Power Measurement @@ -139,33 +138,28 @@ typedef struct uint16_t altitude; // [40] - 2 bytes uint8_t tod[ TOD_SIZE ]; // [42] - 6 bytes - // AMEC Actuators - uint16_t freq250usp0cy[MAX_CORES]; // [48] - 48 bytes - uint16_t memsp2msP0MxCyPz[MAX_CENTAUR_THROTTLES]; // [96] - 16 bytes - uint16_t memsp2msP0IGx[MAX_MEM_INTERLEAVE_GROUP_THROTTLES]; // [112] - 16 bytes - // Manufacturing parameters - uint16_t foverride; // [128] - 2 bytes - uint8_t foverride_enable; // [130] - 1 byte - uint8_t emulate_oversub; // [131] - 1 byte + uint16_t foverride; // [48] - 2 bytes + uint8_t foverride_enable; // [50] - 1 byte + uint8_t emulate_oversub; // [51] - 1 byte // Idle Power Saver parameters - uint16_t ips_freq_request; // [132] - 2 bytes + uint16_t ips_freq_request; // [52] - 2 bytes // DPS Tunable Parameters - uint16_t alpha_up; // [134] - 2 bytes - uint16_t alpha_down; // [136] - 2 bytes - uint16_t sample_count_util; // [138] - 2 bytes - uint16_t step_up; // [140] - 2 bytes - uint16_t step_down; // [142] - 2 bytes - uint16_t epsilon_perc; // [144] - 2 bytes - uint16_t tlutil; // [146] - 2 bytes - uint8_t tunable_param_overwrite; // [148] - 1 byte + uint16_t alpha_up; // [54] - 2 bytes + uint16_t alpha_down; // [56] - 2 bytes + uint16_t sample_count_util; // [58] - 2 bytes + uint16_t step_up; // [60] - 2 bytes + uint16_t step_down; // [62] - 2 bytes + uint16_t epsilon_perc; // [64] - 2 bytes + uint16_t tlutil; // [66] - 2 bytes + uint8_t tunable_param_overwrite; // [68] - 1 byte // Soft frequency boundaries - uint16_t soft_fmin; // [149] - 2 bytes - uint8_t pad; // [151] - 1 bytes - uint16_t soft_fmax; // [152] - 2 bytes + uint16_t soft_fmin; // [69] - 2 bytes + uint8_t pad; // [71] - 1 bytes + uint16_t soft_fmax; // [72] - 2 bytes // Reserved Bytes union @@ -176,7 +170,7 @@ typedef struct freqConfig_t sys_mode_freq; uint8_t tb_record; }; - uint8_t reserved[ SLV_INBOX_RSV_SIZE ]; // [154] - 68 bytes + uint8_t reserved[ SLV_INBOX_RSV_SIZE ]; // [74] - 150 bytes }; // General Firmware Message Passing diff --git a/src/occ_405/dcom/dcomMasterTx.c b/src/occ_405/dcom/dcomMasterTx.c index 160e661..116b0e4 100644 --- a/src/occ_405/dcom/dcomMasterTx.c +++ b/src/occ_405/dcom/dcomMasterTx.c @@ -78,9 +78,6 @@ uint32_t dcom_build_slv_inbox(void) // Locals uint32_t l_addr_of_slv_inbox_in_main_mem = 0; uint32_t l_slv_idx = 0; - uint32_t l_core_idx = 0; - uint32_t l_cntr_idx = 0; - uint32_t l_mem_intr_idx = 0; static uint8_t L_seq = 0xFF; @@ -101,39 +98,20 @@ uint32_t dcom_build_slv_inbox(void) G_dcom_slv_inbox_tx[l_slv_idx].seq = L_seq; G_dcom_slv_inbox_tx[l_slv_idx].version = 0; - // TODO: adc,gpio,and tod are only sent here for sanity check and for bringup only. - // If the values are needed by the slaves, they should use the values sent in the doorbell. - // Probably remove them after bringup is complete. + memcpy( G_dcom_slv_inbox_tx[l_slv_idx].adc, + G_apss_pwr_meas.adc, + sizeof( G_dcom_slv_inbox_tx[l_slv_idx].adc)); - memcpy( G_dcom_slv_inbox_tx[l_slv_idx].adc, G_apss_pwr_meas.adc, sizeof(G_dcom_slv_inbox_tx[l_slv_idx].adc)); - memcpy( G_dcom_slv_inbox_tx[l_slv_idx].gpio, G_apss_pwr_meas.gpio, sizeof(G_dcom_slv_inbox_tx[l_slv_idx].gpio)); - memcpy( G_dcom_slv_inbox_tx[l_slv_idx].tod, &G_apss_pwr_meas.tod, sizeof( G_dcom_slv_inbox_tx[l_slv_idx].tod )); //TODO - this doesn't work + memcpy( G_dcom_slv_inbox_tx[l_slv_idx].gpio, + G_apss_pwr_meas.gpio, + sizeof( G_dcom_slv_inbox_tx[l_slv_idx].gpio)); - memset( G_dcom_slv_inbox_tx[l_slv_idx].occ_fw_mailbox, 0, sizeof( G_dcom_slv_inbox_tx[l_slv_idx].occ_fw_mailbox )); + memcpy( G_dcom_slv_inbox_tx[l_slv_idx].tod, + &G_apss_pwr_meas.tod, + sizeof( G_dcom_slv_inbox_tx[l_slv_idx].tod)); - // Collect frequency data for each core - for( l_core_idx = 0; l_core_idx < MAX_CORES; l_core_idx++) - { - // TODO - uncomment once macro exists - //G_dcom_slv_inbox_tx[l_slv_idx].freq250usp0cy = FREQ250USPC[l_core_idx]; - G_dcom_slv_inbox_tx[l_slv_idx].freq250usp0cy[l_core_idx] = l_core_idx; - } - - //collect data for each centaur throttle - for( l_cntr_idx = 0; l_cntr_idx < MAX_CENTAUR_THROTTLES; l_cntr_idx++) - { - // TODO - uncomment once macro exists - //G_dcom_slv_inbox_tx[l_slv_idx].memsp2msP0MxCyPz = MEMSP2MSP0MxCyPz[l_cntr_idx]; - G_dcom_slv_inbox_tx[l_slv_idx].memsp2msP0MxCyPz[l_cntr_idx] = l_cntr_idx; - } + memset( G_dcom_slv_inbox_tx[l_slv_idx].occ_fw_mailbox, 0, sizeof( G_dcom_slv_inbox_tx[l_slv_idx].occ_fw_mailbox )); - // Collect data for each mem interleave group throttle - for( l_mem_intr_idx = 0; l_mem_intr_idx < MAX_MEM_INTERLEAVE_GROUP_THROTTLES; l_mem_intr_idx++) - { - // TODO - uncomment once macro exists - //G_dcom_slv_inbox_tx[l_slv_idx].memsp2msP0IGx = MEMSP2MSP0IG[l_mem_intr_idx]; - G_dcom_slv_inbox_tx[l_slv_idx].memsp2msP0IGx[l_mem_intr_idx] = l_mem_intr_idx; - } // Collect mnfg parameters that need to be sent to slaves G_dcom_slv_inbox_tx[l_slv_idx].foverride_enable = g_amec->mnfg_parms.auto_slew; diff --git a/src/occ_405/dcom/dcomSlaveRx.c b/src/occ_405/dcom/dcomSlaveRx.c index 3c93a89..b4bbde8 100644 --- a/src/occ_405/dcom/dcomSlaveRx.c +++ b/src/occ_405/dcom/dcomSlaveRx.c @@ -296,7 +296,6 @@ void task_dcom_rx_slv_inbox( task_t *i_self) } else { - // TODO: We need to signal this G_dcomTime.slave.doorbellErrorFlags.timeoutRx = 1; G_dcomTime.slave.doorbellTimeoutWaitRx = ssx_timebase_get(); diff --git a/src/occ_405/dcom/dcomSlaveTx.c b/src/occ_405/dcom/dcomSlaveTx.c index dbda10e..9f6f254 100755 --- a/src/occ_405/dcom/dcomSlaveTx.c +++ b/src/occ_405/dcom/dcomSlaveTx.c @@ -305,10 +305,11 @@ void task_dcom_tx_slv_outbox( task_t *i_self) ERRL_COMPONENT_ID_FIRMWARE, ERRL_CALLOUT_PRIORITY_HIGH); - commitErrl( &l_errl ); + // request a reset + REQUEST_RESET( l_errl ); - // TODO request a reset l_error = TRUE; + } } diff --git a/src/occ_405/dcom/dcom_thread.c b/src/occ_405/dcom/dcom_thread.c index 0a61a5b..ada5bfc 100755 --- a/src/occ_405/dcom/dcom_thread.c +++ b/src/occ_405/dcom/dcom_thread.c @@ -132,7 +132,7 @@ void Dcom_thread_routine(void *arg) if(OCC_STATE_ACTIVE == CURRENT_STATE()) { // Set the new mode - l_errlHndl = SMGR_set_mode(l_newOccMode, 0 /* TODO V/F */ ); + l_errlHndl = SMGR_set_mode(l_newOccMode); if(l_errlHndl) { commitErrl(&l_errlHndl); @@ -153,7 +153,7 @@ void Dcom_thread_routine(void *arg) commitErrl(&l_errlHndl); } // Set the new mode - l_errlHndl = SMGR_set_mode(l_newOccMode, 0 /* TODO V/F */ ); + l_errlHndl = SMGR_set_mode(l_newOccMode); if(l_errlHndl) { commitErrl(&l_errlHndl); |