1*53ee8cc1Swenshuai.xi //<MStar Software> 2*53ee8cc1Swenshuai.xi //****************************************************************************** 3*53ee8cc1Swenshuai.xi // MStar Software 4*53ee8cc1Swenshuai.xi // Copyright (c) 2010 - 2012 MStar Semiconductor, Inc. All rights reserved. 5*53ee8cc1Swenshuai.xi // All software, firmware and related documentation herein ("MStar Software") are 6*53ee8cc1Swenshuai.xi // intellectual property of MStar Semiconductor, Inc. ("MStar") and protected by 7*53ee8cc1Swenshuai.xi // law, including, but not limited to, copyright law and international treaties. 8*53ee8cc1Swenshuai.xi // Any use, modification, reproduction, retransmission, or republication of all 9*53ee8cc1Swenshuai.xi // or part of MStar Software is expressly prohibited, unless prior written 10*53ee8cc1Swenshuai.xi // permission has been granted by MStar. 11*53ee8cc1Swenshuai.xi // 12*53ee8cc1Swenshuai.xi // By accessing, browsing and/or using MStar Software, you acknowledge that you 13*53ee8cc1Swenshuai.xi // have read, understood, and agree, to be bound by below terms ("Terms") and to 14*53ee8cc1Swenshuai.xi // comply with all applicable laws and regulations: 15*53ee8cc1Swenshuai.xi // 16*53ee8cc1Swenshuai.xi // 1. MStar shall retain any and all right, ownership and interest to MStar 17*53ee8cc1Swenshuai.xi // Software and any modification/derivatives thereof. 18*53ee8cc1Swenshuai.xi // No right, ownership, or interest to MStar Software and any 19*53ee8cc1Swenshuai.xi // modification/derivatives thereof is transferred to you under Terms. 20*53ee8cc1Swenshuai.xi // 21*53ee8cc1Swenshuai.xi // 2. You understand that MStar Software might include, incorporate or be 22*53ee8cc1Swenshuai.xi // supplied together with third party`s software and the use of MStar 23*53ee8cc1Swenshuai.xi // Software may require additional licenses from third parties. 24*53ee8cc1Swenshuai.xi // Therefore, you hereby agree it is your sole responsibility to separately 25*53ee8cc1Swenshuai.xi // obtain any and all third party right and license necessary for your use of 26*53ee8cc1Swenshuai.xi // such third party`s software. 27*53ee8cc1Swenshuai.xi // 28*53ee8cc1Swenshuai.xi // 3. MStar Software and any modification/derivatives thereof shall be deemed as 29*53ee8cc1Swenshuai.xi // MStar`s confidential information and you agree to keep MStar`s 30*53ee8cc1Swenshuai.xi // confidential information in strictest confidence and not disclose to any 31*53ee8cc1Swenshuai.xi // third party. 32*53ee8cc1Swenshuai.xi // 33*53ee8cc1Swenshuai.xi // 4. MStar Software is provided on an "AS IS" basis without warranties of any 34*53ee8cc1Swenshuai.xi // kind. Any warranties are hereby expressly disclaimed by MStar, including 35*53ee8cc1Swenshuai.xi // without limitation, any warranties of merchantability, non-infringement of 36*53ee8cc1Swenshuai.xi // intellectual property rights, fitness for a particular purpose, error free 37*53ee8cc1Swenshuai.xi // and in conformity with any international standard. You agree to waive any 38*53ee8cc1Swenshuai.xi // claim against MStar for any loss, damage, cost or expense that you may 39*53ee8cc1Swenshuai.xi // incur related to your use of MStar Software. 40*53ee8cc1Swenshuai.xi // In no event shall MStar be liable for any direct, indirect, incidental or 41*53ee8cc1Swenshuai.xi // consequential damages, including without limitation, lost of profit or 42*53ee8cc1Swenshuai.xi // revenues, lost or damage of data, and unauthorized system use. 43*53ee8cc1Swenshuai.xi // You agree that this Section 4 shall still apply without being affected 44*53ee8cc1Swenshuai.xi // even if MStar Software has been modified by MStar in accordance with your 45*53ee8cc1Swenshuai.xi // request or instruction for your use, except otherwise agreed by both 46*53ee8cc1Swenshuai.xi // parties in writing. 47*53ee8cc1Swenshuai.xi // 48*53ee8cc1Swenshuai.xi // 5. If requested, MStar may from time to time provide technical supports or 49*53ee8cc1Swenshuai.xi // services in relation with MStar Software to you for your use of 50*53ee8cc1Swenshuai.xi // MStar Software in conjunction with your or your customer`s product 51*53ee8cc1Swenshuai.xi // ("Services"). 52*53ee8cc1Swenshuai.xi // You understand and agree that, except otherwise agreed by both parties in 53*53ee8cc1Swenshuai.xi // writing, Services are provided on an "AS IS" basis and the warranty 54*53ee8cc1Swenshuai.xi // disclaimer set forth in Section 4 above shall apply. 55*53ee8cc1Swenshuai.xi // 56*53ee8cc1Swenshuai.xi // 6. Nothing contained herein shall be construed as by implication, estoppels 57*53ee8cc1Swenshuai.xi // or otherwise: 58*53ee8cc1Swenshuai.xi // (a) conferring any license or right to use MStar name, trademark, service 59*53ee8cc1Swenshuai.xi // mark, symbol or any other identification; 60*53ee8cc1Swenshuai.xi // (b) obligating MStar or any of its affiliates to furnish any person, 61*53ee8cc1Swenshuai.xi // including without limitation, you and your customers, any assistance 62*53ee8cc1Swenshuai.xi // of any kind whatsoever, or any information; or 63*53ee8cc1Swenshuai.xi // (c) conferring any license or right under any intellectual property right. 64*53ee8cc1Swenshuai.xi // 65*53ee8cc1Swenshuai.xi // 7. These terms shall be governed by and construed in accordance with the laws 66*53ee8cc1Swenshuai.xi // of Taiwan, R.O.C., excluding its conflict of law rules. 67*53ee8cc1Swenshuai.xi // Any and all dispute arising out hereof or related hereto shall be finally 68*53ee8cc1Swenshuai.xi // settled by arbitration referred to the Chinese Arbitration Association, 69*53ee8cc1Swenshuai.xi // Taipei in accordance with the ROC Arbitration Law and the Arbitration 70*53ee8cc1Swenshuai.xi // Rules of the Association by three (3) arbitrators appointed in accordance 71*53ee8cc1Swenshuai.xi // with the said Rules. 72*53ee8cc1Swenshuai.xi // The place of arbitration shall be in Taipei, Taiwan and the language shall 73*53ee8cc1Swenshuai.xi // be English. 74*53ee8cc1Swenshuai.xi // The arbitration award shall be final and binding to both parties. 75*53ee8cc1Swenshuai.xi // 76*53ee8cc1Swenshuai.xi //****************************************************************************** 77*53ee8cc1Swenshuai.xi //<MStar Software> 78*53ee8cc1Swenshuai.xi //////////////////////////////////////////////////////////////////////////////// 79*53ee8cc1Swenshuai.xi // 80*53ee8cc1Swenshuai.xi // Copyright (c) 2008-2009 MStar Semiconductor, Inc. 81*53ee8cc1Swenshuai.xi // All rights reserved. 82*53ee8cc1Swenshuai.xi // 83*53ee8cc1Swenshuai.xi // Unless otherwise stipulated in writing, any and all information contained 84*53ee8cc1Swenshuai.xi // herein regardless in any format shall remain the sole proprietary of 85*53ee8cc1Swenshuai.xi // MStar Semiconductor Inc. and be kept in strict confidence 86*53ee8cc1Swenshuai.xi // ("MStar Confidential Information") by the recipient. 87*53ee8cc1Swenshuai.xi // Any unauthorized act including without limitation unauthorized disclosure, 88*53ee8cc1Swenshuai.xi // copying, use, reproduction, sale, distribution, modification, disassembling, 89*53ee8cc1Swenshuai.xi // reverse engineering and compiling of the contents of MStar Confidential 90*53ee8cc1Swenshuai.xi // Information is unlawful and strictly prohibited. MStar hereby reserves the 91*53ee8cc1Swenshuai.xi // rights to any and all damages, losses, costs and expenses resulting therefrom. 92*53ee8cc1Swenshuai.xi // 93*53ee8cc1Swenshuai.xi //////////////////////////////////////////////////////////////////////////////// 94*53ee8cc1Swenshuai.xi 95*53ee8cc1Swenshuai.xi #ifndef _FW_HVD_IF_H_ 96*53ee8cc1Swenshuai.xi #define _FW_HVD_IF_H_ 97*53ee8cc1Swenshuai.xi 98*53ee8cc1Swenshuai.xi #include "controller.h" 99*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 100*53ee8cc1Swenshuai.xi // Hardware Capability 101*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 102*53ee8cc1Swenshuai.xi #define HVD_FW_VERSION 0x00001498 103*53ee8cc1Swenshuai.xi #define HVD_FW_IF_VERSION 0x00790198 104*53ee8cc1Swenshuai.xi 105*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 106*53ee8cc1Swenshuai.xi // Macro and Define 107*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 108*53ee8cc1Swenshuai.xi // TOP 109*53ee8cc1Swenshuai.xi //#if (!(defined( MSOS_TYPE_NOS) ||defined( MSOS_TYPE_ECOS) || defined( MSOS_TYPE_LINUX))) 110*53ee8cc1Swenshuai.xi #if (!defined( _MS_TYPES_H_) && (!defined(_DRVHVD_COMMON_H_))) 111*53ee8cc1Swenshuai.xi typedef unsigned char MS_BOOL; // 1 byte 112*53ee8cc1Swenshuai.xi /// data type unsigned char, data length 1 byte 113*53ee8cc1Swenshuai.xi typedef unsigned char MS_U8; // 1 byte 114*53ee8cc1Swenshuai.xi /// data type unsigned short, data length 2 byte 115*53ee8cc1Swenshuai.xi typedef unsigned short MS_U16; // 2 bytes 116*53ee8cc1Swenshuai.xi /// data type unsigned int, data length 4 byte 117*53ee8cc1Swenshuai.xi typedef unsigned long MS_U32; // 4 bytes 118*53ee8cc1Swenshuai.xi /// data type unsigned int64, data length 8 byte 119*53ee8cc1Swenshuai.xi typedef unsigned long long MS_U64; // 8 bytes 120*53ee8cc1Swenshuai.xi /// data type signed char, data length 1 byte 121*53ee8cc1Swenshuai.xi typedef signed char MS_S8; // 1 byte 122*53ee8cc1Swenshuai.xi /// data type signed short, data length 2 byte 123*53ee8cc1Swenshuai.xi typedef signed short MS_S16; // 2 bytes 124*53ee8cc1Swenshuai.xi /// data type signed int, data length 4 byte 125*53ee8cc1Swenshuai.xi typedef signed long MS_S32; // 4 bytes 126*53ee8cc1Swenshuai.xi /// data type signed int64, data length 8 byte 127*53ee8cc1Swenshuai.xi typedef signed long long MS_S64; // 8 bytes 128*53ee8cc1Swenshuai.xi #endif 129*53ee8cc1Swenshuai.xi 130*53ee8cc1Swenshuai.xi 131*53ee8cc1Swenshuai.xi 132*53ee8cc1Swenshuai.xi #define HVD_DRAM_CMDQ_CMD_SIZE 4 133*53ee8cc1Swenshuai.xi #define HVD_DRAM_CMDQ_ARG_SIZE 4 134*53ee8cc1Swenshuai.xi 135*53ee8cc1Swenshuai.xi 136*53ee8cc1Swenshuai.xi 137*53ee8cc1Swenshuai.xi #define HVD_DRAM_SIZE 0x40000 // Default HVD DRAM heap size, 256k 138*53ee8cc1Swenshuai.xi #define EVD_DRAM_SIZE 0xD0000 // Default EVD DRAM heap size, 832k 139*53ee8cc1Swenshuai.xi #define EVD_DV_DRAM_SIZE 0x1A0000 // Default Dolby vision EVD DRAM heap size, 1664k 140*53ee8cc1Swenshuai.xi 141*53ee8cc1Swenshuai.xi #define TEE_ONE_TASK_SHM_SIZE (0x30000) // 192K 142*53ee8cc1Swenshuai.xi 143*53ee8cc1Swenshuai.xi #define HVD_SHARE_MEM_ST_SIZE (0x1000) 144*53ee8cc1Swenshuai.xi 145*53ee8cc1Swenshuai.xi #define HVD_VBBU_DRAM_ST_SIZE (0x2000) 146*53ee8cc1Swenshuai.xi #define HVD_DISP_FRM_INFO_EXT_ST_SIZE (0x1D00) 147*53ee8cc1Swenshuai.xi #define HVD_CMDQ_DRAM_ST_SIZE (0x100) //Command Queue must align (CMD + ARG) length, ex. 8 bytes, or will encounter bug when use circular buff 148*53ee8cc1Swenshuai.xi #define HVD_DISPCMDQ_DRAM_ST_SIZE (0x200) //Command Queue must align (CMD + ARG) length, ex. 8 bytes, or will encounter bug when use circular buff 149*53ee8cc1Swenshuai.xi #define HVD_PTS_TABLE_ST_SIZE (0x4000) 150*53ee8cc1Swenshuai.xi 151*53ee8cc1Swenshuai.xi #define HVD_BBU_DRAM_ST_SIZE (0x2000) 152*53ee8cc1Swenshuai.xi #define HVD_BBU2_DRAM_ST_SIZE (0x3000) 153*53ee8cc1Swenshuai.xi #define HVD_AVC_DTVINFO_SIZE (0x1000) 154*53ee8cc1Swenshuai.xi #define HVD_AVC_INFO608_SIZE (0x1000) 155*53ee8cc1Swenshuai.xi #define HVD_AVC_INFO708_SIZE (0x4800) 156*53ee8cc1Swenshuai.xi #define HVD_AVC_USERDATA_SIZE (0x2900) 157*53ee8cc1Swenshuai.xi 158*53ee8cc1Swenshuai.xi #define MIN_4K2K_WIDTH 3800 159*53ee8cc1Swenshuai.xi #define MIN_4K2K_HEIGHT 2000 160*53ee8cc1Swenshuai.xi 161*53ee8cc1Swenshuai.xi #define VDEC_MIUSEL_MASK (0x3) 162*53ee8cc1Swenshuai.xi #define VDEC_BS_MIUSEL (0) 163*53ee8cc1Swenshuai.xi #define VDEC_LUMA8_MIUSEL (2) 164*53ee8cc1Swenshuai.xi #define VDEC_LUMA2_MIUSEL (4) 165*53ee8cc1Swenshuai.xi #define VDEC_CHROMA8_MIUSEL (6) 166*53ee8cc1Swenshuai.xi #define VDEC_CHROMA2_MIUSEL (8) 167*53ee8cc1Swenshuai.xi #define VDEC_HWBUF_MIUSEL (10) 168*53ee8cc1Swenshuai.xi #define VDEC_BUF1_MIUSEL (12) 169*53ee8cc1Swenshuai.xi #define VDEC_BUF2_MIUSEL (14) 170*53ee8cc1Swenshuai.xi #define VDEC_PPIN_MIUSEL (16) 171*53ee8cc1Swenshuai.xi #define VDEC_XCSHM_MIUSEL (18) 172*53ee8cc1Swenshuai.xi 173*53ee8cc1Swenshuai.xi #define HVD_DisplayColourVolume_SEI_SIZE (sizeof(HVD_MasteringDisplayColourVolume)) 174*53ee8cc1Swenshuai.xi #define HVD_DisplayColourVolume_SEI_NUM (2) 175*53ee8cc1Swenshuai.xi #define HVD_ContentLightLevel_SEI_SIZE (sizeof(HVD_ContentLightLevelInfo)) 176*53ee8cc1Swenshuai.xi #define HVD_ContentLightLevel_SEI_NUM (0x2) 177*53ee8cc1Swenshuai.xi 178*53ee8cc1Swenshuai.xi 179*53ee8cc1Swenshuai.xi //========= HW settings (Offset base is code buffer address.) ========= 180*53ee8cc1Swenshuai.xi 181*53ee8cc1Swenshuai.xi #define MAX_PTS_TABLE_SIZE 1024 // 1024 * 16 = 0x4000 182*53ee8cc1Swenshuai.xi 183*53ee8cc1Swenshuai.xi #define AVOID_PTS_TABLE_OVERFLOW_THRESHOLD 24 184*53ee8cc1Swenshuai.xi #define HVD_BYTE_COUNT_MASK 0x1FFFFFFF // hvd fw reg_byte_pos 29bit 185*53ee8cc1Swenshuai.xi 186*53ee8cc1Swenshuai.xi // bbu entry. 64bits(8 bytes) every entry. 187*53ee8cc1Swenshuai.xi #define HVD_BBU_DRAM_TBL_ENTRY (HVD_BBU_TBL_SIZE/8) 188*53ee8cc1Swenshuai.xi #define HVD_BBU_DRAM_TBL_ENTRY_TH (HVD_BBU_DRAM_TBL_ENTRY-4) 189*53ee8cc1Swenshuai.xi #define HVD_BBU2_DRAM_TBL_ENTRY (HVD_BBU_TBL_SIZE/8) 190*53ee8cc1Swenshuai.xi #define HVD_BBU2_DRAM_TBL_ENTRY_TH (HVD_BBU2_DRAM_TBL_ENTRY-4) 191*53ee8cc1Swenshuai.xi 192*53ee8cc1Swenshuai.xi #define MVC_BBU_DRAM_TBL_ENTRY (HVD_BBU_TBL_SIZE/8) 193*53ee8cc1Swenshuai.xi #define MVC_BBU_DRAM_TBL_ENTRY_TH (MVC_BBU_DRAM_TBL_ENTRY-4) 194*53ee8cc1Swenshuai.xi #define MVC_BBU2_DRAM_TBL_ENTRY (HVD_BBU_TBL_SIZE/8) 195*53ee8cc1Swenshuai.xi #define MVC_BBU2_DRAM_TBL_ENTRY_TH (MVC_BBU2_DRAM_TBL_ENTRY-4) 196*53ee8cc1Swenshuai.xi 197*53ee8cc1Swenshuai.xi #define RVD_BBU_DRAM_TBL_ENTRY (HVD_BBU_TBL_SIZE/8) 198*53ee8cc1Swenshuai.xi #define RVD_BBU_DRAM_TBL_ENTRY_TH (RVD_BBU_DRAM_TBL_ENTRY-4) 199*53ee8cc1Swenshuai.xi 200*53ee8cc1Swenshuai.xi #define VP8_BBU_DRAM_TBL_ENTRY (VP8_BBU_TBL_SIZE/8) 201*53ee8cc1Swenshuai.xi #define VP8_BBU_DRAM_TBL_ENTRY_TH (VP8_BBU_DRAM_TBL_ENTRY-4) 202*53ee8cc1Swenshuai.xi 203*53ee8cc1Swenshuai.xi #ifdef LIGHTWEIGHT //FW31_1.8M 204*53ee8cc1Swenshuai.xi #define HVD_SHARE_MEM_ST_OFFSET 0xC0000 205*53ee8cc1Swenshuai.xi #else 206*53ee8cc1Swenshuai.xi #if defined(SUPPORT_EVD) && (SUPPORT_EVD==1) 207*53ee8cc1Swenshuai.xi #define HVD_SHARE_MEM_ST_OFFSET 0x100000 208*53ee8cc1Swenshuai.xi #else 209*53ee8cc1Swenshuai.xi #define HVD_SHARE_MEM_ST_OFFSET 0xA0000 210*53ee8cc1Swenshuai.xi #endif 211*53ee8cc1Swenshuai.xi #endif 212*53ee8cc1Swenshuai.xi 213*53ee8cc1Swenshuai.xi #define HVD_DYNAMIC_SCALING_SIZE 0x1F00 214*53ee8cc1Swenshuai.xi #define HVD_DYNAMIC_SCALING_SIZE_3K 0xC00 // allocate 6k. actually use: 16 align => 3k 215*53ee8cc1Swenshuai.xi #define HVD_DYNAMIC_SCALING_SIZE_6K 0x1800 // allocate 6k. actually use: 32 align => 6k 216*53ee8cc1Swenshuai.xi #define HVD_DYNAMIC_SCALING_SIZE_8K 0x1F00 217*53ee8cc1Swenshuai.xi #define HVD_DYNAMIC_SCALING_DEPTH 0x10 218*53ee8cc1Swenshuai.xi #define HVD_DYNAMIC_SCALING_3D_DEPTH 0x18 /// 3D Dynamic scaling use 24. 219*53ee8cc1Swenshuai.xi #define HVD_SCALER_INFO_SIZE 0x100 220*53ee8cc1Swenshuai.xi 221*53ee8cc1Swenshuai.xi #define HVD_AVC_FRAME_PACKING_SEI_SIZE 0x100 222*53ee8cc1Swenshuai.xi #define HVD_AVC_FRAME_PACKING_SEI_NUM 2 223*53ee8cc1Swenshuai.xi 224*53ee8cc1Swenshuai.xi //DBG 225*53ee8cc1Swenshuai.xi #define HVD_DBG_DUMP_SIZE 0x6500 226*53ee8cc1Swenshuai.xi #define HVD_DUMMY_WRITE_MAX_SIZE 0x200 227*53ee8cc1Swenshuai.xi 228*53ee8cc1Swenshuai.xi #define MAX_VSYNC_BRIDGE_DISPQ_NUM 8 229*53ee8cc1Swenshuai.xi #define HVD_DISP_QUEUE_MAX_SIZE 42 230*53ee8cc1Swenshuai.xi #define FRAMEQ_SIZE 16 231*53ee8cc1Swenshuai.xi 232*53ee8cc1Swenshuai.xi // AVC 233*53ee8cc1Swenshuai.xi #define HVD_FW_AVC_DUMMY_FIFO 256 // bytes 234*53ee8cc1Swenshuai.xi #define HVD_FW_AVC_MAX_DECODE_TICK 100000 // tick ??? 235*53ee8cc1Swenshuai.xi #define HVD_FW_AVC_MAX_VIDEO_DELAY 1000 // ms ; based on ??? 236*53ee8cc1Swenshuai.xi #define HVD_FW_AVC_ES_MIN_TSP_DATA_SIZE 0x100 237*53ee8cc1Swenshuai.xi #define HVD_FW_AVC_ES_MIN_TSP_DATA_SIZE2 0x1800 238*53ee8cc1Swenshuai.xi #define HVD_FW_BROKEN_BY_US_MIN_DATA_SIZE 0x1800 239*53ee8cc1Swenshuai.xi 240*53ee8cc1Swenshuai.xi #define HVD_FW_AVC_ES_UNDER_THRESHOLD 0x800 // 2048 241*53ee8cc1Swenshuai.xi #define HVD_FW_AVC_ES_OVER_THRESHOLD 0x40000 // 256*1024 242*53ee8cc1Swenshuai.xi 243*53ee8cc1Swenshuai.xi // User CC 244*53ee8cc1Swenshuai.xi #define USER_CC_DATA_SIZE 38 245*53ee8cc1Swenshuai.xi #define USER_CC_IDX_SIZE 12 246*53ee8cc1Swenshuai.xi 247*53ee8cc1Swenshuai.xi // AVS 248*53ee8cc1Swenshuai.xi #define HVD_FW_AVS_DUMMY_FIFO 2048 //BYTES 249*53ee8cc1Swenshuai.xi 250*53ee8cc1Swenshuai.xi // RM 251*53ee8cc1Swenshuai.xi #define HVD_FW_RM_DUMMY_FIFO 256 // ?? 252*53ee8cc1Swenshuai.xi #define HVD_RM_INIT_PICTURE_SIZE_NUMBER 8 253*53ee8cc1Swenshuai.xi 254*53ee8cc1Swenshuai.xi #define EXT_CC_INFO_LENGTH 16 255*53ee8cc1Swenshuai.xi #define EXT_608_CC_PACKET_LENGTH 16 256*53ee8cc1Swenshuai.xi #define EXT_608_CC_DATA_ALIGN EXT_608_CC_PACKET_LENGTH 257*53ee8cc1Swenshuai.xi #define EXT_708_CC_PACKET_LENGTH 128 258*53ee8cc1Swenshuai.xi #define EXT_708_CC_DATA_ALIGN EXT_708_CC_PACKET_LENGTH 259*53ee8cc1Swenshuai.xi 260*53ee8cc1Swenshuai.xi 261*53ee8cc1Swenshuai.xi 262*53ee8cc1Swenshuai.xi // Debug 263*53ee8cc1Swenshuai.xi #define HVD_FW_AVS_OUTPUT_INFO_ADDR 0x20001F00UL 264*53ee8cc1Swenshuai.xi #define HVD_FW_AVC_OUTPUT_INFO_ADDR 0x20001F00UL 265*53ee8cc1Swenshuai.xi 266*53ee8cc1Swenshuai.xi #define HVD_HW_PREFETCH_SIZE 128 267*53ee8cc1Swenshuai.xi #define HVD_DUMMY_PACKET_SIZE (HVD_HW_PREFETCH_SIZE << 1) 268*53ee8cc1Swenshuai.xi #define HVD_DUMMY_PACKET_DATA 0x0 269*53ee8cc1Swenshuai.xi #define HVD_DUMMY_PACKET_OFFSET 0x0 270*53ee8cc1Swenshuai.xi 271*53ee8cc1Swenshuai.xi #define PRESET_ONE_PENDING_BUFFER (1 << 0) /// For AVC, one pending buffer mode, reduce from two to one 272*53ee8cc1Swenshuai.xi #define PRESET_IAP_GN_SHARE_BW_MODE (1 << 1) /// For AVC 4K2K, move IAP GN buffer to another miu to share BW mode //johnny.ko 273*53ee8cc1Swenshuai.xi #define PRESET_DUMMY_PACKET_READY (1 << 2) /// For checking HW BBU status after filling nal table 274*53ee8cc1Swenshuai.xi #define PRESET_4K2K_CHECK (1 << 3) /// For checking 4k2k need support or not 275*53ee8cc1Swenshuai.xi #define PRESET_FORCE_START_NON_I_SLICE (1 << 4) /// For force start decode frame when 1st slice is not I slice. 276*53ee8cc1Swenshuai.xi #define PRESET_CONNECT_DISPLAY_PATH (1 << 5) /// 277*53ee8cc1Swenshuai.xi #define PRESET_CAL_FRAMERATE (1 << 6) /// For HVD,calculate framerate 278*53ee8cc1Swenshuai.xi #define PRESET_CONNECT_INPUT_TSP (1 << 7) /// 279*53ee8cc1Swenshuai.xi #define PRESET_VP9_4K2K_CHECK (1 << 8) /// For checking VP9 4k2k need support or not 280*53ee8cc1Swenshuai.xi 281*53ee8cc1Swenshuai.xi #define MFCODEC_INFO_VP9_MODE_OFFSET 29 282*53ee8cc1Swenshuai.xi #define MFCODEC_INFO_UNCOMPRESS_OFFSET 28 283*53ee8cc1Swenshuai.xi #define MFCODEC_INFO_MIU_SELECT_OFFSET 24 284*53ee8cc1Swenshuai.xi #define MFCODEC_INFO_PITCH_OFFSET 16 285*53ee8cc1Swenshuai.xi #define MFCODEC_INFO_MFDEC_ID_OFFSET 8 286*53ee8cc1Swenshuai.xi 287*53ee8cc1Swenshuai.xi // For Git Changes 288*53ee8cc1Swenshuai.xi #define GIT_TIMESTAMP 1479691553 289*53ee8cc1Swenshuai.xi 290*53ee8cc1Swenshuai.xi typedef enum 291*53ee8cc1Swenshuai.xi { 292*53ee8cc1Swenshuai.xi E_HVD_IQMEM_INIT_NONE = 0, 293*53ee8cc1Swenshuai.xi E_HVD_IQMEM_INIT_LOADING, //HK -> FW 294*53ee8cc1Swenshuai.xi E_HVD_IQMEM_INIT_LOADED, //FW -> HK 295*53ee8cc1Swenshuai.xi E_HVD_IQMEM_INIT_FINISH //HK -> FW 296*53ee8cc1Swenshuai.xi 297*53ee8cc1Swenshuai.xi }HVD_IQMEM_INIT_STATUS; 298*53ee8cc1Swenshuai.xi 299*53ee8cc1Swenshuai.xi 300*53ee8cc1Swenshuai.xi 301*53ee8cc1Swenshuai.xi typedef enum 302*53ee8cc1Swenshuai.xi { 303*53ee8cc1Swenshuai.xi E_HVD_FLUSH_NONE = 0, 304*53ee8cc1Swenshuai.xi E_HVD_FLUSH_RUNNING, //HK -> FW 305*53ee8cc1Swenshuai.xi E_HVD_FLUSH_DONE //FW -> HK 306*53ee8cc1Swenshuai.xi 307*53ee8cc1Swenshuai.xi }HVD_FLUSH_STATUS; 308*53ee8cc1Swenshuai.xi 309*53ee8cc1Swenshuai.xi typedef enum 310*53ee8cc1Swenshuai.xi { 311*53ee8cc1Swenshuai.xi E_HVD_ISR_EVENT_NONE = 0, ///< disable ISR 312*53ee8cc1Swenshuai.xi E_HVD_ISR_EVENT_DISP_ONE = BIT(0), ///< HVD display one frame on screen. 313*53ee8cc1Swenshuai.xi E_HVD_ISR_EVENT_DISP_REPEAT = BIT(1), ///< The current displayed frame is repeated frame. 314*53ee8cc1Swenshuai.xi E_HVD_ISR_EVENT_DISP_WITH_CC = BIT(2), ///< Current displayed frame should be displayed with user data. 315*53ee8cc1Swenshuai.xi E_HVD_ISR_EVENT_DISP_FIRST_FRM = BIT(3), ///< HVD display first frame on screen. 316*53ee8cc1Swenshuai.xi E_HVD_ISR_EVENT_DISP_FINISH = BIT(4), ///< HVD display finish event. 317*53ee8cc1Swenshuai.xi 318*53ee8cc1Swenshuai.xi E_HVD_ISR_EVENT_DEC_CMA_ACTION = BIT(7), ///< HVD CMA allocate/release memory ISR 319*53ee8cc1Swenshuai.xi E_HVD_ISR_EVENT_DEC_ONE = BIT(8), ///< HVD decoded one frame done. 320*53ee8cc1Swenshuai.xi E_HVD_ISR_EVENT_DEC_I = BIT(9), ///< HVD decoded one I frame done. 321*53ee8cc1Swenshuai.xi E_HVD_ISR_EVENT_DEC_HW_ERR = BIT(10), ///< HVD HW found decode error. 322*53ee8cc1Swenshuai.xi E_HVD_ISR_EVENT_DEC_CC_FOUND = BIT(11), ///< HVD found one user data with decoded frame(with display order). 323*53ee8cc1Swenshuai.xi E_HVD_ISR_EVENT_DEC_DISP_INFO_CHANGE = BIT(12), ///< HVD found display information change. 324*53ee8cc1Swenshuai.xi E_HVD_ISR_EVENT_DEC_DATA_ERR = BIT(13), ///< HVD HW found decode error. 325*53ee8cc1Swenshuai.xi E_HVD_ISR_EVENT_DEC_FIRST_FRM = BIT(14), ///< HVD decode first frame. 326*53ee8cc1Swenshuai.xi E_HVD_ISR_EVENT_DEC_SEQ_HDR_FOUND = BIT(15), ///< HVD found sequence header. 327*53ee8cc1Swenshuai.xi } HVD_ISR_Event_Type; 328*53ee8cc1Swenshuai.xi 329*53ee8cc1Swenshuai.xi typedef enum 330*53ee8cc1Swenshuai.xi { 331*53ee8cc1Swenshuai.xi E_HVD_USER_DATA_MODE_DVB_NORMAL = 0x00, 332*53ee8cc1Swenshuai.xi E_HVD_USER_DATA_MODE_DIRECTTV_CC = 0x01, 333*53ee8cc1Swenshuai.xi E_HVD_USER_DATA_MODE_FRM_PACKING_ARRANGEMENT = 0x02, 334*53ee8cc1Swenshuai.xi E_HVD_USER_DATA_MODE_ATSC_CC_RAW = 0x04, 335*53ee8cc1Swenshuai.xi E_HVD_USER_DATA_MODE_CC_UNTIL_START_CODE = 0x08 336*53ee8cc1Swenshuai.xi } HVD_USER_DATA_MODE; 337*53ee8cc1Swenshuai.xi 338*53ee8cc1Swenshuai.xi 339*53ee8cc1Swenshuai.xi typedef enum 340*53ee8cc1Swenshuai.xi { 341*53ee8cc1Swenshuai.xi E_HVD_DRV_AUTO_BBU_MODE = 0x00, 342*53ee8cc1Swenshuai.xi E_HVD_FW_AUTO_BBU_MODE = 0x01, 343*53ee8cc1Swenshuai.xi } HVD_BBU_MODE; 344*53ee8cc1Swenshuai.xi 345*53ee8cc1Swenshuai.xi typedef enum 346*53ee8cc1Swenshuai.xi { 347*53ee8cc1Swenshuai.xi E_HVD_FW_STATUS_NONE = 0, ///< NONE Flag 348*53ee8cc1Swenshuai.xi E_HVD_FW_STATUS_SEEK_TO_I = BIT(0), ///< Seek to I slice/frame flag 349*53ee8cc1Swenshuai.xi } HVD_FW_STATUS_FLAG; 350*53ee8cc1Swenshuai.xi 351*53ee8cc1Swenshuai.xi typedef enum 352*53ee8cc1Swenshuai.xi { 353*53ee8cc1Swenshuai.xi //sharemem u32CodecMiscInfo bit assignment 354*53ee8cc1Swenshuai.xi E_VIDEO_FULL_RANGE = BIT(0), 355*53ee8cc1Swenshuai.xi } CODEC_MISC_INFO; 356*53ee8cc1Swenshuai.xi 357*53ee8cc1Swenshuai.xi typedef enum 358*53ee8cc1Swenshuai.xi { 359*53ee8cc1Swenshuai.xi E_DIVX_PROFILE_NONE = 0, 360*53ee8cc1Swenshuai.xi E_DIVX_PROFILE_DIVX_PLUS, 361*53ee8cc1Swenshuai.xi E_DIVX_PROFILE_DIVX_HEVC 362*53ee8cc1Swenshuai.xi } DIVX_PROFILE; 363*53ee8cc1Swenshuai.xi 364*53ee8cc1Swenshuai.xi /* 365*53ee8cc1Swenshuai.xi //interupt flag , value is in VPU RISC MBOX 1 ( for LG GP DTV only) 366*53ee8cc1Swenshuai.xi #define HVD_ISR_USER_DATA (1 << 0) 367*53ee8cc1Swenshuai.xi #define HVD_ISR_DATA_ERR (1 << 1) 368*53ee8cc1Swenshuai.xi #define HVD_ISR_PIC_DEC_ERR (1 << 2) 369*53ee8cc1Swenshuai.xi #define HVD_ISR_DEC_OVER (1 << 3) 370*53ee8cc1Swenshuai.xi #define HVD_ISR_DEC_UNDER (1 << 4) 371*53ee8cc1Swenshuai.xi #define HVD_ISR_DEC_I (1 << 5) 372*53ee8cc1Swenshuai.xi #define HVD_ISR_DIS_READY (1 << 6) 373*53ee8cc1Swenshuai.xi #define HVD_ISR_SEQ_INFO (1 << 7) 374*53ee8cc1Swenshuai.xi #define HVD_ISR_VIDEO_SKIP (1 << 8) 375*53ee8cc1Swenshuai.xi #define HVD_ISR_VIDEO_REPEAT (1 << 9) 376*53ee8cc1Swenshuai.xi #define HVD_ISR_VIDEO_FREERUN (1 << 10) 377*53ee8cc1Swenshuai.xi #define HVD_ISR_INVALID_STREAM (1 << 11) 378*53ee8cc1Swenshuai.xi #define HVD_ISR_VIDEO_AVSYNC_DONE (1 << 12) 379*53ee8cc1Swenshuai.xi #define HVD_ISR_VIDEO_VSYNC (1 << 31) 380*53ee8cc1Swenshuai.xi */ 381*53ee8cc1Swenshuai.xi 382*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 383*53ee8cc1Swenshuai.xi // Type and Structure 384*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 385*53ee8cc1Swenshuai.xi // User CC 386*53ee8cc1Swenshuai.xi #define USR_BUF_SIZE (256) 387*53ee8cc1Swenshuai.xi 388*53ee8cc1Swenshuai.xi typedef struct _DTV_BUF_type 389*53ee8cc1Swenshuai.xi { 390*53ee8cc1Swenshuai.xi MS_U8 type; // 0xCC:continue, 0:P 1:B 2:I 391*53ee8cc1Swenshuai.xi MS_U8 len; // size byte of buf 392*53ee8cc1Swenshuai.xi MS_U8 active; // 0:free 1:already dma out or not assign 2:assign 393*53ee8cc1Swenshuai.xi MS_U8 pic_struct; // pic_struct, Reserved when 0, Top Field when 1, Bottom Field when 2, and Frame picture when 3. 394*53ee8cc1Swenshuai.xi MS_U32 pts; 395*53ee8cc1Swenshuai.xi MS_U16 u16TempRefCnt; // Temp Ref Count for UserData ,Value that increases by 1 for each frame (like time stamp) 396*53ee8cc1Swenshuai.xi MS_U16 u16Res; // Reserved 397*53ee8cc1Swenshuai.xi MS_U32 u32Res; // Reserved 398*53ee8cc1Swenshuai.xi MS_U8 buf[USR_BUF_SIZE]; //user data 399*53ee8cc1Swenshuai.xi } DTV_BUF_type; //size must <= 276, currently only use 272 400*53ee8cc1Swenshuai.xi 401*53ee8cc1Swenshuai.xi #define HVD_FRM_PACKIMG_PAYLOAD_SIZE ((HVD_AVC_FRAME_PACKING_SEI_SIZE/HVD_AVC_FRAME_PACKING_SEI_NUM)-20) /// 20: HVD_Frame_packing_SEI size expect payload data 402*53ee8cc1Swenshuai.xi 403*53ee8cc1Swenshuai.xi typedef struct 404*53ee8cc1Swenshuai.xi { 405*53ee8cc1Swenshuai.xi MS_BOOL bUsed; 406*53ee8cc1Swenshuai.xi MS_BOOL bvaild; 407*53ee8cc1Swenshuai.xi MS_U8 u8Frm_packing_arr_cnl_flag; // u(1) 408*53ee8cc1Swenshuai.xi MS_U8 u8Frm_packing_arr_type; // u(7) 409*53ee8cc1Swenshuai.xi MS_U8 u8content_interpretation_type; // u(6) 410*53ee8cc1Swenshuai.xi MS_U8 u1Quincunx_sampling_flag:1; // u(1) 411*53ee8cc1Swenshuai.xi MS_U8 u1Spatial_flipping_flag:1; // u(1) 412*53ee8cc1Swenshuai.xi MS_U8 u1Frame0_flipping_flag:1; // u(1) 413*53ee8cc1Swenshuai.xi MS_U8 u1Field_views_flag:1; // u(1) 414*53ee8cc1Swenshuai.xi MS_U8 u1Current_frame_is_frame0_flag:1; // u(1) 415*53ee8cc1Swenshuai.xi MS_U8 u1Frame0_self_contained_flag:1; // u(1) 416*53ee8cc1Swenshuai.xi MS_U8 u1Frame1_self_contained_flag:1; // u(1) 417*53ee8cc1Swenshuai.xi MS_U8 u1Reserved1:1; // u(1) 418*53ee8cc1Swenshuai.xi MS_U8 u4Frame0_grid_position_x:4; // u(4) 419*53ee8cc1Swenshuai.xi MS_U8 u4Frame0_grid_position_y:4; // u(4) 420*53ee8cc1Swenshuai.xi MS_U8 u4Frame1_grid_position_x:4; // u(4) 421*53ee8cc1Swenshuai.xi MS_U8 u4Frame1_grid_position_y:4; // u(4) 422*53ee8cc1Swenshuai.xi MS_U16 u16CropRight; 423*53ee8cc1Swenshuai.xi MS_U16 u16CropLeft; 424*53ee8cc1Swenshuai.xi MS_U16 u16CropBottom; 425*53ee8cc1Swenshuai.xi MS_U16 u16CropTop; 426*53ee8cc1Swenshuai.xi MS_U8 u8payload_len; 427*53ee8cc1Swenshuai.xi MS_U8 u8WaitSPS; 428*53ee8cc1Swenshuai.xi MS_U8 u8Reserved[2]; 429*53ee8cc1Swenshuai.xi MS_U8 u8payload[HVD_FRM_PACKIMG_PAYLOAD_SIZE]; 430*53ee8cc1Swenshuai.xi } HVD_Frame_packing_SEI; 431*53ee8cc1Swenshuai.xi 432*53ee8cc1Swenshuai.xi typedef struct 433*53ee8cc1Swenshuai.xi { 434*53ee8cc1Swenshuai.xi MS_BOOL bUsed; 435*53ee8cc1Swenshuai.xi MS_BOOL colourVolumeSEIEnabled; 436*53ee8cc1Swenshuai.xi MS_U32 maxLuminance; 437*53ee8cc1Swenshuai.xi MS_U32 minLuminance; 438*53ee8cc1Swenshuai.xi MS_U16 primaries[3][2]; 439*53ee8cc1Swenshuai.xi MS_U16 whitePoint[2]; 440*53ee8cc1Swenshuai.xi } HVD_MasteringDisplayColourVolume; 441*53ee8cc1Swenshuai.xi 442*53ee8cc1Swenshuai.xi typedef struct 443*53ee8cc1Swenshuai.xi { 444*53ee8cc1Swenshuai.xi MS_BOOL bUsed; 445*53ee8cc1Swenshuai.xi MS_BOOL ContentLightLevelEnabled; 446*53ee8cc1Swenshuai.xi MS_U16 maxContentLightLevel; 447*53ee8cc1Swenshuai.xi MS_U16 maxPicAverageLightLevel; 448*53ee8cc1Swenshuai.xi } HVD_ContentLightLevelInfo; 449*53ee8cc1Swenshuai.xi 450*53ee8cc1Swenshuai.xi // stuct 451*53ee8cc1Swenshuai.xi typedef struct 452*53ee8cc1Swenshuai.xi { 453*53ee8cc1Swenshuai.xi MS_U16 u16HorSize; 454*53ee8cc1Swenshuai.xi MS_U16 u16VerSize; 455*53ee8cc1Swenshuai.xi MS_U32 u32FrameRate; // Unit: ms 456*53ee8cc1Swenshuai.xi MS_U8 u8AspectRate; // aspect ration ID; for AVC only 457*53ee8cc1Swenshuai.xi MS_U8 u8Interlace; 458*53ee8cc1Swenshuai.xi MS_U8 u8AFD; 459*53ee8cc1Swenshuai.xi //MS_U8 u8par_width; 460*53ee8cc1Swenshuai.xi //MS_U8 u8par_height; 461*53ee8cc1Swenshuai.xi MS_U8 bChroma_idc_Mono; // 1: mono 0: colorful, not mono ; AVC only currently. AVS,RM?? 462*53ee8cc1Swenshuai.xi MS_U16 u16DispWidth; // Display width or aspect ratio width 463*53ee8cc1Swenshuai.xi MS_U16 u16DispHeight; // Display height or aspect ratio height 464*53ee8cc1Swenshuai.xi MS_U16 u16CropRight; 465*53ee8cc1Swenshuai.xi MS_U16 u16CropLeft; 466*53ee8cc1Swenshuai.xi MS_U16 u16CropBottom; 467*53ee8cc1Swenshuai.xi MS_U16 u16CropTop; 468*53ee8cc1Swenshuai.xi MS_U16 u16Pitch; // ??? 469*53ee8cc1Swenshuai.xi MS_U8 u8ColourPrimaries; // Color Primaries in VUI 470*53ee8cc1Swenshuai.xi //**************************** 471*53ee8cc1Swenshuai.xi MS_U8 u8IsOriginInterlace; // Is Original Interlace mode 472*53ee8cc1Swenshuai.xi //****************************** 473*53ee8cc1Swenshuai.xi // MS_U16 u16PTSInterval; // ??? not fill 474*53ee8cc1Swenshuai.xi // MS_U8 u8MPEG1; // may be removed 475*53ee8cc1Swenshuai.xi // MS_U8 u8PlayMode; // ??? not fill 476*53ee8cc1Swenshuai.xi // MS_U8 u8FrcMode; // may be removed 477*53ee8cc1Swenshuai.xi } HVD_Display_Info; // bytes 478*53ee8cc1Swenshuai.xi 479*53ee8cc1Swenshuai.xi typedef struct 480*53ee8cc1Swenshuai.xi { 481*53ee8cc1Swenshuai.xi MS_U8 bIsShowErrFrm; 482*53ee8cc1Swenshuai.xi MS_U8 bIsRepeatLastField; 483*53ee8cc1Swenshuai.xi MS_U8 bIsErrConceal; 484*53ee8cc1Swenshuai.xi MS_U8 bIsSyncOn; 485*53ee8cc1Swenshuai.xi MS_U8 bIsPlaybackFinish; 486*53ee8cc1Swenshuai.xi MS_U8 u8SyncType; // HVD_Sync_Tbl_Type 487*53ee8cc1Swenshuai.xi MS_U8 u8SkipMode; // HVD_Skip_Decode_Type 488*53ee8cc1Swenshuai.xi MS_U8 u8DropMode; // HVD_Drop_Disp_Type 489*53ee8cc1Swenshuai.xi MS_S8 s8DisplaySpeed; // HVD_Disp_Speed 490*53ee8cc1Swenshuai.xi MS_U8 u8FrcMode; // HVD_FRC_Mode 491*53ee8cc1Swenshuai.xi MS_U8 bIsBlueScreen; 492*53ee8cc1Swenshuai.xi MS_U8 bIsFreezeImg; 493*53ee8cc1Swenshuai.xi MS_U8 bShowOneField; 494*53ee8cc1Swenshuai.xi //***************************** 495*53ee8cc1Swenshuai.xi MS_U8 u8reserve8_1; 496*53ee8cc1Swenshuai.xi MS_U16 u16reserve16_1; 497*53ee8cc1Swenshuai.xi //***************************** 498*53ee8cc1Swenshuai.xi } HVD_Mode_Status; // 12 bytes 499*53ee8cc1Swenshuai.xi 500*53ee8cc1Swenshuai.xi typedef struct 501*53ee8cc1Swenshuai.xi { 502*53ee8cc1Swenshuai.xi MS_U16 u16Width; 503*53ee8cc1Swenshuai.xi MS_U16 u16Height; 504*53ee8cc1Swenshuai.xi } HVD_PictureSize; 505*53ee8cc1Swenshuai.xi 506*53ee8cc1Swenshuai.xi typedef struct 507*53ee8cc1Swenshuai.xi { 508*53ee8cc1Swenshuai.xi MS_U32 u32LumaAddr; ///< The start offset of luma data. Unit: byte. 509*53ee8cc1Swenshuai.xi MS_U32 u32ChromaAddr; ///< The start offset of chroma data. Unit: byte. 510*53ee8cc1Swenshuai.xi MS_U32 u32PpInLumaAddr; ///< Luma address (For post-process use) 511*53ee8cc1Swenshuai.xi MS_U32 u32PpInChromaAddr; ///< Chroma address (For post-process use) 512*53ee8cc1Swenshuai.xi MS_U32 u32TimeStamp; ///< Time stamp(DTS, PTS) of current displayed frame. Unit: 90khz. 513*53ee8cc1Swenshuai.xi MS_U32 u32ID_L; ///< low part of ID number decided by MDrv_HVD_PushQueue(). 514*53ee8cc1Swenshuai.xi MS_U32 u32ID_H; ///< high part of ID number decided by MDrv_HVD_PushQueue(). 515*53ee8cc1Swenshuai.xi MS_U8 u8FrmType; ///< HVD_Picture_Type, picture type: I, P, B frame 516*53ee8cc1Swenshuai.xi MS_U8 u8FieldType; ///< HVD_Field_Type, none, top , bottom, both field 517*53ee8cc1Swenshuai.xi MS_U16 u16Pitch; 518*53ee8cc1Swenshuai.xi MS_U16 u16Width; 519*53ee8cc1Swenshuai.xi MS_U16 u16Height; 520*53ee8cc1Swenshuai.xi MS_U32 u32Status; ///< 0:None, 1:Init, 2:View, 3:Disp, 4:Free 521*53ee8cc1Swenshuai.xi MS_U32 u32PrivateData; ///[STB]only for AVC 522*53ee8cc1Swenshuai.xi MS_U32 u32LumaAddr_2bit; ///< The start offset of 2bit luma data. Unit: byte. 523*53ee8cc1Swenshuai.xi MS_U32 u32ChromaAddr_2bit; ///< The start offset of 2bit chroma data. Unit: byte. 524*53ee8cc1Swenshuai.xi MS_U16 u16Pitch_2bit; 525*53ee8cc1Swenshuai.xi MS_U8 u8LumaBitdepth; 526*53ee8cc1Swenshuai.xi MS_U8 u8ChromaBitdepth; 527*53ee8cc1Swenshuai.xi MS_U8 u2Luma0Miu:2; 528*53ee8cc1Swenshuai.xi MS_U8 u2Luma1Miu:2; 529*53ee8cc1Swenshuai.xi MS_U8 u2Chroma0Miu:2; 530*53ee8cc1Swenshuai.xi MS_U8 u2Chroma1Miu:2; 531*53ee8cc1Swenshuai.xi MS_U8 u8FbIndex; 532*53ee8cc1Swenshuai.xi MS_U8 reserved8[2]; 533*53ee8cc1Swenshuai.xi } HVD_Frm_Information; 534*53ee8cc1Swenshuai.xi 535*53ee8cc1Swenshuai.xi typedef enum 536*53ee8cc1Swenshuai.xi { 537*53ee8cc1Swenshuai.xi HVD_FRM_INFO_EXT_TYPE_10BIT, // 2bits in 10 bits case 538*53ee8cc1Swenshuai.xi HVD_FRM_INFO_EXT_TYPE_INTERLACE, // 2nd field 8bits in interlace case 539*53ee8cc1Swenshuai.xi HVD_FRM_INFO_EXT_TYPE_10BIT_INTERLACE, // 2nd field 2bits in 10bits interlace case 540*53ee8cc1Swenshuai.xi HVD_FRM_INFO_EXT_TYPE_MFCBITLEN, // bit length in MFC case 541*53ee8cc1Swenshuai.xi HVD_FRM_INFO_EXT_TYPE_MAX, 542*53ee8cc1Swenshuai.xi } HVD_FRM_INFO_EXT_TYPE; 543*53ee8cc1Swenshuai.xi 544*53ee8cc1Swenshuai.xi typedef enum 545*53ee8cc1Swenshuai.xi { 546*53ee8cc1Swenshuai.xi E_DISP_PATH_DEFAULT = 0, 547*53ee8cc1Swenshuai.xi E_DISP_PATH_DYNMC_DISCONNECT, 548*53ee8cc1Swenshuai.xi E_DISP_PATH_DYNMC_HANDLING, 549*53ee8cc1Swenshuai.xi E_DISP_PATH_DYNMC_CONNECTTED 550*53ee8cc1Swenshuai.xi 551*53ee8cc1Swenshuai.xi }DISP_PATH_CONNECT_STATUS; 552*53ee8cc1Swenshuai.xi 553*53ee8cc1Swenshuai.xi 554*53ee8cc1Swenshuai.xi typedef enum _HVD_COMPLEXITY_LEVEL 555*53ee8cc1Swenshuai.xi { 556*53ee8cc1Swenshuai.xi HVD_COMPLEXITY_LEVEL1 = 1, // lower than level 2 557*53ee8cc1Swenshuai.xi HVD_COMPLEXITY_LEVEL2, // higher than avg avg BW of 4k30p 8bit 558*53ee8cc1Swenshuai.xi HVD_COMPLEXITY_LEVEL3, // higher than avg avg BW of 4k30p 10bit 559*53ee8cc1Swenshuai.xi HVD_COMPLEXITY_LEVEL4, // higher than avg BW of 4k60p 8bit 560*53ee8cc1Swenshuai.xi HVD_COMPLEXITY_LEVEL5, // higher than avg BW of 4k60p 10bit 561*53ee8cc1Swenshuai.xi } HVD_COMPLEXITY_LEVEL; 562*53ee8cc1Swenshuai.xi 563*53ee8cc1Swenshuai.xi typedef enum 564*53ee8cc1Swenshuai.xi { 565*53ee8cc1Swenshuai.xi E_HVD_HDR_METATYPE_VUI_OFFSET = 0, ///< HVD display one frame on screen. 566*53ee8cc1Swenshuai.xi E_HVD_HDR_METATYPE_SEI_MASTERING_COLOR_OFFSET = 1, ///< The current displayed frame is repeated frame. 567*53ee8cc1Swenshuai.xi E_HVD_HDR_METATYPE_DOLBY_VISION_OFFSET = 2, ///< Current displayed frame should be displayed with user data. 568*53ee8cc1Swenshuai.xi E_HVD_HDR_METATYPE_TCH_OFFSET = 3, 569*53ee8cc1Swenshuai.xi E_HVD_HDR_METATYPE_DOLBY_HDR10_VISION_OFFSET = 4, 570*53ee8cc1Swenshuai.xi } HVD_HDR_EXT_META_TYPE_OFFSET; 571*53ee8cc1Swenshuai.xi 572*53ee8cc1Swenshuai.xi /**************************************************************************************** 573*53ee8cc1Swenshuai.xi MFCodecInfo 574*53ee8cc1Swenshuai.xi +---------------------------------------------------------------+ 575*53ee8cc1Swenshuai.xi |Uncompress|BitLen Miu Select| Pitch | MFCodec Version | 576*53ee8cc1Swenshuai.xi | 4 bits | 4 bits | 8 bits | 16 bits | 577*53ee8cc1Swenshuai.xi +---------------------------------------------------------------+ 578*53ee8cc1Swenshuai.xi ***************************************************************************************/ 579*53ee8cc1Swenshuai.xi typedef struct 580*53ee8cc1Swenshuai.xi { 581*53ee8cc1Swenshuai.xi MS_U32 u32LumaAddrExt[HVD_FRM_INFO_EXT_TYPE_MAX]; 582*53ee8cc1Swenshuai.xi MS_U32 u32ChromaAddrExt[HVD_FRM_INFO_EXT_TYPE_MAX]; 583*53ee8cc1Swenshuai.xi 584*53ee8cc1Swenshuai.xi MS_U32 MFCodecInfo; 585*53ee8cc1Swenshuai.xi // bit[29] MFCodec 3.0 vp9 mode (1: vp9, 0: h26x) 586*53ee8cc1Swenshuai.xi // bit[28] MFCodec uncompress mode 587*53ee8cc1Swenshuai.xi // bits[27:24] MFCodec blens buffer miu sel 588*53ee8cc1Swenshuai.xi // bit[23:16] MFCodec pitch setting 589*53ee8cc1Swenshuai.xi // bit[8] MFDec ID 590*53ee8cc1Swenshuai.xi // bits[7:0] MFCodec mode 591*53ee8cc1Swenshuai.xi 592*53ee8cc1Swenshuai.xi // SEI start // 593*53ee8cc1Swenshuai.xi MS_U32 maxLuminance; 594*53ee8cc1Swenshuai.xi MS_U32 minLuminance; 595*53ee8cc1Swenshuai.xi MS_U16 primaries[3][2]; 596*53ee8cc1Swenshuai.xi MS_U16 whitePoint[2]; 597*53ee8cc1Swenshuai.xi // SEI end // 598*53ee8cc1Swenshuai.xi MS_U8 Frm_Info_Ext_avail; ///bit[2]: DV_Enabled, bit[1]: SEI_Enabled, bit[0]: colur_description_present_flag 599*53ee8cc1Swenshuai.xi // colour_description start // 600*53ee8cc1Swenshuai.xi MS_U8 colour_primaries; // u(8) 601*53ee8cc1Swenshuai.xi MS_U8 transfer_characteristics; // u(8) 602*53ee8cc1Swenshuai.xi MS_U8 matrix_coefficients; // u(8) 603*53ee8cc1Swenshuai.xi ////Dolby_Vision//////////// 604*53ee8cc1Swenshuai.xi MS_U8 u8DVMode; // bit[0:1] 0: Disable 1:Single layer 2: Dual layer, bit[2] 0:Base Layer 1:Enhance Layer 605*53ee8cc1Swenshuai.xi MS_U8 u8CurrentIndex; 606*53ee8cc1Swenshuai.xi MS_U8 bDMEnable; 607*53ee8cc1Swenshuai.xi MS_U8 bCompEnable; 608*53ee8cc1Swenshuai.xi MS_U32 u32DVMetadataAddr; 609*53ee8cc1Swenshuai.xi MS_U32 u32DVDMSize; 610*53ee8cc1Swenshuai.xi 611*53ee8cc1Swenshuai.xi MS_U32 u32DVCompSize; 612*53ee8cc1Swenshuai.xi MS_U32 u32DVRegAddr; 613*53ee8cc1Swenshuai.xi MS_U32 u32DVRegSize; 614*53ee8cc1Swenshuai.xi MS_U32 u32DVLutAddr; 615*53ee8cc1Swenshuai.xi MS_U32 u32DVLutSize; 616*53ee8cc1Swenshuai.xi // Other 617*53ee8cc1Swenshuai.xi MS_U8 u8ComplexityLevel; // from HVD_COMPLEXITY_LEVEL1 to HVD_COMPLEXITY_LEVEL5. Higher level means more complexity 618*53ee8cc1Swenshuai.xi MS_U8 u8TileMode; 619*53ee8cc1Swenshuai.xi MS_U8 u8Reserve[2]; 620*53ee8cc1Swenshuai.xi // Pixel aspect ratio info, crop info 621*53ee8cc1Swenshuai.xi MS_U32 u32ParWidth; 622*53ee8cc1Swenshuai.xi MS_U32 u32ParHeight; 623*53ee8cc1Swenshuai.xi MS_U16 u16CropRight; 624*53ee8cc1Swenshuai.xi MS_U16 u16CropLeft; 625*53ee8cc1Swenshuai.xi MS_U16 u16CropBottom; 626*53ee8cc1Swenshuai.xi MS_U16 u16CropTop; 627*53ee8cc1Swenshuai.xi // Profiling / benchmark 628*53ee8cc1Swenshuai.xi MS_U16 u16MIUBandwidth; 629*53ee8cc1Swenshuai.xi MS_U16 u16Bitrate; 630*53ee8cc1Swenshuai.xi // HTLB 631*53ee8cc1Swenshuai.xi MS_U8 u8HTLBTableId; 632*53ee8cc1Swenshuai.xi MS_U8 u8HTLBEntriesSize; 633*53ee8cc1Swenshuai.xi MS_U32 u32HTLBEntriesAddr; 634*53ee8cc1Swenshuai.xi MS_U8 u8Reserve1[2]; 635*53ee8cc1Swenshuai.xi 636*53ee8cc1Swenshuai.xi //qos 637*53ee8cc1Swenshuai.xi MS_S16 s16MinQp; 638*53ee8cc1Swenshuai.xi MS_S16 s16AvgQp; 639*53ee8cc1Swenshuai.xi MS_S16 s16MaxQp; 640*53ee8cc1Swenshuai.xi MS_S16 s16MinMV; 641*53ee8cc1Swenshuai.xi MS_S16 s16AvgMV; 642*53ee8cc1Swenshuai.xi MS_S16 s16MaxMV; 643*53ee8cc1Swenshuai.xi MS_U32 u32SkipMV; 644*53ee8cc1Swenshuai.xi MS_U32 u32NonSkipMV; 645*53ee8cc1Swenshuai.xi } HVD_Frm_Information_EXT_Entry; // sizeof(HVD_Frm_Information_EXT_Entry) * HVD_DISP_QUEUE_MAX_SIZE must be smaller than HVD_DISP_FRM_INFO_EXT_ST_SIZE 646*53ee8cc1Swenshuai.xi 647*53ee8cc1Swenshuai.xi typedef struct 648*53ee8cc1Swenshuai.xi { 649*53ee8cc1Swenshuai.xi HVD_Frm_Information_EXT_Entry stEntry[HVD_DISP_QUEUE_MAX_SIZE]; 650*53ee8cc1Swenshuai.xi } HVD_Frm_Information_EXT; // size must be smaller than HVD_DISP_FRM_INFO_EXT_ST_SIZE 651*53ee8cc1Swenshuai.xi 652*53ee8cc1Swenshuai.xi typedef struct 653*53ee8cc1Swenshuai.xi { 654*53ee8cc1Swenshuai.xi MS_BOOL aspect_ratio_info_present_flag; // u(1) 655*53ee8cc1Swenshuai.xi MS_U8 aspect_ratio_idc; // u(8) 656*53ee8cc1Swenshuai.xi MS_U16 sar_width; // u(16) 657*53ee8cc1Swenshuai.xi MS_U16 sar_height; // u(16) 658*53ee8cc1Swenshuai.xi MS_BOOL overscan_info_present_flag; // u(1) 659*53ee8cc1Swenshuai.xi MS_BOOL overscan_appropriate_flag; // u(1) 660*53ee8cc1Swenshuai.xi MS_BOOL video_signal_type_present_flag; // u(1) 661*53ee8cc1Swenshuai.xi MS_U8 video_format; // u(3) 662*53ee8cc1Swenshuai.xi MS_BOOL video_full_range_flag; // u(1) 663*53ee8cc1Swenshuai.xi MS_BOOL colour_description_present_flag; // u(1) 664*53ee8cc1Swenshuai.xi MS_U8 colour_primaries; // u(8) 665*53ee8cc1Swenshuai.xi MS_U8 transfer_characteristics; // u(8) 666*53ee8cc1Swenshuai.xi MS_U8 matrix_coefficients; // u(8) 667*53ee8cc1Swenshuai.xi MS_BOOL chroma_location_info_present_flag; // u(1) 668*53ee8cc1Swenshuai.xi MS_U8 chroma_sample_loc_type_top_field; // ue(v) 0~5 669*53ee8cc1Swenshuai.xi MS_U8 chroma_sample_loc_type_bottom_field; // ue(v) 0~5 670*53ee8cc1Swenshuai.xi MS_BOOL timing_info_present_flag; // u(1) 671*53ee8cc1Swenshuai.xi MS_BOOL fixed_frame_rate_flag; // u(1) 672*53ee8cc1Swenshuai.xi MS_U32 num_units_in_tick; // u(32) 673*53ee8cc1Swenshuai.xi MS_U32 time_scale; // u(32) 674*53ee8cc1Swenshuai.xi } HVD_AVC_VUI_DISP_INFO; 675*53ee8cc1Swenshuai.xi 676*53ee8cc1Swenshuai.xi typedef struct 677*53ee8cc1Swenshuai.xi { 678*53ee8cc1Swenshuai.xi MS_U32 u32FrmrateUpBound; //Framerate filter upper bound 679*53ee8cc1Swenshuai.xi MS_U32 u32FrmrateLowBound; //Framerate filter lower bound 680*53ee8cc1Swenshuai.xi MS_U32 u32MvopUpBound; //mvop filter upper bound 681*53ee8cc1Swenshuai.xi MS_U32 u32MvopLowBound; //mvop filter lower bound 682*53ee8cc1Swenshuai.xi } HVD_DISP_THRESHOLD; 683*53ee8cc1Swenshuai.xi 684*53ee8cc1Swenshuai.xi typedef struct tDynmcDispPath 685*53ee8cc1Swenshuai.xi { 686*53ee8cc1Swenshuai.xi MS_U8 u8Connect; //TRUE: connect , FALSE: disconnect 687*53ee8cc1Swenshuai.xi /*CTL_DISPLAY_PATH*/ 688*53ee8cc1Swenshuai.xi MS_U8 u8DispPath; 689*53ee8cc1Swenshuai.xi /*DISP_PATH_CONNECT_STATUS*/ 690*53ee8cc1Swenshuai.xi MS_U8 u8ConnectStatus; 691*53ee8cc1Swenshuai.xi } DynmcDispPath; 692*53ee8cc1Swenshuai.xi 693*53ee8cc1Swenshuai.xi typedef struct 694*53ee8cc1Swenshuai.xi { 695*53ee8cc1Swenshuai.xi MS_U32 u32Version; 696*53ee8cc1Swenshuai.xi MS_U8 u8MatrixCoefficients; 697*53ee8cc1Swenshuai.xi MS_U8 u8BitsPerChannel; 698*53ee8cc1Swenshuai.xi MS_U8 u8ChromaSubsamplingHorz; 699*53ee8cc1Swenshuai.xi MS_U8 u8ChromaSubsamplingVert; 700*53ee8cc1Swenshuai.xi MS_U8 u8CbSubsamplingHorz; 701*53ee8cc1Swenshuai.xi MS_U8 u8CbSubsamplingVert; 702*53ee8cc1Swenshuai.xi MS_U8 u8ChromaSitingHorz; 703*53ee8cc1Swenshuai.xi MS_U8 u8ChromaSitingVert; 704*53ee8cc1Swenshuai.xi MS_U8 u8ColorRange; 705*53ee8cc1Swenshuai.xi MS_U8 u8TransferCharacteristics; 706*53ee8cc1Swenshuai.xi MS_U8 u8ColourPrimaries; 707*53ee8cc1Swenshuai.xi MS_U8 reserved; 708*53ee8cc1Swenshuai.xi MS_U16 u16MaxCLL; //Max Content Light Level 709*53ee8cc1Swenshuai.xi MS_U16 u16MaxFALL; //Max Frame Average Light Level 710*53ee8cc1Swenshuai.xi MS_U16 u16Primaries[3][2]; 711*53ee8cc1Swenshuai.xi MS_U16 u16WhitePoint[2]; 712*53ee8cc1Swenshuai.xi MS_U32 u32MaxLuminance; 713*53ee8cc1Swenshuai.xi MS_U32 u32MinLuminance; 714*53ee8cc1Swenshuai.xi } HVD_Config_VP9HDR10; 715*53ee8cc1Swenshuai.xi 716*53ee8cc1Swenshuai.xi typedef struct 717*53ee8cc1Swenshuai.xi { 718*53ee8cc1Swenshuai.xi // switch 719*53ee8cc1Swenshuai.xi MS_U32 u32CodecType; //0x0000 720*53ee8cc1Swenshuai.xi MS_U32 u32FrameBufAddr; //0x0004 721*53ee8cc1Swenshuai.xi MS_U32 u32FrameBufSize; //0x0008 722*53ee8cc1Swenshuai.xi MS_U32 u32CPUClock; //0x000C 723*53ee8cc1Swenshuai.xi HVD_Display_Info DispInfo; //0x0010 724*53ee8cc1Swenshuai.xi 725*53ee8cc1Swenshuai.xi // FW -> HK 726*53ee8cc1Swenshuai.xi // report info 727*53ee8cc1Swenshuai.xi //AFD_Info AFDInfo; 728*53ee8cc1Swenshuai.xi MS_U32 u32DispSTC; //0x002C // Current Display Frame STC 729*53ee8cc1Swenshuai.xi MS_U32 u32DecodeCnt; //0x0030 // Decoded picture count 730*53ee8cc1Swenshuai.xi MS_U32 u32DecErrCnt; //0x0034 // HW decode err or not finish. 731*53ee8cc1Swenshuai.xi MS_U32 u32DataErrCnt; //0x0038 // FW process data error, like SPS, slice header .etc. 732*53ee8cc1Swenshuai.xi MS_U16 u16ErrCode; //0x003C // Drv/FW error code ; HVD_Err_Code 733*53ee8cc1Swenshuai.xi MS_U8 u8FrameMbsOnlyFlag; //0x003E // frame_mbs_only_flag of AVC SPS. 734*53ee8cc1Swenshuai.xi MS_U8 u8ForceBreakCnt; //0x003F // 735*53ee8cc1Swenshuai.xi MS_U32 u32VPUIdleCnt; //0x0040 // VPU idle count 736*53ee8cc1Swenshuai.xi MS_U32 u32FrameRate; //0x0044 // Input Frame Rate 737*53ee8cc1Swenshuai.xi MS_U32 u32FrameRateBase; //0x0048 // Input Frame Rate Base 738*53ee8cc1Swenshuai.xi HVD_Mode_Status ModeStatus; //0x004C // FW mode 739*53ee8cc1Swenshuai.xi HVD_Frm_Information DispFrmInfo; //0x005C // current displayed frame information. 740*53ee8cc1Swenshuai.xi HVD_Frm_Information DecoFrmInfo; //0x0098 // specified decoded frame information. 741*53ee8cc1Swenshuai.xi //MS_U8 u8DecPictType; // Current decode picture type: E_HVD_PICT_TYPE_I: I frm, E_HVD_PICT_TYPE_P: ref(P) , E_HVD_PICT_TYPE_B: non-ref(B) (GP2 need only) 742*53ee8cc1Swenshuai.xi #if defined(INTERLEAVE_SW_SEEK) || defined(SW_GETBITS) || defined(INTERLEAVE_SW_PARSE) 743*53ee8cc1Swenshuai.xi MS_U32 u32BBUReadPtr; 744*53ee8cc1Swenshuai.xi #endif 745*53ee8cc1Swenshuai.xi // internal control info 746*53ee8cc1Swenshuai.xi MS_U8 bInitDone; //0x00D4 747*53ee8cc1Swenshuai.xi MS_U8 bIs1stFrameRdy; //0x00D5 // first frame are showed on screen 748*53ee8cc1Swenshuai.xi MS_U8 bIsIFrmFound; //0x00D6 // 1: First I frame found. 0: fw should set to zero after user cmd, "Flush" 749*53ee8cc1Swenshuai.xi MS_U8 bIsSyncStart; //0x00D7 // under sync mode, 1: FW start doing sync action. 0: FW freerun or freerun mode. 750*53ee8cc1Swenshuai.xi MS_U8 bIsSyncReach; //0x00D8 // under sync mode, 1: FW sync reach. 0: FW freerun or sync not reach. 751*53ee8cc1Swenshuai.xi 752*53ee8cc1Swenshuai.xi //**************************************** 753*53ee8cc1Swenshuai.xi 754*53ee8cc1Swenshuai.xi MS_U8 u8SrcMode; //0x00D9 755*53ee8cc1Swenshuai.xi MS_U8 bEnableDispQueue; //0x00DA 756*53ee8cc1Swenshuai.xi MS_U8 bEnableDispOutSide; //0x00DB 757*53ee8cc1Swenshuai.xi //**************************************** 758*53ee8cc1Swenshuai.xi MS_U32 u32FWVersionID; //0x00DC // FW version ID 759*53ee8cc1Swenshuai.xi MS_U32 u32FWIfVersionID; //0x00E0 // FW IF version ID 760*53ee8cc1Swenshuai.xi MS_U32 u32ESWritePtr; //0x00E4 // the write pointer of bitstream buffer. 761*53ee8cc1Swenshuai.xi MS_U16 u16DecQNumb; //0x00E8 // current decoded queue total entry number. old oq size 762*53ee8cc1Swenshuai.xi MS_U16 u16DispQNumb; //0x00EA // current display queue total entry number. old Used Size 763*53ee8cc1Swenshuai.xi MS_U32 u32PTStableWptrAddr; //0x00EC // The address of PTS table write pointer. 764*53ee8cc1Swenshuai.xi MS_U32 u32PTStableRptrAddr; //0x00F0 // The address of PTS table read pointer. 765*53ee8cc1Swenshuai.xi MS_U32 u32PTStableByteCnt; //0x00F4 // The value of byte count of TSP. FW update it after init() and flush(). 766*53ee8cc1Swenshuai.xi 767*53ee8cc1Swenshuai.xi // debug info 768*53ee8cc1Swenshuai.xi MS_U32 u32SkipCnt; //0x00F8 // skipped picture count count by command: E_HVD_DECODE_ALL, E_HVD_DECODE_I, E_HVD_DECODE_IP 769*53ee8cc1Swenshuai.xi MS_U32 u32DropCnt; //0x00FC // dorpped decoded picture counter by command: drop_auto or drop_once 770*53ee8cc1Swenshuai.xi MS_U32 u32CCBase; //0x0100 // CC Ring Base Address 771*53ee8cc1Swenshuai.xi MS_U32 u32CCSize; //0x0104 // CC Ring Size 772*53ee8cc1Swenshuai.xi MS_U32 u32CCWrtPtr; //0x0108 // CC Ring Write Pointer 773*53ee8cc1Swenshuai.xi MS_U32 u32NtscCCBase; //0x010C // NTSC CC Ring Base Address 774*53ee8cc1Swenshuai.xi MS_U32 u32NtscCCSize; //0x0110 // NTSC CC Ring Size 775*53ee8cc1Swenshuai.xi MS_U32 u32NtscCCWrtPtr; //0x0114 // NTSC CC Ring Write Pointer 776*53ee8cc1Swenshuai.xi //**************************************** 777*53ee8cc1Swenshuai.xi MS_U32 u32CurrentPts; //0x0118 // only useful when Jump to pts command is activated 778*53ee8cc1Swenshuai.xi MS_U32 u32DispCnt; //0x011C // Display picture count 779*53ee8cc1Swenshuai.xi MS_U32 u32FWBaseAddr; //0x0120 780*53ee8cc1Swenshuai.xi //**************************************** 781*53ee8cc1Swenshuai.xi MS_U32 u32UserCCBase; //0x0124 // User CC Base Address 782*53ee8cc1Swenshuai.xi MS_U32 u32UserCCIdxWrtPtr; //0x0128 // User CC Idx Write Pointer 783*53ee8cc1Swenshuai.xi MS_U8 u8UserCCIdx[USER_CC_IDX_SIZE];//0x012C // User CC Idx 784*53ee8cc1Swenshuai.xi //**************************************** 785*53ee8cc1Swenshuai.xi MS_U32 u32VirtualBoxWidth; //0x0138 // Dynamic Scale: DRV -> FW 786*53ee8cc1Swenshuai.xi MS_U32 u32VirtualBoxHeight; //0x013C // Dynamic Scale: DRV -> FW 787*53ee8cc1Swenshuai.xi MS_U32 u32SrcWidth; //0x0140 // Dynamic Scale: Source Width 788*53ee8cc1Swenshuai.xi MS_U32 u32SrcHeight; //0x0144 // Dynamic Scale: Source Height 789*53ee8cc1Swenshuai.xi //**************************************** 790*53ee8cc1Swenshuai.xi MS_U8 u8DivxProfile; //0x0148 // see DIVX_PROFILE, E_DIVX_PROFILE_NONE is not a DivX stream 791*53ee8cc1Swenshuai.xi //**************************************** 792*53ee8cc1Swenshuai.xi 793*53ee8cc1Swenshuai.xi // -------- AVC info -------- 794*53ee8cc1Swenshuai.xi //MS_U32 u32AVC_NalCnt; // Decoded nal count >> change to SRAM 795*53ee8cc1Swenshuai.xi MS_U8 u8AVC_SPS_LowDelayHrdFlag; //0x0149 // VUI low_delay_hrd_flag 796*53ee8cc1Swenshuai.xi MS_U16 u16AVC_SPS_LevelIDC; //0x014A // sps level idc 797*53ee8cc1Swenshuai.xi MS_U32 u32AVC_VUIDispInfo_Addr; //0x014C // VUI Display Info Address 798*53ee8cc1Swenshuai.xi //MS_U32 u32AVC_SPS_Addr; // FW sps structure start address 799*53ee8cc1Swenshuai.xi 800*53ee8cc1Swenshuai.xi // -------- AVS info -------- 801*53ee8cc1Swenshuai.xi // ..... 802*53ee8cc1Swenshuai.xi //MS_U32 u32AVS_xxx; 803*53ee8cc1Swenshuai.xi 804*53ee8cc1Swenshuai.xi // -------- RM info -------- 805*53ee8cc1Swenshuai.xi // HK -> FW 806*53ee8cc1Swenshuai.xi MS_U8 u8RM_Version; //0x0150 807*53ee8cc1Swenshuai.xi MS_U8 u8RM_NumSizes; //0x0151 808*53ee8cc1Swenshuai.xi MS_U8 u8BitDepth; //0x0152 Bit0~3 Y bitdepth, Bit4~7 UV bitdepth 809*53ee8cc1Swenshuai.xi //**************************************** 810*53ee8cc1Swenshuai.xi MS_U8 reserved8_2; //0x0153 811*53ee8cc1Swenshuai.xi //**************************************** 812*53ee8cc1Swenshuai.xi HVD_PictureSize pRM_PictureSize[HVD_RM_INIT_PICTURE_SIZE_NUMBER]; //0x0154 813*53ee8cc1Swenshuai.xi MS_U32 u32RM_VLCTableAddr; //0x0174 814*53ee8cc1Swenshuai.xi 815*53ee8cc1Swenshuai.xi // -------- common info -------- 816*53ee8cc1Swenshuai.xi MS_U32 u32MainLoopCnt; //0x0178 817*53ee8cc1Swenshuai.xi MS_U32 u32VsyncCnt; //0x017C 818*53ee8cc1Swenshuai.xi HVD_DISP_THRESHOLD DispThreshold; //0x0180 819*53ee8cc1Swenshuai.xi MS_U32 u32ESReadPtr; //0x0190 // the read pointer of bitstream buffer. 820*53ee8cc1Swenshuai.xi MS_U32 u32SeqChangeInfo; //0x0194 821*53ee8cc1Swenshuai.xi MS_S64 s64PtsStcDiff; //0x0198 // 90Khz 822*53ee8cc1Swenshuai.xi MS_U16 u16ChipID; //0x01A0 // enum MSTAR_CHIP_ID 823*53ee8cc1Swenshuai.xi MS_U16 u16ChipECONum; //0x01A2 // ECO num of chip 824*53ee8cc1Swenshuai.xi MS_U32 u32NextPTS; //0x01A4 // ms 825*53ee8cc1Swenshuai.xi 826*53ee8cc1Swenshuai.xi 827*53ee8cc1Swenshuai.xi MS_U16 u16DispQSize; //0x01A8 828*53ee8cc1Swenshuai.xi MS_U16 u16DispQPtr; //0x01AA 829*53ee8cc1Swenshuai.xi HVD_Frm_Information DispQueue[HVD_DISP_QUEUE_MAX_SIZE]; //0x01AC 830*53ee8cc1Swenshuai.xi //---------------------------------------------------------------------- 831*53ee8cc1Swenshuai.xi MS_U32 u32RealFrameRate; //0x0B84 832*53ee8cc1Swenshuai.xi 833*53ee8cc1Swenshuai.xi MS_U8 bSpsChange; //0x0B88 834*53ee8cc1Swenshuai.xi MS_U8 bEnableDispCtrl; //0x0B89 835*53ee8cc1Swenshuai.xi MS_U8 bIsTrigDisp; //0x0B8A 836*53ee8cc1Swenshuai.xi MS_U8 bHVDUseTlbMode; //0x0B8B //0: default to disable TLB , 1: use TLB (HK->FW) 837*53ee8cc1Swenshuai.xi MS_U32 u32FwState; //0x0B8C 838*53ee8cc1Swenshuai.xi MS_U32 u32FwInfo; //0x0B90 839*53ee8cc1Swenshuai.xi MS_U32 u32IntCount; //0x0B94 840*53ee8cc1Swenshuai.xi 841*53ee8cc1Swenshuai.xi //---------------------------------------------------------------------- 842*53ee8cc1Swenshuai.xi MS_U16 u16FreeQWtPtr; //0x0B98 843*53ee8cc1Swenshuai.xi MS_U16 u16FreeQRdPtr; //0x0B9A 844*53ee8cc1Swenshuai.xi MS_U32 FreeQueue[HVD_DISP_QUEUE_MAX_SIZE]; //0x0B9C 845*53ee8cc1Swenshuai.xi 846*53ee8cc1Swenshuai.xi // --------- MVC info (Sub view buffer and 2nd input pointer) --------- 847*53ee8cc1Swenshuai.xi HVD_Frm_Information DispFrmInfo_Sub; //0x0C44 // current displayed Sub frame information. 848*53ee8cc1Swenshuai.xi HVD_Frm_Information DecoFrmInfo_Sub; //0x0C80 // specified decoded Sub frame information. 849*53ee8cc1Swenshuai.xi MS_U32 u32ES2WritePtr; //0x0CBC 850*53ee8cc1Swenshuai.xi MS_U32 u32ES2ReadPtr; //0x0C08 851*53ee8cc1Swenshuai.xi 852*53ee8cc1Swenshuai.xi // --------- MJPEG share memory ------------------------------------------ 853*53ee8cc1Swenshuai.xi MS_U32 u32MJPEGFrameBuffIdx; //0x0CC4 <----LOUIS DONE 854*53ee8cc1Swenshuai.xi MS_U32 u32MJPEGTimeStamp; //0x0CC8 855*53ee8cc1Swenshuai.xi MS_U32 u32MJPEGID_L; //0x0CCC 856*53ee8cc1Swenshuai.xi MS_U32 u32MJPEGID_H; //0x0CD0 857*53ee8cc1Swenshuai.xi MS_U32 u32MJPEG_NextFrameBuffIdx; //0x0CD4 858*53ee8cc1Swenshuai.xi MS_U8 u8MJPEG_bStepPlay; //0x0CD8 859*53ee8cc1Swenshuai.xi MS_U8 u8MJPEG_bPlaying; //0x0CD9 860*53ee8cc1Swenshuai.xi MS_U8 u8MJPEG_bIsAVSyncOn; //0x0CDA 861*53ee8cc1Swenshuai.xi MS_U8 u8MJPEG_bIsReachAVSync; //0x0CDB 862*53ee8cc1Swenshuai.xi MS_U8 u8MJPEG_bFlushQueue; //0x0CDC 863*53ee8cc1Swenshuai.xi MS_U8 u8MJPEG_bIsDispFinish; //0x0CDD 864*53ee8cc1Swenshuai.xi MS_U8 u8MJPEG_bQueueFull; //0x0CDE 865*53ee8cc1Swenshuai.xi MS_U8 bIsLeastDispQSize; //0x0CDF 866*53ee8cc1Swenshuai.xi 867*53ee8cc1Swenshuai.xi // --------- SEI: frame packing ------------------------------------------ 868*53ee8cc1Swenshuai.xi MS_U32 u32Frm_packing_arr_data_addr; //0x0CE0 869*53ee8cc1Swenshuai.xi 870*53ee8cc1Swenshuai.xi //---------- report 3k/6k for 16/32 Mem-Align DS -------------------------- 871*53ee8cc1Swenshuai.xi MS_U32 u32DSBuffSize; //0x0CE4 // Dynamic Scale Buffer Size actually used for different DS Mem Align 872*53ee8cc1Swenshuai.xi MS_U8 bDSIsRunning; //0x0CE8 873*53ee8cc1Swenshuai.xi MS_U8 reserved8_3; //0x0CE9 874*53ee8cc1Swenshuai.xi MS_U8 reserved8_4; //0x0CEA 875*53ee8cc1Swenshuai.xi MS_U8 reserved8_5; //0x0CEB 876*53ee8cc1Swenshuai.xi MS_U8 u8FlushStatus; //0x0CEC 877*53ee8cc1Swenshuai.xi MS_U8 u8DSBufferDepth; //0x0CED 878*53ee8cc1Swenshuai.xi 879*53ee8cc1Swenshuai.xi //---------- TemporalScalability ----------------------------------------- 880*53ee8cc1Swenshuai.xi MS_U8 u8TemporalScalabilty; //0x0CEE 881*53ee8cc1Swenshuai.xi MS_U8 u8MaxTemporalLayer; //0x0CEF 882*53ee8cc1Swenshuai.xi 883*53ee8cc1Swenshuai.xi MS_U16 u16DispQWptr[2]; //0x0CF0 884*53ee8cc1Swenshuai.xi MS_U8 u8ESBufStatus; //0x0CF4 885*53ee8cc1Swenshuai.xi MS_U8 u8FieldPicFlag; //0x0CF5 886*53ee8cc1Swenshuai.xi MS_U8 u8CMAAllocationStatus; //0x0CF6 887*53ee8cc1Swenshuai.xi MS_U8 u8CMAReleaseStatus; //0x0CF7 888*53ee8cc1Swenshuai.xi 889*53ee8cc1Swenshuai.xi // reserved for MJPEG 890*53ee8cc1Swenshuai.xi MS_U32 u32MJPEGDbg_DispStatus; //0x0CF8 891*53ee8cc1Swenshuai.xi MS_U8 u8MJPEGDbg_ReadFbIdx; //0x0CFC 892*53ee8cc1Swenshuai.xi MS_U8 u8MJPEGDbg_WriteFbIdx; //0x0CFD 893*53ee8cc1Swenshuai.xi MS_U8 u8MJPEGDbg_SkipRepeat; //0x0CFE 894*53ee8cc1Swenshuai.xi MS_U8 u8MJPEGDbg_reserved8_1; //0x0CFF 895*53ee8cc1Swenshuai.xi MS_U32 u32MJPEGDbg_SysTime; //0x0D00 896*53ee8cc1Swenshuai.xi MS_U32 u32MJPEGDbg_VideoPts; //0x0D04 897*53ee8cc1Swenshuai.xi MS_U32 u32MJPEGDbg_SkipRepeatTime; //0x0D08 898*53ee8cc1Swenshuai.xi 899*53ee8cc1Swenshuai.xi MS_U32 u32DSbufferAddr; //0x0D0C 900*53ee8cc1Swenshuai.xi MS_U32 u32DispRepeatCnt; //0x0D10 901*53ee8cc1Swenshuai.xi 902*53ee8cc1Swenshuai.xi MS_U32 u32ColocateBBUReadPtr; //0x0D14 FW->HK 903*53ee8cc1Swenshuai.xi MS_U32 u32ColocateBBUWritePtr; //0x0D18 HK->FW 904*53ee8cc1Swenshuai.xi MS_U8 u8BBUMode; //0x0D1C 0: driver auto bbu mode, 1: fw auto bbu mode(colocate bbu mode) 905*53ee8cc1Swenshuai.xi MS_U8 bUseTSPInBBUMode; //0x0D1D 0: disable, 1: enable 906*53ee8cc1Swenshuai.xi MS_U8 bUseWbMvop; //0x0D1E 0: use original MVOP, 1: use WB MVOP (HK->FW) 907*53ee8cc1Swenshuai.xi MS_U8 bHVDIMIEnable; //0x0D1F 908*53ee8cc1Swenshuai.xi 909*53ee8cc1Swenshuai.xi MS_U32 u32DmxFrameRate; //0x0D20 // Demuxer Prefered Input Frame Rate 910*53ee8cc1Swenshuai.xi MS_U32 u32DmxFrameRateBase; //0x0D24 // Demuxer Prefered Input Frame Rate Base 911*53ee8cc1Swenshuai.xi MS_U32 u32PTSTblRd; //0x0D28 // PTS table read ptr 912*53ee8cc1Swenshuai.xi MS_U32 u32PTSTblWr; //0x0D2C // PTS table write ptr 913*53ee8cc1Swenshuai.xi MS_U32 u32PreSetControl; //0x0D30 // PreSetControl 914*53ee8cc1Swenshuai.xi MS_U32 u32IapGnBufAddr; //0x0D34 915*53ee8cc1Swenshuai.xi MS_U32 u32IapGnBufSize; //0x0D38 916*53ee8cc1Swenshuai.xi MS_U32 u32SeamlessTSStatus; //0x0D3C 917*53ee8cc1Swenshuai.xi MS_U32 u32FWStatusFlag; //0x0D40 918*53ee8cc1Swenshuai.xi MS_U32 u32ESBufLevel; //0x0D44 919*53ee8cc1Swenshuai.xi MS_U32 u32ESBuf2Level; //0x0D48 920*53ee8cc1Swenshuai.xi MS_U32 u32FrameBuf2Addr; //0x0D4C 921*53ee8cc1Swenshuai.xi MS_U32 u32FrameBuf2Size; //0x0D50 922*53ee8cc1Swenshuai.xi MS_U8 bCMA_Use; //0x0D54 923*53ee8cc1Swenshuai.xi MS_U8 bCMA_AllocDone; //0x0D55 924*53ee8cc1Swenshuai.xi MS_U8 bCMA_TwoMIU; //0x0D56 925*53ee8cc1Swenshuai.xi MS_U8 u8FrmPostProcSupport; //0x0D57 926*53ee8cc1Swenshuai.xi MS_U8 u8PpQueueSize; //0x0D58 927*53ee8cc1Swenshuai.xi MS_U8 u8PpQueueWPtr; //0x0D59 928*53ee8cc1Swenshuai.xi MS_U8 u8PpQueueRPtr; //0x0D5A 929*53ee8cc1Swenshuai.xi MS_U8 u8CodecFeature; //0x0D5B // Bit0: For AP to force vdec allocate 8bit framebuffer even decoding 10bit stream Bit1: Enable MFCODEC Bit2: Force MFCODEC nncompress mode 930*53ee8cc1Swenshuai.xi MS_U32 u32DISPQUEUE_EXT_ST_ADDR; //0x0D5C 931*53ee8cc1Swenshuai.xi MS_U64 u64SeamlessTargetPTS; //0x0D60 932*53ee8cc1Swenshuai.xi MS_U32 u32SeamlessTargetPOC; //0x0D68 933*53ee8cc1Swenshuai.xi MS_U32 u32CodecMiscInfo; //0x0D6C //Bit0: video full range bit 934*53ee8cc1Swenshuai.xi MS_U32 u32RDPTR_PTS_LOW; //0x0D70 935*53ee8cc1Swenshuai.xi MS_U32 u32RDPTR_PTS_HIGH; //0x0D74 936*53ee8cc1Swenshuai.xi MS_U32 u32WRPTR_PTS_LOW; //0x0D78 937*53ee8cc1Swenshuai.xi MS_U32 u32WRPTR_PTS_HIGH; //0x0D7C 938*53ee8cc1Swenshuai.xi MS_U32 u32DisplayColourVolume_addr; //0x0D80 939*53ee8cc1Swenshuai.xi MS_U32 u32HVD_DisplayColourVolume_SEI; //0x0D84 940*53ee8cc1Swenshuai.xi MS_U32 u32ContentLightLevel_addr; //0x0D88 941*53ee8cc1Swenshuai.xi MS_U32 u32HVD_ContentLightLevel_SEI; //0x0D8C 942*53ee8cc1Swenshuai.xi MS_U32 u32AllocateCMABuffAddr[2]; //0x0D90 943*53ee8cc1Swenshuai.xi MS_U32 u32AllocateCMABuffSize[2]; //0x0D98 944*53ee8cc1Swenshuai.xi PENDING_RELEASE_QUEUE pending_release_queue[2][2]; //0x0DA0~0x0DD0 945*53ee8cc1Swenshuai.xi MS_U32 u32MaxCMAFrameBufSize; //0x0DD0 946*53ee8cc1Swenshuai.xi MS_U32 u32MaxCMAFrameBuf2Size; //0x0DD4 947*53ee8cc1Swenshuai.xi MS_U32 u32DirectStcInMs; //0x0DD8 948*53ee8cc1Swenshuai.xi 949*53ee8cc1Swenshuai.xi //vdec plus info 950*53ee8cc1Swenshuai.xi MS_U32 u32VdecPlusDecCnt; //0x0DDC 951*53ee8cc1Swenshuai.xi MS_U32 u32VdecPlusDropCnt; //0x0DE0 952*53ee8cc1Swenshuai.xi MS_U32 u32VdecPlusDispPicCnt; //0x0DE4 953*53ee8cc1Swenshuai.xi MS_U8 u8VdecPlusDropRatio; //0x0DE8 954*53ee8cc1Swenshuai.xi MS_U8 u8LowMemMode; //0x0DE9 955*53ee8cc1Swenshuai.xi MS_U8 bIsTSPIn; //0x0DEA 956*53ee8cc1Swenshuai.xi MS_U8 u8ExternalHeapIdx; //0x0DEB 957*53ee8cc1Swenshuai.xi MS_U8 bUseCorrectVlcAddr; //0x0DEC 958*53ee8cc1Swenshuai.xi MS_U8 bSingleLayer; //0x0DED 959*53ee8cc1Swenshuai.xi MS_U8 u8DVProfileFromDriverAPI; //0x0DEE 960*53ee8cc1Swenshuai.xi MS_U8 u8DVLevelFromDriverAPI; //0x0DEF 961*53ee8cc1Swenshuai.xi DynmcDispPath stDynmcDispPath; //0x0DF0 962*53ee8cc1Swenshuai.xi MS_U8 u8DolbyMetaReorder; //0x0DF3 963*53ee8cc1Swenshuai.xi MS_U32 u32FrameWrtPtr; //0x0DF4 964*53ee8cc1Swenshuai.xi MS_U32 u32FrameReadPtr; //0x0DF8 965*53ee8cc1Swenshuai.xi MS_U8 u8FrameType[FRAMEQ_SIZE]; //0x0DFC 966*53ee8cc1Swenshuai.xi MS_U32 u32DecTimeStamp[FRAMEQ_SIZE]; //0x0E0C 967*53ee8cc1Swenshuai.xi MS_U32 u32NotSupportInfo; //0x0E4C 968*53ee8cc1Swenshuai.xi MS_U32 u32DolbyVisionXCShmSize; //0x0E50 969*53ee8cc1Swenshuai.xi MS_U8 u8InputTSP; //0x0E54 970*53ee8cc1Swenshuai.xi MS_U8 u8VP9HDR10InfoVaild; //0x0E55 971*53ee8cc1Swenshuai.xi MS_U8 u8IsDoblyHDR10; //0x0E56 972*53ee8cc1Swenshuai.xi MS_U8 reserved8_6; //0x0E57 973*53ee8cc1Swenshuai.xi MS_U32 u32CurMinTspDataSize; //0x0E58 //byte 974*53ee8cc1Swenshuai.xi HVD_Config_VP9HDR10 VP9HDR10Info; //0x0E5C 975*53ee8cc1Swenshuai.xi MS_U8 reserved8_9[0xF9C-0x0E88]; //0x0E88 976*53ee8cc1Swenshuai.xi 977*53ee8cc1Swenshuai.xi MS_U32 u32VDEC_MIU_SEL; //0x0F9C 978*53ee8cc1Swenshuai.xi MS_U32 u32MaxVideoWidth; //0x0FA0 // for VDEC3_FB usage 979*53ee8cc1Swenshuai.xi MS_U32 u32MaxVideoHeight; //0x0FA4 // for VDEC3_FB usage 980*53ee8cc1Swenshuai.xi CMD_QUEUE cmd_queue; //0x0FA8~0x0FBC DISPCMDQ and normal CMDQ 981*53ee8cc1Swenshuai.xi MS_U32 u32HVD_VBBU_DRAM_ST_ADDR; //0x0FC0 982*53ee8cc1Swenshuai.xi MS_U32 u32HVD_PTS_TABLE_ST_OFFSET; //0x0FC4 983*53ee8cc1Swenshuai.xi MS_U32 u32HVD_BBU_DRAM_ST_ADDR; //0x0FC8 984*53ee8cc1Swenshuai.xi MS_U32 u32HVD_BBU2_DRAM_ST_ADDR; //0x0FCC 985*53ee8cc1Swenshuai.xi MS_U32 u32HVD_DYNAMIC_SCALING_ADDR; //0x0FD0 986*53ee8cc1Swenshuai.xi MS_U32 u32HVD_SCALER_INFO_ADDR; //0x0FD4 987*53ee8cc1Swenshuai.xi MS_U32 u32HVD_AVC_DTVINFO; //0x0FD8 988*53ee8cc1Swenshuai.xi MS_U32 u32HVD_AVC_INFO608; //0x0FDC 989*53ee8cc1Swenshuai.xi MS_U32 u32HVD_AVC_INFO708; //0x0FE0 990*53ee8cc1Swenshuai.xi MS_U32 u32HVD_AVC_USERDATA; //0x0FE4 991*53ee8cc1Swenshuai.xi MS_U32 u32HVD_AVC_FRAME_PACKING_SEI;//0x0FE8 992*53ee8cc1Swenshuai.xi MS_U32 u32HVD_DBG_DUMP_ADDR; //0x0FEC 993*53ee8cc1Swenshuai.xi MS_U32 u32HVD_DUMMY_WRITE_ADDR; //0x0FF0 994*53ee8cc1Swenshuai.xi MS_U16 u16EngineClock; //0x0FF4 995*53ee8cc1Swenshuai.xi MS_U16 u16PPUClock; //0x0FF6 996*53ee8cc1Swenshuai.xi MS_U32 u32COMPARE_INFO_ADDR; //0x0FF8 997*53ee8cc1Swenshuai.xi MS_U32 u32COMPARE_MD5_ADDR; //0x0FFC 998*53ee8cc1Swenshuai.xi } HVD_ShareMem; 999*53ee8cc1Swenshuai.xi 1000*53ee8cc1Swenshuai.xi typedef struct 1001*53ee8cc1Swenshuai.xi { 1002*53ee8cc1Swenshuai.xi MS_U32 u32LumaAddr0; ///< The start offset of luma data. Unit: byte. 1003*53ee8cc1Swenshuai.xi MS_U32 u32ChromaAddr0; ///< The start offset of chroma data. Unit: byte. 1004*53ee8cc1Swenshuai.xi MS_U32 u32LumaAddr1; ///< The start offset of luma data. Unit: byte. 1005*53ee8cc1Swenshuai.xi MS_U32 u32ChromaAddr1; ///< The start offset of chroma data. Unit: byte. 1006*53ee8cc1Swenshuai.xi MS_U32 u32PriData; ///< Index for SEC release frame buffer 1007*53ee8cc1Swenshuai.xi MS_U32 u32PriData1; ///< Index for SEC release frame buffer 1008*53ee8cc1Swenshuai.xi MS_U32 u32Status; 1009*53ee8cc1Swenshuai.xi MS_U16 u16Pitch; 1010*53ee8cc1Swenshuai.xi MS_U16 u16Width; 1011*53ee8cc1Swenshuai.xi MS_U16 u16Height; 1012*53ee8cc1Swenshuai.xi MS_U16 u16CropLeft; 1013*53ee8cc1Swenshuai.xi MS_U16 u16CropRight; 1014*53ee8cc1Swenshuai.xi MS_U16 u16CropBottom; 1015*53ee8cc1Swenshuai.xi MS_U16 u16CropTop; 1016*53ee8cc1Swenshuai.xi MS_U8 u1BottomFieldFirst:1; 1017*53ee8cc1Swenshuai.xi MS_U8 u1DSIndex1Valid:1; 1018*53ee8cc1Swenshuai.xi MS_U8 u2Reserved:6; 1019*53ee8cc1Swenshuai.xi MS_U8 u8FieldType; ///< HVD_Field_Type, none, top , bottom, both field 1020*53ee8cc1Swenshuai.xi MS_U8 u8Interlace; 1021*53ee8cc1Swenshuai.xi MS_U8 u8ColorFormat; // 0 -> 420, 1 -> 422, 2 -> 420 10 bit 1022*53ee8cc1Swenshuai.xi MS_U8 u8FrameNum; // if 2, u32LumaAddr1 and u32ChromaAddr1 should be use 1023*53ee8cc1Swenshuai.xi MS_U8 u8RangeMapY; // for VC1 or 10 BIT frame, 2 bit Y depth 1024*53ee8cc1Swenshuai.xi MS_U8 u8RangeMapUV; // for VC1 or 10 BIT frame, 2 bit UV depth 1025*53ee8cc1Swenshuai.xi MS_U8 u8TB_toggle; // 0 -> TOP then BOTTOM 1026*53ee8cc1Swenshuai.xi MS_U8 u8Tog_Time; 1027*53ee8cc1Swenshuai.xi MS_U8 u2Luma0Miu:2; 1028*53ee8cc1Swenshuai.xi MS_U8 u2Luma1Miu:2; 1029*53ee8cc1Swenshuai.xi MS_U8 u2Chroma0Miu:2; 1030*53ee8cc1Swenshuai.xi MS_U8 u2Chroma1Miu:2; 1031*53ee8cc1Swenshuai.xi MS_U8 u8FieldCtrl; // 0-> Normal, 1->always top, 2->always bot 1032*53ee8cc1Swenshuai.xi union { 1033*53ee8cc1Swenshuai.xi MS_U8 u8DSIndex; 1034*53ee8cc1Swenshuai.xi struct 1035*53ee8cc1Swenshuai.xi { 1036*53ee8cc1Swenshuai.xi MS_U8 u4DSIndex0:4; 1037*53ee8cc1Swenshuai.xi MS_U8 u4DSIndex1:4; // it is DS index for sFrames[1] (HEVC Dolby EL frame) 1038*53ee8cc1Swenshuai.xi }; 1039*53ee8cc1Swenshuai.xi }; 1040*53ee8cc1Swenshuai.xi union { 1041*53ee8cc1Swenshuai.xi MS_U16 u16Pitch1; // for 10 BIT, the 2 bit frame buffer pitch 1042*53ee8cc1Swenshuai.xi MS_U16 u16DispCnt; // when this display queue is show finish, record the display conut for debug if frame repeat 1043*53ee8cc1Swenshuai.xi }; 1044*53ee8cc1Swenshuai.xi } DISP_FRM_INFO; 1045*53ee8cc1Swenshuai.xi 1046*53ee8cc1Swenshuai.xi typedef struct 1047*53ee8cc1Swenshuai.xi { 1048*53ee8cc1Swenshuai.xi // for vsync bridge dispQ bridge 1049*53ee8cc1Swenshuai.xi MS_U8 u8DispQueNum; 1050*53ee8cc1Swenshuai.xi MS_U8 u8McuDispSwitch; 1051*53ee8cc1Swenshuai.xi MS_U8 u8McuDispQWPtr; 1052*53ee8cc1Swenshuai.xi MS_U8 u8McuDispQRPtr; 1053*53ee8cc1Swenshuai.xi DISP_FRM_INFO McuDispQueue[MAX_VSYNC_BRIDGE_DISPQ_NUM]; 1054*53ee8cc1Swenshuai.xi MS_U8 u8DisableFDMask; 1055*53ee8cc1Swenshuai.xi MS_U8 u8FdMaskField; 1056*53ee8cc1Swenshuai.xi MS_U8 u8ToggledTime; 1057*53ee8cc1Swenshuai.xi MS_U8 u8ToggleMethod; 1058*53ee8cc1Swenshuai.xi MS_U8 u8Reserve[2]; 1059*53ee8cc1Swenshuai.xi MS_U8 u5FRCMode:5; 1060*53ee8cc1Swenshuai.xi MS_U8 u1FBLMode:1; 1061*53ee8cc1Swenshuai.xi MS_U8 u2MirrorMode:2; 1062*53ee8cc1Swenshuai.xi MS_U8 u8Reserve2; 1063*53ee8cc1Swenshuai.xi } MCU_DISPQ_INFO; 1064*53ee8cc1Swenshuai.xi 1065*53ee8cc1Swenshuai.xi typedef enum 1066*53ee8cc1Swenshuai.xi { 1067*53ee8cc1Swenshuai.xi MS_DISP_FRM_INFO_EXT_TYPE_10BIT, 1068*53ee8cc1Swenshuai.xi MS_DISP_FRM_INFO_EXT_TYPE_INTERLACE = 1, // interlace bottom 8bit will share the same enum value 1069*53ee8cc1Swenshuai.xi MS_DISP_FRM_INFO_EXT_TYPE_DOLBY_EL = 1, // with dolby enhance layer 8bit 1070*53ee8cc1Swenshuai.xi MS_DISP_FRM_INFO_EXT_TYPE_10BIT_INTERLACE = 2, // interlace bottom 2bit will share the same enum 1071*53ee8cc1Swenshuai.xi MS_DISP_FRM_INFO_EXT_TYPE_10BIT_DOLBY_EL = 2, // value with dolby enhance layer 2bit 1072*53ee8cc1Swenshuai.xi MS_DISP_FRM_INFO_EXT_TYPE_10BIT_MVC, 1073*53ee8cc1Swenshuai.xi MS_DISP_FRM_INFO_EXT_TYPE_DOLBY_MODE = 4, 1074*53ee8cc1Swenshuai.xi MS_DISP_FRM_INFO_EXT_TYPE_INTERLACE_MVC = 4, 1075*53ee8cc1Swenshuai.xi MS_DISP_FRM_INFO_EXT_TYPE_10BIT_INTERLACE_MVC = 5, // MVC interlace R-View 2bit will share the 1076*53ee8cc1Swenshuai.xi MS_DISP_FRM_INFO_EXT_TYPE_DOLBY_META = 5, // same enum with dolby meta data 1077*53ee8cc1Swenshuai.xi MS_DISP_FRM_INFO_EXT_TYPE_MFCBITLEN, 1078*53ee8cc1Swenshuai.xi MS_DISP_FRM_INFO_EXT_TYPE_MFCBITLEN_MVC, 1079*53ee8cc1Swenshuai.xi MS_DISP_FRM_INFO_EXT_TYPE_MAX, 1080*53ee8cc1Swenshuai.xi } DISP_FRM_INFO_EXT_TYPE; 1081*53ee8cc1Swenshuai.xi 1082*53ee8cc1Swenshuai.xi /**************************************************************************************** 1083*53ee8cc1Swenshuai.xi MFCodecInfo 1084*53ee8cc1Swenshuai.xi +---------------------------------------------------------------+ 1085*53ee8cc1Swenshuai.xi |Uncompress|BitLen Miu Select| Pitch | MFCodec Version | 1086*53ee8cc1Swenshuai.xi | 4 bits | 4 bits | 8 bits | 16 bits | 1087*53ee8cc1Swenshuai.xi +---------------------------------------------------------------+ 1088*53ee8cc1Swenshuai.xi ***************************************************************************************/ 1089*53ee8cc1Swenshuai.xi typedef struct 1090*53ee8cc1Swenshuai.xi { 1091*53ee8cc1Swenshuai.xi MS_U32 u32LumaAddrExt[MS_DISP_FRM_INFO_EXT_TYPE_MAX]; 1092*53ee8cc1Swenshuai.xi MS_U32 u32ChromaAddrExt[MS_DISP_FRM_INFO_EXT_TYPE_MAX]; 1093*53ee8cc1Swenshuai.xi MS_U32 MFCodecInfo; 1094*53ee8cc1Swenshuai.xi MS_U16 u16Width; // the width of second frame 1095*53ee8cc1Swenshuai.xi MS_U16 u16Height; // the height of second frame 1096*53ee8cc1Swenshuai.xi MS_U16 u16Pitch[2]; // the pitch of second frame 1097*53ee8cc1Swenshuai.xi } DISP_FRM_INFO_EXT; 1098*53ee8cc1Swenshuai.xi 1099*53ee8cc1Swenshuai.xi typedef struct 1100*53ee8cc1Swenshuai.xi { 1101*53ee8cc1Swenshuai.xi MS_U8 u8Pattern[4]; 1102*53ee8cc1Swenshuai.xi MS_U32 u32Version; 1103*53ee8cc1Swenshuai.xi MS_U32 u32Debug; 1104*53ee8cc1Swenshuai.xi MS_U16 u16VsyncCnt; 1105*53ee8cc1Swenshuai.xi MS_U16 u16Debug; 1106*53ee8cc1Swenshuai.xi DISP_FRM_INFO_EXT McuDispQueue[MAX_VSYNC_BRIDGE_DISPQ_NUM]; 1107*53ee8cc1Swenshuai.xi } MCU_DISPQ_INFO_EXT; 1108*53ee8cc1Swenshuai.xi 1109*53ee8cc1Swenshuai.xi typedef struct 1110*53ee8cc1Swenshuai.xi { 1111*53ee8cc1Swenshuai.xi MS_U32 u32ByteCnt; 1112*53ee8cc1Swenshuai.xi MS_U32 u32PTS; 1113*53ee8cc1Swenshuai.xi MS_U32 u32ID_L; 1114*53ee8cc1Swenshuai.xi MS_U32 u32ID_H; 1115*53ee8cc1Swenshuai.xi } HVD_PTS_Entry; 1116*53ee8cc1Swenshuai.xi 1117*53ee8cc1Swenshuai.xi // enum 1118*53ee8cc1Swenshuai.xi typedef enum 1119*53ee8cc1Swenshuai.xi { 1120*53ee8cc1Swenshuai.xi E_MSTAR_CHIP_NONE = 0, 1121*53ee8cc1Swenshuai.xi E_MSTAR_CHIP_U3, //remove 1122*53ee8cc1Swenshuai.xi E_MSTAR_CHIP_T3, //remove 1123*53ee8cc1Swenshuai.xi E_MSTAR_CHIP_T4, //remove 1124*53ee8cc1Swenshuai.xi E_MSTAR_CHIP_JANUS, //remove 1125*53ee8cc1Swenshuai.xi E_MSTAR_CHIP_U4, //remove 1126*53ee8cc1Swenshuai.xi E_MSTAR_CHIP_T8, //remove 1127*53ee8cc1Swenshuai.xi E_MSTAR_CHIP_T9, //remove 1128*53ee8cc1Swenshuai.xi E_MSTAR_CHIP_M10, //remove 1129*53ee8cc1Swenshuai.xi E_MSTAR_CHIP_T12, //remove 1130*53ee8cc1Swenshuai.xi E_MSTAR_CHIP_T13, //remove 1131*53ee8cc1Swenshuai.xi E_MSTAR_CHIP_J2, //remove 1132*53ee8cc1Swenshuai.xi E_MSTAR_CHIP_K1, 1133*53ee8cc1Swenshuai.xi E_MSTAR_CHIP_A1, //remove 1134*53ee8cc1Swenshuai.xi E_MSTAR_CHIP_A5, //remove 1135*53ee8cc1Swenshuai.xi E_MSTAR_CHIP_A7, //remove 1136*53ee8cc1Swenshuai.xi E_MSTAR_CHIP_K2, 1137*53ee8cc1Swenshuai.xi E_MSTAR_CHIP_A3, //remove 1138*53ee8cc1Swenshuai.xi E_MSTAR_CHIP_A7P, //remove 1139*53ee8cc1Swenshuai.xi E_MSTAR_CHIP_AGATE, //remove 1140*53ee8cc1Swenshuai.xi E_MSTAR_CHIP_M12, 1141*53ee8cc1Swenshuai.xi E_MSTAR_CHIP_EAGLE, 1142*53ee8cc1Swenshuai.xi E_MSTAR_CHIP_EMERALD, 1143*53ee8cc1Swenshuai.xi E_MSTAR_CHIP_EDISON, 1144*53ee8cc1Swenshuai.xi E_MSTAR_CHIP_EIFFEL, 1145*53ee8cc1Swenshuai.xi E_MSTAR_CHIP_CEDRIC, 1146*53ee8cc1Swenshuai.xi E_MSTAR_CHIP_NUGGET, 1147*53ee8cc1Swenshuai.xi E_MSTAR_CHIP_KAISER, 1148*53ee8cc1Swenshuai.xi E_MSTAR_CHIP_NIKE, 1149*53ee8cc1Swenshuai.xi E_MSTAR_CHIP_KENYA, 1150*53ee8cc1Swenshuai.xi E_MSTAR_CHIP_EINSTEIN, 1151*53ee8cc1Swenshuai.xi E_MSTAR_CHIP_NIKON, 1152*53ee8cc1Swenshuai.xi E_MSTAR_CHIP_NAPOLI, 1153*53ee8cc1Swenshuai.xi E_MSTAR_CHIP_MADISON, 1154*53ee8cc1Swenshuai.xi E_MSTAR_CHIP_MONACO, 1155*53ee8cc1Swenshuai.xi E_MSTAR_CHIP_KERES, 1156*53ee8cc1Swenshuai.xi E_MSTAR_CHIP_CLIPPERS, 1157*53ee8cc1Swenshuai.xi E_MSTAR_CHIP_MUJI, 1158*53ee8cc1Swenshuai.xi E_MSTAR_CHIP_MUNICH, 1159*53ee8cc1Swenshuai.xi E_MSTAR_CHIP_MONET, 1160*53ee8cc1Swenshuai.xi E_MSTAR_CHIP_MULAN, 1161*53ee8cc1Swenshuai.xi E_MSTAR_CHIP_MANHATTAN, 1162*53ee8cc1Swenshuai.xi E_MSTAR_CHIP_KRATOS, 1163*53ee8cc1Swenshuai.xi E_MSTAR_CHIP_KANO, 1164*53ee8cc1Swenshuai.xi E_MSTAR_CHIP_MESSI, 1165*53ee8cc1Swenshuai.xi E_MSTAR_CHIP_MILAN, 1166*53ee8cc1Swenshuai.xi E_MSTAR_CHIP_MASERATI, 1167*53ee8cc1Swenshuai.xi E_MSTAR_CHIP_MACAN, 1168*53ee8cc1Swenshuai.xi E_MSTAR_CHIP_KIWI, 1169*53ee8cc1Swenshuai.xi E_MSTAR_CHIP_CURRY, 1170*53ee8cc1Swenshuai.xi E_MSTAR_CHIP_KAYLA, 1171*53ee8cc1Swenshuai.xi E_MSTAR_CHIP_K6, 1172*53ee8cc1Swenshuai.xi E_MSTAR_CHIP_MUSTANG, 1173*53ee8cc1Swenshuai.xi E_MSTAR_CHIP_MAXIM, 1174*53ee8cc1Swenshuai.xi E_MSTAR_CHIP_K6LITE, 1175*53ee8cc1Swenshuai.xi E_MSTAR_CHIP_MATISSE, 1176*53ee8cc1Swenshuai.xi E_MSTAR_CHIP_MOONEY, 1177*53ee8cc1Swenshuai.xi E_MSTAR_CHIP_MARLON, 1178*53ee8cc1Swenshuai.xi E_MSTAR_CHIP_K5TN, // Kentucky 1179*53ee8cc1Swenshuai.xi E_MSTAR_CHIP_MAINZ, 1180*53ee8cc1Swenshuai.xi E_MSTAR_CHIP_OTHER = 0xFF, 1181*53ee8cc1Swenshuai.xi } MSTAR_CHIP_ID; 1182*53ee8cc1Swenshuai.xi 1183*53ee8cc1Swenshuai.xi typedef enum 1184*53ee8cc1Swenshuai.xi { 1185*53ee8cc1Swenshuai.xi E_HVD_SRC_MODE_DTV = 0, 1186*53ee8cc1Swenshuai.xi E_HVD_SRC_MODE_TS_FILE, 1187*53ee8cc1Swenshuai.xi E_HVD_SRC_MODE_FILE, 1188*53ee8cc1Swenshuai.xi E_HVD_SRC_MODE_TS_FILE_DUAL_ES, 1189*53ee8cc1Swenshuai.xi E_HVD_SRC_MODE_FILE_DUAL_ES, 1190*53ee8cc1Swenshuai.xi } HVD_SRC_MODE; 1191*53ee8cc1Swenshuai.xi 1192*53ee8cc1Swenshuai.xi typedef enum 1193*53ee8cc1Swenshuai.xi { 1194*53ee8cc1Swenshuai.xi E_VDEC_FORCE_8BITS_MASK = BMASK(0:0), ///< 8BITS YUV Mode 1195*53ee8cc1Swenshuai.xi E_VDEC_FORCE_8BITS_MODE = BIT(0), 1196*53ee8cc1Swenshuai.xi E_VDEC_MFCODEC_MASK = BMASK(2:1), ///< MFCodec Mode 1197*53ee8cc1Swenshuai.xi E_VDEC_MFCODEC_DEFAULT = BITS(2:1, 0), ///< deflaut: 0x00 1198*53ee8cc1Swenshuai.xi E_VDEC_MFCODEC_FORCE_ENABLE = BITS(2:1, 1), ///< force enable: 0x01 1199*53ee8cc1Swenshuai.xi E_VDEC_MFCODEC_FORCE_DISABLE = BITS(2:1, 2), ///< force disable:0x10 1200*53ee8cc1Swenshuai.xi E_VDEC_MFCODEC_UNCOMPRESS_MODE = BIT(3), 1201*53ee8cc1Swenshuai.xi E_VDEC_FORCE_MAIN_PROFILE_MASK = BMASK(4:4), 1202*53ee8cc1Swenshuai.xi E_VDEC_FORCE_MAIN_PROFILE = BIT(4), // HEVC: Only Support Main profile even this chip support Main10 1203*53ee8cc1Swenshuai.xi E_VDEC_DYNAMIC_CMA_MODE = BIT(5), // Enable Dynamic CMA mechanism 1204*53ee8cc1Swenshuai.xi E_VDEC_TEMPORAL_SCALABILITY_MODE = BIT(6), //Enable/Disable Temporal Scalability Mode 1205*53ee8cc1Swenshuai.xi E_VDEC_DOLBY_VISION_SINGLE_LAYER_MODE = BIT(7) //Enable/Disable dolby vision single layer Mode 1206*53ee8cc1Swenshuai.xi } VDEC_CODEC_FEATURE; 1207*53ee8cc1Swenshuai.xi 1208*53ee8cc1Swenshuai.xi typedef enum 1209*53ee8cc1Swenshuai.xi { 1210*53ee8cc1Swenshuai.xi E_HVD_DV_ENABLE_MASK = BMASK(1:0), /// Is Dolby vision enable 1211*53ee8cc1Swenshuai.xi E_HVD_DV_SINGLE_LAYER_MODE = BIT(0), 1212*53ee8cc1Swenshuai.xi E_HVD_DV_DUAL_LAYER_MODE = BIT(1), 1213*53ee8cc1Swenshuai.xi E_HVD_DV_CURRENT_LAYER = BIT(2), /// 1: enhance layer 0: base layer 1214*53ee8cc1Swenshuai.xi E_HVD_DV_METADATA_MIUSEL_MASK = BMASK(4:3), /// meta data miu select(2bits) 1215*53ee8cc1Swenshuai.xi E_HVD_DV_METADATA_MIU0 = BITS(4:3, 0), 1216*53ee8cc1Swenshuai.xi E_HVD_DV_METADATA_MIU1 = BITS(4:3, 1), 1217*53ee8cc1Swenshuai.xi E_HVD_DV_METADATA_MIU2 = BITS(4:3, 2), 1218*53ee8cc1Swenshuai.xi } HVD_DOLBY_VISION_MODE; 1219*53ee8cc1Swenshuai.xi 1220*53ee8cc1Swenshuai.xi typedef enum 1221*53ee8cc1Swenshuai.xi { 1222*53ee8cc1Swenshuai.xi E_HVD_Codec_AVC = 0, 1223*53ee8cc1Swenshuai.xi E_HVD_Codec_AVS, 1224*53ee8cc1Swenshuai.xi E_HVD_Codec_RM, 1225*53ee8cc1Swenshuai.xi E_HVD_Codec_MVC, 1226*53ee8cc1Swenshuai.xi E_HVD_Codec_VP8, 1227*53ee8cc1Swenshuai.xi E_HVD_Codec_MJPEG, 1228*53ee8cc1Swenshuai.xi E_HVD_Codec_VP6, 1229*53ee8cc1Swenshuai.xi E_HVD_Codec_HEVC, 1230*53ee8cc1Swenshuai.xi E_HVD_Codec_VP9, 1231*53ee8cc1Swenshuai.xi E_HVD_Codec_HEVC_DV, 1232*53ee8cc1Swenshuai.xi E_HVD_Codec_UNKNOWN 1233*53ee8cc1Swenshuai.xi } HVD_Codec_Type; 1234*53ee8cc1Swenshuai.xi 1235*53ee8cc1Swenshuai.xi typedef enum 1236*53ee8cc1Swenshuai.xi { 1237*53ee8cc1Swenshuai.xi E_HVD_PICT_TYPE_I, 1238*53ee8cc1Swenshuai.xi E_HVD_PICT_TYPE_P, 1239*53ee8cc1Swenshuai.xi E_HVD_PICT_TYPE_B, 1240*53ee8cc1Swenshuai.xi } HVD_Picture_Type; 1241*53ee8cc1Swenshuai.xi 1242*53ee8cc1Swenshuai.xi typedef enum 1243*53ee8cc1Swenshuai.xi { 1244*53ee8cc1Swenshuai.xi E_HVD_FIELD_TYPE_NONE = 0, 1245*53ee8cc1Swenshuai.xi E_HVD_FIELD_TYPE_TOP, 1246*53ee8cc1Swenshuai.xi E_HVD_FIELD_TYPE_BOTTOM, 1247*53ee8cc1Swenshuai.xi E_HVD_FIELD_TYPE_BOTH, 1248*53ee8cc1Swenshuai.xi } HVD_Field_Type; 1249*53ee8cc1Swenshuai.xi 1250*53ee8cc1Swenshuai.xi typedef enum 1251*53ee8cc1Swenshuai.xi { 1252*53ee8cc1Swenshuai.xi EVD_TOP_FIELD = 1, 1253*53ee8cc1Swenshuai.xi EVD_BOTTOM_FIELD = 2, 1254*53ee8cc1Swenshuai.xi EVD_TOP_BOTTOM_ORDER = 3, 1255*53ee8cc1Swenshuai.xi EVD_BOTTOM_TOP_ORDER = 4, 1256*53ee8cc1Swenshuai.xi EVD_TOP_WITH_PREV = 9, 1257*53ee8cc1Swenshuai.xi EVD_BOTTOM_WITH_PREV = 10, 1258*53ee8cc1Swenshuai.xi EVD_TOP_WITH_NEXT = 11, 1259*53ee8cc1Swenshuai.xi EVD_BOTTOM_WITH_NEXT = 12, 1260*53ee8cc1Swenshuai.xi EVD_UNKNOWN_TYPE = 0xFF, 1261*53ee8cc1Swenshuai.xi } HEVC_PIC_STRUCT; 1262*53ee8cc1Swenshuai.xi 1263*53ee8cc1Swenshuai.xi typedef enum 1264*53ee8cc1Swenshuai.xi { 1265*53ee8cc1Swenshuai.xi E_HVD_DECODE_ALL, 1266*53ee8cc1Swenshuai.xi E_HVD_DECODE_I, 1267*53ee8cc1Swenshuai.xi E_HVD_DECODE_IP, 1268*53ee8cc1Swenshuai.xi } HVD_Skip_Decode_Type; 1269*53ee8cc1Swenshuai.xi 1270*53ee8cc1Swenshuai.xi typedef enum 1271*53ee8cc1Swenshuai.xi { 1272*53ee8cc1Swenshuai.xi E_HVD_CMA_ALLOCATION_NONE, 1273*53ee8cc1Swenshuai.xi E_HVD_CMA_ALLOCATION_WAITING, 1274*53ee8cc1Swenshuai.xi E_HVD_CMA_ALLOCATION_DONE, 1275*53ee8cc1Swenshuai.xi E_HVD_CMA_ALLOCATION_FAILED, 1276*53ee8cc1Swenshuai.xi } HVD_CMA_Allocation_Status; 1277*53ee8cc1Swenshuai.xi 1278*53ee8cc1Swenshuai.xi typedef enum 1279*53ee8cc1Swenshuai.xi { 1280*53ee8cc1Swenshuai.xi E_HVD_CMA_RELEASE_NONE, 1281*53ee8cc1Swenshuai.xi E_HVD_CMA_RELEASE_WAITING, 1282*53ee8cc1Swenshuai.xi E_HVD_CMA_RELEASE_DONE, 1283*53ee8cc1Swenshuai.xi } HVD_CMA_Release_Status; 1284*53ee8cc1Swenshuai.xi 1285*53ee8cc1Swenshuai.xi typedef enum 1286*53ee8cc1Swenshuai.xi { 1287*53ee8cc1Swenshuai.xi E_HVD_DROP_DISP_AUTO = (1<<0), 1288*53ee8cc1Swenshuai.xi E_HVD_DROP_DISP_ONCE = (1<<1), 1289*53ee8cc1Swenshuai.xi } HVD_Drop_Disp_Type; 1290*53ee8cc1Swenshuai.xi 1291*53ee8cc1Swenshuai.xi typedef enum 1292*53ee8cc1Swenshuai.xi { 1293*53ee8cc1Swenshuai.xi E_HVD_FRC_NORMAL = 0, 1294*53ee8cc1Swenshuai.xi E_HVD_FRC_32PULLDOWN, //3:2 pulldown mode (ex. 24p a 60i or 60p) 1295*53ee8cc1Swenshuai.xi E_HVD_FRC_PAL2NTSC , //PALaNTSC conversion (50i a 60i) 1296*53ee8cc1Swenshuai.xi E_HVD_FRC_NTSC2PAL, //NTSCaPAL conversion (60i a 50i) 1297*53ee8cc1Swenshuai.xi E_HVD_FRC_DISP_2X, //output rate is twice of input rate (ex. 30p a 60p) 1298*53ee8cc1Swenshuai.xi E_HVD_FRC_24_50, //output rate 24P->50P 48I->50I 1299*53ee8cc1Swenshuai.xi E_HVD_FRC_50P_60P, //output rate 50P ->60P 1300*53ee8cc1Swenshuai.xi E_HVD_FRC_60P_50P, //output rate 60P ->50P 1301*53ee8cc1Swenshuai.xi E_HVD_FRC_HALF_I, //output rate 120i -> 60i, 100i -> 50i 1302*53ee8cc1Swenshuai.xi E_HVD_FRC_120I_50I, //output rate 120i -> 60i 1303*53ee8cc1Swenshuai.xi E_HVD_FRC_100I_60I, //output rate 100i -> 60i 1304*53ee8cc1Swenshuai.xi E_HVD_FRC_DISP_4X, //output rate is four times of input rate (ex. 15P a 60P) 1305*53ee8cc1Swenshuai.xi E_HVD_FRC_15_50, //output rate 15P->50P, 30i -> 50i 1306*53ee8cc1Swenshuai.xi E_HVD_FRC_30_50, //output rate 30p->50p, 60i->50i 1307*53ee8cc1Swenshuai.xi E_HVD_FRC_30_24, //output rate 30p->24p, 60i->24i 1308*53ee8cc1Swenshuai.xi E_HVD_FRC_60_24, //output rate 60p->24p, 120i -> 24i 1309*53ee8cc1Swenshuai.xi E_HVD_FRC_60_25, //output rate 60p->25p , 120i -> 50i 1310*53ee8cc1Swenshuai.xi E_HVD_FRC_HALF_P, //output rate 60p-> 30p, 50p -> 25p 1311*53ee8cc1Swenshuai.xi E_HVD_FRC_25_30, //output rate 25p->30p , 50 i-> 30i 1312*53ee8cc1Swenshuai.xi E_HVD_FRC_50_30, //output rate 25p->30p , 100i -> 30i 1313*53ee8cc1Swenshuai.xi E_HVD_FRC_24_30, //output rate 24p->30p , 48i -> 30i 1314*53ee8cc1Swenshuai.xi } HVD_FRC_Mode; 1315*53ee8cc1Swenshuai.xi 1316*53ee8cc1Swenshuai.xi typedef enum 1317*53ee8cc1Swenshuai.xi { 1318*53ee8cc1Swenshuai.xi E_HVD_FRC_DROP_FRAME = 0, 1319*53ee8cc1Swenshuai.xi E_HVD_FRC_DROP_FIELD = 1, 1320*53ee8cc1Swenshuai.xi } HVD_FRC_Drop_Mode; 1321*53ee8cc1Swenshuai.xi 1322*53ee8cc1Swenshuai.xi typedef enum 1323*53ee8cc1Swenshuai.xi { 1324*53ee8cc1Swenshuai.xi E_HVD_DISP_SPEED_F_32X = 32, 1325*53ee8cc1Swenshuai.xi E_HVD_DISP_SPEED_F_16X = 16, 1326*53ee8cc1Swenshuai.xi E_HVD_DISP_SPEED_F_8X = 8, 1327*53ee8cc1Swenshuai.xi E_HVD_DISP_SPEED_F_4X = 4, 1328*53ee8cc1Swenshuai.xi E_HVD_DISP_SPEED_F_2X = 2, 1329*53ee8cc1Swenshuai.xi E_HVD_DISP_SPEED_1X = 1, 1330*53ee8cc1Swenshuai.xi E_HVD_DISP_SPEED_S_2X = -2, 1331*53ee8cc1Swenshuai.xi E_HVD_DISP_SPEED_S_4X = -4, 1332*53ee8cc1Swenshuai.xi E_HVD_DISP_SPEED_S_8X = -8, 1333*53ee8cc1Swenshuai.xi E_HVD_DISP_SPEED_S_16X = -16, 1334*53ee8cc1Swenshuai.xi E_HVD_DISP_SPEED_S_32X = -32, 1335*53ee8cc1Swenshuai.xi } HVD_Disp_Speed; 1336*53ee8cc1Swenshuai.xi 1337*53ee8cc1Swenshuai.xi typedef enum 1338*53ee8cc1Swenshuai.xi { 1339*53ee8cc1Swenshuai.xi E_HVD_SYNC_TBL_TYPE_NON, 1340*53ee8cc1Swenshuai.xi E_HVD_SYNC_TBL_TYPE_PTS, 1341*53ee8cc1Swenshuai.xi E_HVD_SYNC_TBL_TYPE_DTS, 1342*53ee8cc1Swenshuai.xi E_HVD_SYNC_TBL_TYPE_STS, //Sorted TimeStamp 1343*53ee8cc1Swenshuai.xi } HVD_Sync_Tbl_Type; //only for file mode. Ts , ts file mode always has PTS table 1344*53ee8cc1Swenshuai.xi 1345*53ee8cc1Swenshuai.xi typedef enum 1346*53ee8cc1Swenshuai.xi { 1347*53ee8cc1Swenshuai.xi E_HVD_FIELD_CTRL_OFF=0, 1348*53ee8cc1Swenshuai.xi E_HVD_FIELD_CTRL_TOP, // Always Show Top Field 1349*53ee8cc1Swenshuai.xi E_HVD_FIELD_CTRL_BOTTOM, // Always Show Bottom Field 1350*53ee8cc1Swenshuai.xi } HVD_Field_Ctrl; 1351*53ee8cc1Swenshuai.xi 1352*53ee8cc1Swenshuai.xi typedef enum 1353*53ee8cc1Swenshuai.xi { 1354*53ee8cc1Swenshuai.xi E_HVD_BURST_CNT_LV0 = 0, // U3,T3:32 cycle T4~U4: 16 cycle 1355*53ee8cc1Swenshuai.xi E_HVD_BURST_CNT_LV1 = 1, // U3,T3:64 cycle T4~U4: 32 cycle 1356*53ee8cc1Swenshuai.xi E_HVD_BURST_CNT_LV2 = 2, // U3,T3:96 cycle T4~U4: 48 cycle 1357*53ee8cc1Swenshuai.xi E_HVD_BURST_CNT_LV3 = 3, // U3,T3:128 cycle T4~U4: 64 cycle 1358*53ee8cc1Swenshuai.xi E_HVD_BURST_CNT_LV4 = 4, // U3,T3:160 cycle T4~U4: 80 cycle 1359*53ee8cc1Swenshuai.xi E_HVD_BURST_CNT_LV5 = 5, // U3,T3:192 cycle T4~U4: 96 cycle 1360*53ee8cc1Swenshuai.xi E_HVD_BURST_CNT_LV6 = 6, // U3,T3:224 cycle T4~U4: 112 cycle 1361*53ee8cc1Swenshuai.xi E_HVD_BURST_CNT_LV7 = 7, // U3,T3:256 cycle T4~U4: 128 cycle 1362*53ee8cc1Swenshuai.xi E_HVD_BURST_CNT_DISABLE = 0xFFFFFFFF, 1363*53ee8cc1Swenshuai.xi } HVD_MIU_Burst_Cnt_Ctrl; 1364*53ee8cc1Swenshuai.xi 1365*53ee8cc1Swenshuai.xi typedef enum 1366*53ee8cc1Swenshuai.xi { 1367*53ee8cc1Swenshuai.xi E_HVD_DISPQ_STATUS_NONE = 0, //FW 1368*53ee8cc1Swenshuai.xi E_HVD_DISPQ_STATUS_INIT, //FW 1369*53ee8cc1Swenshuai.xi E_HVD_DISPQ_STATUS_VIEW, //HK 1370*53ee8cc1Swenshuai.xi E_HVD_DISPQ_STATUS_DISP, //HK 1371*53ee8cc1Swenshuai.xi E_HVD_DISPQ_STATUS_FREE, //HK 1372*53ee8cc1Swenshuai.xi } HVD_DISPQ_STATUS; 1373*53ee8cc1Swenshuai.xi 1374*53ee8cc1Swenshuai.xi typedef enum 1375*53ee8cc1Swenshuai.xi { 1376*53ee8cc1Swenshuai.xi E_HVD_EX_DV_STREAM_PROFILE_ID_DVAV_PER = 0x1, 1377*53ee8cc1Swenshuai.xi E_HVD_EX_DV_STREAM_PROFILE_ID_DVAV_PEN = 0x2, 1378*53ee8cc1Swenshuai.xi E_HVD_EX_DV_STREAM_PROFILE_ID_DVHE_DER = 0x4, 1379*53ee8cc1Swenshuai.xi E_HVD_EX_DV_STREAM_PROFILE_ID_DVHE_DEN = 0x8, 1380*53ee8cc1Swenshuai.xi E_HVD_EX_DV_STREAM_PROFILE_ID_DVHE_DTR = 0x10, 1381*53ee8cc1Swenshuai.xi E_HVD_EX_DV_STREAM_PROFILE_ID_DVHE_STN = 0x20, 1382*53ee8cc1Swenshuai.xi E_HVD_EX_DV_STREAM_PROFILE_ID_DVHE_DTH = 0x40, 1383*53ee8cc1Swenshuai.xi E_HVD_EX_DV_STREAM_PROFILE_ID_UNSUPPORTED = 0x0, 1384*53ee8cc1Swenshuai.xi } HVD_EX_DV_Stream_Profile; 1385*53ee8cc1Swenshuai.xi 1386*53ee8cc1Swenshuai.xi typedef enum 1387*53ee8cc1Swenshuai.xi { 1388*53ee8cc1Swenshuai.xi E_HVD_EX_DV_META_REORDER_DEFAULT, 1389*53ee8cc1Swenshuai.xi E_HVD_EX_DV_META_REORDER_FOLLOW_BL, 1390*53ee8cc1Swenshuai.xi E_HVD_EX_DV_META_REORDER_FOLLOW_EL, 1391*53ee8cc1Swenshuai.xi } HVD_EX_DV_Metadata_Reorder; 1392*53ee8cc1Swenshuai.xi 1393*53ee8cc1Swenshuai.xi typedef enum 1394*53ee8cc1Swenshuai.xi { 1395*53ee8cc1Swenshuai.xi E_HVD_EX_DV_STREAM_LEVEL_ID_HD24 = 0, 1396*53ee8cc1Swenshuai.xi E_HVD_EX_DV_STREAM_LEVEL_ID_HD30, 1397*53ee8cc1Swenshuai.xi E_HVD_EX_DV_STREAM_LEVEL_ID_FHD24, 1398*53ee8cc1Swenshuai.xi E_HVD_EX_DV_STREAM_LEVEL_ID_FHD30, 1399*53ee8cc1Swenshuai.xi E_HVD_EX_DV_STREAM_LEVEL_ID_FHD60, 1400*53ee8cc1Swenshuai.xi E_HVD_EX_DV_STREAM_LEVEL_ID_UHD24, 1401*53ee8cc1Swenshuai.xi E_HVD_EX_DV_STREAM_LEVEL_ID_UHD30, 1402*53ee8cc1Swenshuai.xi E_HVD_EX_DV_STREAM_LEVEL_ID_UHD48, 1403*53ee8cc1Swenshuai.xi E_HVD_EX_DV_STREAM_LEVEL_ID_UHD60, 1404*53ee8cc1Swenshuai.xi E_HVD_EX_DV_STREAM_LEVEL_ID_UNSUPPORTED, 1405*53ee8cc1Swenshuai.xi } HVD_EX_DV_Stream_Highest_Level; 1406*53ee8cc1Swenshuai.xi 1407*53ee8cc1Swenshuai.xi typedef enum 1408*53ee8cc1Swenshuai.xi { 1409*53ee8cc1Swenshuai.xi // invalid cmd 1410*53ee8cc1Swenshuai.xi E_HVD_CMD_INVALID_CMD = 0xFFFFFFFFUL, 1411*53ee8cc1Swenshuai.xi 1412*53ee8cc1Swenshuai.xi // SVD old cmd 1413*53ee8cc1Swenshuai.xi E_HVD_CMD_SVD_BASE = 0x00010000, 1414*53ee8cc1Swenshuai.xi /*0x10001*/E_HVD_CMD_PARSER_BYPASS, // 1 : on :for raw file mode; AVCHVD_CMD_PARSER_BYPASS ; 0: off: TS file mode and live stream 1415*53ee8cc1Swenshuai.xi /*0x10002*/E_HVD_CMD_BBU_RESIZE, // svd only; AVCHVD_CMD_BBU_SIZE 1416*53ee8cc1Swenshuai.xi /*0x10003*/E_HVD_CMD_FRAME_BUF_RESIZE, // svd only; AVCHVD_CMD_RESIZE_MEM 1417*53ee8cc1Swenshuai.xi /*0x10004*/E_HVD_CMD_IGNORE_ERR_REF, // 1: ignore ref error, 0: enable ref error handle; AVCHVD_CMD_IGNORE_LIST + AVCHVD_CMD_OPEN_GOP 1418*53ee8cc1Swenshuai.xi /*0x10005*/E_HVD_CMD_ES_FULL_STOP, // ES auto stop: 1: AVCHVD_CMD_ES_STOP; ES not stop 0: AVCHVD_CMD_HANDSHAKE 1419*53ee8cc1Swenshuai.xi /*0x10006*/E_HVD_CMD_DROP_DISP_AUTO, // 1:on AVCHVD_CMD_DISP_DROP, 0:off AVCHVD_CMD_DIS_DISP_DROP 1420*53ee8cc1Swenshuai.xi /*0x10007*/E_HVD_CMD_DROP_DISP_ONCE, // AVCHVD_CMD_DROP_CNT 1421*53ee8cc1Swenshuai.xi /*0x10008*/E_HVD_CMD_FLUSH_DEC_Q, // AVCHVD_CMD_FLUSH_QUEUE 1422*53ee8cc1Swenshuai.xi 1423*53ee8cc1Swenshuai.xi // HVD new cmd 1424*53ee8cc1Swenshuai.xi E_HVD_CMD_NEW_BASE = 0x00020000, 1425*53ee8cc1Swenshuai.xi // Action 1426*53ee8cc1Swenshuai.xi E_HVD_CMD_TYPE_ACTION_MASK = (0x0100|E_HVD_CMD_NEW_BASE), 1427*53ee8cc1Swenshuai.xi 1428*53ee8cc1Swenshuai.xi // state machine action 1429*53ee8cc1Swenshuai.xi /*0x20101*/E_HVD_CMD_INIT , // Init FW type: E_HVD_Codec_AVC ; E_HVD_Codec_AVS; E_HVD_Codec_RM 1430*53ee8cc1Swenshuai.xi /*0x20102*/E_HVD_CMD_PLAY, // AVCHVD_CMD_GO 1431*53ee8cc1Swenshuai.xi /*0x20103*/E_HVD_CMD_PAUSE, // AVCHVD_CMD_PAUSE 1432*53ee8cc1Swenshuai.xi /*0x20104*/E_HVD_CMD_STOP, // AVCHVD_CMD_STOP 1433*53ee8cc1Swenshuai.xi // run-time action 1434*53ee8cc1Swenshuai.xi /*0x20105*/E_HVD_CMD_STEP_DECODE, // AVCHVD_CMD_STEP 1435*53ee8cc1Swenshuai.xi /*0x20106*/E_HVD_CMD_FLUSH, // Arg: 1 show last decode, 0 show current diaplay.FW need to clear read pointer of PTS table under SYNC_PTS, SYNC_DTS. ; BBU: AVCHVD_CMD_DROP , DISP: AVCHVD_CMD_FLUSH_DISPLAY , AVCHVD_CMD_SKIPTOI 1436*53ee8cc1Swenshuai.xi /*0x20107*/E_HVD_CMD_BLUE_SCREEN, // only for AVC. remove auto blue screen before show first frame on screen 1437*53ee8cc1Swenshuai.xi /*0x20108*/E_HVD_CMD_RESET_PTS, // reset PTS table for TS file mode. AVCHVD_CMD_RE_SYNC 1438*53ee8cc1Swenshuai.xi /*0x20109*/E_HVD_CMD_FREEZE_IMG, // FW showes the same frame at every Vsync, but background decode process can not stop. 1: freeze image; 0: normal diaplay 1439*53ee8cc1Swenshuai.xi /*0x2010A*/E_HVD_CMD_JUMP_TO_PTS, // Arg: PTS(unit: 90kHz). 0: disable this mode. Any not zero value: enable. FW decode to specified PTS by using full speed. During the decoding, FW need not show any decoded frames, just maitain the last frame before get this command. 1440*53ee8cc1Swenshuai.xi /*0x2010B*/E_HVD_CMD_SYNC_TOLERANCE, // Arg: any not zero number(unit: 90kHz). AVCHVD_CMD_SLOW_SYNC 1441*53ee8cc1Swenshuai.xi /*0x2010C*/E_HVD_CMD_SYNC_VIDEO_DELAY, // Arg: 0~MAX_VIDEO_DELAY(unit: 90kHz): use Arg of video delay. AVCHVD_CMD_AVSYNC 1442*53ee8cc1Swenshuai.xi /*0x2010D*/E_HVD_CMD_DISP_ONE_FIELD, // for AVS, AVC only, Arg: HVD_Field_Ctrl. AVCH264_CMD_ONE_FIELD 1443*53ee8cc1Swenshuai.xi /*0x2010E*/E_HVD_CMD_FAST_DISP, // Arg: 0: disable, Any not zero value: enable. Always return first frame ready. Don't care the first frame av-sync. 1444*53ee8cc1Swenshuai.xi /*0x2010F*/E_HVD_CMD_SKIP_TO_PTS, // Arg: PTS(unit: 90kHz). 0: disable this mode. Any not zero value: enable. FW decode to specified PTS by using full speed. FW need not to decode frame until the first I after the specified PTS. 1445*53ee8cc1Swenshuai.xi /*0x20110*/E_HVD_CMD_SYNC_THRESHOLD, // Arg: 0x01~0xFF , frame repeat time. If arg == 0xFF, fw will always repeat last frame when PTS > STC. 1446*53ee8cc1Swenshuai.xi /*0x20111*/E_HVD_CMD_FREERUN_THRESHOLD, // Arg: (unit: 90KHz) 0: use default 5 sec (90000 x 5). 1447*53ee8cc1Swenshuai.xi /*0x20112*/E_HVD_CMD_FLUSH_FRM_BUF, // Arg: 1 show last decode frame, 0 show current diaplay frame. FW will clear all frame buffer then skip to next I frame. 1448*53ee8cc1Swenshuai.xi /*0x20113*/E_HVD_CMD_FORCE_INTERLACE, // Arg: 0; Diable. Arg: 1; Force interlace only support DTV and TS file mode with framerate 25 or 30 (all resolution, under FHD) 1449*53ee8cc1Swenshuai.xi // Arg: 2; Force interlace support DTV and TS file mode with framerate 25 or 30,but only works on 1080P (width large less 1920) 1450*53ee8cc1Swenshuai.xi // Arg: 3; Force interlace support DTV and TS file mode with framerate 23 to 30 and all resolution. 1451*53ee8cc1Swenshuai.xi // Arg: 4; Force interlace support DTV and TS file mode with under 30 fps and all resolution. 1452*53ee8cc1Swenshuai.xi // Arg: 5; Force interlace support DTV and TS file mode with with framerate 25 or 30 (under FHD and width large less 720) 1453*53ee8cc1Swenshuai.xi // Arg: 6: Force interlace support all mode with under all fps and all resolution. 1454*53ee8cc1Swenshuai.xi /*0x20114*/E_HVD_CMD_DUAL_NON_BLOCK_MODE, // Arg: 0 disable Arg:1 For dual decode case, force switch to another task when current task is idle 1455*53ee8cc1Swenshuai.xi /*0x20115*/E_HVD_CMD_INPUT_PTS_FREERUN_MODE, // Arg: 0 disable. Arg:1, video free run when the difference between input PTS and current STC is large than E_HVD_CMD_FREERUN_THRESHOLD + 1s; 1456*53ee8cc1Swenshuai.xi /*0x20116*/E_HVD_CMD_FREEZE_TO_CHASE, // Arg: 1 enable, 0 disable. Freeze current image when PTS < STC and decode drop / skip frame to sync stc. 1457*53ee8cc1Swenshuai.xi 1458*53ee8cc1Swenshuai.xi // internal control action 1459*53ee8cc1Swenshuai.xi 1460*53ee8cc1Swenshuai.xi // FW settings ( only for driver init) 1461*53ee8cc1Swenshuai.xi E_HVD_CMD_SETTINGS_MASK = (0x0200|E_HVD_CMD_NEW_BASE), 1462*53ee8cc1Swenshuai.xi /*0x20201*/E_HVD_CMD_PITCH, // Arg:any non-zero number. AVCHVD_CMD_PITCH_1952, AVCHVD_CMD_PITCH_1984 1463*53ee8cc1Swenshuai.xi /*0x20202*/E_HVD_CMD_SYNC_EACH_FRM, // 1: TS file mode: on ; 0: live mode: off AVCHVD_CMD_SYNC 1464*53ee8cc1Swenshuai.xi /*0x20203*/E_HVD_CMD_MAX_DEC_TICK, // 0: off ; not 0 : in fw.h new value AVCHVD_CMD_MAXT 1465*53ee8cc1Swenshuai.xi /*0x20204*/E_HVD_CMD_AUTO_FREE_ES, // 1: on ; 0: off ; for live stream only AVCHVD_CMD_AUTO_FREE 1466*53ee8cc1Swenshuai.xi /*0x20205*/E_HVD_CMD_DIS_VDEAD, // 1: on :For PVR , file mode only ; 0 : off: AVCHVD_CMD_DIS_VDEAD 1467*53ee8cc1Swenshuai.xi /*0x20206*/E_HVD_CMD_MIN_FRAME_GAP, // Arg: 0~n, 0xFFFFFFFF: don't care frame gap; For file mode only; AVCHVD_CMD_MIN_FRAME_GAP 1468*53ee8cc1Swenshuai.xi /*0x20207*/E_HVD_CMD_SYNC_TYPE, // Arg: HVD_Sync_Tbl_Type. //only for file mode. Ts , ts file mode always has PTS table 1469*53ee8cc1Swenshuai.xi /*0x20208*/E_HVD_CMD_TIME_UNIT_TYPE, // Set Time unit: 0: 90Khz, 1: 1ms 1470*53ee8cc1Swenshuai.xi /*0x20209*/E_HVD_CMD_ISR_TYPE, // Add ISR trigger timing. 1471*53ee8cc1Swenshuai.xi /*0x2020A*/E_HVD_CMD_DYNAMIC_SCALE, // 0: disable; 1: enable 1472*53ee8cc1Swenshuai.xi /*0x2020B*/E_HVD_CMD_SCALER_INFO_NOTIFY, 1473*53ee8cc1Swenshuai.xi /*0x2020C*/E_HVD_CMD_MIU_BURST_CNT, // Arg 0~7 burst cnt level , 0xFFFFFFFF = Disable 1474*53ee8cc1Swenshuai.xi /*0x2020D*/E_HVD_CMD_FDMASK_DELAY_CNT, // Arg: 0~0xFF, Fdmask delay count, arg >= 0xFF -> use default. 1475*53ee8cc1Swenshuai.xi /*0x2020E*/E_HVD_CMD_FRC_OUTPUT_FRAMERATE, // unit: vsync cnt 1476*53ee8cc1Swenshuai.xi /*0x2020F*/E_HVD_CMD_FRC_OUTPUT_INTERLACE, // 0: progressive; 1: interlace 1477*53ee8cc1Swenshuai.xi /*0x20210*/E_HVD_CMD_ENABLE_DISP_QUEUE, // 0: Disable; 1:Enable 1478*53ee8cc1Swenshuai.xi /*0x20211*/E_HVD_CMD_FORCE_DTV_SPEC, // 0: Disable; 1:Enable, Force to follow H264 DTV Spec, if res>720p && framerate>50, force progessive 1479*53ee8cc1Swenshuai.xi // 2: Disable, if frame_mbs_only_flag == TRUE, it's progressive. 1480*53ee8cc1Swenshuai.xi /*0x20212*/E_HVD_CMD_SET_USERDATA_MODE, // Arg: HVD_USER_DATA_MODE, use "OR", 0x00: Normal DVB user_data mode; 0x01: ATSC DirectTV CC mode 1481*53ee8cc1Swenshuai.xi // 0x02: FPA CallBack, 0x04: ATSC_CC_RAW mode 1482*53ee8cc1Swenshuai.xi /*0x20213*/E_HVD_CMD_ENABLE_DISP_OUTSIDE, // 0: Disable; 1:Enable 1483*53ee8cc1Swenshuai.xi /*0x20214*/E_HVD_CMD_SUPPORT_AVC_TO_MVC, // Arg: 0: Disable AVC to MVC, 1: Enable AVC to MVC but non-support DS, 2:Enable AVC to MVC and support DS, 1484*53ee8cc1Swenshuai.xi /*0x20215*/E_HVD_CMD_ENABLE_NEW_SLOW_MOTION, // Arg: 0: Disable New Slow Motion, 1: Enable New Slow Motion. 1485*53ee8cc1Swenshuai.xi /*0x20216*/E_HVD_CMD_FORCE_ALIGN_VSIZE, // Arg: 0: Disable and 3D ouput is frame packing mode. 1: Enable VSIZE would be 4 align and Crop Botton would be additional size; 3D output would not be frame packing mode. 1486*53ee8cc1Swenshuai.xi /*0x20217*/E_HVD_CMD_PUSH_DISPQ_WITH_REF_NUM, // Arg: 0: Disable; 1:Enable 1487*53ee8cc1Swenshuai.xi /*0x20218*/E_HVD_CMD_GET_MORE_FRM_BUF, // Arg: 0: Disable; 1:Enable. If buffer size is enough, intial more frame buffer to use. 1488*53ee8cc1Swenshuai.xi /*0x20219*/E_HVD_CMD_RM_ENABLE_PTS_TBL, // Arg, 0:disable, 1:enable. this command is only used by RM, when enable==1, RM will search pts table and return matched u32ID_L 1489*53ee8cc1Swenshuai.xi /*0x2021A*/E_HVD_CMD_DYNAMIC_SCALE_RESV_N_BUFFER, // Arg, 0:disable, 1:enable. use init_dpb_and_frame_buffer_layout_3 to do dynamic layout other than fixed layout 1490*53ee8cc1Swenshuai.xi /*0x2021B*/E_HVD_CMD_DS_RESET_XC_DISP_WIN, // Arg, 0: Disable, 1:enable. When Dynamic scaling enable, report the display information change and re-set XC display window. 1491*53ee8cc1Swenshuai.xi /*0x2021C*/E_HVD_CMD_AVC_SUPPORT_REF_NUM_OVER_MAX_DPB_SIZE, /// Arg, 0: Disable; 1:enable. AVC support reference number is more than maximum DPB size when frame buffer size was enough. 1492*53ee8cc1Swenshuai.xi /*0x2021D*/E_HVD_CMD_FRAMERATE_HANDLING, // Arg 0~60000, 0: Disable, 1000 ~ 60000: Used the arg to set frame rate when the sequence did not have frame rate info. and arg is not zero. (The frame unit is (arg/1000)fps, Exp: 30000 = 30.000 fps), others: Do not thing. 1493*53ee8cc1Swenshuai.xi /*0x2021E*/E_HVD_CMD_AUTO_EXHAUST_ES_MODE, // Arg, 0: disable, [31:16]= Upper bound, [15:0] = Lower bound, Unit is 1KBytes, // Auto drop display to consume ES data as soon as possible when ES level is higher than upper bound 1494*53ee8cc1Swenshuai.xi /*0x2021F*/E_HVD_CMD_RETURN_INVALID_AFD, // Arg, 0: Disable, 1:enable, return 0 when AFD is invalid 1495*53ee8cc1Swenshuai.xi // Arg, 2: Enable, return 0 when AFD is invalid at I frame. (GOP) 1496*53ee8cc1Swenshuai.xi /*0x20220*/E_HVD_CMD_AVC_FORCE_BROKEN_BY_US, // Arg, 0: Disable, 1:enable, force enable broken by us mode, FW does not need it anymore. 1497*53ee8cc1Swenshuai.xi /*0x20221*/E_HVD_CMD_EXTERNAL_DS_BUF, // Arg, 0: Disable, 1:Enable. 1498*53ee8cc1Swenshuai.xi /*0x20222*/E_HVD_CMD_SHOW_FIRST_FRAME_DIRECT, // Arg: 0: Disable; 1:Enable. Push first I frame to display queue directly.. 1499*53ee8cc1Swenshuai.xi /*0x20223*/E_HVD_CMD_AVC_RESIZE_DOS_DISP_PEND_BUF, //Arg: Resize disp pending buffer size for display outside mode(dos), default dos disp pending buf size = 4 1500*53ee8cc1Swenshuai.xi /*0x20224*/E_HVD_CMD_SET_MIN_TSP_DATA_SIZE, //Arg: Resize HVD_FW_AVC_ES_MIN_TSP_DATA_SIZE 1501*53ee8cc1Swenshuai.xi /*0x20225*/E_HVD_CMD_DYNAMIC_SCALE_ENHANCE_SETTINGS, //Arg: 0:None, 1:MHP,... 1502*53ee8cc1Swenshuai.xi /*0x20226*/E_HVD_CMD_ONE_PENDING_BUFFER_MODE, // Arg: 0: Disable; 1:Enable. Use only one pending buffer instead of two. 1503*53ee8cc1Swenshuai.xi /*0x20227*/E_HVD_CMD_ENABLE_EXTERNAL_CC_608_BUF, // Arg: [7:0] =size, [31:8]= start address, unit =1k bytes , Enable: length/address != 0, Disable: length/address == 0 1504*53ee8cc1Swenshuai.xi /*0x20228*/E_HVD_CMD_ENABLE_EXTERNAL_CC_708_BUF, // Arg: [7:0] =size, [31:8]= start address, unit =1k bytes , Enable: length/address != 0, Disable: length/address == 0 1505*53ee8cc1Swenshuai.xi /*0x20229*/E_HVD_CMD_SET_DISP_ERROR_TOLERANCE, // Arg: //[15:8]+[7:0] = (err_tolerance(0%~100%)+enable or disable) 1506*53ee8cc1Swenshuai.xi /*0x2022A*/E_HVD_CMD_SET_PTS_US_MODE, // Arg: //0: Disable; 1:Enable. return micro seconds PTS in PTS mode 1507*53ee8cc1Swenshuai.xi /*0x2022B*/E_HVD_CMD_SET_DV_XC_SHM_ADDR, // Arg, address for dolby vision xc DM/composer shm 1508*53ee8cc1Swenshuai.xi 1509*53ee8cc1Swenshuai.xi // Mode ( for AP run-time) 1510*53ee8cc1Swenshuai.xi E_HVD_CMD_MODE_MASK = (0x0300|E_HVD_CMD_NEW_BASE), 1511*53ee8cc1Swenshuai.xi /*0x20301*/E_HVD_CMD_SKIP_DEC, // E_HVD_DECODE_ALL ;E_HVD_DECODE_I;E_HVD_DECODE_IP; AVCHVD_CMD_DEC_I , AVCHVD_CMD_SKIP_NONREF 1512*53ee8cc1Swenshuai.xi /*0x20302*/E_HVD_CMD_DISP_SPEED, // HVD_Disp_Speed ; AVCHVD_CMD_TRICKY 0,1: normal speed N(>0): show N times, slow motion Nx(-2,-4...) ; N(<0): FF speed Nx(2,4,...) AVCHVD_CMD_2X_SPEED 1513*53ee8cc1Swenshuai.xi /*0x20303*/E_HVD_CMD_DISP_ERR_FRM, // True: display and error frame; FALSE: not show error frame ; AVCHVD_CMD_ERR_TH 1514*53ee8cc1Swenshuai.xi /*0x20304*/E_HVD_CMD_ERR_CONCEAL, // 1: on ; 0: off ; AVCHVD_CMD_PASTE 1515*53ee8cc1Swenshuai.xi /*0x20305*/E_HVD_CMD_REPEAT_LAST_FIELD, // 1: ON ; 0: OFF 1516*53ee8cc1Swenshuai.xi /*0x20306*/E_HVD_CMD_FRC_MODE, // Arg:HVD_FRC_Mode. AVCHVD_CMD_FRAME_CVT 1517*53ee8cc1Swenshuai.xi /*0x20307*/E_HVD_CMD_SYNC_ACTIVE, // Arg: 0: sync off. AVCHVD_CMD_FREE_RUN ; 1: sync on. AVCHVD_CMD_AVSYNC 1518*53ee8cc1Swenshuai.xi /*0x20308*/E_HVD_CMD_PLAYBACK_FINISH, // 1: no more input data, FW need to show frame by itself until all buffers being empty. 0: close this mode. 1519*53ee8cc1Swenshuai.xi /*0x20309*/E_HVD_CMD_BALANCE_BW, // Arg: Byte0: Quarter Pixel Off Level, Byte1: Deblock Off Level >> 0: off, 1~255: count threshold to enter, Byte2: Upper Bound value. i.e.: Byte0: 1,Byte1: 10,Byte2: 20. 1520*53ee8cc1Swenshuai.xi /*0x2030A*/E_HVD_CMD_POWER_SAVING, // Arg: 0: Power Saving Off, 1: Power Saving On 1521*53ee8cc1Swenshuai.xi /*0x2030B*/E_HVD_CMD_DIS_DBF, // Disable deblock, Arg: 0: off, 1: disable all frame, 2: only disable non-ref frame 1522*53ee8cc1Swenshuai.xi /*0x2030C*/E_HVD_CMD_DIS_QUART_PIXEL, // Disable quarter pixel, Arg: 0: off, 1: disable for all frame, 2: only dsiable non-ref frame 1523*53ee8cc1Swenshuai.xi /*0x2030D*/E_HVD_CMD_DPO_CC, // Display Order User Data Command, Arg: 0: off, 1: on. 1524*53ee8cc1Swenshuai.xi /*0x2030E*/E_HVD_CMD_DISP_I_DIRECT, // Display I directly, Arg: 0: off, 1: on 1525*53ee8cc1Swenshuai.xi /*0x2030F*/E_HVD_CMD_FORCE_RESET_HW, // Arg, 0:disable, 1:enable. Force reset hw when frame start 1526*53ee8cc1Swenshuai.xi /*0x20310*/E_HVD_CMD_UPDATE_DISP_THRESHOLD, // Arg, none 1527*53ee8cc1Swenshuai.xi /*0x20311*/E_HVD_CMD_FRC_DROP_MODE, // Arg, E_HVD_FRC_DROP_FRAME (0), E_HVD_FRC_DROP_FIELD (1) 1528*53ee8cc1Swenshuai.xi /*0x20312*/E_HVD_CMD_UPDATE_DISPQ, // Arg, none. Update Frame Status in Display Queue 1529*53ee8cc1Swenshuai.xi /*0x20313*/E_HVD_CMD_SHOW_DECODE_ORDER, // Arg, 0:disable, 1:enable. Show decoder order or display order 1530*53ee8cc1Swenshuai.xi /*0x20314*/E_HVD_CMD_3DLR_VIEW_EXCHANGE, // Arg, 0: off, do not thing. 1: on, exchange the L/R views 1531*53ee8cc1Swenshuai.xi /*0x20315*/E_HVD_CMD_DISP_IGNORE_CROP, // Arg, 0:disable, 1:enable. Ignore crop information when set V-sync to display 1532*53ee8cc1Swenshuai.xi /*0x20316*/E_HVD_CMD_STOP_MVD_PARSER, // Arg, 1:stop mvd parser 1533*53ee8cc1Swenshuai.xi /*0x20317*/E_HVD_CMD_SUSPEND_DYNAMIC_SCALE, // Arg, 0:disable, 1:enable. Suspend dynamic scale and raise interrupt. 1534*53ee8cc1Swenshuai.xi /*0x20318*/E_HVD_CMD_AVOID_PTS_TBL_OVERFLOW, // Arg, 0:disable, 1:enable. for hw tsp mode, mvd parser will stop when pts table is close to overflow and restart when enough pts is consumed. 1535*53ee8cc1Swenshuai.xi /*0x20319*/E_HVD_CMD_IGNORE_PIC_OVERRUN, // Arg, 0:disable, 1:enable. Ignore hw error: PIC overrun error. 1536*53ee8cc1Swenshuai.xi /*0x2031A*/E_HVD_CMD_RVU_SETTING_MODE, // Arg, 0:disable, 1:Drop B frame and force IDR. 1537*53ee8cc1Swenshuai.xi /*0x2031B*/E_HVD_CMD_RELEASE_DISPQ, // Arg, none. Unlock frame status. 1538*53ee8cc1Swenshuai.xi /*0x2031C*/E_HVD_CMD_CTRL_SPEED_IN_DISP_ONLY, // Arg, 0:disable, control in decoding and displaying time; 1:enable, control speed in displaying time only. 1539*53ee8cc1Swenshuai.xi /*0x2031D*/E_HVD_CMD_IGNORE_PIC_STRUCT_DISPLAY, // Arg, 0:disable, 1:Ignore Pic_struct when display progressive frame. 1540*53ee8cc1Swenshuai.xi /*0x2031E*/E_HVD_CMD_ERR_CONCEAL_SLICE_1ST_MB, // Arg, 0:disable, Error concealment from current/last MB position; 1:enale, Error concealment from current slice first MB.(Need enable E_HVD_CMD_ERR_CONCEAL) 1541*53ee8cc1Swenshuai.xi /*0x2031F*/E_HVD_CMD_AUTO_DROP_ES_DATA, // Arg, 0:disable, [31:16]= Upper bound, [15:0] = Lower bound; Unit is 1%~100%: Drop ES data when ES buffer threshold more than 1%~100%. 1542*53ee8cc1Swenshuai.xi /*0x20320*/E_HVD_CMD_AUTO_DROP_DISP_QUEUE, // Arg, 0:disable, N = 1~16: Drop display queue when display queue above than N frames. It only support Display Queue mode. (bEnableDispQueue = TRUE) 1543*53ee8cc1Swenshuai.xi /*0x20321*/E_HVD_CMD_USE_CPB_REMOVAL_DEALY, // Arg, 0:disable, 1:enable. Use Cpb_Removal_Delay of Picture timing SEI to control PTS. 1544*53ee8cc1Swenshuai.xi /*0x20322*/E_HVD_CMD_SKIP_N_FRAME, // Arg, 0:disable, N = 1~63. Skip N frame. 1545*53ee8cc1Swenshuai.xi /*0x20323*/E_HVD_CMD_PVR_SEAMLESS_TIMESHIFT, // Arg, 0:disable, 1:pause decode, 2:reset hw and wait for playback with target data, 3:seek_to_I after play 1546*53ee8cc1Swenshuai.xi /*0x20324*/E_HVD_CMD_STOP_PARSER_BY_PTS_TABLE_LEVEL, // Arg, 0:disable, [31:16]= Upper bound, [15:0] = Lower bound; Stop parser when PTS table size is more than upper bound. Resume parser when PTS table size is less than low bound. 1547*53ee8cc1Swenshuai.xi /*0x20325*/E_HVD_CMD_INC_DISPQ_NUM, // Arg, none. Increase DispQ Num (SW detile case) 1548*53ee8cc1Swenshuai.xi /*0x20326*/E_HVD_CMD_THUMBNAIL_MODE, // Arg, 0:disable, 1:enable. Use small frame buffer to decode thumbnail 1549*53ee8cc1Swenshuai.xi /*0x20327*/E_HVD_CMD_CMA_FRMBUFF_ALLOCATE_STATUS, 1550*53ee8cc1Swenshuai.xi /*0x20328*/E_HVD_CMD_CMA_FRMBUFF_RELEASE_STATUS, 1551*53ee8cc1Swenshuai.xi /*0x20329*/E_HVD_CMD_FRC_ONLY_SHOW_TOP_FIELD, // Arg, 0:disable, 1:enable. only show top filed for FRC mode 1552*53ee8cc1Swenshuai.xi /*0x2032A*/E_HVD_CMD_DIRECT_STC_MODE, // Arg, 0:disable, 1:enable. vdec fw use g_shm->u32DirectStcInMs as stc 1553*53ee8cc1Swenshuai.xi /*0x2032B*/E_HVD_CMD_DROP_ONLY_FIELD_FRAME, // Arg, 0:disable, 1:enable. Drop only field frame when insert to display queue and enable drop error frame. 1554*53ee8cc1Swenshuai.xi /*0x2032C*/E_HVD_CMD_SET_ENABLE_HDR, // Arg, 0:disable, 1:enable. Suspend HDR decode/transfer HDR data. 1555*53ee8cc1Swenshuai.xi /*0x2032D*/E_HVD_CMD_DYNAMIC_CONNECT_DISP_PATH, // Arg, bit[0]: connect/disconnect, bit[4:1]: display path, [31:5]: reserved. 1556*53ee8cc1Swenshuai.xi /*0x2032E*/E_HVD_CMD_AVSYNC_DISP_AUTO_DROP, // Arg, 0:disable, 1:enable. 1557*53ee8cc1Swenshuai.xi /*0x2032F*/E_HVD_CMD_SET_SLOW_SYNC, // Arg, bits[31:16]: reserved, bits[15:8]: slow repeat frequency (0: disable slow repeat), bits[7:0]: slow drop frequency (0: disable slow drop). 1558*53ee8cc1Swenshuai.xi /*0x20330*/E_HVD_CMD_ENABLE_QOS_INFO, // Arg, 0:disable, 1:enable. report qos info 1559*53ee8cc1Swenshuai.xi /*0x20331*/E_HVD_CMD_SCALE_BWA_FREQUENCY, // Arg, 0:bwa gear down, 1:bwa gear up 1560*53ee8cc1Swenshuai.xi 1561*53ee8cc1Swenshuai.xi // test cmd 1562*53ee8cc1Swenshuai.xi E_HVD_CMD_TEST_MASK = (0x0400|E_HVD_CMD_NEW_BASE), 1563*53ee8cc1Swenshuai.xi /*0x20401*/E_HVD_CMD_INIT_STREAM, // Initialize this stream 1564*53ee8cc1Swenshuai.xi /*0x20402*/E_HVD_CMD_RELEASE_STREAM, // Release this stream 1565*53ee8cc1Swenshuai.xi 1566*53ee8cc1Swenshuai.xi // HVD new cmd Max 1567*53ee8cc1Swenshuai.xi E_HVD_CMD_NEW_MAX = (0xFFFF|E_HVD_CMD_NEW_BASE), 1568*53ee8cc1Swenshuai.xi 1569*53ee8cc1Swenshuai.xi 1570*53ee8cc1Swenshuai.xi // Dual Stream Command 1571*53ee8cc1Swenshuai.xi E_DUAL_CMD_BASE = 0x00030000, // pass the DRAM offset from argument 1572*53ee8cc1Swenshuai.xi 1573*53ee8cc1Swenshuai.xi E_DUAL_CMD_MODE_MASK = (0x0100|E_DUAL_CMD_BASE), 1574*53ee8cc1Swenshuai.xi /*0x30101*/E_DUAL_CMD_TASK0_HVD_TSP, 1575*53ee8cc1Swenshuai.xi /*0x30102*/E_DUAL_CMD_TASK0_HVD_BBU, 1576*53ee8cc1Swenshuai.xi /*0x30103*/E_DUAL_CMD_TASK0_MVD_TSP, 1577*53ee8cc1Swenshuai.xi /*0x30104*/E_DUAL_CMD_TASK0_MVD_SLQ, 1578*53ee8cc1Swenshuai.xi 1579*53ee8cc1Swenshuai.xi /*0x30105*/E_DUAL_CMD_TASK1_HVD_TSP, 1580*53ee8cc1Swenshuai.xi /*0x30106*/E_DUAL_CMD_TASK1_HVD_BBU, 1581*53ee8cc1Swenshuai.xi /*0x30107*/E_DUAL_CMD_TASK1_MVD_TSP, 1582*53ee8cc1Swenshuai.xi /*0x30108*/E_DUAL_CMD_TASK1_MVD_SLQ, 1583*53ee8cc1Swenshuai.xi 1584*53ee8cc1Swenshuai.xi /*0x30109*/E_DUAL_CMD_SINGLE_TASK, //argument: 0:multi(default) 1:single // first cmd 1585*53ee8cc1Swenshuai.xi 1586*53ee8cc1Swenshuai.xi /*0x3010A*/E_DUAL_CMD_MODE, //argument: 0:normal(default) 1:3D wmv 2:Korea 3D 3:Korea 3D Progressive 4:sub view sync main STC 1587*53ee8cc1Swenshuai.xi // 5:switch target STC , main view sync sub stc and sub view sync main stc //first cmd 1588*53ee8cc1Swenshuai.xi 1589*53ee8cc1Swenshuai.xi /*0x3010B*/E_DUAL_BURST_MODE, //argument: 0:normal(default) 1:burst command to controller(lots of cmd) 1590*53ee8cc1Swenshuai.xi 1591*53ee8cc1Swenshuai.xi /*0x3010C*/E_DUAL_VERSION, //argument: 0:controller 1:mvd fw 2:hvd fw 3:mvd interface 4:hvd interface 1592*53ee8cc1Swenshuai.xi /*0x3010D*/E_DUAL_R2_CMD_EXIT, //for WIN32 testing and let R2 FW return directly. 1593*53ee8cc1Swenshuai.xi /*0x3010E*/E_DUAL_R2_CMD_FBADDR, //frame buffer address 1594*53ee8cc1Swenshuai.xi /*0x3010F*/E_DUAL_R2_CMD_FBSIZE, //frame buffer size 1595*53ee8cc1Swenshuai.xi /*0x30110*/E_DUAL_R2_CMD_FB2ADDR, //frame buffer2 address 1596*53ee8cc1Swenshuai.xi /*0x30111*/E_DUAL_R2_CMD_FB2SIZE, //frame buffer2 size 1597*53ee8cc1Swenshuai.xi /*0x30112*/E_DUAL_CMD_COMMON, //argument: 0:dymanic fb management 1598*53ee8cc1Swenshuai.xi /*0x30113*/E_DUAL_CMD_STC_MODE, //set STC index 1599*53ee8cc1Swenshuai.xi E_DUAL_CMD_CTL_MASK = (0x0200|E_DUAL_CMD_BASE), // argument is the id : 0 or 1 1600*53ee8cc1Swenshuai.xi /*0x30201*/E_DUAL_CMD_DEL_TASK, 1601*53ee8cc1Swenshuai.xi 1602*53ee8cc1Swenshuai.xi // Dual Stream cmd Max 1603*53ee8cc1Swenshuai.xi E_DUAL_CMD_MAX = (0xFFFF|E_DUAL_CMD_BASE), 1604*53ee8cc1Swenshuai.xi 1605*53ee8cc1Swenshuai.xi // N Stream Command 1606*53ee8cc1Swenshuai.xi E_NST_CMD_BASE = 0x00040000, // pass the DRAM offset from argument 1607*53ee8cc1Swenshuai.xi 1608*53ee8cc1Swenshuai.xi E_NST_CMD_MODE_MASK = (0x0100|E_NST_CMD_BASE), 1609*53ee8cc1Swenshuai.xi #ifdef VDEC3 1610*53ee8cc1Swenshuai.xi /*0x40101*/E_NST_CMD_TASK_HVD_TSP, 1611*53ee8cc1Swenshuai.xi /*0x40102*/E_NST_CMD_TASK_HVD_BBU, 1612*53ee8cc1Swenshuai.xi /*0x40103*/E_NST_CMD_TASK_MVD_TSP, 1613*53ee8cc1Swenshuai.xi /*0x40104*/E_NST_CMD_TASK_MVD_SLQ, 1614*53ee8cc1Swenshuai.xi #endif 1615*53ee8cc1Swenshuai.xi 1616*53ee8cc1Swenshuai.xi E_NST_CMD_CTL_MASK = (0x0200|E_NST_CMD_BASE), // argument is the id : 0 ,1 or 2 1617*53ee8cc1Swenshuai.xi /*0x40201*/E_NST_CMD_DEL_TASK, 1618*53ee8cc1Swenshuai.xi 1619*53ee8cc1Swenshuai.xi E_NST_CMD_COMMON_MASK = (0x0300|E_NST_CMD_BASE), 1620*53ee8cc1Swenshuai.xi /*0x40301*/E_NST_CMD_COMMON_CMD1, 1621*53ee8cc1Swenshuai.xi /*0x40302*/E_NST_CMD_COMMON_CMD2, 1622*53ee8cc1Swenshuai.xi 1623*53ee8cc1Swenshuai.xi // N Stream cmd Max 1624*53ee8cc1Swenshuai.xi E_NST_CMD_MAX = (0xFFFF|E_NST_CMD_BASE), 1625*53ee8cc1Swenshuai.xi 1626*53ee8cc1Swenshuai.xi // CMD MASK 1627*53ee8cc1Swenshuai.xi E_CMD_MASK = 0x00FFFFFF, 1628*53ee8cc1Swenshuai.xi 1629*53ee8cc1Swenshuai.xi // TASK ID MASK 1630*53ee8cc1Swenshuai.xi E_ID_CMD_MASK = 0xFF000000, 1631*53ee8cc1Swenshuai.xi 1632*53ee8cc1Swenshuai.xi } HVD_User_Cmd; 1633*53ee8cc1Swenshuai.xi 1634*53ee8cc1Swenshuai.xi // Command 1635*53ee8cc1Swenshuai.xi typedef enum 1636*53ee8cc1Swenshuai.xi { 1637*53ee8cc1Swenshuai.xi // Invalid cmd 1638*53ee8cc1Swenshuai.xi E_JPD_CMD_INVALID = 0xffffffffUL, 1639*53ee8cc1Swenshuai.xi 1640*53ee8cc1Swenshuai.xi E_JPD_CMD_GO = 0x00, // Start to show 1641*53ee8cc1Swenshuai.xi E_JPD_CMD_SET_FRAME_BUFF_START_ADDR = 0x01, // Set frame buffer address 1642*53ee8cc1Swenshuai.xi E_JPD_CMD_SET_FRAME_BUFF_UNIT_SIZE = 0x02, // Set frame buffer size 1643*53ee8cc1Swenshuai.xi E_JPD_CMD_SET_FRAME_BUFF_TOTAL_NUM = 0x03, // Set total number of frame buffer 1644*53ee8cc1Swenshuai.xi E_JPD_CMD_SET_FRAME_BUFF_IDX = 0x04, // Set frame buffer index 1645*53ee8cc1Swenshuai.xi E_JPD_CMD_SET_FRAME_BUFF_IDX_READY = 0x05, // Set frame buffer index ready for display 1646*53ee8cc1Swenshuai.xi E_JPD_CMD_SET_WIDTH = 0x06, // Set frame width 1647*53ee8cc1Swenshuai.xi E_JPD_CMD_SET_HEIGHT = 0x07, // Set frame height 1648*53ee8cc1Swenshuai.xi E_JPD_CMD_SET_PITCH = 0x08, // Set pitch 1649*53ee8cc1Swenshuai.xi E_JPD_CMD_SET_FRAME_ID_L = 0x09, // Set frame ID_L 1650*53ee8cc1Swenshuai.xi E_JPD_CMD_SET_FRAME_ID_H = 0x0A, // Set frame ID_H 1651*53ee8cc1Swenshuai.xi E_JPD_CMD_SET_TIMESTAMP = 0x0B, // Set Time Stamp 1652*53ee8cc1Swenshuai.xi E_JPD_CMD_SET_FRAMERATE = 0x0C, // Set FrameRate 1653*53ee8cc1Swenshuai.xi E_JPD_CMD_SET_FRAMERATE_BASE = 0x0D, // Set FrameRate Base 1654*53ee8cc1Swenshuai.xi E_JPD_CMD_SET_FRAME_BUFF_IDX_VALID = 0x0E, // Set frame buffer index available 1655*53ee8cc1Swenshuai.xi E_JPD_CMD_SET_CHIP_ID = 0x0F, // Set Chip ID 1656*53ee8cc1Swenshuai.xi 1657*53ee8cc1Swenshuai.xi E_JPD_CMD_PLAY = 0x20, // Play 1658*53ee8cc1Swenshuai.xi E_JPD_CMD_PAUSE = 0x21, // Pause 1659*53ee8cc1Swenshuai.xi E_JPD_CMD_RESUME = 0x22, // Resume 1660*53ee8cc1Swenshuai.xi E_JPD_CMD_STEP_PLAY = 0x23, // Step play 1661*53ee8cc1Swenshuai.xi E_JPD_CMD_SET_SPEED_TYPE = 0x24, // Set play speed type: default, fast, slow 1662*53ee8cc1Swenshuai.xi E_JPD_CMD_SET_SPEED = 0x25, // Set play speed 1663*53ee8cc1Swenshuai.xi E_JPD_CMD_FLUSH_DISP_QUEUE = 0X26, // Flush display queue 1664*53ee8cc1Swenshuai.xi E_JPD_CMD_FREEZE_DISP = 0x27, // Freeze display 1665*53ee8cc1Swenshuai.xi E_JPD_CMD_ENABLE_AVSYNC = 0x28, // Enable AV Sync 1666*53ee8cc1Swenshuai.xi E_JPD_CMD_SET_AVSYNC_DELAY = 0x29, // Set AV sync delay 1667*53ee8cc1Swenshuai.xi E_JPD_CMD_SET_AVSYNC_TOLERENCE = 0x2A, // Set AV sync tolerence 1668*53ee8cc1Swenshuai.xi E_JPD_CMD_SET_PTS_BASE = 0x2B, // Set PTS base 1669*53ee8cc1Swenshuai.xi E_JPD_CMD_SET_STC_BASE = 0x2C, // Set STC base 1670*53ee8cc1Swenshuai.xi E_JPD_CMD_SET_BLUE_SCREEN = 0x2D, // Set Blue Screen 1671*53ee8cc1Swenshuai.xi E_JPD_CMD_PUSH_QUEUE_PARA_SETTING = 0x2E, 1672*53ee8cc1Swenshuai.xi E_JPD_CMD_SET_DISPLAY_OUTSIDE_MODE = 0x2F, 1673*53ee8cc1Swenshuai.xi 1674*53ee8cc1Swenshuai.xi E_JPD_CMD_GET_NEXT_FREE_FRAME_BUFF_IDX = 0x40, // Get next free frame buffer index 1675*53ee8cc1Swenshuai.xi E_JPD_CMD_COMPENSATE_PTS = 0x41, // Ask firmware to compensate PTS 1676*53ee8cc1Swenshuai.xi 1677*53ee8cc1Swenshuai.xi 1678*53ee8cc1Swenshuai.xi #ifdef VDEC3 1679*53ee8cc1Swenshuai.xi E_JPD_CMD_GET_FRAME_BUFFER = 0x50, // Ask firmware to get frame buffer 1680*53ee8cc1Swenshuai.xi E_JPD_CMD_FREE_FRAME_BUFFER = 0x51, // Ask firmware to free frame buffer 1681*53ee8cc1Swenshuai.xi #endif 1682*53ee8cc1Swenshuai.xi E_JPD_CMD_DYNAMIC_CONNECT_DISP_PATH = 0x61, // Arg, bit[0]: connect/disconnect, bit[4:1]: display path, [31:5]: reserved. 1683*53ee8cc1Swenshuai.xi 1684*53ee8cc1Swenshuai.xi // Display Command Queue 1685*53ee8cc1Swenshuai.xi E_JPD_CMD_ENABLE_DISP_CMD_QUEUE = 0x80, // Enable Display Command Queue 1686*53ee8cc1Swenshuai.xi E_JPD_CMD_PUSH_DISP_CMD = 0x81, // Push Display Command 1687*53ee8cc1Swenshuai.xi E_JPD_CMD_GET_DISP_CMD_Q_VACANCY = 0x82, // Check if the display command queue full or not 1688*53ee8cc1Swenshuai.xi 1689*53ee8cc1Swenshuai.xi E_JPD_CMD_IS_STEP_PLAY_DONE = 0xFF, // 1690*53ee8cc1Swenshuai.xi E_JPD_CMD_IS_DISP_FINISH = 0xFE, // 1691*53ee8cc1Swenshuai.xi E_JPD_CMD_IS_PLAYING = 0xFC, // 1692*53ee8cc1Swenshuai.xi E_JPD_CMD_IS_DISPLAY_QUEUE_FULL = 0xFB, // 1693*53ee8cc1Swenshuai.xi E_JPD_CMD_IS_AVSYNC_ON = 0xFA, // 1694*53ee8cc1Swenshuai.xi E_JPD_CMD_IS_REACH_AVSYNC = 0xF9, // 1695*53ee8cc1Swenshuai.xi E_JPD_CMD_IS_FLUSH_DONE = 0xF8, // Check if flush done 1696*53ee8cc1Swenshuai.xi 1697*53ee8cc1Swenshuai.xi } JPD_User_Cmd; 1698*53ee8cc1Swenshuai.xi 1699*53ee8cc1Swenshuai.xi // Firmware State 1700*53ee8cc1Swenshuai.xi typedef enum 1701*53ee8cc1Swenshuai.xi { 1702*53ee8cc1Swenshuai.xi E_JPD_FW_STATE_MASK = 0xF000, 1703*53ee8cc1Swenshuai.xi } JPD_FW_State; 1704*53ee8cc1Swenshuai.xi 1705*53ee8cc1Swenshuai.xi // Error Code 1706*53ee8cc1Swenshuai.xi typedef enum 1707*53ee8cc1Swenshuai.xi { 1708*53ee8cc1Swenshuai.xi // Error code base 1709*53ee8cc1Swenshuai.xi E_JPD_ERR_BASE= 0x01000000, 1710*53ee8cc1Swenshuai.xi } JPD_Err_Code; 1711*53ee8cc1Swenshuai.xi 1712*53ee8cc1Swenshuai.xi typedef enum 1713*53ee8cc1Swenshuai.xi { 1714*53ee8cc1Swenshuai.xi E_HVD_FW_STATE_MASK = 0xF000, 1715*53ee8cc1Swenshuai.xi 1716*53ee8cc1Swenshuai.xi // state: INIT 1717*53ee8cc1Swenshuai.xi E_HVD_FW_INIT = 0x1000, 1718*53ee8cc1Swenshuai.xi E_HVD_FW_INIT_START, 1719*53ee8cc1Swenshuai.xi E_HVD_FW_INIT_DONE, 1720*53ee8cc1Swenshuai.xi 1721*53ee8cc1Swenshuai.xi // state: PLAY 1722*53ee8cc1Swenshuai.xi E_HVD_FW_PLAY = 0x2000, 1723*53ee8cc1Swenshuai.xi E_HVD_FW_PLAY_TYPE_MASK = 0x0C00, 1724*53ee8cc1Swenshuai.xi 1725*53ee8cc1Swenshuai.xi // AVC 1726*53ee8cc1Swenshuai.xi E_HVD_FW_PLAY_AVC = (0x0000|E_HVD_FW_PLAY), 1727*53ee8cc1Swenshuai.xi E_HVD_FW_AVC_READ_NAL, 1728*53ee8cc1Swenshuai.xi E_HVD_FW_AVC_READ_NEW_SLICE, 1729*53ee8cc1Swenshuai.xi E_HVD_FW_AVC_PREPARE_SLICE_HEADER, 1730*53ee8cc1Swenshuai.xi E_HVD_FW_AVC_DECODE_ONE_SLICE, 1731*53ee8cc1Swenshuai.xi E_HVD_FW_AVC_EXIT_PICTURE, 1732*53ee8cc1Swenshuai.xi 1733*53ee8cc1Swenshuai.xi // AVS 1734*53ee8cc1Swenshuai.xi E_HVD_FW_PLAY_AVS = (0x0400|E_HVD_FW_PLAY), 1735*53ee8cc1Swenshuai.xi 1736*53ee8cc1Swenshuai.xi // RM 1737*53ee8cc1Swenshuai.xi E_HVD_FW_PLAY_RM = (0x0800|E_HVD_FW_PLAY), 1738*53ee8cc1Swenshuai.xi 1739*53ee8cc1Swenshuai.xi // state: PAUSE 1740*53ee8cc1Swenshuai.xi E_HVD_FW_PAUSE = 0x3000, 1741*53ee8cc1Swenshuai.xi 1742*53ee8cc1Swenshuai.xi // state: STOP 1743*53ee8cc1Swenshuai.xi E_HVD_FW_STOP = 0x4000, 1744*53ee8cc1Swenshuai.xi E_HVD_FW_STOP_START, 1745*53ee8cc1Swenshuai.xi E_HVD_FW_STOP_DONE, 1746*53ee8cc1Swenshuai.xi } HVD_FW_State; 1747*53ee8cc1Swenshuai.xi 1748*53ee8cc1Swenshuai.xi 1749*53ee8cc1Swenshuai.xi typedef enum 1750*53ee8cc1Swenshuai.xi { 1751*53ee8cc1Swenshuai.xi // Error code base 1752*53ee8cc1Swenshuai.xi E_HVD_ERR_BASE = 0x0000, 1753*53ee8cc1Swenshuai.xi 1754*53ee8cc1Swenshuai.xi // General 1755*53ee8cc1Swenshuai.xi E_HVD_ERR_GENERAL_BASE = (0x0000|E_HVD_ERR_BASE), 1756*53ee8cc1Swenshuai.xi E_HVD_ERR_OUT_OF_SPEC, 1757*53ee8cc1Swenshuai.xi E_HVD_ERR_UNKNOW_ERR, 1758*53ee8cc1Swenshuai.xi E_HVD_ERR_HW_BREAK_DOWN, 1759*53ee8cc1Swenshuai.xi // TIMEOUT 1760*53ee8cc1Swenshuai.xi E_HVD_ERR_HW_DEC_TIMEOUT, 1761*53ee8cc1Swenshuai.xi // NOT SUPPORT 1762*53ee8cc1Swenshuai.xi E_HVD_ERR_OUT_OF_MEMORY, // required memory size is over frame buffer size. 1763*53ee8cc1Swenshuai.xi E_HVD_ERR_UNKNOWN_CODEC, // unknown media codec 1764*53ee8cc1Swenshuai.xi E_HVD_ERR_CMA_FAILED, 1765*53ee8cc1Swenshuai.xi E_HVD_ERR_RES_NOT_SUPPORT, // out of supported resolution 1766*53ee8cc1Swenshuai.xi 1767*53ee8cc1Swenshuai.xi // AVC 1768*53ee8cc1Swenshuai.xi E_HVD_ERR_AVC_BASE = (0x1000|E_HVD_ERR_BASE), 1769*53ee8cc1Swenshuai.xi // decode error 1770*53ee8cc1Swenshuai.xi E_HVD_ERR_AVC_SPS_BROKEN, // SPS is not valid 1771*53ee8cc1Swenshuai.xi E_HVD_ERR_AVC_SPS_NOT_IN_SPEC, 1772*53ee8cc1Swenshuai.xi E_HVD_ERR_AVC_SPS_NOT_ENOUGH_FRM, // DPB size at specified level is smaller than the specified number of reference frames. This is not allowed 1773*53ee8cc1Swenshuai.xi E_HVD_ERR_AVC_PPS_BROKEN, // PPS is not valid 1774*53ee8cc1Swenshuai.xi E_HVD_ERR_AVC_REF_LIST, 1775*53ee8cc1Swenshuai.xi E_HVD_ERR_AVC_NO_REF, 1776*53ee8cc1Swenshuai.xi E_HVD_ERR_AVC_RES, // out of supported resolution 1777*53ee8cc1Swenshuai.xi 1778*53ee8cc1Swenshuai.xi // AVS 1779*53ee8cc1Swenshuai.xi E_HVD_ERR_AVS_BASE = (0x2000|E_HVD_ERR_BASE), 1780*53ee8cc1Swenshuai.xi E_HVD_ERR_AVS_RES, // out of supported resolution 1781*53ee8cc1Swenshuai.xi 1782*53ee8cc1Swenshuai.xi // RM 1783*53ee8cc1Swenshuai.xi E_HVD_ERR_RM_BASE = (0x3000|E_HVD_ERR_BASE), 1784*53ee8cc1Swenshuai.xi E_HVD_ERR_RM_PACKET_HEADER, 1785*53ee8cc1Swenshuai.xi E_HVD_ERR_RM_FRAME_HEADER, 1786*53ee8cc1Swenshuai.xi E_HVD_ERR_RM_SLICE_HEADER, 1787*53ee8cc1Swenshuai.xi E_HVD_ERR_RM_BYTE_CNT, 1788*53ee8cc1Swenshuai.xi E_HVD_ERR_RM_DISP_TIMEOUT, 1789*53ee8cc1Swenshuai.xi E_HVD_ERR_RM_NO_REF, 1790*53ee8cc1Swenshuai.xi E_HVD_ERR_RM_RES, // out of supported resolution 1791*53ee8cc1Swenshuai.xi E_HVD_ERR_RM_VLC, 1792*53ee8cc1Swenshuai.xi E_HVD_ERR_RM_SIZE_OUT_FB_LAYOUT, 1793*53ee8cc1Swenshuai.xi 1794*53ee8cc1Swenshuai.xi // VP8 1795*53ee8cc1Swenshuai.xi E_HVD_ERR_VP8_BASE = (0x4000|E_HVD_ERR_BASE), 1796*53ee8cc1Swenshuai.xi E_HVD_ERR_VP8_RES, // out of supported resolution 1797*53ee8cc1Swenshuai.xi 1798*53ee8cc1Swenshuai.xi // HEVC 1799*53ee8cc1Swenshuai.xi E_HVD_ERR_HEVC_BASE = (0x5000|E_HVD_ERR_BASE), 1800*53ee8cc1Swenshuai.xi E_HVD_ERR_HEVC_RES, // out of supported resolution 1801*53ee8cc1Swenshuai.xi 1802*53ee8cc1Swenshuai.xi // VP9 1803*53ee8cc1Swenshuai.xi E_HVD_ERR_VP9_BASE = (0x6000|E_HVD_ERR_BASE), 1804*53ee8cc1Swenshuai.xi E_HVD_ERR_VP9_RES, // out of supported resolution 1805*53ee8cc1Swenshuai.xi 1806*53ee8cc1Swenshuai.xi // Display 1807*53ee8cc1Swenshuai.xi E_HVD_ERR_DISPLAY_BASE = (0x7000|E_HVD_ERR_BASE), 1808*53ee8cc1Swenshuai.xi E_HVD_ERR_DISLPAY_MVOP_WITHOUT_MFDEC, // [K6] MVOP and corresponding MFDEC share sram. 1809*53ee8cc1Swenshuai.xi // MVOP cannot function if corresponding MFDEC is being used by DIP. 1810*53ee8cc1Swenshuai.xi } HVD_Err_Code; 1811*53ee8cc1Swenshuai.xi 1812*53ee8cc1Swenshuai.xi typedef enum 1813*53ee8cc1Swenshuai.xi { 1814*53ee8cc1Swenshuai.xi E_HVD_ES_BUF_STATUS_UNKNOWN = 0, 1815*53ee8cc1Swenshuai.xi E_HVD_ES_BUF_STATUS_UNDERFLOW = 1, 1816*53ee8cc1Swenshuai.xi E_HVD_ES_BUF_STATUS_OVERFLOW = 2, 1817*53ee8cc1Swenshuai.xi E_HVD_ES_BUF_STATUS_NORMAL = 3, 1818*53ee8cc1Swenshuai.xi 1819*53ee8cc1Swenshuai.xi }HVD_ES_Buf_Status; 1820*53ee8cc1Swenshuai.xi 1821*53ee8cc1Swenshuai.xi typedef enum { 1822*53ee8cc1Swenshuai.xi E_PVR_SEAMLESS_TIMESHIFT_NONE = 0, 1823*53ee8cc1Swenshuai.xi E_PVR_SEAMLESS_TIMESHIFT_PAUSE_DECODE, // initialize timeshift record, pause decode and set target POC/pts 1824*53ee8cc1Swenshuai.xi E_PVR_SEAMLESS_TIMESHIFT_RESET_AND_FINE_TARGET, // resume and try to find picture with target POC/pts, drop before we find it 1825*53ee8cc1Swenshuai.xi E_PVR_SEAMLESS_TIMESHIFT_SEEK_TO_I // stop finding target, decode from next I 1826*53ee8cc1Swenshuai.xi } HVD_Seamless_Mode; 1827*53ee8cc1Swenshuai.xi 1828*53ee8cc1Swenshuai.xi typedef enum 1829*53ee8cc1Swenshuai.xi { 1830*53ee8cc1Swenshuai.xi E_HVD_FREEZE_AT_CUR_PIC = 1, 1831*53ee8cc1Swenshuai.xi E_HVD_FREEZE_AT_LAST_PIC = 2, 1832*53ee8cc1Swenshuai.xi E_HVD_FREEZE_AT_CUR_PIC_AND_CLEAR_DECODE_INFO = 3, 1833*53ee8cc1Swenshuai.xi }HVD_Flush_Mode; 1834*53ee8cc1Swenshuai.xi 1835*53ee8cc1Swenshuai.xi typedef enum 1836*53ee8cc1Swenshuai.xi { 1837*53ee8cc1Swenshuai.xi E_HVD_SEAMLESS_PAUSE_DECODE = BIT(0), 1838*53ee8cc1Swenshuai.xi E_HVD_SEAMLESS_DISPLAY_REPEATING = BIT(1), 1839*53ee8cc1Swenshuai.xi E_HVD_SEAMLESS_RESET_HW_DONE = BIT(2), 1840*53ee8cc1Swenshuai.xi E_HVD_SEAMLESS_TARGET_FRM_FOUND = BIT(3), 1841*53ee8cc1Swenshuai.xi E_HVD_SEAMLESS_DISPLAY_RESUME = BIT(4), 1842*53ee8cc1Swenshuai.xi }HVD_Seamless_Status; 1843*53ee8cc1Swenshuai.xi 1844*53ee8cc1Swenshuai.xi typedef enum 1845*53ee8cc1Swenshuai.xi { 1846*53ee8cc1Swenshuai.xi E_HVD_POST_PROC_NONE = 0, 1847*53ee8cc1Swenshuai.xi E_HVD_POST_PROC_DETILE = BIT(0), 1848*53ee8cc1Swenshuai.xi } HVD_Post_Process; 1849*53ee8cc1Swenshuai.xi 1850*53ee8cc1Swenshuai.xi typedef enum 1851*53ee8cc1Swenshuai.xi { 1852*53ee8cc1Swenshuai.xi E_HVD_CHIP_U01 = 0, 1853*53ee8cc1Swenshuai.xi E_HVD_CHIP_U02 = 1, 1854*53ee8cc1Swenshuai.xi } HVD_CHIP_ECO_NUM; 1855*53ee8cc1Swenshuai.xi 1856*53ee8cc1Swenshuai.xi typedef enum 1857*53ee8cc1Swenshuai.xi { 1858*53ee8cc1Swenshuai.xi // unknown sequence change info 1859*53ee8cc1Swenshuai.xi VDEC_SEQ_CHANGE_NONE = 0x00, 1860*53ee8cc1Swenshuai.xi // sequence chagne first time 1861*53ee8cc1Swenshuai.xi VDEC_SEQ_CHANGE_FIRST_TIME = BIT(0), 1862*53ee8cc1Swenshuai.xi // sequence chagne due to resolution 1863*53ee8cc1Swenshuai.xi VDEC_SEQ_CHANGE_RESOLUTION = BIT(1), 1864*53ee8cc1Swenshuai.xi // sequence chagne due to picture type 1865*53ee8cc1Swenshuai.xi VDEC_SEQ_CHANGE_PICTURE_TYPE = BIT(2), 1866*53ee8cc1Swenshuai.xi // sequence chagne due to aspect ratio 1867*53ee8cc1Swenshuai.xi VDEC_SEQ_CHANGE_ASPECT_RATIO = BIT(3), 1868*53ee8cc1Swenshuai.xi // sequence chagne due to frame rate 1869*53ee8cc1Swenshuai.xi VDEC_SEQ_CHANGE_FRAME_RATE = BIT(4), 1870*53ee8cc1Swenshuai.xi // sequence chagne due to HDR info 1871*53ee8cc1Swenshuai.xi VDEC_SEQ_CHANGE_HDR_INFO = BIT(5), 1872*53ee8cc1Swenshuai.xi } VDEC_SeqChangeInfo; 1873*53ee8cc1Swenshuai.xi 1874*53ee8cc1Swenshuai.xi typedef enum 1875*53ee8cc1Swenshuai.xi { 1876*53ee8cc1Swenshuai.xi // Not support profile 1877*53ee8cc1Swenshuai.xi E_HVD_NOT_SUPPORT_PROFILE = BIT(0), 1878*53ee8cc1Swenshuai.xi // Not support SPS ID 1879*53ee8cc1Swenshuai.xi E_HVD_NOT_SUPPORT_SPS_ID = BIT(1), 1880*53ee8cc1Swenshuai.xi // Not support chroma format 1881*53ee8cc1Swenshuai.xi E_HVD_NOT_SUPPORT_CHROMA_FORMAT = BIT(2), 1882*53ee8cc1Swenshuai.xi // Mot support max frame number 1883*53ee8cc1Swenshuai.xi E_HVD_NOT_SUPPORT_MAX_FRAME_NUM = BIT(3), 1884*53ee8cc1Swenshuai.xi } HVD_NOT_SUPPORT_INFO; 1885*53ee8cc1Swenshuai.xi 1886*53ee8cc1Swenshuai.xi typedef enum 1887*53ee8cc1Swenshuai.xi { 1888*53ee8cc1Swenshuai.xi E_VDEC_TILE_NONE = 0, 1889*53ee8cc1Swenshuai.xi E_VDEC_TILE_16X16, 1890*53ee8cc1Swenshuai.xi E_VDEC_TILE_16X32, 1891*53ee8cc1Swenshuai.xi E_VDEC_TILE_32X16, 1892*53ee8cc1Swenshuai.xi E_VDEC_TILE_32X32, 1893*53ee8cc1Swenshuai.xi E_VDEC_TILE_MAX, 1894*53ee8cc1Swenshuai.xi } VDEC_TILE_MODE; 1895*53ee8cc1Swenshuai.xi 1896*53ee8cc1Swenshuai.xi #endif // _FW_HVD_IF_H_ 1897*53ee8cc1Swenshuai.xi 1898