summaryrefslogtreecommitdiffstats
path: root/src/occ_405/dcom/dcom.h
diff options
context:
space:
mode:
authorWilliam Bryan <wilbryan@us.ibm.com>2015-12-08 13:45:56 -0600
committerWael Elessawy <welessa@us.ibm.com>2015-12-10 12:53:25 -0600
commitca9e4420760a191828d259c1e425486fa1f658a7 (patch)
tree3125fc94b7942b6d6bf8d52f684223d46f42b38e /src/occ_405/dcom/dcom.h
parentad2715410617a26a291d9b9518ac3c6f3c3c2515 (diff)
downloadtalos-occ-ca9e4420760a191828d259c1e425486fa1f658a7.tar.gz
talos-occ-ca9e4420760a191828d259c1e425486fa1f658a7.zip
Enable system config command and sensor list
Added configuration data debug command RTC: 141643 Change-Id: I3d98321508780c25795d66a8d353c36593448a6e Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/22549 Tested-by: FSP CI Jenkins Reviewed-by: Martha Broyles <mbroyles@us.ibm.com> Reviewed-by: Wael Elessawy <welessa@us.ibm.com>
Diffstat (limited to 'src/occ_405/dcom/dcom.h')
-rwxr-xr-xsrc/occ_405/dcom/dcom.h124
1 files changed, 62 insertions, 62 deletions
diff --git a/src/occ_405/dcom/dcom.h b/src/occ_405/dcom/dcom.h
index 175f037..13ce50b 100755
--- a/src/occ_405/dcom/dcom.h
+++ b/src/occ_405/dcom/dcom.h
@@ -89,9 +89,9 @@
// general defines
#define TOD_SIZE 6
#define NUM_TOD_SENSORS 3
-#define SLV_INBOX_RSV_SIZE 88
+#define SLV_INBOX_RSV_SIZE 64
#define SLV_MAILBOX_SIZE 32
-#define SLV_OUTBOX_RSV_SIZE 758
+#define SLV_OUTBOX_RSV_SIZE 614
#define DOORBELL_RSV_SIZE 1
#define DCOM_250us_GAP 1
@@ -99,12 +99,12 @@
#define DCOM_1S_GAP 4000
// POB Id structure
-typedef struct
-{
+typedef struct
+{
uint8_t module_id :2;
uint8_t node_id :3;
uint8_t chip_id :3;
-} pob_id_t;
+} pob_id_t;
// TODO may change in the future
// For now pbax structure is same as pob id structure
@@ -118,41 +118,41 @@ typedef struct
uint8_t version; // [1]
// From APSS Power Measurement
- uint16_t adc[MAX_APSS_ADC_CHANNELS]; // [2] - 32 bytes
- uint16_t gpio[MAX_APSS_GPIO_PORTS]; // [34] - 4 bytes
- uint16_t ambient_temp; // [38] - 2 bytes
- uint16_t altitude; // [40] - 2 bytes
- uint8_t tod[ TOD_SIZE ]; // [42] - 6 bytes
+ uint16_t adc[MAX_APSS_ADC_CHANNELS]; // [2] - 32 bytes
+ uint16_t gpio[MAX_APSS_GPIO_PORTS]; // [34] - 4 bytes
+ uint16_t ambient_temp; // [38] - 2 bytes
+ uint16_t altitude; // [40] - 2 bytes
+ uint8_t tod[ TOD_SIZE ]; // [42] - 6 bytes
// AMEC Actuators
- uint16_t freq250usp0cy[MAX_CORES]; // [48] - 24 bytes
- uint16_t memsp2msP0MxCyPz[MAX_CENTAUR_THROTTLES]; // [72] - 16 bytes
- uint16_t memsp2msP0IGx[MAX_MEM_INTERLEAVE_GROUP_THROTTLES]; // [88] - 16 bytes
+ 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; // [104] - 2 bytes
- uint8_t foverride_enable; // [106] - 1 byte
- uint8_t emulate_oversub; // [107] - 1 byte
+ uint16_t foverride; // [128] - 2 bytes
+ uint8_t foverride_enable; // [130] - 1 byte
+ uint8_t emulate_oversub; // [131] - 1 byte
// Idle Power Saver parameters
- uint16_t ips_freq_request; // [108] - 2 bytes
+ uint16_t ips_freq_request; // [132] - 2 bytes
// DPS Tunable Parameters
- uint16_t alpha_up; // [110] - 2 bytes
- uint16_t alpha_down; // [112] - 2 bytes
- uint16_t sample_count_util; // [114] - 2 bytes
- uint16_t step_up; // [116] - 2 bytes
- uint16_t step_down; // [118] - 2 bytes
- uint16_t epsilon_perc; // [120] - 2 bytes
- uint16_t tlutil; // [122] - 2 bytes
- uint8_t tunable_param_overwrite; // [124] - 1 byte
+ 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
// Soft frequency boundaries
- uint16_t soft_fmin; // [125] - 2 bytes
- uint8_t pad; // [127] - 1 bytes
- uint16_t soft_fmax; // [128] - 2 bytes
+ uint16_t soft_fmin; // [149] - 2 bytes
+ uint8_t pad; // [151] - 1 bytes
+ uint16_t soft_fmax; // [152] - 2 bytes
- // Reserved Bytes
+ // Reserved Bytes
union
{
struct
@@ -161,7 +161,7 @@ typedef struct
freqConfig_t sys_mode_freq;
uint8_t tb_record;
};
- uint8_t reserved[ SLV_INBOX_RSV_SIZE ]; // [130] - 88 bytes
+ uint8_t reserved[ SLV_INBOX_RSV_SIZE ]; // [154] - 64 bytes
};
// GPSM DCM Synchronization
@@ -176,7 +176,7 @@ typedef struct
// SLAVE OUTBOX structure
typedef struct __attribute__ ((packed))
-{
+{
// Packet Type & Sequence Information
uint8_t seq; // [0]
uint8_t version; // [1]
@@ -184,38 +184,38 @@ typedef struct __attribute__ ((packed))
// Mini-sensors
uint16_t freqa2msp0; // [2]
uint16_t ips2msp0cy[MAX_CORES]; // [4]
- uint16_t mcpifd2msp0cy[MAX_CORES]; // [28]
- uint16_t mcpifi2msp0cy[MAX_CORES]; // [52]
- uint16_t memsp2msp0mx[MAX_NUM_MEM_CONTROLLERS]; // [76]
- uint16_t pwr250usp0; // [92]
- uint16_t pwr250usmemp0; // [94]
- uint16_t sleepcnt2msp0; // [96]
- uint16_t winkcnt2msp0; // [98]
- uint16_t temp4msp0; // [100]
- uint16_t temp4msp0peak; // [102]
- uint16_t util2msp0cy[MAX_CORES]; // [104]
- uint16_t vrfan250usmem; // [128]
- uint16_t vrfan250usproc; // [130]
- uint16_t mrd2msp0mx[MAX_NUM_MEM_CONTROLLERS]; // [132]
- uint16_t mwr2msp0mx[MAX_NUM_MEM_CONTROLLERS]; // [148]
- uint16_t pwrpx250usp0cy[MAX_CORES]; // [164]
- uint16_t todclock[NUM_TOD_SENSORS]; // [188]
- uint16_t temp2mscent; // [194]
- uint16_t temp2msdimm; // [196]
- uint16_t util2msp0; // [198]
- uint16_t ips2msp0; // [200]
- uint16_t nutil3sp0cy[MAX_CORES]; // [202] - 24 bytes
+ uint16_t mcpifd2msp0cy[MAX_CORES]; // [52]
+ uint16_t mcpifi2msp0cy[MAX_CORES]; // [100]
+ uint16_t memsp2msp0mx[MAX_NUM_MEM_CONTROLLERS]; // [148]
+ uint16_t pwr250usp0; // [164]
+ uint16_t pwr250usmemp0; // [166]
+ uint16_t sleepcnt2msp0; // [168]
+ uint16_t winkcnt2msp0; // [170]
+ uint16_t temp4msp0; // [172]
+ uint16_t temp4msp0peak; // [174]
+ uint16_t util2msp0cy[MAX_CORES]; // [176]
+ uint16_t vrfan250usmem; // [224]
+ uint16_t vrfan250usproc; // [226]
+ uint16_t mrd2msp0mx[MAX_NUM_MEM_CONTROLLERS]; // [228]
+ uint16_t mwr2msp0mx[MAX_NUM_MEM_CONTROLLERS]; // [244]
+ uint16_t pwrpx250usp0cy[MAX_CORES]; // [260]
+ uint16_t todclock[NUM_TOD_SENSORS]; // [308]
+ uint16_t temp2mscent; // [314]
+ uint16_t temp2msdimm; // [316]
+ uint16_t util2msp0; // [318]
+ uint16_t ips2msp0; // [320]
+ uint16_t nutil3sp0cy[MAX_CORES]; // [322]
// Fwish (i.e., desired frequency that this OCC slave wants based on DPS
// algorithms)
- uint16_t fwish; // [226] - 2 bytes
+ uint16_t fwish; // [370]
// Factual (i.e., actual frequency requested by this OCC slave)
- uint16_t factual; // [228] - 2 bytes
+ uint16_t factual; // [372]
- // Reserved Bytes
+ // Reserved Bytes
union
{
- uint8_t reserved[SLV_OUTBOX_RSV_SIZE]; // [230] - 758 bytes
+ uint8_t reserved[SLV_OUTBOX_RSV_SIZE]; // [374] - 614 bytes
struct __attribute__ ((packed))
{
uint8_t _reserved_1;
@@ -235,7 +235,7 @@ typedef struct __attribute__ ((packed))
// This must be aligned to 8 bytes since that is the unit
// that the PBAX unit uses to send
typedef struct
-{
+{
union
{
struct
@@ -323,7 +323,7 @@ typedef struct
// How many Master Doorbell Broadcasts have been sent
uint32_t doorbellNumSent;
// What is our "send" phase in relation to our SsxTimebase
- uint16_t doorbellPhase;
+ uint16_t doorbellPhase;
// The Most Recent Master Doorbell Broadcast sequence number
uint8_t doorbellSeq;
// Masks of the current status of the slaves
@@ -378,13 +378,13 @@ extern dcom_timing_t G_dcomTime;
// Used to tell AMEC code that the slave inbox has been received.
// This could just be a flag, doesn't have to be semaphore, since
-// the RTL Loop task can't block on Semaphore, it would just have
+// the RTL Loop task can't block on Semaphore, it would just have
// to loop until it got a good return code.
extern bool G_slv_inbox_received;
// Used to tell AMEC code that the slave outbox has been received.
// This could just be a flag, doesn't have to be semaphore, since
-// the RTL Loop task can't block on Semaphore, it would just have
+// the RTL Loop task can't block on Semaphore, it would just have
// to loop until it got a good return code.
extern uint8_t G_slv_outbox_complete;
@@ -426,7 +426,7 @@ extern SsxSemaphore G_dcomThreadWakeupSem;
// Used to house the actuation & power measurement data from the master
// before it is DMA'd to Main Memory from SRAM.
-extern dcom_slv_inbox_t G_dcom_slv_inbox_tx[MAX_OCCS];
+extern dcom_slv_inbox_t G_dcom_slv_inbox_tx[MAX_OCCS];
// Used to house the Slave Outboxes with the mini-sensor data in in the master
// after it is DMA'd from main memory.
@@ -470,7 +470,7 @@ uint32_t dcom_calc_slv_inbox_addr(void);
// Get address of slave outbox in main memory
uint32_t dcom_calc_slv_outbox_addr( const dcom_slv_outbox_doorbell_t * i_doorbell, uint8_t * o_occ_id);
-// Determine if we are master or slave
+// Determine if we are master or slave
void dcom_initialize_roles(void) INIT_SECTION;
// Copy slave inbox from main memory to sram
OpenPOWER on IntegriCloud