summaryrefslogtreecommitdiffstats
path: root/src/occ_405/dcom
diff options
context:
space:
mode:
authorWael El-Essawy <welessa@us.ibm.com>2016-05-04 10:51:30 -0500
committerWael El-Essawy <welessa@us.ibm.com>2016-05-13 12:42:50 -0400
commit81347d935a940206a2c594568f1a677241347d92 (patch)
tree97259dc1e372b007ea450c4481cd8e75be10aee8 /src/occ_405/dcom
parent676a6cba19fa56177f90a44f4c3f762984be7715 (diff)
downloadtalos-occ-81347d935a940206a2c594568f1a677241347d92.tar.gz
talos-occ-81347d935a940206a2c594568f1a677241347d92.zip
Fix Ping Pong and HOMER addresses, usign new P9 pba_region default value.
The new P9 pba_region field in the PBA_MODE register is now 0b10 contrary to the P8 pba_region setting of 0b00. Addresses have been corrected for Ping Pong communications, HOMER Host Data, Sapphire Table, and HTMGT send and receive Buffers. Replaced Sapphire legacy term with OPAL. Defined COMMON_BASE_ADDRESS, and offset addresses relative to it. modified HOMER_HD_OFFSET, OCC_HTMGT_CMD_OFFSET_HOMER, OCC_HTMGT_RSP_OFFSET_HOMER, and OPAL_OFFSET_HOMER according to new P9 specifications. Change-Id: Ib233181c4ad1837b57c45144d1256b87799dc5bc Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/24085 Tested-by: FSP CI Jenkins Reviewed-by: William A. Bryan <wilbryan@us.ibm.com> Reviewed-by: Martha Broyles <mbroyles@us.ibm.com> Reviewed-by: Wael El-Essawy <welessa@us.ibm.com>
Diffstat (limited to 'src/occ_405/dcom')
-rwxr-xr-xsrc/occ_405/dcom/dcom.h25
-rw-r--r--src/occ_405/dcom/dcomMasterRx.c4
-rw-r--r--src/occ_405/dcom/dcomMasterTx.c4
-rw-r--r--src/occ_405/dcom/dcomSlaveRx.c4
-rwxr-xr-xsrc/occ_405/dcom/dcomSlaveTx.c4
-rwxr-xr-xsrc/occ_405/dcom/dcom_thread.c4
6 files changed, 29 insertions, 16 deletions
diff --git a/src/occ_405/dcom/dcom.h b/src/occ_405/dcom/dcom.h
index 55f59e3..dc960d0 100755
--- a/src/occ_405/dcom/dcom.h
+++ b/src/occ_405/dcom/dcom.h
@@ -49,9 +49,18 @@
#define OCC_DCM_SLAVE 0
#define OCC_DCM_MASTER 1
-// OCC Master to Slave Messages (inbox ping/pong) - Moved to BAR2
-#define ADDR_SLAVE_INBOX_MAIN_MEM_PING 0x20000000
-#define ADDR_SLAVE_INBOX_MAIN_MEM_PONG 0x20000800
+// Memory address space where DCOM, sensor data, OPAL communications,
+// etc take place. Uses BAR2, with pba_region = 0b10
+#define COMMON_BASE_ADDRESS 0xA0000000
+#define COMMON_SPACE_SIZE 0x00800000 // 8 MB
+
+// Occ Master to Slave Messages (inbox ping/pong)
+#define SLAVE_INBOX_PING_COMMON_OFFSET 0x00000000
+#define SLAVE_INBOX_PING_COMMON_ADDRESS (COMMON_BASE_ADDRESS+SLAVE_INBOX_PING_COMMON_OFFSET)
+
+#define SLAVE_INBOX_PONG_COMMON_OFFSET 0x00000800
+#define SLAVE_INBOX_PONG_COMMON_ADDRESS (COMMON_BASE_ADDRESS+SLAVE_INBOX_PONG_COMMON_OFFSET)
+
#define NUM_BYTES_IN_SLAVE_INBOX 256
// Magic Number used to denote the end of Master->Slave Broadcast packets
@@ -66,9 +75,13 @@
#define PBAX_BROADCAST_GROUP PBAX_GROUP_MASK_MAX
-// OCC Slave to Master Messages (inbox ping/pong) - Moved to BAR2
-#define ADDR_SLAVE_OUTBOX_MAIN_MEM_PING 0x20001000
-#define ADDR_SLAVE_OUTBOX_MAIN_MEM_PONG 0x20003000
+// OCC Slave to Master Messages (inbox ping/pong)
+#define SLAVE_OUTBOX_PING_COMMON_OFFSET 0x00001000
+#define SLAVE_OUTBOX_PING_COMMON_ADDRESS (COMMON_BASE_ADDRESS+SLAVE_OUTBOX_PING_COMMON_OFFSET)
+
+#define SLAVE_OUTBOX_PONG_COMMON_OFFSET 0x00003000
+#define SLAVE_OUTBOX_PONG_COMMON_ADDRESS (COMMON_BASE_ADDRESS+SLAVE_OUTBOX_PONG_COMMON_OFFSET)
+
#define NUM_BYTES_IN_SLAVE_OUTBOX 1024
// GP REG0
diff --git a/src/occ_405/dcom/dcomMasterRx.c b/src/occ_405/dcom/dcomMasterRx.c
index fcd6662..e1a7d30 100644
--- a/src/occ_405/dcom/dcomMasterRx.c
+++ b/src/occ_405/dcom/dcomMasterRx.c
@@ -133,8 +133,8 @@ void task_dcom_rx_slv_outboxes( task_t *i_self)
l_slv_response_mask |= (0x01 << l_slv);
// Check valid address (should be inside inbox addresses range)
- if ( (ADDR_SLAVE_OUTBOX_MAIN_MEM_PING <= l_addr) &&
- ((ADDR_SLAVE_OUTBOX_MAIN_MEM_PONG+(sizeof(dcom_slv_outbox_t)*MAX_OCCS)) > l_addr) )
+ if ( (SLAVE_OUTBOX_PING_COMMON_ADDRESS <= l_addr) &&
+ ((SLAVE_OUTBOX_PONG_COMMON_ADDRESS+(sizeof(dcom_slv_outbox_t)*MAX_OCCS)) > l_addr) )
{
DCOM_DBG("2.X. Copy down Slave Outboxes from %x\n",l_addr);
uint32_t l_ssxrc = 0;
diff --git a/src/occ_405/dcom/dcomMasterTx.c b/src/occ_405/dcom/dcomMasterTx.c
index d166aef..8d660c0 100644
--- a/src/occ_405/dcom/dcomMasterTx.c
+++ b/src/occ_405/dcom/dcomMasterTx.c
@@ -210,12 +210,12 @@ uint32_t dcom_build_slv_inbox(void)
uint32_t dcom_which_buffer(void)
{
//Locals
- uint32_t l_mem_address = ADDR_SLAVE_INBOX_MAIN_MEM_PONG;
+ uint32_t l_mem_address = SLAVE_INBOX_PONG_COMMON_ADDRESS;
// Switch back and forth based on tick
if( CURRENT_TICK & 1 )
{
- l_mem_address = ADDR_SLAVE_INBOX_MAIN_MEM_PING;
+ l_mem_address = SLAVE_INBOX_PING_COMMON_ADDRESS;
}
return l_mem_address;
diff --git a/src/occ_405/dcom/dcomSlaveRx.c b/src/occ_405/dcom/dcomSlaveRx.c
index dd9bb82..10af964 100644
--- a/src/occ_405/dcom/dcomSlaveRx.c
+++ b/src/occ_405/dcom/dcomSlaveRx.c
@@ -135,8 +135,8 @@ void task_dcom_rx_slv_inbox( task_t *i_self)
uint32_t l_addr_in_mem = dcom_calc_slv_inbox_addr();
// Check valid address (should be inside inbox addresses range)
- if ( (ADDR_SLAVE_INBOX_MAIN_MEM_PING <= l_addr_in_mem) &&
- ((ADDR_SLAVE_INBOX_MAIN_MEM_PONG+(sizeof(dcom_slv_inbox_t)*MAX_OCCS)) > l_addr_in_mem) )
+ if ( (SLAVE_INBOX_PING_COMMON_ADDRESS <= l_addr_in_mem) &&
+ ((SLAVE_INBOX_PONG_COMMON_ADDRESS+(sizeof(dcom_slv_inbox_t)*MAX_OCCS)) > l_addr_in_mem) )
{
uint32_t l_ssxrc = 0;
diff --git a/src/occ_405/dcom/dcomSlaveTx.c b/src/occ_405/dcom/dcomSlaveTx.c
index b083ff0..e6cf2d2 100755
--- a/src/occ_405/dcom/dcomSlaveTx.c
+++ b/src/occ_405/dcom/dcomSlaveTx.c
@@ -108,12 +108,12 @@ uint32_t dcom_build_slv_outbox(void)
uint32_t dcom_which_buffer_slv_outbox(void)
{
// Locals
- uint32_t l_mem_address = ADDR_SLAVE_OUTBOX_MAIN_MEM_PONG;
+ uint32_t l_mem_address = SLAVE_OUTBOX_PONG_COMMON_ADDRESS;
// Switch back and forth based on tick
if( CURRENT_TICK & 1 )
{
- l_mem_address = ADDR_SLAVE_OUTBOX_MAIN_MEM_PING;
+ l_mem_address = SLAVE_OUTBOX_PING_COMMON_ADDRESS;
}
return l_mem_address;
diff --git a/src/occ_405/dcom/dcom_thread.c b/src/occ_405/dcom/dcom_thread.c
index 3d1bad9..61606b1 100755
--- a/src/occ_405/dcom/dcom_thread.c
+++ b/src/occ_405/dcom/dcom_thread.c
@@ -99,11 +99,11 @@ void Dcom_thread_routine(void *arg)
// NOTE: Temporary system config must say we are FSP system so
// that we don't try to access main memory here.
// --------------------------------------------------
- // Check if we need to update the sapphire table
+ // Check if we need to update the opal table
// --------------------------------------------------
if(G_sysConfigData.system_type.kvm)
{
- proc_check_for_sapphire_updates();
+ proc_check_for_opal_updates();
}
// --------------------------------------------------
OpenPOWER on IntegriCloud