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