1dd0a0b792078d587a2e266f146ccd287c39a742dedward lin/*
2dd0a0b792078d587a2e266f146ccd287c39a742dedward lin* Copyright (c) 2011 Intel Corporation. All Rights Reserved.
3dd0a0b792078d587a2e266f146ccd287c39a742dedward lin* Copyright (c) Imagination Technologies Limited, UK
4dd0a0b792078d587a2e266f146ccd287c39a742dedward lin*
5dd0a0b792078d587a2e266f146ccd287c39a742dedward lin* Permission is hereby granted, free of charge, to any person obtaining a
6dd0a0b792078d587a2e266f146ccd287c39a742dedward lin* copy of this software and associated documentation files (the
7dd0a0b792078d587a2e266f146ccd287c39a742dedward lin* "Software"), to deal in the Software without restriction, including
8dd0a0b792078d587a2e266f146ccd287c39a742dedward lin* without limitation the rights to use, copy, modify, merge, publish,
9dd0a0b792078d587a2e266f146ccd287c39a742dedward lin* distribute, sub license, and/or sell copies of the Software, and to
10dd0a0b792078d587a2e266f146ccd287c39a742dedward lin* permit persons to whom the Software is furnished to do so, subject to
11dd0a0b792078d587a2e266f146ccd287c39a742dedward lin* the following conditions:
12dd0a0b792078d587a2e266f146ccd287c39a742dedward lin*
13dd0a0b792078d587a2e266f146ccd287c39a742dedward lin* The above copyright notice and this permission notice (including the
14dd0a0b792078d587a2e266f146ccd287c39a742dedward lin* next paragraph) shall be included in all copies or substantial portions
15dd0a0b792078d587a2e266f146ccd287c39a742dedward lin* of the Software.
16dd0a0b792078d587a2e266f146ccd287c39a742dedward lin*
17dd0a0b792078d587a2e266f146ccd287c39a742dedward lin* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
18dd0a0b792078d587a2e266f146ccd287c39a742dedward lin* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
19dd0a0b792078d587a2e266f146ccd287c39a742dedward lin* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
20dd0a0b792078d587a2e266f146ccd287c39a742dedward lin* IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
21dd0a0b792078d587a2e266f146ccd287c39a742dedward lin* ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
22dd0a0b792078d587a2e266f146ccd287c39a742dedward lin* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
23dd0a0b792078d587a2e266f146ccd287c39a742dedward lin* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
24dd0a0b792078d587a2e266f146ccd287c39a742dedward lin*
25dd0a0b792078d587a2e266f146ccd287c39a742dedward lin*/
26dd0a0b792078d587a2e266f146ccd287c39a742dedward lin#include <stdio.h>
27dd0a0b792078d587a2e266f146ccd287c39a742dedward lin#include <unistd.h>
28dd0a0b792078d587a2e266f146ccd287c39a742dedward lin#include <sys/mman.h>
29dd0a0b792078d587a2e266f146ccd287c39a742dedward lin#include <sys/types.h>
30dd0a0b792078d587a2e266f146ccd287c39a742dedward lin#include <sys/stat.h>
31dd0a0b792078d587a2e266f146ccd287c39a742dedward lin#include <fcntl.h>
32dd0a0b792078d587a2e266f146ccd287c39a742dedward lin#include <stdarg.h>
33dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
34dd0a0b792078d587a2e266f146ccd287c39a742dedward lin#ifdef PDUMP_TEST
35dd0a0b792078d587a2e266f146ccd287c39a742dedward lin#include "topazscfwif.h"
36dd0a0b792078d587a2e266f146ccd287c39a742dedward lin#else
37dd0a0b792078d587a2e266f146ccd287c39a742dedward lin#include "psb_drv_debug.h"
38dd0a0b792078d587a2e266f146ccd287c39a742dedward lin#include "tng_hostcode.h"
39dd0a0b792078d587a2e266f146ccd287c39a742dedward lin#include "tng_hostheader.h"
40dd0a0b792078d587a2e266f146ccd287c39a742dedward lin#include "tng_picmgmt.h"
41dd0a0b792078d587a2e266f146ccd287c39a742dedward lin#include "tng_jpegES.h"
42dd0a0b792078d587a2e266f146ccd287c39a742dedward lin#endif
43dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
44dd0a0b792078d587a2e266f146ccd287c39a742dedward lin#include "tng_trace.h"
45dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
46dd0a0b792078d587a2e266f146ccd287c39a742dedward lin#define PRINT_ARRAY_NEW( FEILD, NUM)            \
47dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    for(i=0;i< NUM;i++) {                       \
48dd0a0b792078d587a2e266f146ccd287c39a742dedward lin        if(i%6==0)                              \
49dd0a0b792078d587a2e266f146ccd287c39a742dedward lin            drv_debug_msg(VIDEO_ENCODE_PDUMP,"\n\t\t");                   \
50dd0a0b792078d587a2e266f146ccd287c39a742dedward lin        drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t0x%x", data->FEILD[i]); } \
51dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\n\t\t}\n");
52dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
53dd0a0b792078d587a2e266f146ccd287c39a742dedward lin#define PRINT_ARRAY_INT( FEILD, NUM)            \
54dd0a0b792078d587a2e266f146ccd287c39a742dedward lindo {                                            \
55dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    int tmp;                                    \
56dd0a0b792078d587a2e266f146ccd287c39a742dedward lin                                                \
57dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    for(tmp=0;tmp< NUM;tmp++) {                 \
58dd0a0b792078d587a2e266f146ccd287c39a742dedward lin        if(tmp%6==0)                            \
59dd0a0b792078d587a2e266f146ccd287c39a742dedward lin            drv_debug_msg(VIDEO_ENCODE_PDUMP,"\n\t\t");                   \
60dd0a0b792078d587a2e266f146ccd287c39a742dedward lin        drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t0x%08x", FEILD[tmp]);         \
61dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    }                                           \
62dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\n\t\t}\n");                        \
63dd0a0b792078d587a2e266f146ccd287c39a742dedward lin} while (0)
64dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
65dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
66dd0a0b792078d587a2e266f146ccd287c39a742dedward lin#define PRINT_ARRAY_BYTE( FEILD, NUM)           \
67dd0a0b792078d587a2e266f146ccd287c39a742dedward lindo {                                            \
68dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    int tmp;                                    \
69dd0a0b792078d587a2e266f146ccd287c39a742dedward lin                                                \
70dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    for(tmp=0;tmp< NUM;tmp++) {                 \
71dd0a0b792078d587a2e266f146ccd287c39a742dedward lin        if(tmp%8==0)                           \
72dd0a0b792078d587a2e266f146ccd287c39a742dedward lin            drv_debug_msg(VIDEO_ENCODE_PDUMP,"\n\t\t");                   \
73dd0a0b792078d587a2e266f146ccd287c39a742dedward lin        drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t0x%02x", FEILD[tmp]);         \
74dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    }                                           \
75dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\n\t\t}\n");                        \
76dd0a0b792078d587a2e266f146ccd287c39a742dedward lin} while (0)
77dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
78dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
79dd0a0b792078d587a2e266f146ccd287c39a742dedward lin/*
80dd0a0b792078d587a2e266f146ccd287c39a742dedward lin#define PRINT_ARRAY( FEILD, NUM)                \
81dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    for(i=0;i< NUM;i++)                         \
82dd0a0b792078d587a2e266f146ccd287c39a742dedward lin        drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t0x%x", data->FEILD[i]);       \
83dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\n\t\t}\n");
84dd0a0b792078d587a2e266f146ccd287c39a742dedward lin*/
85dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
86dd0a0b792078d587a2e266f146ccd287c39a742dedward lin#define PRINT_ARRAY( FEILD, NUM)  PRINT_ARRAY_NEW(FEILD, NUM)
87dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
88dd0a0b792078d587a2e266f146ccd287c39a742dedward lin#define PRINT_ARRAY_ADDR(STR, FEILD, NUM)                       \
89dd0a0b792078d587a2e266f146ccd287c39a742dedward lindo {                                                            \
90dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    int i = 0;                                                  \
91dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\n");                                               \
92dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    for (i=0;i< NUM;i++)  {                                     \
93dd0a0b792078d587a2e266f146ccd287c39a742dedward lin        drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t\t%s[%02d]=x%08x = {\t", STR, i, data->FEILD[i]); \
94dd0a0b792078d587a2e266f146ccd287c39a742dedward lin        if (dump_address_content && data->FEILD[i]) {           \
95dd0a0b792078d587a2e266f146ccd287c39a742dedward lin            unsigned char *virt = phy2virt(data->FEILD[i]);     \
96dd0a0b792078d587a2e266f146ccd287c39a742dedward lin            PRINT_ARRAY_BYTE( virt, 64);                        \
97dd0a0b792078d587a2e266f146ccd287c39a742dedward lin        } else {                                                \
98dd0a0b792078d587a2e266f146ccd287c39a742dedward lin            drv_debug_msg(VIDEO_ENCODE_PDUMP,"}\n");                                      \
99dd0a0b792078d587a2e266f146ccd287c39a742dedward lin        }                                                       \
100dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    }                                                           \
101dd0a0b792078d587a2e266f146ccd287c39a742dedward lin} while (0)
102dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
103dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
104dd0a0b792078d587a2e266f146ccd287c39a742dedward linunsigned int duplicate_setvideo_dump = 0;
105dd0a0b792078d587a2e266f146ccd287c39a742dedward linunsigned int dump_address_content = 1;
106dd0a0b792078d587a2e266f146ccd287c39a742dedward linstatic unsigned int last_setvideo_dump = 0;
107dd0a0b792078d587a2e266f146ccd287c39a742dedward linstatic unsigned int hide_setvideo_dump = 0;
108dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
109dd0a0b792078d587a2e266f146ccd287c39a742dedward linstatic unsigned int linear_fb = 0;
110dd0a0b792078d587a2e266f146ccd287c39a742dedward linstatic unsigned int linear_mmio_topaz = 0;
111dd0a0b792078d587a2e266f146ccd287c39a742dedward linstatic unsigned int phy_fb, phy_mmio;
112dd0a0b792078d587a2e266f146ccd287c39a742dedward linstatic IMG_MTX_VIDEO_CONTEXT *mtx_ctx = NULL; /* MTX context */
113dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
114dd0a0b792078d587a2e266f146ccd287c39a742dedward linstatic int setup_device()
115dd0a0b792078d587a2e266f146ccd287c39a742dedward lin{
116dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    unsigned int linear_mmio;
117dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    int fd;
118dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
119dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    /* Allow read/write to ALL io ports */
120dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    ioperm(0, 1024, 1);
121dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    iopl(3);
122dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
123dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    phy_mmio = pci_get_long(1,0<<3, PCI_BASE_ADDRESS_1);
124dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"MMIO:  PCI base1 for MMIO is 0x%08x\n", phy_mmio);
125dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    phy_fb = pci_get_long(1,0<<3, PCI_BASE_ADDRESS_2);
126dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"DDRM:  PCI base2 for FB   is 0x%08x\n", phy_fb);
127dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
128dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    phy_mmio &= 0xfff80000;
129dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    phy_fb &= 0xfffff000;
130dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
131dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    fd = open("/dev/mem", O_RDWR);
132dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    if (fd == -1) {
133dd0a0b792078d587a2e266f146ccd287c39a742dedward lin        perror("open");
134dd0a0b792078d587a2e266f146ccd287c39a742dedward lin        exit(-1);
135dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    }
136dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
137dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    /* map frame buffer to user space(map 128M) */
138dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    linear_fb = (unsigned int)mmap(NULL,128<<20,PROT_READ | PROT_WRITE,
139dd0a0b792078d587a2e266f146ccd287c39a742dedward lin                             MAP_SHARED,fd, phy_fb);
140dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
141dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    /* map mmio to user space(1M) */
142dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    linear_mmio = (unsigned int)mmap(NULL,0x100000,PROT_READ | PROT_WRITE,
143dd0a0b792078d587a2e266f146ccd287c39a742dedward lin                              MAP_SHARED,fd, phy_mmio);
144dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    linear_mmio_topaz = linear_mmio;
145dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
146dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    close(fd);
147dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
148dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    return 0;
149dd0a0b792078d587a2e266f146ccd287c39a742dedward lin}
150dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
151dd0a0b792078d587a2e266f146ccd287c39a742dedward lin/* convert physicall address to virtual by search MMU */
152dd0a0b792078d587a2e266f146ccd287c39a742dedward linstatic void *phy2virt_mmu(unsigned int phyaddr)
153dd0a0b792078d587a2e266f146ccd287c39a742dedward lin{
154dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    unsigned int fb_start, fb_end;
155dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    int pd_index, pt_index, pg_offset;
156dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    unsigned int pd_phyaddr, pt_phyaddr; /* phyaddrss of page directory/table */
157dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    unsigned int mem_start; /* memory start physicall address */
158dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    unsigned int *pd, *pt;/* virtual of page directory/table */
159dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    void *mem_virt;
160dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
161dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    if (phy_mmio == 0 || phy_fb == 0 || linear_fb == 0 || linear_mmio_topaz == 0) {
162dd0a0b792078d587a2e266f146ccd287c39a742dedward lin        setup_device();
163dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    }
164dd0a0b792078d587a2e266f146ccd287c39a742dedward lin#ifdef _TOPAZHP_DEBUG_TRACE_
165dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"INFO: phy_mmio 0x%08x, phy_fb 0x%08x, linear_fb 0x%08x, linear_mmio_topaz 0x%08x\n", phy_mmio, phy_fb, linear_fb, linear_mmio_topaz);
166dd0a0b792078d587a2e266f146ccd287c39a742dedward lin#endif
167dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
168dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    if (phy_mmio == 0 || phy_fb == 0 || linear_fb == 0 || linear_mmio_topaz == 0) {
169dd0a0b792078d587a2e266f146ccd287c39a742dedward lin        drv_debug_msg(VIDEO_ENCODE_PDUMP,"ERROR:setup_device failed!\n");
170dd0a0b792078d587a2e266f146ccd287c39a742dedward lin        exit(-1);
171dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    }
172dd0a0b792078d587a2e266f146ccd287c39a742dedward lin#ifdef _TOPAZHP_DEBUG_TRACE_
173dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"INFO: phy_mmio 0x%08x, phy_fb 0x%08x, linear_fb 0x%08x, linear_mmio_topaz 0x%08x\n", phy_mmio, phy_fb, linear_fb, linear_mmio_topaz);
174dd0a0b792078d587a2e266f146ccd287c39a742dedward lin#endif
175dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
176dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    /* first map page directory */
177dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    MULTICORE_READ32(REGNUM_TOPAZ_CR_MMU_DIR_LIST_BASE_ADDR, &pd_phyaddr);
178dd0a0b792078d587a2e266f146ccd287c39a742dedward lin#ifdef _TOPAZHP_DEBUG_TRACE_
179dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"INFO: page directory 0x%08x, phy addr is 0x%08x\n", pd_phyaddr, phyaddr);
180dd0a0b792078d587a2e266f146ccd287c39a742dedward lin#endif
181dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
182dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    pd_phyaddr &= 0xfffff000;
183dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    fb_start = phy_fb;
184dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    fb_end = fb_start + (128<<20);
185dd0a0b792078d587a2e266f146ccd287c39a742dedward lin#ifdef _TOPAZHP_DEBUG_TRACE_
186dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"INFO: pd_phyaddr 0x%08x, fb_start 0x%08x, fb_end 0x%08x\n", pd_phyaddr, fb_start, fb_end);
187dd0a0b792078d587a2e266f146ccd287c39a742dedward lin#endif
188dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
189dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    if ((pd_phyaddr < fb_start) || (pd_phyaddr > fb_end)) {
190dd0a0b792078d587a2e266f146ccd287c39a742dedward lin        drv_debug_msg(VIDEO_ENCODE_PDUMP,"ERROR: page directory 0x%08x is not fb range [0x%08x, 0x%08x]\n",
191dd0a0b792078d587a2e266f146ccd287c39a742dedward lin               pd_phyaddr, fb_start, fb_end);
192dd0a0b792078d587a2e266f146ccd287c39a742dedward lin        exit(-1);
193dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    }
194dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
195dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    pd_index = phyaddr >> 22; /* the top 10bits are pd index */
196dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    pt_index = (phyaddr >> 12) & 0x3ff; /* the middle 10 bits are pt index */
197dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    pg_offset = phyaddr & 0xfff;
198dd0a0b792078d587a2e266f146ccd287c39a742dedward lin#ifdef _TOPAZHP_DEBUG_TRACE_
199dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"INFO: phyaddr 0x%08x, pd_index 0x%08x, pt_index 0x%08x, pg_offset 0x%08x\n", phyaddr, pd_index, pt_index, pg_offset);
200dd0a0b792078d587a2e266f146ccd287c39a742dedward lin#endif
201dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
202dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    /* find page directory entry */
203dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    pd = (unsigned int *)(linear_fb + (pd_phyaddr - phy_fb));
204dd0a0b792078d587a2e266f146ccd287c39a742dedward lin#ifdef _TOPAZHP_DEBUG_TRACE_
205dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"INFO: pd_index 0x%08x, pd 0x%08x, pd[pd_index] 0x%08x\n", pd_index, pd, pd[pd_index]);
206dd0a0b792078d587a2e266f146ccd287c39a742dedward lin#endif
207dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    if ((pd[pd_index] & 1) == 0) {/* not valid */
208dd0a0b792078d587a2e266f146ccd287c39a742dedward lin        drv_debug_msg(VIDEO_ENCODE_PDUMP,"Error: the page directory index is invalid, not mapped\n");
209dd0a0b792078d587a2e266f146ccd287c39a742dedward lin        exit(-1);
210dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    }
211dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    pt_phyaddr = pd[pd_index] & 0xfffff000;
212dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
213dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    /* process page table entry */
214dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    if ((pt_phyaddr < fb_start) || (pt_phyaddr > fb_end)) {
215dd0a0b792078d587a2e266f146ccd287c39a742dedward lin        drv_debug_msg(VIDEO_ENCODE_PDUMP,"ERROR: page table 0x%08x is not fb range [0x%08x, 0x%08x]\n",
216dd0a0b792078d587a2e266f146ccd287c39a742dedward lin               pt_phyaddr, fb_start, fb_end);
217dd0a0b792078d587a2e266f146ccd287c39a742dedward lin        exit(-1);
218dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    }
219dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    pt = (unsigned int *)(linear_fb + (pt_phyaddr - phy_fb));
220dd0a0b792078d587a2e266f146ccd287c39a742dedward lin#ifdef _TOPAZHP_DEBUG_TRACE_
221dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"INFO: pt_index 0x%08x, pt 0x%08x, pt[pt_index] 0x%08x\n", pt_index, pt, pt[pt_index]);
222dd0a0b792078d587a2e266f146ccd287c39a742dedward lin#endif
223dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    if ((pt[pt_index] & 1) == 0) {
224dd0a0b792078d587a2e266f146ccd287c39a742dedward lin        drv_debug_msg(VIDEO_ENCODE_PDUMP,"Error: the page table index is invalid, not mapped\n");
225dd0a0b792078d587a2e266f146ccd287c39a742dedward lin        exit(-1);
226dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    }
227dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
228dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    mem_start = pt[pt_index] & 0xfffff000;
229dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
230dd0a0b792078d587a2e266f146ccd287c39a742dedward lin#if 0
231dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"Phy=0x%08x(PD index=%d, PT index=%d, Page offset=%d)\n",
232dd0a0b792078d587a2e266f146ccd287c39a742dedward lin           phyaddr, pd_index, pt_index, pg_offset);
233dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"MMU PD Phy=0x%08x, PT Phy=PD[%d]=0x%08x, PT[%d]=0x%08x, means mem real phy(start)=0x%08x\n",
234dd0a0b792078d587a2e266f146ccd287c39a742dedward lin           pd_phyaddr, pd_index, pd[pd_index], pt_index, pt[pt_index], mem_start);
235dd0a0b792078d587a2e266f146ccd287c39a742dedward lin#endif
236dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    mem_virt = (void *)(linear_fb + (mem_start - phy_fb));
237dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
238dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    return mem_virt;
239dd0a0b792078d587a2e266f146ccd287c39a742dedward lin}
240dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
241dd0a0b792078d587a2e266f146ccd287c39a742dedward linstatic void *phy2virt(unsigned int phyaddr)
242dd0a0b792078d587a2e266f146ccd287c39a742dedward lin{
243dd0a0b792078d587a2e266f146ccd287c39a742dedward lin#ifdef PDUMP_TEST
244dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    void* phy2virt_pdump(unsigned int phy);
245dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
246dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    (void)phy2virt_mmu; /* silence the warning */
247dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    return phy2virt_pdump(phyaddr);
248dd0a0b792078d587a2e266f146ccd287c39a742dedward lin#else
249dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    return phy2virt_mmu(phyaddr);
250dd0a0b792078d587a2e266f146ccd287c39a742dedward lin#endif
251dd0a0b792078d587a2e266f146ccd287c39a742dedward lin}
252dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
253dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
254dd0a0b792078d587a2e266f146ccd287c39a742dedward linstatic void JPEG_MTX_DMA_dump(JPEG_MTX_DMA_SETUP *data)
255dd0a0b792078d587a2e266f146ccd287c39a742dedward lin{
256dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    int i;
257dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t\t	ComponentPlane{\n");
258dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    for(i=0;i<MTX_MAX_COMPONENTS ;i++)
259dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {
260dd0a0b792078d587a2e266f146ccd287c39a742dedward lin        drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t\t\t   ui32PhysAddr=%d\n",data->ComponentPlane[i].ui32PhysAddr);
261dd0a0b792078d587a2e266f146ccd287c39a742dedward lin        drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t   ui32Stride=%d",data->ComponentPlane[i].ui32Stride);
262dd0a0b792078d587a2e266f146ccd287c39a742dedward lin        drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t   ui32Height=%d\n",data->ComponentPlane[i].ui32Height);
263dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    }
264dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t\t	}\n");
265dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t\t	MCUComponent{\n");
266dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    for(i=0;i<MTX_MAX_COMPONENTS ;i++)
267dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {
268dd0a0b792078d587a2e266f146ccd287c39a742dedward lin        drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t\t\t   ui32WidthBlocks=%d",data->MCUComponent[i].ui32WidthBlocks);
269dd0a0b792078d587a2e266f146ccd287c39a742dedward lin        drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t   ui32HeightBlocks=%d",data->MCUComponent[i].ui32HeightBlocks);
270dd0a0b792078d587a2e266f146ccd287c39a742dedward lin        drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t   ui32XLimit=%d\n",data->MCUComponent[i].ui32XLimit);
271dd0a0b792078d587a2e266f146ccd287c39a742dedward lin        drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t   ui32YLimit=%d\n",data->MCUComponent[i].ui32YLimit);
272dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    }
273dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t\t	}\n");
274dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t\t	ui32ComponentsInScan =%d\n", data->ui32ComponentsInScan);
275dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t\t	ui32TableA =%d\n", data->ui32TableA);
276dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t\t	ui16DataInterleaveStatus =%d\n", data->ui16DataInterleaveStatus);
277dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t\t	ui16MaxPipes =%d\n", data->ui16MaxPipes);
278dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    //drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t\t	apWritebackRegions  {");
279dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    //PRINT_ARRAY(	apWritebackRegions, WB_FIFO_SIZE);
280dd0a0b792078d587a2e266f146ccd287c39a742dedward lin}
281dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
282dd0a0b792078d587a2e266f146ccd287c39a742dedward linstatic void ISSUE_BUFFER_dump(MTX_ISSUE_BUFFERS *data)
283dd0a0b792078d587a2e266f146ccd287c39a742dedward lin{
284dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t\t	ui32MCUPositionOfScanAndPipeNo =%d\n", data->ui32MCUPositionOfScanAndPipeNo);
285dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t\t	ui32MCUCntAndResetFlag =%d\n", data->ui32MCUCntAndResetFlag);
286dd0a0b792078d587a2e266f146ccd287c39a742dedward lin}
287dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
288dd0a0b792078d587a2e266f146ccd287c39a742dedward linstatic void JPEG_TABLE_dump(JPEG_MTX_QUANT_TABLE *data)
289dd0a0b792078d587a2e266f146ccd287c39a742dedward lin{
290dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    int i;
291dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t\t	aui8LumaQuantParams  {");
292dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    PRINT_ARRAY(	aui8LumaQuantParams, QUANT_TABLE_SIZE_BYTES);
293dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t\t	aui8ChromaQuantParams  {");
294dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    PRINT_ARRAY(	aui8ChromaQuantParams, QUANT_TABLE_SIZE_BYTES);
295dd0a0b792078d587a2e266f146ccd287c39a742dedward lin}
296dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
297dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
298dd0a0b792078d587a2e266f146ccd287c39a742dedward linstatic int SETVIDEO_ui32MVSettingsBTable_dump(unsigned int phyaddr)
299dd0a0b792078d587a2e266f146ccd287c39a742dedward lin{
300dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    IMG_UINT32 ui32DistanceB, ui32Position;
301dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    IMG_MV_SETTINGS * pHostMVSettingsBTable;
302dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
303dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    pHostMVSettingsBTable = (IMG_MV_SETTINGS *) phy2virt(phyaddr);
304dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t\t(====ui32MVSettingsBTable====)\n");
305dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
306dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    for (ui32DistanceB = 0; ui32DistanceB < MAX_BFRAMES; ui32DistanceB++)
307dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {
308dd0a0b792078d587a2e266f146ccd287c39a742dedward lin        for (ui32Position = 1; ui32Position <= ui32DistanceB + 1; ui32Position++)
309dd0a0b792078d587a2e266f146ccd287c39a742dedward lin        {
310dd0a0b792078d587a2e266f146ccd287c39a742dedward lin            IMG_MV_SETTINGS * pMvElement = (IMG_MV_SETTINGS * ) ((IMG_UINT8 *) pHostMVSettingsBTable + MV_OFFSET_IN_TABLE(ui32DistanceB, ui32Position - 1));
311dd0a0b792078d587a2e266f146ccd287c39a742dedward lin            drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t\t[ui32DistanceB=%d][ui32Position=%d].ui32MVCalc_Config=0x%08x\n",
312dd0a0b792078d587a2e266f146ccd287c39a742dedward lin                   ui32DistanceB, ui32Position, pMvElement->ui32MVCalc_Config);
313dd0a0b792078d587a2e266f146ccd287c39a742dedward lin            drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t\t[ui32DistanceB=%d][ui32Position=%d].ui32MVCalc_Colocated=0x%08x\n",
314dd0a0b792078d587a2e266f146ccd287c39a742dedward lin                   ui32DistanceB, ui32Position, pMvElement->ui32MVCalc_Colocated);
315dd0a0b792078d587a2e266f146ccd287c39a742dedward lin            drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t\t[ui32DistanceB=%d][ui32Position=%d].ui32MVCalc_Below=0x%08x\n",
316dd0a0b792078d587a2e266f146ccd287c39a742dedward lin                   ui32DistanceB, ui32Position, pMvElement->ui32MVCalc_Below);
317dd0a0b792078d587a2e266f146ccd287c39a742dedward lin        }
318dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    }
319dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t\t(====ui32MVSettingsBTable====)\n");
320dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
321dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    return 0;
322dd0a0b792078d587a2e266f146ccd287c39a742dedward lin}
323dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
324dd0a0b792078d587a2e266f146ccd287c39a742dedward linstatic int SETVIDEO_ui32MVSettingsHierarchical_dump(unsigned int phyaddr)
325dd0a0b792078d587a2e266f146ccd287c39a742dedward lin{
326dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    IMG_UINT32 ui32DistanceB;
327dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    IMG_MV_SETTINGS * pHostMVSettingsHierarchical;
328dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
329dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    pHostMVSettingsHierarchical = (IMG_MV_SETTINGS *) phy2virt(phyaddr);
330dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
331dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t\t(====ui32MVSettingsHierarchical====)\n");
332dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
333dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    for (ui32DistanceB = 0; ui32DistanceB < MAX_BFRAMES; ui32DistanceB++) {
334dd0a0b792078d587a2e266f146ccd287c39a742dedward lin        IMG_MV_SETTINGS *pMvElement = pHostMVSettingsHierarchical + ui32DistanceB;
335dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
336dd0a0b792078d587a2e266f146ccd287c39a742dedward lin        drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t\t[ui32DistanceB=%d].ui32MVCalc_Config=0x%08x\n",
337dd0a0b792078d587a2e266f146ccd287c39a742dedward lin               ui32DistanceB, pMvElement->ui32MVCalc_Config);
338dd0a0b792078d587a2e266f146ccd287c39a742dedward lin        drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t\t[ui32DistanceB=%d].ui32MVCalc_Colocated=0x%08x\n",
339dd0a0b792078d587a2e266f146ccd287c39a742dedward lin               ui32DistanceB, pMvElement->ui32MVCalc_Colocated);
340dd0a0b792078d587a2e266f146ccd287c39a742dedward lin        drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t\t[ui32DistanceB=%d].ui32MVCalc_Below=0x%08x\n",
341dd0a0b792078d587a2e266f146ccd287c39a742dedward lin               ui32DistanceB, pMvElement->ui32MVCalc_Below);
342dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
343dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    }
344dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t\t(====ui32MVSettingsHierarchical====)\n");
345dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
346dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    return 0;
347dd0a0b792078d587a2e266f146ccd287c39a742dedward lin}
348dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
349dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
350dd0a0b792078d587a2e266f146ccd287c39a742dedward linstatic int SETVIDEO_ui32FlatGopStruct_dump(unsigned int phyaddr)
351dd0a0b792078d587a2e266f146ccd287c39a742dedward lin{
352dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    IMG_UINT16 * psGopStructure = (IMG_UINT16 * )phy2virt(phyaddr);
353dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    int ui8EncodeOrderPos;
354dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
355dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t\t(====ui32FlatGopStruct====)\n");
356dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
357dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    /* refer to DDK:MiniGop_GenerateFlat */
358dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    for (ui8EncodeOrderPos = 0; ui8EncodeOrderPos < MAX_GOP_SIZE; ui8EncodeOrderPos++){
359dd0a0b792078d587a2e266f146ccd287c39a742dedward lin        drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t\tui32FlatGopStruct[%d]=0x%04x\n",ui8EncodeOrderPos, psGopStructure[ui8EncodeOrderPos]);
360dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    }
361dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t\t(====ui32FlatGopStruct====)\n");
362dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
363dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    return 0;
364dd0a0b792078d587a2e266f146ccd287c39a742dedward lin}
365dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
366dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
367dd0a0b792078d587a2e266f146ccd287c39a742dedward linstatic int SETVIDEO_ui32HierarGopStruct_dump(unsigned int phyaddr)
368dd0a0b792078d587a2e266f146ccd287c39a742dedward lin{
369dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    IMG_UINT16 * psGopStructure = (IMG_UINT16 * )phy2virt(phyaddr);
370dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    int ui8EncodeOrderPos;
371dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
372dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t\t(====ui32HierarGopStruct====)\n");
373dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
374dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    /* refer to DDK:MiniGop_GenerateFlat */
375dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    for (ui8EncodeOrderPos = 0; ui8EncodeOrderPos < MAX_GOP_SIZE; ui8EncodeOrderPos++){
376dd0a0b792078d587a2e266f146ccd287c39a742dedward lin        drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t\tui32HierarGopStruct[%d]=0x%04x\n",ui8EncodeOrderPos, psGopStructure[ui8EncodeOrderPos]);
377dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    }
378dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t\t(====ui32HierarGopStruct====)\n");
379dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
380dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    return 0;
381dd0a0b792078d587a2e266f146ccd287c39a742dedward lin}
382dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
383dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
384dd0a0b792078d587a2e266f146ccd287c39a742dedward linstatic char *IMG_FRAME_TEMPLATE_TYPE2Str(IMG_FRAME_TEMPLATE_TYPE tmp)
385dd0a0b792078d587a2e266f146ccd287c39a742dedward lin{
386dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    switch (tmp){
387dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    case IMG_FRAME_IDR:return "IMG_FRAME_IDR";
388dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    case IMG_FRAME_INTRA:return "IMG_FRAME_INTRA";
389dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    case IMG_FRAME_INTER_P:return "IMG_FRAME_INTER_P";
390dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    case IMG_FRAME_INTER_B:return "IMG_FRAME_INTER_B";
391dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    case IMG_FRAME_INTER_P_IDR:return "IMG_FRAME_INTER_P_IDR";
392dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    case IMG_FRAME_UNDEFINED:return "IMG_FRAME_UNDEFINED";
393dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    }
394dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
395dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    return "Undefined";
396dd0a0b792078d587a2e266f146ccd287c39a742dedward lin}
397dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
398dd0a0b792078d587a2e266f146ccd287c39a742dedward linstatic int MTX_HEADER_PARAMS_dump(MTX_HEADER_PARAMS *p);
399dd0a0b792078d587a2e266f146ccd287c39a742dedward linstatic int apSliceParamsTemplates_dump(SLICE_PARAMS *p)
400dd0a0b792078d587a2e266f146ccd287c39a742dedward lin{
401dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    unsigned char *ptmp = (unsigned char*)&p->sSliceHdrTmpl;
402dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t\tui32Flags=0x%08x\n", p->ui32Flags);
403dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t\tui32SliceConfig=0x%08x\n", p->ui32SliceConfig);
404dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t\tui32IPEControl=0x%08x\n", p->ui32IPEControl);
405dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t\tui32SeqConfig=0x%08x\n", p->ui32SeqConfig);
406dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t\teTemplateType=%s\n", IMG_FRAME_TEMPLATE_TYPE2Str(p->eTemplateType));
407dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
408dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    //PRINT_ARRAY_BYTE(ptmp, 64);
409dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
410dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    MTX_HEADER_PARAMS_dump(&p->sSliceHdrTmpl);
411dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
412dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    return 0;
413dd0a0b792078d587a2e266f146ccd287c39a742dedward lin}
414dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
415dd0a0b792078d587a2e266f146ccd287c39a742dedward linstatic int DO_HEADER_dump(MTX_HEADER_PARAMS *data)
416dd0a0b792078d587a2e266f146ccd287c39a742dedward lin{
417dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    MTX_HEADER_PARAMS *p = data;
418dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    unsigned char *q=(unsigned char *)data;
419dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
420dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t\t(===RawBits===)");
421dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    PRINT_ARRAY_BYTE(q, 128);
422dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
423dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    MTX_HEADER_PARAMS_dump(p);
424dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
425dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\n\n");
426dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
427dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    return 0;
428dd0a0b792078d587a2e266f146ccd287c39a742dedward lin}
429dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
430dd0a0b792078d587a2e266f146ccd287c39a742dedward linstatic void SETVIDEO_dump(IMG_MTX_VIDEO_CONTEXT *data)
431dd0a0b792078d587a2e266f146ccd287c39a742dedward lin{
432dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    unsigned int i;
433dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    mtx_ctx = data;
434dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
435dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    if(hide_setvideo_dump == 1)
436dd0a0b792078d587a2e266f146ccd287c39a742dedward lin        return ;
437dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t\t==========IMG_MTX_VIDEO_CONTEXT=============\n");
438dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t	ui64ClockDivBitrate=%lld\n", data->ui64ClockDivBitrate);
439dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t	ui32WidthInMbs=%d\n", data->ui32WidthInMbs);
440dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t	ui32PictureHeightInMbs=%d\n", data->ui32PictureHeightInMbs);
441dd0a0b792078d587a2e266f146ccd287c39a742dedward lin#ifdef FORCED_REFERENCE
442dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t	apTmpReconstructured  {");
443dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    PRINT_ARRAY_ADDR("apTmpReconstructured",	apTmpReconstructured, MAX_PIC_NODES);
444dd0a0b792078d587a2e266f146ccd287c39a742dedward lin#endif
445dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t	apReconstructured  {");
446dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    PRINT_ARRAY_ADDR("apReconstructured",	apReconstructured, MAX_PIC_NODES);
447dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t	apColocated  {");
448dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    PRINT_ARRAY_ADDR("apColocated",	apColocated, MAX_PIC_NODES);
449dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t	apMV  {");
450dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    PRINT_ARRAY_ADDR("apMV",	apMV, MAX_MV);
451dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t	apInterViewMV  {");
452dd0a0b792078d587a2e266f146ccd287c39a742dedward lin//    PRINT_ARRAY(	apInterViewMV, 2 );
453dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    PRINT_ARRAY_ADDR("apInterViewMV", apInterViewMV, 2);
454dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
455dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t	ui32DebugCRCs=0x%x\n", data->ui32DebugCRCs);
456dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t	apWritebackRegions  {");
457dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    PRINT_ARRAY_ADDR("apWritebackRegions",	apWritebackRegions, WB_FIFO_SIZE);
458dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t	ui32InitialCPBremovaldelayoffset=0x%x\n", data->ui32InitialCPBremovaldelayoffset);
459dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t	ui32MaxBufferMultClockDivBitrate=0x%x\n", data->ui32MaxBufferMultClockDivBitrate);
460dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t	pSEIBufferingPeriodTemplate=0x%x\n", data->pSEIBufferingPeriodTemplate);
461dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t	pSEIPictureTimingTemplate=0x%x\n", data->pSEIPictureTimingTemplate);
462dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t	b16EnableMvc=%d\n", data->b16EnableMvc);
463dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    //drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t	b16EnableInterViewReference=%d\n", data->b16EnableInterViewReference);
464dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t	ui16MvcViewIdx=0x%x\n", data->ui16MvcViewIdx);
465dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
466dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t	apSliceParamsTemplates  {\n");
467dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    //PRINT_ARRAY_ADDR( apSliceParamsTemplates, 5);
468dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    for (i=0; i<5; i++) {
469dd0a0b792078d587a2e266f146ccd287c39a742dedward lin        drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t\tapSliceParamsTemplates[%d]=0x%08x  {\n", i, data->apSliceParamsTemplates[i]);
470dd0a0b792078d587a2e266f146ccd287c39a742dedward lin        apSliceParamsTemplates_dump(phy2virt(data->apSliceParamsTemplates[i]));
471dd0a0b792078d587a2e266f146ccd287c39a742dedward lin        drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t\t}\n");
472dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    }
473dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
474dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t	apPicHdrTemplates  {");
475dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    PRINT_ARRAY_ADDR("apPicHdrTemplates", apPicHdrTemplates, 4);
476dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    MTX_HEADER_PARAMS_dump(phy2virt(data->apPicHdrTemplates[0]));
477dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t	aui32SliceMap  {");
478dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    PRINT_ARRAY_ADDR("aui32SliceMap", 	aui32SliceMap, MAX_SOURCE_SLOTS_SL);
479dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
480dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t	ui32FlatGopStruct=0x%x\n", data->ui32FlatGopStruct);
481dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    SETVIDEO_ui32FlatGopStruct_dump(data->ui32FlatGopStruct);
482dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
483dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t	apSeqHeader        =0x%x\n", data->apSeqHeader);
484dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    if (data->apSeqHeader != 0)
485dd0a0b792078d587a2e266f146ccd287c39a742dedward lin	DO_HEADER_dump((MTX_HEADER_PARAMS *)(phy2virt(data->apSeqHeader)));
486dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t	apSubSetSeqHeader  =0x%x\n", data->apSubSetSeqHeader);
487dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    if(data->apSubSetSeqHeader != 0)
488dd0a0b792078d587a2e266f146ccd287c39a742dedward lin        DO_HEADER_dump((MTX_HEADER_PARAMS *)(phy2virt(data->apSubSetSeqHeader)));
489dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t	b16NoSequenceHeaders =0x%x\n", data->b16NoSequenceHeaders);
490dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
491dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t	b8WeightedPredictionEnabled=%d\n", data->b8WeightedPredictionEnabled);
492dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t	ui8MTXWeightedImplicitBiPred=0x%x\n", data->ui8MTXWeightedImplicitBiPred);
493dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t	aui32WeightedPredictionVirtAddr  {");
494dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    PRINT_ARRAY(aui32WeightedPredictionVirtAddr, MAX_SOURCE_SLOTS_SL);
495dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t	ui32HierarGopStruct=0x%x\n", data->ui32HierarGopStruct);
496dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    if(data->ui32HierarGopStruct != 0)
497dd0a0b792078d587a2e266f146ccd287c39a742dedward lin        SETVIDEO_ui32HierarGopStruct_dump(data->ui32HierarGopStruct);
498dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
499dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t	pFirstPassOutParamAddr  {");
500dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    PRINT_ARRAY_ADDR("pFirstPassOutParamAddr",pFirstPassOutParamAddr, MAX_SOURCE_SLOTS_SL);
501dd0a0b792078d587a2e266f146ccd287c39a742dedward lin#ifndef EXCLUDE_BEST_MP_DECISION_DATA
502dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t	pFirstPassOutBestMultipassParamAddr  {");
503dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    PRINT_ARRAY_ADDR("pFirstPassOutBestMultipassParamAddr", pFirstPassOutBestMultipassParamAddr, MAX_SOURCE_SLOTS_SL);
504dd0a0b792078d587a2e266f146ccd287c39a742dedward lin#endif
505dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t	pMBCtrlInParamsAddr  {");
506dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    PRINT_ARRAY_ADDR("pMBCtrlInParamsAddr", pMBCtrlInParamsAddr, MAX_SOURCE_SLOTS_SL);
507dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t	ui32InterIntraScale{");
508dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    PRINT_ARRAY( ui32InterIntraScale, SCALE_TBL_SZ);
509dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t	ui32SkippedCodedScale  {");
510dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    PRINT_ARRAY( ui32SkippedCodedScale, SCALE_TBL_SZ);
511dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
512dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
513dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t	ui32PicRowStride=0x%x\n", data->ui32PicRowStride);
514dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
515dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t	apAboveParams  {");
516dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    PRINT_ARRAY_ADDR("apAboveParams", apAboveParams, TOPAZHP_NUM_PIPES);
517dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
518dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t	ui32IdrPeriod =0x%x\n ", data->ui32IdrPeriod);
519dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t	ui32IntraLoopCnt =0x%x\n", data->ui32IntraLoopCnt);
520dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t	ui32BFrameCount =0x%x\n", data->ui32BFrameCount);
521dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t	b8Hierarchical=%d\n", data->b8Hierarchical);
522dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t	ui8MPEG2IntraDCPrecision =0x%x\n", data->ui8MPEG2IntraDCPrecision);
523dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
524dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t	aui8PicOnLevel  {");
525dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    PRINT_ARRAY(aui8PicOnLevel, MAX_REF_LEVELS);
526dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t	ui32VopTimeResolution=0x%x\n", data->ui32VopTimeResolution);
527dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t	ui32InitialQp=0x%x\n", data->ui32InitialQp);
528dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t	ui32BUSize=0x%x\n", data->ui32BUSize);
529dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t	sMVSettingsIdr { \n\t\t\tui32MVCalc_Below=0x%x\n \t\t\tui32MVCalc_Colocated=0x%x\n \t\t\tui32MVCalc_Config=0x%x\n \t\t}\n", data->sMVSettingsIdr.ui32MVCalc_Below,data->sMVSettingsIdr.ui32MVCalc_Colocated, data->sMVSettingsIdr.ui32MVCalc_Config);
530dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
531dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t	sMVSettingsNonB { \n");
532dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    for(i=0;i<MAX_BFRAMES +1;i++)
533dd0a0b792078d587a2e266f146ccd287c39a742dedward lin        drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t\t\tui32MVCalc_Below=0x%x   ui32MVCalc_Colocated=0x%x   ui32MVCalc_Config=0x%x }\n", data->sMVSettingsNonB[i].ui32MVCalc_Below,data->sMVSettingsNonB[i].ui32MVCalc_Colocated, data->sMVSettingsNonB[i].ui32MVCalc_Config);
534dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t\t}\n");
535dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
536dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP," \t	ui32MVSettingsBTable=0x%x\n", data->ui32MVSettingsBTable);
537dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    SETVIDEO_ui32MVSettingsBTable_dump(data->ui32MVSettingsBTable);
538dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
539dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP," \t	ui32MVSettingsHierarchical=0x%x\n", data->ui32MVSettingsHierarchical);
540dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    if(data->ui32MVSettingsHierarchical != 0)
541dd0a0b792078d587a2e266f146ccd287c39a742dedward lin        SETVIDEO_ui32MVSettingsHierarchical_dump(data->ui32MVSettingsHierarchical);
542dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
543dd0a0b792078d587a2e266f146ccd287c39a742dedward lin#ifdef FIRMWARE_BIAS
544dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t	aui32DirectBias_P  {");
545dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    PRINT_ARRAY_NEW(aui32DirectBias_P,27 );
546dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t	aui32InterBias_P  {");
547dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    PRINT_ARRAY_NEW(aui32InterBias_P,27 );
548dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t	aui32DirectBias_B  {");
549dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    PRINT_ARRAY_NEW(aui32DirectBias_B,27 );
550dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t	aui32InterBias_B  {");
551dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    PRINT_ARRAY_NEW(aui32InterBias_B,27 );
552dd0a0b792078d587a2e266f146ccd287c39a742dedward lin#endif
553dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t	eFormat=%d\n", data->eFormat);
554dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t	eStandard=%d\n", data->eStandard);
555dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t	eRCMode=%d\n", data->eRCMode);
556dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t	b8FirstPic=%d\n", data->b8FirstPic);
557dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t	b8IsInterlaced=%d\n", data->b8IsInterlaced);
558dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t	b8TopFieldFirst=%d\n", data->b8TopFieldFirst);
559dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t	b8ArbitrarySO=%d\n", data->b8ArbitrarySO);
560dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t	bOutputReconstructed=%d\n", data->bOutputReconstructed);
561dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t	b8DisableBitStuffing=%d\n", data->b8DisableBitStuffing);
562dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t	b8InsertHRDparams=%d\n", data->b8InsertHRDparams);
563dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t	ui8MaxSlicesPerPicture=%d\n", data->ui8MaxSlicesPerPicture);
564dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t	ui8NumPipes=%d\n", data->ui8NumPipes);
565dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t	bCARC=%d\n", data->bCARC);
566dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t	iCARCBaseline=%d\n", data->iCARCBaseline);
567dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t	uCARCThreshold=%d\n", data->uCARCThreshold);
568dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t	uCARCCutoff=%d\n", data->uCARCCutoff);
569dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t	uCARCNegRange=%d\n", data->uCARCNegRange);
570dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t	uCARCNegScale=%d\n", data->uCARCNegScale);
571dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t	uCARCPosRange=%d\n", data->uCARCPosRange);
572dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t	uCARCPosScale=%d\n", data->uCARCPosScale);
573dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t	uCARCShift=%d\n", data->uCARCShift);
574dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t	ui32MVClip_Config=%d\n", data->ui32MVClip_Config);
575dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t	ui32PredCombControl=%d\n", data->ui32PredCombControl);
576dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t	ui32LRITC_Tile_Use_Config=%d\n", data->ui32LRITC_Tile_Use_Config);
577dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t	ui32LRITC_Cache_Chunk_Config=%d\n", data->ui32LRITC_Cache_Chunk_Config);
578dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t	ui32IPEVectorClipping=%d\n", data->ui32IPEVectorClipping);
579dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t	ui32H264CompControl=%d\n", data->ui32H264CompControl);
580dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t	ui32H264CompIntraPredModes=%d\n", data->ui32H264CompIntraPredModes);
581dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t	ui32IPCM_0_Config=%d\n", data->ui32IPCM_0_Config);
582dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t	ui32IPCM_1_Config=%d\n", data->ui32IPCM_1_Config);
583dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t	ui32SPEMvdClipRange=%d\n", data->ui32SPEMvdClipRange);
584dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t	ui32JMCompControl=%d\n", data->ui32JMCompControl);
585dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t	ui32MBHostCtrl=%d\n", data->ui32MBHostCtrl);
586dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t	ui32DeblockCtrl=%d\n", data->ui32DeblockCtrl);
587dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
588dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t	ui32SkipCodedInterIntra=%d\n", data->ui32SkipCodedInterIntra);
589dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t	ui32VLCControl=%d\n", data->ui32VLCControl);
590dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t	ui32VLCSliceControl=%d\n", data->ui32VLCSliceControl);
591dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t	ui32VLCSliceMBControl=%d\n", data->ui32VLCSliceMBControl);
592dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t	ui16CQPOffset=%d\n", data->ui16CQPOffset);
593dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t	b8CodedHeaderPerSlice=%d\n", data->b8CodedHeaderPerSlice);
594dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t	ui32FirstPicFlags=%d\n", data->ui32FirstPicFlags);
595dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t	ui32NonFirstPicFlags=%d\n", data->ui32NonFirstPicFlags);
596dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
597dd0a0b792078d587a2e266f146ccd287c39a742dedward lin#ifndef EXCLUDE_ADAPTIVE_ROUNDING
598dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t	bMCAdaptiveRoundingDisable=%d\n",data->bMCAdaptiveRoundingDisable);
599dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    int j;
600dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t	ui16MCAdaptiveRoundingOffsets[18][4]");
601dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\n");
602dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    for(i=0;i<18;i++){
603dd0a0b792078d587a2e266f146ccd287c39a742dedward lin        for(j=0;j<4;j++)
604dd0a0b792078d587a2e266f146ccd287c39a742dedward lin            drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t\t\t0x%x", data-> ui16MCAdaptiveRoundingOffsets[i][j]);
605dd0a0b792078d587a2e266f146ccd287c39a742dedward lin        drv_debug_msg(VIDEO_ENCODE_PDUMP,"\n");
606dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    }
607dd0a0b792078d587a2e266f146ccd287c39a742dedward lin#endif
608dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
609dd0a0b792078d587a2e266f146ccd287c39a742dedward lin#ifdef FORCED_REFERENCE
610dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t	ui32PatchedReconAddress=0x%x\n", data->ui32PatchedReconAddress);
611dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t	ui32PatchedRef0Address=0x%x\n", data->ui32PatchedRef0Address);
612dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t	ui32PatchedRef1Address=0x%x\n", data->ui32PatchedRef1Address);
613dd0a0b792078d587a2e266f146ccd287c39a742dedward lin#endif
614dd0a0b792078d587a2e266f146ccd287c39a742dedward lin#ifdef LTREFHEADER
615dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t	aui32LTRefHeader  {");
616dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    PRINT_ARRAY_ADDR("aui32LTRefHeader",aui32LTRefHeader, MAX_SOURCE_SLOTS_SL);
617dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t	i8SliceHeaderSlotNum=%d\n",data->i8SliceHeaderSlotNum);
618dd0a0b792078d587a2e266f146ccd287c39a742dedward lin#endif
619dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t	b8ReconIsLongTerm=%d\n", data->b8ReconIsLongTerm);
620dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t	b8Ref0IsLongTerm=%d\n", data->b8Ref0IsLongTerm);
621dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t	b8Ref1IsLongTerm=%d\n", data->b8Ref1IsLongTerm);
622dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t	ui8RefSpacing=0x%x\n", data->ui8RefSpacing);
623dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
624dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t	ui8FirstPipe=0x%x\n", data->ui8FirstPipe);
625dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t	ui8LastPipe=0x%x\n", data->ui8LastPipe);
626dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t	ui8PipesToUseFlags=0x%x\n", data->ui8PipesToUseFlags);
627dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
628dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t	sInParams {\n");
629dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t\t	ui16MBPerFrm=%d\n",data->sInParams.ui16MBPerFrm);
630dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t\t	ui16MBPerBU=%d\n", data->sInParams.ui16MBPerBU);
631dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t\t	ui16BUPerFrm=%d\n",data->sInParams.ui16BUPerFrm);
632dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t\t	ui16IntraPerio=%d\n",data->sInParams.ui16IntraPeriod);
633dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t\t	ui16BFrames=%d\n", data->sInParams.ui16BFrames);
634dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t\t	bHierarchicalMode=%d\n",data->sInParams.mode.h264.bHierarchicalMode);
635dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t\t	i32BitsPerFrm=%d\n",   data->sInParams.i32BitsPerFrm);
636dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t\t	i32BitsPerBU=%d\n",    data->sInParams.i32BitsPerBU);
637dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t\t	i32BitsPerMB=%d\n",    data->sInParams.mode.other.i32BitsPerMB);
638dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t\t	i32BitRate=%d\n",data->sInParams.i32BitRate);
639dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t\t	i32BufferSiz=%d\n",data->sInParams.i32BufferSize );
640dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t\t	i32InitialLevel=%d\n", data->sInParams.i32InitialLevel);
641dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t\t	i32InitialDelay=%d\n", data->sInParams.i32InitialDelay);
642dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t\t	i32BitsPerGOP=%d\n",   data->sInParams.mode.other.i32BitsPerGOP);
643dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t\t	ui16AvQPVal=%d\n", data->sInParams.mode.other.ui16AvQPVal);
644dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t\t	ui16MyInitQP=%d\n",data->sInParams.mode.other.ui16MyInitQP);
645dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t\t	ui32RCScaleFactor=%d\n",data->sInParams.mode.h264.ui32RCScaleFactor);
646dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t\t	bScDetectDis;=%d\n", data->sInParams.mode.h264.bScDetectDisable);
647dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t\t	bFrmSkipDisable=%d\n",data->sInParams.bFrmSkipDisable);
648dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t\t	bBUSkipDisable=%d\n",data->sInParams.mode.other.bBUSkipDisable);
649dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t\t	ui8SeInitQP=%d\n",    data->sInParams.ui8SeInitQP	);
650dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t\t	ui8MinQPVal=%d\n",    data->sInParams.ui8MinQPVal	);
651dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t\t	ui8MaxQPVal=%d\n",    data->sInParams.ui8MaxQPVal	);
652dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t\t	ui8MBPerRow=%d\n",    data->sInParams.ui8MBPerRow	);
653dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t\t	ui8ScaleFactor=%d\n",  data->sInParams.ui8ScaleFactor);
654dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t\t	ui8HalfFrame=%d\n",    data->sInParams.mode.other.ui8HalfFrameRate);
655dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t\t	ui8FCode=%d\n",        data->sInParams.mode.other.ui8FCode);
656dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t\t	i32TransferRate=%d\n",data->sInParams.mode.h264.i32TransferRate);
657dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
658dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t\t}\n");
659dd0a0b792078d587a2e266f146ccd287c39a742dedward lin}
660dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
661dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
662dd0a0b792078d587a2e266f146ccd287c39a742dedward linstruct header_token {
663dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    int token;
664dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    char *str;
665dd0a0b792078d587a2e266f146ccd287c39a742dedward lin} header_tokens[] = {
666dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {ELEMENT_STARTCODE_RAWDATA,"ELEMENT_STARTCODE_RAWDATA=0"},
667dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {ELEMENT_STARTCODE_MIDHDR,"ELEMENT_STARTCODE_MIDHDR"},
668dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {ELEMENT_RAWDATA,"ELEMENT_RAWDATA"},
669dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {ELEMENT_QP,"ELEMENT_QP"},
670dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {ELEMENT_SQP,"ELEMENT_SQP"},
671dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {ELEMENT_FRAMEQSCALE,"ELEMENT_FRAMEQSCALE"},
672dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {ELEMENT_SLICEQSCALE,"ELEMENT_SLICEQSCALE"},
673dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {ELEMENT_INSERTBYTEALIGN_H264,"ELEMENT_INSERTBYTEALIGN_H264"},
674dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {ELEMENT_INSERTBYTEALIGN_MPG4,"ELEMENT_INSERTBYTEALIGN_MPG4"},
675dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {ELEMENT_INSERTBYTEALIGN_MPG2,"ELEMENT_INSERTBYTEALIGN_MPG2"},
676dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {ELEMENT_VBV_MPG2,"ELEMENT_VBV_MPG2"},
677dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {ELEMENT_TEMPORAL_REF_MPG2,"ELEMENT_TEMPORAL_REF_MPG2"},
678dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {ELEMENT_CURRMBNR,"ELEMENT_CURRMBNR"},
679dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {ELEMENT_FRAME_NUM,"ELEMENT_FRAME_NUM"},
680dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {ELEMENT_TEMPORAL_REFERENCE,"ELEMENT_TEMPORAL_REFERENCE"},
681dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {ELEMENT_EXTENDED_TR,"ELEMENT_EXTENDED_TR"},
682dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {ELEMENT_IDR_PIC_ID,"ELEMENT_IDR_PIC_ID"},
683dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {ELEMENT_PIC_ORDER_CNT,"ELEMENT_PIC_ORDER_CNT"},
684dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {ELEMENT_GOB_FRAME_ID,"ELEMENT_GOB_FRAME_ID"},
685dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {ELEMENT_VOP_TIME_INCREMENT,"ELEMENT_VOP_TIME_INCREMENT"},
686dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {ELEMENT_MODULO_TIME_BASE,"ELEMENT_MODULO_TIME_BASE"},
687dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {ELEMENT_BOTTOM_FIELD,"ELEMENT_BOTTOM_FIELD"},
688dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {ELEMENT_SLICE_NUM,"ELEMENT_SLICE_NUM"},
689dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {ELEMENT_MPEG2_SLICE_VERTICAL_POS,"ELEMENT_MPEG2_SLICE_VERTICAL_POS"},
690dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {ELEMENT_MPEG2_IS_INTRA_SLICE,"ELEMENT_MPEG2_IS_INTRA_SLICE"},
691dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {ELEMENT_MPEG2_PICTURE_STRUCTURE,"ELEMENT_MPEG2_PICTURE_STRUCTURE"},
692dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {ELEMENT_REFERENCE,"ELEMENT_REFERENCE"},
693dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {ELEMENT_ADAPTIVE,"ELEMENT_ADAPTIVE"},
694dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {ELEMENT_DIRECT_SPATIAL_MV_FLAG,"ELEMENT_DIRECT_SPATIAL_MV_FLAG"},
695dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {ELEMENT_NUM_REF_IDX_ACTIVE,"ELEMENT_NUM_REF_IDX_ACTIVE"},
696dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {ELEMENT_REORDER_L0,"ELEMENT_REORDER_L0"},
697dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {ELEMENT_REORDER_L1,"ELEMENT_REORDER_L1"},
698dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {ELEMENT_TEMPORAL_ID,"ELEMENT_TEMPORAL_ID"},
699dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {ELEMENT_ANCHOR_PIC_FLAG,"ELEMENT_ANCHOR_PIC_FLAG"},
700dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {BPH_SEI_NAL_INITIAL_CPB_REMOVAL_DELAY,"BPH_SEI_NAL_INITIAL_CPB_REMOVAL_DELAY"},
701dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {BPH_SEI_NAL_INITIAL_CPB_REMOVAL_DELAY_OFFSET,"BPH_SEI_NAL_INITIAL_CPB_REMOVAL_DELAY_OFFSET"},
702dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {PTH_SEI_NAL_CPB_REMOVAL_DELAY,"PTH_SEI_NAL_CPB_REMOVAL_DELAY"},
703dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {PTH_SEI_NAL_DPB_OUTPUT_DELAY,"PTH_SEI_NAL_DPB_OUTPUT_DELAY"},
704dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {ELEMENT_SLICEWEIGHTEDPREDICTIONSTRUCT,"ELEMENT_SLICEWEIGHTEDPREDICTIONSTRUCT"},
705dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {ELEMENT_CUSTOM_QUANT,"ELEMENT_CUSTOM_QUANT"}
706dd0a0b792078d587a2e266f146ccd287c39a742dedward lin};
707dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
708dd0a0b792078d587a2e266f146ccd287c39a742dedward linstatic char *header_to_str(int token)
709dd0a0b792078d587a2e266f146ccd287c39a742dedward lin{
710dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    int i;
711dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    struct header_token *p;
712dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
713dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    for (i=0; i<sizeof(header_tokens)/sizeof(struct header_token); i++) {
714dd0a0b792078d587a2e266f146ccd287c39a742dedward lin        p = &header_tokens[i];
715dd0a0b792078d587a2e266f146ccd287c39a742dedward lin        if (p->token == token)
716dd0a0b792078d587a2e266f146ccd287c39a742dedward lin            return p->str;
717dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    }
718dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
719dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    return "Invalid header token";
720dd0a0b792078d587a2e266f146ccd287c39a742dedward lin}
721dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
722dd0a0b792078d587a2e266f146ccd287c39a742dedward linstatic int MTX_HEADER_PARAMS_dump(MTX_HEADER_PARAMS *p)
723dd0a0b792078d587a2e266f146ccd287c39a742dedward lin{
724dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    MTX_HEADER_ELEMENT *last_element=NULL;
725dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    int i;
726dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
727dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t\tui32Elements=%d\n", p->ui32Elements);
728dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    for (i=0; i<p->ui32Elements; i++) {
729dd0a0b792078d587a2e266f146ccd287c39a742dedward lin        MTX_HEADER_ELEMENT *q = &(p->asElementStream[0]);
730dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
731dd0a0b792078d587a2e266f146ccd287c39a742dedward lin        if (last_element) {
732dd0a0b792078d587a2e266f146ccd287c39a742dedward lin            int ui8Offset = 0;
733dd0a0b792078d587a2e266f146ccd287c39a742dedward lin            IMG_UINT8 *ui8P;
734dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
735dd0a0b792078d587a2e266f146ccd287c39a742dedward lin            if (last_element->Element_Type==ELEMENT_STARTCODE_RAWDATA ||
736dd0a0b792078d587a2e266f146ccd287c39a742dedward lin                last_element->Element_Type==ELEMENT_RAWDATA ||
737dd0a0b792078d587a2e266f146ccd287c39a742dedward lin                last_element->Element_Type==ELEMENT_STARTCODE_MIDHDR)
738dd0a0b792078d587a2e266f146ccd287c39a742dedward lin            {
739dd0a0b792078d587a2e266f146ccd287c39a742dedward lin                //Add a new element aligned to word boundary
740dd0a0b792078d587a2e266f146ccd287c39a742dedward lin                //Find RAWBit size in bytes (rounded to word boundary))
741dd0a0b792078d587a2e266f146ccd287c39a742dedward lin                ui8Offset=last_element->ui8Size+8+31; // NumberofRawbits (excluding size of bit count field)+ size of the bitcount field
742dd0a0b792078d587a2e266f146ccd287c39a742dedward lin                ui8Offset/=32; //Now contains rawbits size in words
743dd0a0b792078d587a2e266f146ccd287c39a742dedward lin                ui8Offset+=1; //Now contains rawbits+element_type size in words
744dd0a0b792078d587a2e266f146ccd287c39a742dedward lin                ui8Offset*=4; //Convert to number of bytes (total size of structure in bytes, aligned to word boundary).
745dd0a0b792078d587a2e266f146ccd287c39a742dedward lin            }
746dd0a0b792078d587a2e266f146ccd287c39a742dedward lin            else
747dd0a0b792078d587a2e266f146ccd287c39a742dedward lin            {
748dd0a0b792078d587a2e266f146ccd287c39a742dedward lin                ui8Offset=4;
749dd0a0b792078d587a2e266f146ccd287c39a742dedward lin            }
750dd0a0b792078d587a2e266f146ccd287c39a742dedward lin            ui8P=(IMG_UINT8 *) last_element;
751dd0a0b792078d587a2e266f146ccd287c39a742dedward lin            ui8P+=ui8Offset;
752dd0a0b792078d587a2e266f146ccd287c39a742dedward lin            q=(MTX_HEADER_ELEMENT *) ui8P;
753dd0a0b792078d587a2e266f146ccd287c39a742dedward lin        }
754dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
755dd0a0b792078d587a2e266f146ccd287c39a742dedward lin        drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t\t----Head %d----\n",i);
756dd0a0b792078d587a2e266f146ccd287c39a742dedward lin        drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t\t\tElement_Type=%d(0x%x:%s)\n",
757dd0a0b792078d587a2e266f146ccd287c39a742dedward lin               q->Element_Type, q->Element_Type, header_to_str(q->Element_Type));
758dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
759dd0a0b792078d587a2e266f146ccd287c39a742dedward lin        if (q->Element_Type==ELEMENT_STARTCODE_RAWDATA ||
760dd0a0b792078d587a2e266f146ccd287c39a742dedward lin            q->Element_Type==ELEMENT_RAWDATA ||
761dd0a0b792078d587a2e266f146ccd287c39a742dedward lin            q->Element_Type==ELEMENT_STARTCODE_MIDHDR) {
762dd0a0b792078d587a2e266f146ccd287c39a742dedward lin            int i, ui8Offset = 0;
763dd0a0b792078d587a2e266f146ccd287c39a742dedward lin            IMG_UINT8 *ui8P;
764dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
765dd0a0b792078d587a2e266f146ccd287c39a742dedward lin            drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t\t\tui8Size=%d(0x%x)\n", q->ui8Size, q->ui8Size);
766dd0a0b792078d587a2e266f146ccd287c39a742dedward lin            drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t\t\t(====aui8Bits===)");
767dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
768dd0a0b792078d587a2e266f146ccd287c39a742dedward lin            //Find RAWBit size in bytes (rounded to word boundary))
769dd0a0b792078d587a2e266f146ccd287c39a742dedward lin            ui8Offset=q->ui8Size+8+31; // NumberofRawbits (excluding size of bit count field)+ size of the bitcount field
770dd0a0b792078d587a2e266f146ccd287c39a742dedward lin            ui8Offset/=32; //Now contains rawbits size in words
771dd0a0b792078d587a2e266f146ccd287c39a742dedward lin            //ui8Offset+=1; //Now contains rawbits+element_type size in words
772dd0a0b792078d587a2e266f146ccd287c39a742dedward lin            ui8Offset*=4; //Convert to number of bytes (total size of structure in bytes, aligned to word boundar
773dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
774dd0a0b792078d587a2e266f146ccd287c39a742dedward lin            ui8P = &q->aui8Bits;
775dd0a0b792078d587a2e266f146ccd287c39a742dedward lin            for (i=0; i<ui8Offset; i++) {
776dd0a0b792078d587a2e266f146ccd287c39a742dedward lin                if ((i%8) == 0)
777dd0a0b792078d587a2e266f146ccd287c39a742dedward lin                    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\n\t\t\t");
778dd0a0b792078d587a2e266f146ccd287c39a742dedward lin                drv_debug_msg(VIDEO_ENCODE_PDUMP,"0x%02x\t", *ui8P);
779dd0a0b792078d587a2e266f146ccd287c39a742dedward lin                ui8P++;
780dd0a0b792078d587a2e266f146ccd287c39a742dedward lin            }
781dd0a0b792078d587a2e266f146ccd287c39a742dedward lin            drv_debug_msg(VIDEO_ENCODE_PDUMP,"\n");
782dd0a0b792078d587a2e266f146ccd287c39a742dedward lin        } else {
783dd0a0b792078d587a2e266f146ccd287c39a742dedward lin            drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t\t\t(no ui8Size/aui8Bits for this type header)\n");
784dd0a0b792078d587a2e266f146ccd287c39a742dedward lin        }
785dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
786dd0a0b792078d587a2e266f146ccd287c39a742dedward lin        last_element = q;
787dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    }
788dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
789dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    return 0;
790dd0a0b792078d587a2e266f146ccd287c39a742dedward lin}
791dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
792dd0a0b792078d587a2e266f146ccd287c39a742dedward linstatic char *eBufferType2str(IMG_REF_BUFFER_TYPE tmp)
793dd0a0b792078d587a2e266f146ccd287c39a742dedward lin{
794dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    switch (tmp) {
795dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    case IMG_BUFFER_REF0:
796dd0a0b792078d587a2e266f146ccd287c39a742dedward lin        return "IMG_BUFFER_REF0";
797dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    case IMG_BUFFER_REF1:
798dd0a0b792078d587a2e266f146ccd287c39a742dedward lin        return "IMG_BUFFER_REF1";
799dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    case IMG_BUFFER_RECON:
800dd0a0b792078d587a2e266f146ccd287c39a742dedward lin        return "IMG_BUFFER_RECON";
801dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    default:
802dd0a0b792078d587a2e266f146ccd287c39a742dedward lin        return "Unknown Buffer Type";
803dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    }
804dd0a0b792078d587a2e266f146ccd287c39a742dedward lin}
805dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
806dd0a0b792078d587a2e266f146ccd287c39a742dedward linstatic void PROVIDEBUFFER_SOURCE_dump(void *data)
807dd0a0b792078d587a2e266f146ccd287c39a742dedward lin{
808dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    IMG_SOURCE_BUFFER_PARAMS *source = (IMG_SOURCE_BUFFER_PARAMS*) data;
809dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
810dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t\tui32PhysAddrYPlane_Field0=0x%x\n",source->ui32PhysAddrYPlane_Field0);
811dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t\tui32PhysAddrUPlane_Field0=0x%x\n",source->ui32PhysAddrUPlane_Field0);
812dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t\tui32PhysAddrVPlane_Field0=0x%x\n",source->ui32PhysAddrVPlane_Field0);
813dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t\tui32PhysAddrYPlane_Field1=0x%x\n",source->ui32PhysAddrYPlane_Field1);
814dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t\tui32PhysAddrUPlane_Field1=0x%x\n",source->ui32PhysAddrUPlane_Field1);
815dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t\tui32PhysAddrVPlane_Field1=0x%x\n",source->ui32PhysAddrVPlane_Field1);
816dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t\tui32HostContext=%d\n",source->ui32HostContext);
817dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t\tui8DisplayOrderNum=%d\n",source->ui8DisplayOrderNum);
818dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t\tui8SlotNum=%d\n",source->ui8SlotNum);
819dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    return ;
820dd0a0b792078d587a2e266f146ccd287c39a742dedward lin}
821dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
822dd0a0b792078d587a2e266f146ccd287c39a742dedward linstatic int PROVIDEBUFFER_dump(unsigned int data)
823dd0a0b792078d587a2e266f146ccd287c39a742dedward lin{
824dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    IMG_REF_BUFFER_TYPE eBufType = (data & MASK_MTX_MSG_PROVIDE_REF_BUFFER_USE) >> SHIFT_MTX_MSG_PROVIDE_REF_BUFFER_USE;
825dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    //IMG_BUFFER_DATA *bufdata = p->sData;
826dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t\teBufferType=(%s)\n",  eBufferType2str(eBufType));
827dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\n\n");
828dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
829dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    return 0;
830dd0a0b792078d587a2e266f146ccd287c39a742dedward lin}
831dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
832dd0a0b792078d587a2e266f146ccd287c39a742dedward linstatic char *eSubtype2str(IMG_PICMGMT_TYPE eSubtype)
833dd0a0b792078d587a2e266f146ccd287c39a742dedward lin{
834dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    switch (eSubtype) {
835dd0a0b792078d587a2e266f146ccd287c39a742dedward lin        case IMG_PICMGMT_REF_TYPE:return "IMG_PICMGMT_REF_TYPE";
836dd0a0b792078d587a2e266f146ccd287c39a742dedward lin        case IMG_PICMGMT_GOP_STRUCT:return "IMG_PICMGMT_GOP_STRUCT";
837dd0a0b792078d587a2e266f146ccd287c39a742dedward lin        case IMG_PICMGMT_SKIP_FRAME:return "IMG_PICMGMT_SKIP_FRAME";
838dd0a0b792078d587a2e266f146ccd287c39a742dedward lin        case IMG_PICMGMT_EOS:return "IMG_PICMGMT_EOS";
839dd0a0b792078d587a2e266f146ccd287c39a742dedward lin        case IMG_PICMGMT_FLUSH:return "IMG_PICMGMT_FLUSH";
840dd0a0b792078d587a2e266f146ccd287c39a742dedward lin        case IMG_PICMGMT_QUANT:return "IMG_PICMGMT_QUANT";
841dd0a0b792078d587a2e266f146ccd287c39a742dedward lin        default: return "Unknow";
842dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    }
843dd0a0b792078d587a2e266f146ccd287c39a742dedward lin}
844dd0a0b792078d587a2e266f146ccd287c39a742dedward linint PICMGMT_dump(IMG_UINT32 data)
845dd0a0b792078d587a2e266f146ccd287c39a742dedward lin{
846dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    IMG_PICMGMT_TYPE eSubType = (data & MASK_MTX_MSG_PICMGMT_SUBTYPE) >> SHIFT_MTX_MSG_PICMGMT_SUBTYPE;
847dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    IMG_FRAME_TYPE eFrameType = 0;
848dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    IMG_UINT32 ui32FrameCount = 0;
849dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
850dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,
851dd0a0b792078d587a2e266f146ccd287c39a742dedward lin        "\t\teSubtype=%d(%s)\n", eSubType, eSubtype2str(eSubType));
852dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,
853dd0a0b792078d587a2e266f146ccd287c39a742dedward lin        "\t\t(=====(additional data)=====\n");
854dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    switch (eSubType) {
855dd0a0b792078d587a2e266f146ccd287c39a742dedward lin        case IMG_PICMGMT_REF_TYPE:
856dd0a0b792078d587a2e266f146ccd287c39a742dedward lin            eFrameType = (data & MASK_MTX_MSG_PICMGMT_DATA) >> SHIFT_MTX_MSG_PICMGMT_DATA;
857dd0a0b792078d587a2e266f146ccd287c39a742dedward lin            switch (eFrameType) {
858dd0a0b792078d587a2e266f146ccd287c39a742dedward lin                case IMG_INTRA_IDR:
859dd0a0b792078d587a2e266f146ccd287c39a742dedward lin                    drv_debug_msg(VIDEO_ENCODE_PDUMP,
860dd0a0b792078d587a2e266f146ccd287c39a742dedward lin                        "\t\teFrameType=IMG_INTRA_IDR\n");
861dd0a0b792078d587a2e266f146ccd287c39a742dedward lin                    break;
862dd0a0b792078d587a2e266f146ccd287c39a742dedward lin                case IMG_INTRA_FRAME:
863dd0a0b792078d587a2e266f146ccd287c39a742dedward lin                    drv_debug_msg(VIDEO_ENCODE_PDUMP,
864dd0a0b792078d587a2e266f146ccd287c39a742dedward lin                        "\t\teFrameType=IMG_INTRA_FRAME\n");
865dd0a0b792078d587a2e266f146ccd287c39a742dedward lin                    break;
866dd0a0b792078d587a2e266f146ccd287c39a742dedward lin                case IMG_INTER_P:
867dd0a0b792078d587a2e266f146ccd287c39a742dedward lin                    drv_debug_msg(VIDEO_ENCODE_PDUMP,
868dd0a0b792078d587a2e266f146ccd287c39a742dedward lin                        "\t\teFrameType=IMG_INTER_P\n");
869dd0a0b792078d587a2e266f146ccd287c39a742dedward lin                    break;
870dd0a0b792078d587a2e266f146ccd287c39a742dedward lin                case IMG_INTER_B:
871dd0a0b792078d587a2e266f146ccd287c39a742dedward lin                    drv_debug_msg(VIDEO_ENCODE_PDUMP,
872dd0a0b792078d587a2e266f146ccd287c39a742dedward lin                        "\t\teFrameType=IMG_INTER_B\n");
873dd0a0b792078d587a2e266f146ccd287c39a742dedward lin                    break;
874dd0a0b792078d587a2e266f146ccd287c39a742dedward lin            }
875dd0a0b792078d587a2e266f146ccd287c39a742dedward lin            break;
876dd0a0b792078d587a2e266f146ccd287c39a742dedward lin        case IMG_PICMGMT_EOS:
877dd0a0b792078d587a2e266f146ccd287c39a742dedward lin             ui32FrameCount = (data & MASK_MTX_MSG_PICMGMT_DATA) >> SHIFT_MTX_MSG_PICMGMT_DATA;
878dd0a0b792078d587a2e266f146ccd287c39a742dedward lin             drv_debug_msg(VIDEO_ENCODE_PDUMP,
879dd0a0b792078d587a2e266f146ccd287c39a742dedward lin                 "\t\tui32FrameCount=%d\n", ui32FrameCount);
880dd0a0b792078d587a2e266f146ccd287c39a742dedward lin             break;
881dd0a0b792078d587a2e266f146ccd287c39a742dedward lin        default:
882dd0a0b792078d587a2e266f146ccd287c39a742dedward lin             break;
883dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    }
884dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\n\n");
885dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
886dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    return 0;
887dd0a0b792078d587a2e266f146ccd287c39a742dedward lin}
888dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
889dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
890dd0a0b792078d587a2e266f146ccd287c39a742dedward linstatic char * cmd2str(int cmdid)
891dd0a0b792078d587a2e266f146ccd287c39a742dedward lin{
892dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    switch (cmdid) {
893dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    case MTX_CMDID_NULL:        return "MTX_CMDID_NULL";
894dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    case MTX_CMDID_SHUTDOWN:    return "MTX_CMDID_SHUTDOWN";
895dd0a0b792078d587a2e266f146ccd287c39a742dedward lin	// Video Commands
896dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    case MTX_CMDID_DO_HEADER:   return "MTX_CMDID_DO_HEADER";
897dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    case MTX_CMDID_ENCODE_FRAME:return "MTX_CMDID_ENCODE_FRAME";
898dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    case MTX_CMDID_START_FRAME: return "MTX_CMDID_START_FRAME";
899dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    case MTX_CMDID_ENCODE_SLICE:return "MTX_CMDID_ENCODE_SLICE";
900dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    case MTX_CMDID_END_FRAME:   return "MTX_CMDID_END_FRAME";
901dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    case MTX_CMDID_SETVIDEO:    return "MTX_CMDID_SETVIDEO";
902dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    case MTX_CMDID_GETVIDEO:    return "MTX_CMDID_GETVIDEO";
903dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    case MTX_CMDID_PICMGMT:     return "MTX_CMDID_PICMGMT";
904dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    case MTX_CMDID_RC_UPDATE:   return "MTX_CMDID_RC_UPDATE";
905dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    case MTX_CMDID_PROVIDE_SOURCE_BUFFER:return "MTX_CMDID_PROVIDE_SOURCE_BUFFER";
906dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    case MTX_CMDID_PROVIDE_REF_BUFFER:   return "MTX_CMDID_PROVIDE_REF_BUFFER";
907dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    case MTX_CMDID_PROVIDE_CODED_BUFFER: return "MTX_CMDID_PROVIDE_CODED_BUFFER";
908dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    case MTX_CMDID_ABORT:       return "MTX_CMDID_ABORT";
909dd0a0b792078d587a2e266f146ccd287c39a742dedward lin	// JPEG commands
910dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    case MTX_CMDID_SETQUANT:    return "MTX_CMDID_SETQUANT";
911dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    case MTX_CMDID_SETUP_INTERFACE:      return "MTX_CMDID_SETUP_INTERFACE";
912dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    case MTX_CMDID_ISSUEBUFF:   return "MTX_CMDID_ISSUEBUFF";
913dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    case MTX_CMDID_SETUP:       return "MTX_CMDID_SETUP";
914dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    case MTX_CMDID_ENDMARKER:
915dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    default:
916dd0a0b792078d587a2e266f146ccd287c39a742dedward lin        return "Invalid Command (%d)";
917dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    }
918dd0a0b792078d587a2e266f146ccd287c39a742dedward lin}
919dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
920dd0a0b792078d587a2e266f146ccd287c39a742dedward linstatic int command_parameter_dump(int cmdid, unsigned int cmd_data, unsigned int cmd_addr)
921dd0a0b792078d587a2e266f146ccd287c39a742dedward lin{
922dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    MTX_HEADER_PARAMS *header_para;
923dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    IMG_MTX_VIDEO_CONTEXT *context;
924dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    JPEG_MTX_QUANT_TABLE *jpeg_table;
925dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    MTX_ISSUE_BUFFERS *issue_buffer;
926dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    JPEG_MTX_DMA_SETUP *jpeg_mtx_dma_setup;
927dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    void *virt_addr = 0;
928dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    if (cmd_addr != 0)
929dd0a0b792078d587a2e266f146ccd287c39a742dedward lin        virt_addr = phy2virt(cmd_addr);
930dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
931dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    switch (cmdid) {
932dd0a0b792078d587a2e266f146ccd287c39a742dedward lin        case MTX_CMDID_NULL:
933dd0a0b792078d587a2e266f146ccd287c39a742dedward lin        case MTX_CMDID_SHUTDOWN:
934dd0a0b792078d587a2e266f146ccd287c39a742dedward lin        case MTX_CMDID_ENDMARKER :         //!< end marker for enum
935dd0a0b792078d587a2e266f146ccd287c39a742dedward lin        case MTX_CMDID_GETVIDEO:
936dd0a0b792078d587a2e266f146ccd287c39a742dedward lin            break;
937dd0a0b792078d587a2e266f146ccd287c39a742dedward lin        case MTX_CMDID_DO_HEADER:
938dd0a0b792078d587a2e266f146ccd287c39a742dedward lin            header_para = (MTX_HEADER_PARAMS *)virt_addr;
939dd0a0b792078d587a2e266f146ccd287c39a742dedward lin            DO_HEADER_dump(header_para);
940dd0a0b792078d587a2e266f146ccd287c39a742dedward lin            if (duplicate_setvideo_dump)
941dd0a0b792078d587a2e266f146ccd287c39a742dedward lin                SETVIDEO_dump(mtx_ctx);
942dd0a0b792078d587a2e266f146ccd287c39a742dedward lin            break;
943dd0a0b792078d587a2e266f146ccd287c39a742dedward lin        case MTX_CMDID_ENCODE_FRAME:
944dd0a0b792078d587a2e266f146ccd287c39a742dedward lin            if (duplicate_setvideo_dump)
945dd0a0b792078d587a2e266f146ccd287c39a742dedward lin                SETVIDEO_dump(mtx_ctx);
946dd0a0b792078d587a2e266f146ccd287c39a742dedward lin            if (last_setvideo_dump == 1)
947dd0a0b792078d587a2e266f146ccd287c39a742dedward lin                SETVIDEO_dump(mtx_ctx);
948dd0a0b792078d587a2e266f146ccd287c39a742dedward lin            break;
949dd0a0b792078d587a2e266f146ccd287c39a742dedward lin        case MTX_CMDID_SETVIDEO:
950dd0a0b792078d587a2e266f146ccd287c39a742dedward lin            context = (IMG_MTX_VIDEO_CONTEXT *)virt_addr;
951dd0a0b792078d587a2e266f146ccd287c39a742dedward lin            if (last_setvideo_dump == 1)
952dd0a0b792078d587a2e266f146ccd287c39a742dedward lin                mtx_ctx = virt_addr;
953dd0a0b792078d587a2e266f146ccd287c39a742dedward lin            else
954dd0a0b792078d587a2e266f146ccd287c39a742dedward lin                SETVIDEO_dump(context);
955dd0a0b792078d587a2e266f146ccd287c39a742dedward lin            break;
956dd0a0b792078d587a2e266f146ccd287c39a742dedward lin        case MTX_CMDID_PICMGMT :
957dd0a0b792078d587a2e266f146ccd287c39a742dedward lin            PICMGMT_dump(cmd_data);
958dd0a0b792078d587a2e266f146ccd287c39a742dedward lin            break;
959dd0a0b792078d587a2e266f146ccd287c39a742dedward lin        case  MTX_CMDID_PROVIDE_SOURCE_BUFFER:
960dd0a0b792078d587a2e266f146ccd287c39a742dedward lin            PROVIDEBUFFER_SOURCE_dump((IMG_SOURCE_BUFFER_PARAMS *)virt_addr);
961dd0a0b792078d587a2e266f146ccd287c39a742dedward lin            break;
962dd0a0b792078d587a2e266f146ccd287c39a742dedward lin        case  MTX_CMDID_PROVIDE_REF_BUFFER:
963dd0a0b792078d587a2e266f146ccd287c39a742dedward lin            PROVIDEBUFFER_dump(cmd_data);
964dd0a0b792078d587a2e266f146ccd287c39a742dedward lin            break;
965dd0a0b792078d587a2e266f146ccd287c39a742dedward lin        case MTX_CMDID_PROVIDE_CODED_BUFFER:
966dd0a0b792078d587a2e266f146ccd287c39a742dedward lin            break;
967dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
968dd0a0b792078d587a2e266f146ccd287c39a742dedward lin            // JPEG commands
969dd0a0b792078d587a2e266f146ccd287c39a742dedward lin        case MTX_CMDID_SETQUANT:          //!< (data: #JPEG_MTX_QUANT_TABLE)\n
970dd0a0b792078d587a2e266f146ccd287c39a742dedward lin            jpeg_table = (JPEG_MTX_QUANT_TABLE *)virt_addr;
971dd0a0b792078d587a2e266f146ccd287c39a742dedward lin            JPEG_TABLE_dump(jpeg_table);
972dd0a0b792078d587a2e266f146ccd287c39a742dedward lin            break;
973dd0a0b792078d587a2e266f146ccd287c39a742dedward lin        case MTX_CMDID_ISSUEBUFF:         //!< (data: #MTX_ISSUE_BUFFERS)\n
974dd0a0b792078d587a2e266f146ccd287c39a742dedward lin            issue_buffer = (MTX_ISSUE_BUFFERS *)virt_addr;
975dd0a0b792078d587a2e266f146ccd287c39a742dedward lin            ISSUE_BUFFER_dump(issue_buffer);
976dd0a0b792078d587a2e266f146ccd287c39a742dedward lin            break;
977dd0a0b792078d587a2e266f146ccd287c39a742dedward lin        case MTX_CMDID_SETUP:             //!< (data: #JPEG_MTX_DMA_SETUP)\n\n
978dd0a0b792078d587a2e266f146ccd287c39a742dedward lin            jpeg_mtx_dma_setup = (JPEG_MTX_DMA_SETUP *)virt_addr;
979dd0a0b792078d587a2e266f146ccd287c39a742dedward lin            JPEG_MTX_DMA_dump(jpeg_mtx_dma_setup);
980dd0a0b792078d587a2e266f146ccd287c39a742dedward lin            break;
981dd0a0b792078d587a2e266f146ccd287c39a742dedward lin        default:
982dd0a0b792078d587a2e266f146ccd287c39a742dedward lin            break;
983dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    }
984dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    return 0;
985dd0a0b792078d587a2e266f146ccd287c39a742dedward lin}
986dd0a0b792078d587a2e266f146ccd287c39a742dedward linstatic struct RegisterInfomation multicore_regs[] = {
987dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"MULTICORE_SRST",0x0000},
988dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"MULTICORE_INT_STAT",0x0004},
989dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"MULTICORE_MTX_INT_ENAB",0x0008},
990dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"MULTICORE_HOST_INT_ENAB",0x000C},
991dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"MULTICORE_INT_CLEAR",0x0010},
992dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"MULTICORE_MAN_CLK_GATE",0x0014},
993dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"TOPAZ_MTX_C_RATIO",0x0018},
994dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"MMU_STATUS",0x001C},
995dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"MMU_MEM_REQ",0x0020},
996dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"MMU_CONTROL0",0x0024},
997dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"MMU_CONTROL1",0x0028},
998dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"MMU_CONTROL2",0x002C},
999dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"MMU_DIR_LIST_BASE",0x0030},
1000dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"MMU_TILE",0x0038},
1001dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"MTX_DEBUG_MSTR",0x0044},
1002dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"MTX_DEBUG_SLV",0x0048},
1003dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"MULTICORE_CORE_SEL_0",0x0050},
1004dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"MULTICORE_CORE_SEL_1",0x0054},
1005dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"MULTICORE_HW_CFG",0x0058},
1006dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"MULTICORE_CMD_FIFO_WRITE",0x0060},
1007dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"MULTICORE_CMD_FIFO_WRITE_SPACE",0x0064},
1008dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"TOPAZ_CMD_FIFO_READ",0x0070},
1009dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"TOPAZ_CMD_FIFO_READ_AVAILABLE",0x0074},
1010dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"TOPAZ_CMD_FIFO_FLUSH",0x0078},
1011dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"MMU_TILE_EXT",0x0080},
1012dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"FIRMWARE_REG_1",0x0100},
1013dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"FIRMWARE_REG_2",0x0104},
1014dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"FIRMWARE_REG_3",0x0108},
1015dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"CYCLE_COUNTER",0x0110},
1016dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"CYCLE_COUNTER_CTRL",0x0114},
1017dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"MULTICORE_IDLE_PWR_MAN",0x0118},
1018dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"DIRECT_BIAS_TABLE",0x0124},
1019dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"INTRA_BIAS_TABLE",0x0128},
1020dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"INTER_BIAS_TABLE",0x012C},
1021dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"INTRA_SCALE_TABLE",0x0130},
1022dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"QPCB_QPCR_OFFSET",0x0134},
1023dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"INTER_INTRA_SCALE_TABLE",0x0140},
1024dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"SKIPPED_CODED_SCALE_TABLE",0x0144},
1025dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"POLYNOM_ALPHA_COEFF_CORE0",0x0148},
1026dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"POLYNOM_GAMMA_COEFF_CORE0",0x014C},
1027dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"POLYNOM_CUTOFF_CORE0",0x0150},
1028dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"POLYNOM_ALPHA_COEFF_CORE1",0x0154},
1029dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"POLYNOM_GAMMA_COEFF_CORE1",0x0158},
1030dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"POLYNOM_CUTOFF_CORE1",0x015C},
1031dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"POLYNOM_ALPHA_COEFF_CORE2",0x0160},
1032dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"POLYNOM_GAMMA_COEFF_CORE2",0x0164},
1033dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"POLYNOM_CUTOFF_CORE2",0x0168},
1034dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"FIRMWARE_REG_4",0x0300},
1035dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"FIRMWARE_REG_5",0x0304},
1036dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"FIRMWARE_REG_6",0x0308},
1037dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"FIRMWARE_REG_7",0x030C},
1038dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"MULTICORE_RSVD0",0x03B0},
1039dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"TOPAZHP_CORE_ID",0x03C0},
1040dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"TOPAZHP_CORE_REV",0x03D0},
1041dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"TOPAZHP_CORE_DES1",0x03E0},
1042dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"TOPAZHP_CORE_DES2",0x03F0},
1043dd0a0b792078d587a2e266f146ccd287c39a742dedward lin};
1044dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
1045dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
1046dd0a0b792078d587a2e266f146ccd287c39a742dedward linstatic struct RegisterInfomation core_regs[] = {
1047dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"TOPAZHP_SRST",0x0000},
1048dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"TOPAZHP_INTSTAT",0x0004},
1049dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"TOPAZHP_MTX_INTENAB",0x0008},
1050dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"TOPAZHP_HOST_INTENAB",0x000C},
1051dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"TOPAZHP_INTCLEAR",0x0010},
1052dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"TOPAZHP_INT_COMB_SEL",0x0014},
1053dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"TOPAZHP_BUSY",0x0018},
1054dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"TOPAZHP_AUTO_CLOCK_GATING",0x0024},
1055dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"TOPAZHP_MAN_CLOCK_GATING",0x0028},
1056dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"TOPAZHP_RTM",0x0030},
1057dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"TOPAZHP_RTM_VALUE",0x0034},
1058dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"TOPAZHP_MB_PERFORMANCE_RESULT",0x0038},
1059dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"TOPAZHP_MB_PERFORMANCE_MB_NUMBER",0x003C},
1060dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"FIELD_PARITY",0x0188},
1061dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"WEIGHTED_PRED_CONTROL",0x03D0},
1062dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"WEIGHTED_PRED_COEFFS",0x03D4},
1063dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"WEIGHTED_PRED_INV_WEIGHT",0x03E0},
1064dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"TOPAZHP_RSVD0",0x03F0},
1065dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"TOPAZHP_CRC_CLEAR",0x03F4},
1066dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"SPE_ZERO_THRESH",0x0344},
1067dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"SPE0_BEST_SAD_SIGNATURE",0x0348},
1068dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"SPE1_BEST_SAD_SIGNATURE",0x034C},
1069dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"SPE0_BEST_INDEX_SIGNATURE",0x0350},
1070dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"SPE1_BEST_INDEX_SIGNATURE",0x0354},
1071dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"SPE_INTRA_COST_SIGNATURE",0x0358},
1072dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"SPE_MVD_CLIP_RANGE",0x0360},
1073dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"SPE_SUBPEL_RESOLUTION",0x0364},
1074dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"SPE0_MV_SIZE_SIGNATURE",0x0368},
1075dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"SPE1_MV_SIZE_SIGNATURE",0x036C},
1076dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"SPE_MB_PERFORMANCE_RESULT",0x0370},
1077dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"SPE_MB_PERFORMANCE_MB_NUMBER",0x0374},
1078dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"SPE_MB_PERFORMANCE_CLEAR",0x0378},
1079dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"MEM_SIGNATURE_CONTROL",0x0060},
1080dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"MEM_SIGNATURE_ENC_WDATA",0x0064},
1081dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"MEM_SIGNATURE_ENC_RDATA",0x0068},
1082dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"MEM_SIGNATURE_ENC_ADDR",0x006C},
1083dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"PREFETCH_LRITC_SIGNATURE",0x0070},
1084dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"PROC_DMA_CONTROL",0x00E0},
1085dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"PROC_DMA_STATUS",0x00E4},
1086dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"PROC_ESB_ACCESS_CONTROL",0x00EC},
1087dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"PROC_ESB_ACCESS_WORD0",0x00F0},
1088dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"PROC_ESB_ACCESS_WORD1",0x00F4},
1089dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"PROC_ESB_ACCESS_WORD2",0x00F8},
1090dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"PROC_ESB_ACCESS_WORD3",0x00FC},
1091dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
1092dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"LRITC_TILE_USE_CONFIG",0x0040},
1093dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"LRITC_TILE_USE_STATUS",0x0048},
1094dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"LRITC_TILE_FREE_STATUS",0x004C},
1095dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"LRITC_CACHE_CHUNK_CONFIG",0x0050},
1096dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"LRITC_CACHE_CHUNK_STATUS",0x0054},
1097dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"LRITC_SIGNATURE_ADDR",0x0058},
1098dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"LRITC_SIGNATURE_RDATA",0x005C},
1099dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
1100dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"SEQ_CUR_PIC_LUMA_BASE_ADDR",0x0100},
1101dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"SEQ_CUR_PIC_CB_BASE_ADDR",0x0104},
1102dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"SEQ_CUR_PIC_CR_BASE_ADDR",0x0108},
1103dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"SEQ_CUR_PIC_ROW_STRIDE",0x010C},
1104dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"SEQ_REF_PIC0_LUMA_BASE_ADDR",0x0110},
1105dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"SEQ_REF_PIC0_CHROMA_BASE_ADDR",0x0114},
1106dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"SEQ_REF_PIC1_LUMA_BASE_ADDR",0x0118},
1107dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"SEQ_REF_PIC1_CHROMA_BASE_ADDR",0x011C},
1108dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"SEQ_CUR_PIC_CONFIG",0x0120},
1109dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"SEQ_CUR_PIC_SIZE",0x0124},
1110dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"SEQ_RECON_LUMA_BASE_ADDR",0x0128},
1111dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"SEQ_RECON_CHROMA_BASE_ADDR",0x012C},
1112dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"SEQ_ABOVE_PARAM_BASE_ADDR",0x0130},
1113dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"SEQ_TEMPORAL_COLOCATED_IN_ADDR",0x0134},
1114dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"SEQ_TEMPORAL_PIC0_MV_IN_ADDR",0x0138},
1115dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"SEQ_TEMPORAL_PIC1_MV_IN_ADDR",0x013C},
1116dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"SEQ_TEMPORAL_COLOCATED_OUT_ADDR",0x0140},
1117dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"SEQ_TEMPORAL_PIC0_MV_OUT_ADDR",0x0144},
1118dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"SEQ_TEMPORAL_PIC1_MV_OUT_ADDR",0x0148},
1119dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"SEQ_MB_FIRST_STAGE_OUT_ADDR",0x014C},
1120dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"SEQ_MB_CONTROL_IN_ADDR",0x0150},
1121dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"SEQUENCER_CONFIG",0x0154},
1122dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"SLICE_CONFIG",0x0158},
1123dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"SLICE_QP_CONFIG",0x015C},
1124dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"SEQUENCER_KICK",0x0160},
1125dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"H264COMP_REJECT_THRESHOLD",0x0184},
1126dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"H264COMP_CUSTOM_QUANT_SP",0x01A0},
1127dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"H264COMP_CUSTOM_QUANT_Q",0x01A4},
1128dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"H264COMP_CONTROL",0x01A8},
1129dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"H264COMP_INTRA_PRED_MODES",0x01AC},
1130dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"H264COMP_MAX_CYCLE_COUNT",0x01B0},
1131dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"H264COMP_MAX_CYCLE_MB",0x01B4},
1132dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"H264COMP_MAX_CYCLE_RESET",0x01B8},
1133dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"H264COMP4X4_PRED_CRC",0x01BC},
1134dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"H264COMP4X4_COEFFS_CRC",0x01C0},
1135dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"H264COMP4X4_RECON_CRC",0x01C4},
1136dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"H264COMP8X8_PRED_CRC",0x01C8},
1137dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"H264COMP8X8_COEFFS_CRC",0x01CC},
1138dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"H264COMP8X8_RECON_CRC",0x01D0},
1139dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"H264COMP16X16_PRED_CRC",0x01D4},
1140dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"H264COMP16X16_COEFFS_CRC",0x01D8},
1141dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"H264COMP16X16_RECON_CRC",0x01DC},
1142dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"H264COMP_ROUND_0",0x01E0},
1143dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"H264COMP_ROUND_1",0x01E4},
1144dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"H264COMP_ROUND_2",0x01E8},
1145dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"H264COMP_ROUND_INIT",0x01EC},
1146dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"H264COMP_VIDEO_CONF_CONTROL_0",0x01F0},
1147dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"H264COMP_VIDEO_CONF_CONTROL_1",0x01F4},
1148dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"H264COMP_VIDEO_CONF_STATUS_0",0x01F8},
1149dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"H264COMP_VIDEO_CONF_STATUS_1",0x01FC},
1150dd0a0b792078d587a2e266f146ccd287c39a742dedward lin};
1151dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
1152dd0a0b792078d587a2e266f146ccd287c39a742dedward linstatic struct RegisterInfomation mtx_regs[] = {
1153dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"MTX_ENABLE",0x0000},
1154dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"MTX_STATUS",0x0008},
1155dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"MTX_KICK",0x0080},
1156dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"MTX_KICKI",0x0088},
1157dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"MTX_FAULT0",0x0090},
1158dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"MTX_REGISTER_READ_WRITE_DATA",0x00F8},
1159dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"MTX_REGISTER_READ_WRITE_REQUEST",0x00FC},
1160dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"MTX_RAM_ACCESS_DATA_EXCHANGE",0x0100},
1161dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"MTX_RAM_ACCESS_DATA_TRANSFER",0x0104},
1162dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"MTX_RAM_ACCESS_CONTROL",0x0108},
1163dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"MTX_RAM_ACCESS_STATUS",0x010C},
1164dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"MTX_SOFT_RESET",0x0200},
1165dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"MTX_SYSC_CDMAC",0x0340},
1166dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"MTX_SYSC_CDMAA",0x0344},
1167dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"MTX_SYSC_CDMAS0",0x0348},
1168dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"MTX_SYSC_CDMAS1",0x034C},
1169dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"MTX_SYSC_CDMAT",0x0350}
1170dd0a0b792078d587a2e266f146ccd287c39a742dedward lin};
1171dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
1172dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
1173dd0a0b792078d587a2e266f146ccd287c39a742dedward linstatic struct RegisterInfomation dmac_regs[] = {
1174dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"DMA_Setup",0x0000},
1175dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"DMA_Count",0x0004},
1176dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"DMA_Peripheral_param",0x0008},
1177dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"DMA_IRQ_Stat",0x000c},
1178dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"DMA_2D_Mode",0x0010},
1179dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"DMA_Peripheral_addr",0x0014},
1180dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"DMA_Per_hold",0x0018},
1181dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    {"DMA_SoftReset",0x0020},
1182dd0a0b792078d587a2e266f146ccd287c39a742dedward lin};
1183dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
1184dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
1185dd0a0b792078d587a2e266f146ccd287c39a742dedward linint topazhp_dump_command(unsigned int *comm_dword)
1186dd0a0b792078d587a2e266f146ccd287c39a742dedward lin{
1187dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    int cmdid;
1188dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
1189dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    if (comm_dword == NULL)
1190dd0a0b792078d587a2e266f146ccd287c39a742dedward lin        return 1;
1191dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
1192dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    cmdid = (comm_dword[0] & MASK_MTX_MSG_CMD_ID) & ~ MASK_MTX_MSG_PRIORITY;
1193dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
1194dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    (void)multicore_regs;
1195dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    (void)core_regs;
1196dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    (void)mtx_regs;
1197dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    (void)dmac_regs;
1198dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
1199dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\tSend command to MTX\n");
1200dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t\tCMDWORD_ID=%s(High priority:%s)\n", cmd2str(cmdid),
1201dd0a0b792078d587a2e266f146ccd287c39a742dedward lin           (comm_dword[0] & MASK_MTX_MSG_PRIORITY)?"Yes":"No");
1202dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t\tCMDWORD_CORE=%d\n", (comm_dword[0] & MASK_MTX_MSG_CORE) >> SHIFT_MTX_MSG_CORE);
1203dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t\tCMDWORD_COUNT=%d\n", (comm_dword[0] & MASK_MTX_MSG_COUNT) >> SHIFT_MTX_MSG_COUNT);
1204dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t\tCMDWORD_DATA=0x%08x\n", comm_dword[1]);
1205dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t\tCMDWORD_ADDR=0x%08x\n", comm_dword[2]);
1206dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    drv_debug_msg(VIDEO_ENCODE_PDUMP,"\t\tCMDWORD_WBVALUE=0x%08x\n", comm_dword[3]);
1207dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    command_parameter_dump(cmdid, comm_dword[1], comm_dword[2]);
1208dd0a0b792078d587a2e266f146ccd287c39a742dedward lin
1209dd0a0b792078d587a2e266f146ccd287c39a742dedward lin    return 0;
1210dd0a0b792078d587a2e266f146ccd287c39a742dedward lin}
1211