Signed-off-by: Tom St Denis <tom.stde...@amd.com>
---
 src/lib/ring_decode.c | 39 +++++++++++++++++++++++++++------------
 1 file changed, 27 insertions(+), 12 deletions(-)

diff --git a/src/lib/ring_decode.c b/src/lib/ring_decode.c
index cc23b6299d33..75247aa198d8 100644
--- a/src/lib/ring_decode.c
+++ b/src/lib/ring_decode.c
@@ -1164,18 +1164,33 @@ static void parse_next_sdma_pkt(struct umr_asic *asic, 
struct umr_ring_decoder *
                        }
                        break;
                case 8: // POLL_REGMEM
-                       switch (decoder->sdma.cur_word) {
-                               case 1: printf("POLL_REGMEM_ADDR_LO: 
%s0x%08lx%s", YELLOW, (unsigned long)ib, RST);
-                                       if (!(decoder->sdma.header_dw & (1UL << 
31))) printf("(%s)", umr_reg_name(asic, ib));
-                                       break;
-                               case 2: printf("POLL_REGMEM_ADDR_HI: 
%s0x%08lx%s", YELLOW, (unsigned long)ib, RST);
-                                       if (!(decoder->sdma.header_dw & (1UL << 
31))) printf("(%s)", umr_reg_name(asic, ib));
-                                       break;
-                               case 3: printf("POLL_REGMEM_ADDR_VALUE: 
%s0x%08lx%s", BLUE, (unsigned long)ib, RST);
-                                       break;
-                               case 4: printf("POLL_REGMEM_ADDR_MASK: 
%s0x%08lx%s", BLUE, (unsigned long)ib, RST);
+                       switch (decoder->sdma.cur_sub_opcode) {
+                               case 0: // WAIT_REG_MEM
+                                       switch (decoder->sdma.cur_word) {
+                                               case 1: printf("SRC_ADDR: 
%s0x%08lx%s", YELLOW, (unsigned long)ib, RST);
+                                                       if 
(!(decoder->sdma.header_dw & (1UL << 31))) printf("(%s)", umr_reg_name(asic, 
ib));
+                                                       break;
+                                               case 2: printf("DST_ADDR_LO: 
%s0x%08lx%s", YELLOW, (unsigned long)ib, RST);
+                                                       break;
+                                               case 3: printf("DST_ADDR_HI: 
%s0x%08lx%s", YELLOW, (unsigned long)ib, RST);
+                                                       break;
+                                       }
                                        break;
-                               case 5: printf("POLL_REGMEM_ADDR_DW5: 
%s0x%08lx%s", BLUE, (unsigned long)ib, RST);
+                               case 1: // WRITE WAIT_REG_MEM
+                                       switch (decoder->sdma.cur_word) {
+                                               case 1: 
printf("POLL_REGMEM_ADDR_LO: %s0x%08lx%s", YELLOW, (unsigned long)ib, RST);
+                                                       if 
(!(decoder->sdma.header_dw & (1UL << 31))) printf("(%s)", umr_reg_name(asic, 
ib));
+                                                       break;
+                                               case 2: 
printf("POLL_REGMEM_ADDR_HI: %s0x%08lx%s", YELLOW, (unsigned long)ib, RST);
+                                                       if 
(!(decoder->sdma.header_dw & (1UL << 31))) printf("(%s)", umr_reg_name(asic, 
ib));
+                                                       break;
+                                               case 3: 
printf("POLL_REGMEM_ADDR_VALUE: %s0x%08lx%s", BLUE, (unsigned long)ib, RST);
+                                                       break;
+                                               case 4: 
printf("POLL_REGMEM_ADDR_MASK: %s0x%08lx%s", BLUE, (unsigned long)ib, RST);
+                                                       break;
+                                               case 5: 
printf("POLL_REGMEM_ADDR_DW5: %s0x%08lx%s", BLUE, (unsigned long)ib, RST);
+                                                       break;
+                                       }
                                        break;
                        }
                        break;
@@ -1327,7 +1342,7 @@ static void print_decode_sdma(struct umr_asic *asic, 
struct umr_ring_decoder *de
                                                BLUE, (unsigned)((ib >> 28) & 
7), RST,
                                                CYAN, poll_regmem_funcs[((ib >> 
28) & 7)], RST,
                                                BLUE, (unsigned)((ib >> 31) & 
1), RST);
-                                       decoder->sdma.n_words = 6;
+                                       decoder->sdma.n_words = 
decoder->sdma.cur_sub_opcode ? 4 : 6;
                                        break;
                                case 9: // COND_EXE
                                        decoder->sdma.n_words = 5;
-- 
2.14.3

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

Reply via email to