summaryrefslogtreecommitdiffstats
path: root/src/occ_405/dcom
diff options
context:
space:
mode:
authorAndres Lugo-Reyes <aalugore@us.ibm.com>2016-12-12 14:48:59 -0600
committerWilliam A. Bryan <wilbryan@us.ibm.com>2016-12-15 15:49:58 -0500
commit08961278f496e058964d217593a06303ea96b4f3 (patch)
tree1291d786b08ee9aea76819924a79a4ba5bcadc39 /src/occ_405/dcom
parente350693c96096f1e607423c974082bf3d0b2a7ae (diff)
downloadtalos-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-xsrc/occ_405/dcom/dcom.c10
-rwxr-xr-xsrc/occ_405/dcom/dcom.h42
-rw-r--r--src/occ_405/dcom/dcomMasterTx.c42
-rw-r--r--src/occ_405/dcom/dcomSlaveRx.c1
-rwxr-xr-xsrc/occ_405/dcom/dcomSlaveTx.c5
-rwxr-xr-xsrc/occ_405/dcom/dcom_thread.c4
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);
OpenPOWER on IntegriCloud