summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/occ_gpe0/firdata/scom_util.c11
-rw-r--r--src/occ_gpe0/firdata/scom_util.h3
2 files changed, 10 insertions, 4 deletions
diff --git a/src/occ_gpe0/firdata/scom_util.c b/src/occ_gpe0/firdata/scom_util.c
index d716963..0102477 100644
--- a/src/occ_gpe0/firdata/scom_util.c
+++ b/src/occ_gpe0/firdata/scom_util.c
@@ -309,7 +309,9 @@ int32_t translate_addr( SCOM_Trgt_t i_trgt, uint64_t i_addr, uint64_t * o_addr )
// NPU0: 05011000 to 050113FF
// NPU1: 05011400 to 050117FF
// NPU2: 03011C00 to 03011FFF
- if ( N3_NPU_0_RING_ID == l_ring )
+ if ( N3_NPU_0_RING_ID == l_ring ||
+ N3_NPU_1_RING_ID == l_ring ||
+ P9A_NPU_2_RING_ID == l_ring )
{
// NPU0/NPU1
if ( N3_CHIPLET_ID == l_chiplet_id )
@@ -326,17 +328,20 @@ int32_t translate_addr( SCOM_Trgt_t i_trgt, uint64_t i_addr, uint64_t * o_addr )
// NPU0: 05013C00 to 05013C8F
// NPU1: 05013CC0 to 05013D4F
// NPU2: 03012000 to 0301208F
- else if ( P9A_NPU_0_FIR_RING_ID == l_ring )
+ else if ( P9A_NPU_0_FIR_RING_ID == l_ring ||
+ P9A_NPU_2_FIR_RING_ID == l_ring )
{
// NPU0/NPU1
if ( N3_CHIPLET_ID == l_chiplet_id )
{
- set_sat_id( l_sat_id + (3 * l_chip_unit_num), o_addr );
+ set_ring( P9A_NPU_0_FIR_RING_ID, o_addr );
+ set_sat_id( (l_sat_id % 3) + (3 * l_chip_unit_num), o_addr );
}
// NPU2
else if ( N1_CHIPLET_ID == l_chiplet_id )
{
set_ring( P9A_NPU_2_FIR_RING_ID, o_addr );
+ set_sat_id( (l_sat_id % 3), o_addr );
}
}
}
diff --git a/src/occ_gpe0/firdata/scom_util.h b/src/occ_gpe0/firdata/scom_util.h
index 9a367c3..8da0c02 100644
--- a/src/occ_gpe0/firdata/scom_util.h
+++ b/src/occ_gpe0/firdata/scom_util.h
@@ -91,7 +91,8 @@ typedef enum
typedef enum
{
- N3_NPU_0_RING_ID = 0x5,
+ N3_NPU_0_RING_ID = 0x4,
+ N3_NPU_1_RING_ID = 0x5,
P9A_NPU_2_RING_ID = 0x7,
P9A_NPU_2_FIR_RING_ID = 0x8,
P9A_NPU_0_FIR_RING_ID = 0xF,
OpenPOWER on IntegriCloud