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 /////////////////////////////////////////////////////////////////////////////////////////////////// 96*53ee8cc1Swenshuai.xi /// 97*53ee8cc1Swenshuai.xi /// @file drvGOP.h 98*53ee8cc1Swenshuai.xi /// @brief Graphics Output Path Driver Interface 99*53ee8cc1Swenshuai.xi /// @author MStar Semiconductor Inc. 100*53ee8cc1Swenshuai.xi /////////////////////////////////////////////////////////////////////////////////////////////////// 101*53ee8cc1Swenshuai.xi 102*53ee8cc1Swenshuai.xi #ifndef _DRV_GOP_H_ 103*53ee8cc1Swenshuai.xi #define _DRV_GOP_H_ 104*53ee8cc1Swenshuai.xi 105*53ee8cc1Swenshuai.xi #ifdef __cplusplus 106*53ee8cc1Swenshuai.xi extern "C" 107*53ee8cc1Swenshuai.xi { 108*53ee8cc1Swenshuai.xi #endif 109*53ee8cc1Swenshuai.xi #if defined(MSOS_TYPE_LINUX_KERNEL) 110*53ee8cc1Swenshuai.xi #include "autoconf.h" 111*53ee8cc1Swenshuai.xi #endif 112*53ee8cc1Swenshuai.xi #include "MsCommon.h" 113*53ee8cc1Swenshuai.xi 114*53ee8cc1Swenshuai.xi #if defined(MSOS_TYPE_LINUX) 115*53ee8cc1Swenshuai.xi #include <sys/types.h> 116*53ee8cc1Swenshuai.xi #include <unistd.h> 117*53ee8cc1Swenshuai.xi #elif defined(MSOS_TYPE_LINUX_KERNEL) 118*53ee8cc1Swenshuai.xi #define getpid() pInstance 119*53ee8cc1Swenshuai.xi #else 120*53ee8cc1Swenshuai.xi #define getpid() 0UL 121*53ee8cc1Swenshuai.xi #endif 122*53ee8cc1Swenshuai.xi 123*53ee8cc1Swenshuai.xi #include "apiGOP.h" 124*53ee8cc1Swenshuai.xi 125*53ee8cc1Swenshuai.xi #define GETPIDTYPE ptrdiff_t 126*53ee8cc1Swenshuai.xi 127*53ee8cc1Swenshuai.xi #if (defined ANDROID) && (defined TV_OS) 128*53ee8cc1Swenshuai.xi #include <cutils/log.h> 129*53ee8cc1Swenshuai.xi #define printf LOGD 130*53ee8cc1Swenshuai.xi #ifndef LOGD // android 4.1 rename LOGx to ALOGx 131*53ee8cc1Swenshuai.xi #define LOGD ALOGD 132*53ee8cc1Swenshuai.xi #endif 133*53ee8cc1Swenshuai.xi #endif 134*53ee8cc1Swenshuai.xi 135*53ee8cc1Swenshuai.xi #ifdef MSOS_TYPE_LINUX 136*53ee8cc1Swenshuai.xi #include <assert.h> 137*53ee8cc1Swenshuai.xi #include <unistd.h> 138*53ee8cc1Swenshuai.xi #define APIGOP_ASSERT(_bool, pri) if (!(_bool)) {printf("\nAssert in %s,%d\n", __FUNCTION__, __LINE__); {pri;}; MsOS_DelayTask(100); assert(0);} 139*53ee8cc1Swenshuai.xi #else 140*53ee8cc1Swenshuai.xi #define APIGOP_ASSERT(_bool, pri) if (!(_bool)) {printf("\nAssert in %s,%d\n", __FUNCTION__, __LINE__); {pri;};}; 141*53ee8cc1Swenshuai.xi #endif 142*53ee8cc1Swenshuai.xi 143*53ee8cc1Swenshuai.xi #if defined(CONFIG_API_GOP) || defined(CONFIG_API_GOP_MODULE) 144*53ee8cc1Swenshuai.xi #else 145*53ee8cc1Swenshuai.xi #define CONFIG_GOP_POOL_ARRANGE 146*53ee8cc1Swenshuai.xi #define CONFIG_GOP_GWIN_MISC 147*53ee8cc1Swenshuai.xi #define CONFIG_GOP_2ND_PAL 148*53ee8cc1Swenshuai.xi #define CONFIG_GOP_BG 149*53ee8cc1Swenshuai.xi #define CONFIG_GOP_FADE 150*53ee8cc1Swenshuai.xi #define CONFIG_GOP_YUV_SWAP 151*53ee8cc1Swenshuai.xi #define CONFIG_GOP_CONTRAST 152*53ee8cc1Swenshuai.xi #define CONFIG_GOP_GOP_VE_CAPTURE 153*53ee8cc1Swenshuai.xi #define CONFIG_GOP_SCROLL 154*53ee8cc1Swenshuai.xi #define CONFIG_GOP_TEST_PATTERN 155*53ee8cc1Swenshuai.xi #define CONFIG_GOP_VE_CAPTURE 156*53ee8cc1Swenshuai.xi #endif 157*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 158*53ee8cc1Swenshuai.xi // Driver Capability 159*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 160*53ee8cc1Swenshuai.xi 161*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 162*53ee8cc1Swenshuai.xi // Customize Define 163*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 164*53ee8cc1Swenshuai.xi #define CUS_SETTING 0UL 165*53ee8cc1Swenshuai.xi #define INSTANT_PRIVATE 1UL 166*53ee8cc1Swenshuai.xi #if CUS_SETTING 167*53ee8cc1Swenshuai.xi #define WINFB_INSHARED 1UL 168*53ee8cc1Swenshuai.xi #define POOL_INSHARED 1UL 169*53ee8cc1Swenshuai.xi #define CURSOR_SUPPORT 1UL 170*53ee8cc1Swenshuai.xi #define MUTEX_LOCK_ENABLE 0UL 171*53ee8cc1Swenshuai.xi #define ENABLE_GOP0_RBLK_MIRROR FALSE 172*53ee8cc1Swenshuai.xi #ifndef DRV_MAX_GWIN_FB_SUPPORT 173*53ee8cc1Swenshuai.xi #define DRV_MAX_GWIN_FB_SUPPORT 0xFFFEUL 174*53ee8cc1Swenshuai.xi #endif 175*53ee8cc1Swenshuai.xi #define GFLIP_ENABLE FALSE 176*53ee8cc1Swenshuai.xi #define BOOTLOGO_PATCH TRUE 177*53ee8cc1Swenshuai.xi #define GOP_PIXEL_ALIGN FALSE 178*53ee8cc1Swenshuai.xi #define GOP_SW_SCROLL TRUE 179*53ee8cc1Swenshuai.xi #define GOP_3D_TYPE_SEL E_DRV_3D_DUP_FULL 180*53ee8cc1Swenshuai.xi #define GOP_VSYNC_WAIT_BYSLEEP FALSE 181*53ee8cc1Swenshuai.xi 182*53ee8cc1Swenshuai.xi #else //mstar default 183*53ee8cc1Swenshuai.xi #define WINFB_INSHARED 1UL 184*53ee8cc1Swenshuai.xi #define POOL_INSHARED 0UL 185*53ee8cc1Swenshuai.xi #define CURSOR_SUPPORT 0UL 186*53ee8cc1Swenshuai.xi #define MUTEX_LOCK_ENABLE 0UL 187*53ee8cc1Swenshuai.xi #define ENABLE_GOP0_RBLK_MIRROR TRUE 188*53ee8cc1Swenshuai.xi #ifndef DRV_MAX_GWIN_FB_SUPPORT 189*53ee8cc1Swenshuai.xi #define DRV_MAX_GWIN_FB_SUPPORT 32UL 190*53ee8cc1Swenshuai.xi #endif 191*53ee8cc1Swenshuai.xi 192*53ee8cc1Swenshuai.xi #ifdef CONFIG_GOP_DISABLE_GFLIP 193*53ee8cc1Swenshuai.xi #define GFLIP_ENABLE FALSE 194*53ee8cc1Swenshuai.xi #else 195*53ee8cc1Swenshuai.xi #define GFLIP_ENABLE TRUE 196*53ee8cc1Swenshuai.xi #endif 197*53ee8cc1Swenshuai.xi #define BOOTLOGO_PATCH FALSE 198*53ee8cc1Swenshuai.xi #define GOP_PIXEL_ALIGN FALSE 199*53ee8cc1Swenshuai.xi #define GOP_SW_SCROLL FALSE 200*53ee8cc1Swenshuai.xi #define GOP_3D_TYPE_SEL E_DRV_3D_DUP_HALF 201*53ee8cc1Swenshuai.xi #define GOP_VSYNC_WAIT_BYSLEEP TRUE 202*53ee8cc1Swenshuai.xi #endif 203*53ee8cc1Swenshuai.xi 204*53ee8cc1Swenshuai.xi 205*53ee8cc1Swenshuai.xi #ifdef MSOS_TYPE_NOS 206*53ee8cc1Swenshuai.xi #define GOP_LOCK_SUPPORT 0UL 207*53ee8cc1Swenshuai.xi #define GOP_XC_LOCK_SUPPORT 0UL 208*53ee8cc1Swenshuai.xi #define GOP_XC_SEMPHORE_PROTECT 0UL 209*53ee8cc1Swenshuai.xi #else 210*53ee8cc1Swenshuai.xi #define GOP_LOCK_SUPPORT MUTEX_LOCK_ENABLE 211*53ee8cc1Swenshuai.xi #define GOP_XC_LOCK_SUPPORT MUTEX_LOCK_ENABLE 212*53ee8cc1Swenshuai.xi #ifdef UTOPIA_V2 //XC 213*53ee8cc1Swenshuai.xi #define GOP_XC_SEMPHORE_PROTECT 1UL 214*53ee8cc1Swenshuai.xi #else 215*53ee8cc1Swenshuai.xi #define GOP_XC_SEMPHORE_PROTECT 0UL 216*53ee8cc1Swenshuai.xi #endif 217*53ee8cc1Swenshuai.xi 218*53ee8cc1Swenshuai.xi #endif 219*53ee8cc1Swenshuai.xi #define GOP_XC_LOCK_DEBUG 0UL 220*53ee8cc1Swenshuai.xi 221*53ee8cc1Swenshuai.xi #ifdef GOP_UTOPIA2K 222*53ee8cc1Swenshuai.xi #define GOPDRIVER_BASE KERNEL_MODE 223*53ee8cc1Swenshuai.xi #else 224*53ee8cc1Swenshuai.xi #define GOPDRIVER_BASE 0UL 225*53ee8cc1Swenshuai.xi #endif 226*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 227*53ee8cc1Swenshuai.xi // Macro and Define 228*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 229*53ee8cc1Swenshuai.xi #define UNUSED( var ) (void)((var) = (var)) 230*53ee8cc1Swenshuai.xi 231*53ee8cc1Swenshuai.xi #define MAX_GOP_INFO_COUNT 6 232*53ee8cc1Swenshuai.xi #define INVAILD_GOP_NUM 0xFFUL 233*53ee8cc1Swenshuai.xi #define INVALID_GWIN_ID 0xFFUL 234*53ee8cc1Swenshuai.xi #define GWIN_OSD_DEFAULT (MS_U8)g_pGOPCtxLocal->pGopChipProperty->TotalGwinNum 235*53ee8cc1Swenshuai.xi #define INVALID_POOL_NEXT_FBID 0xFFFFFFFFUL 236*53ee8cc1Swenshuai.xi #define FB_FMT_AS_DEFAULT 0xFFFFUL 237*53ee8cc1Swenshuai.xi #define INVALID_CLIENT_PID 0x00UL //Invalid PID 238*53ee8cc1Swenshuai.xi #define INVALID_GOP_MUX_VAL 0xFFFFUL 239*53ee8cc1Swenshuai.xi 240*53ee8cc1Swenshuai.xi #define MIU_0 0UL 241*53ee8cc1Swenshuai.xi #define MIU_1 1UL 242*53ee8cc1Swenshuai.xi 243*53ee8cc1Swenshuai.xi #define GOP_STRETCH_WIDTH_UNIT 2UL // 2-pixel 244*53ee8cc1Swenshuai.xi 245*53ee8cc1Swenshuai.xi #define GOP_STRETCH_TABLE_NUM 50UL 246*53ee8cc1Swenshuai.xi #define GOP_VSTRETCH_TABLE_NUM 32UL 247*53ee8cc1Swenshuai.xi #define GOP_REG_MAX 128UL 248*53ee8cc1Swenshuai.xi 249*53ee8cc1Swenshuai.xi 250*53ee8cc1Swenshuai.xi #define SHARED_GWIN_MAX_COUNT 32UL 251*53ee8cc1Swenshuai.xi #define SHARED_GOP_MAX_COUNT 8UL 252*53ee8cc1Swenshuai.xi #define MAX_GOP_SW_SCROLLNUM 16UL 253*53ee8cc1Swenshuai.xi #define MAX_MUX_NUMBER_SUPPORT MAX_GOP_MUX 254*53ee8cc1Swenshuai.xi 255*53ee8cc1Swenshuai.xi #define HAS_BIT(flag, bit) ((flag) & (1<<bit)) 256*53ee8cc1Swenshuai.xi #define SET_BIT(flag, bit) ((flag) |= (1<<bit)) 257*53ee8cc1Swenshuai.xi #define RESET_BIT(flag, bit) ((flag) &= (~(1<<bit))) 258*53ee8cc1Swenshuai.xi 259*53ee8cc1Swenshuai.xi #define GOP_MIU_CLIENT_OC9 0x9UL 260*53ee8cc1Swenshuai.xi #define INVALID_BPP 0xFFFFUL 261*53ee8cc1Swenshuai.xi 262*53ee8cc1Swenshuai.xi #define SCALING_MULITPLIER 0x1000UL 263*53ee8cc1Swenshuai.xi 264*53ee8cc1Swenshuai.xi #define GOP_FMT_RGB555_BLINK 0x0UL 265*53ee8cc1Swenshuai.xi #define GOP_FMT_RGB565 0x1UL 266*53ee8cc1Swenshuai.xi #define GOP_FMT_ARGB4444 0x2UL 267*53ee8cc1Swenshuai.xi #define GOP_FMT_FaBaFgBg2266 0x3UL 268*53ee8cc1Swenshuai.xi #define GOP_FMT_I8 0x4UL 269*53ee8cc1Swenshuai.xi #define GOP_FMT_ARGB8888 0x5UL 270*53ee8cc1Swenshuai.xi #define GOP_FMT_ARGB1555 0x6UL 271*53ee8cc1Swenshuai.xi #define GOP_FMT_ABGR8888 0x7UL 272*53ee8cc1Swenshuai.xi #define GOP_FMT_ARGB1555_DST 0x8UL 273*53ee8cc1Swenshuai.xi #define GOP_FMT_YUV422 0x9UL 274*53ee8cc1Swenshuai.xi #define GOP_FMT_RGBA5551 10UL 275*53ee8cc1Swenshuai.xi #define GOP_FMT_RGBA4444 11UL 276*53ee8cc1Swenshuai.xi #define GOP_FMT_RGBA8888 12UL 277*53ee8cc1Swenshuai.xi #define GOP_FMT_BGR565 17UL 278*53ee8cc1Swenshuai.xi #define GOP_FMT_ABGR4444 18UL 279*53ee8cc1Swenshuai.xi #define GOP_FMT_ABGR1555 22UL 280*53ee8cc1Swenshuai.xi #define GOP_FMT_BGRA5551 26UL 281*53ee8cc1Swenshuai.xi #define GOP_FMT_BGRA4444 27UL 282*53ee8cc1Swenshuai.xi #define GOP_FMT_BGRA8888 28UL 283*53ee8cc1Swenshuai.xi #define GOP_FMT_GENERIC 0xFFFFUL 284*53ee8cc1Swenshuai.xi 285*53ee8cc1Swenshuai.xi #ifndef PAGE_SIZE 286*53ee8cc1Swenshuai.xi #define PAGE_SIZE 4096UL 287*53ee8cc1Swenshuai.xi #endif 288*53ee8cc1Swenshuai.xi #define PER_BYTE_BITS 8UL 289*53ee8cc1Swenshuai.xi #define TLB_PER_ENTRY_SIZE 4UL 290*53ee8cc1Swenshuai.xi #define PER_MIU_TLB_ENTRY_COUNT 8UL 291*53ee8cc1Swenshuai.xi #define ADDRESSING_8BYTE_UNIT 8UL 292*53ee8cc1Swenshuai.xi 293*53ee8cc1Swenshuai.xi ///GOP_PALETTE_ENTRY_NUM 294*53ee8cc1Swenshuai.xi #define GOP_PALETTE_ENTRY_NUM_MAX 256UL 295*53ee8cc1Swenshuai.xi 296*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 297*53ee8cc1Swenshuai.xi // Type and Structure 298*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 299*53ee8cc1Swenshuai.xi /// Define GOP driver/hal layer return code, this enum should sync with E_GOP_API_Result 300*53ee8cc1Swenshuai.xi typedef enum 301*53ee8cc1Swenshuai.xi { 302*53ee8cc1Swenshuai.xi GOP_FAIL = 0, 303*53ee8cc1Swenshuai.xi GOP_SUCCESS = 1, 304*53ee8cc1Swenshuai.xi GOP_NON_ALIGN_ADDRESS , 305*53ee8cc1Swenshuai.xi GOP_NON_ALIGN_PITCH , 306*53ee8cc1Swenshuai.xi GOP_DEPEND_NOAVAIL , 307*53ee8cc1Swenshuai.xi GOP_MUTEX_OBTAIN_FAIL , 308*53ee8cc1Swenshuai.xi GOP_MUTEX_OBTAINED , 309*53ee8cc1Swenshuai.xi 310*53ee8cc1Swenshuai.xi GOP_INVALID_BUFF_INFO , 311*53ee8cc1Swenshuai.xi GOP_INVALID_PARAMETERS, 312*53ee8cc1Swenshuai.xi GOP_FUN_NOT_SUPPORTED, 313*53ee8cc1Swenshuai.xi GOP_ENUM_NOT_SUPPORTED, 314*53ee8cc1Swenshuai.xi GOP_CRT_GWIN_FAIL = 0xFE, 315*53ee8cc1Swenshuai.xi GOP_CRT_GWIN_NOAVAIL = 0xFF, 316*53ee8cc1Swenshuai.xi } GOP_Result; 317*53ee8cc1Swenshuai.xi 318*53ee8cc1Swenshuai.xi 319*53ee8cc1Swenshuai.xi /// Define GWIN color format. 320*53ee8cc1Swenshuai.xi typedef enum 321*53ee8cc1Swenshuai.xi { 322*53ee8cc1Swenshuai.xi /// Color format RGB555 and Blink. 323*53ee8cc1Swenshuai.xi E_DRV_GOP_COLOR_RGB555_BLINK =E_MS_FMT_1ABFgBg12355, 324*53ee8cc1Swenshuai.xi /// Color format RGB565. 325*53ee8cc1Swenshuai.xi E_DRV_GOP_COLOR_RGB565 =E_MS_FMT_RGB565, 326*53ee8cc1Swenshuai.xi /// Color format ARGB4444. 327*53ee8cc1Swenshuai.xi E_DRV_GOP_COLOR_ARGB4444 =E_MS_FMT_ARGB4444, 328*53ee8cc1Swenshuai.xi /// Color format alpha blink. 329*53ee8cc1Swenshuai.xi E_DRV_GOP_COLOR_2266 =E_MS_FMT_FaBaFgBg2266, 330*53ee8cc1Swenshuai.xi /// Color format I8 (256-entry palette). 331*53ee8cc1Swenshuai.xi E_DRV_GOP_COLOR_I8 =E_MS_FMT_I8, 332*53ee8cc1Swenshuai.xi /// Color format ARGB8888. 333*53ee8cc1Swenshuai.xi E_DRV_GOP_COLOR_ARGB8888 =E_MS_FMT_ARGB8888, 334*53ee8cc1Swenshuai.xi /// Color format ARGB1555. 335*53ee8cc1Swenshuai.xi E_DRV_GOP_COLOR_ARGB1555 =E_MS_FMT_ARGB1555, 336*53ee8cc1Swenshuai.xi /// Color format ARGB8888. - Andriod format 337*53ee8cc1Swenshuai.xi E_DRV_GOP_COLOR_ABGR8888 =E_MS_FMT_ABGR8888, 338*53ee8cc1Swenshuai.xi /// Color format RGB555/YUV422. 339*53ee8cc1Swenshuai.xi E_DRV_GOP_COLOR_RGB555YUV422 =E_MS_FMT_ARGB1555_DST, 340*53ee8cc1Swenshuai.xi /// Color format YUV422. 341*53ee8cc1Swenshuai.xi E_DRV_GOP_COLOR_YUV422 =E_MS_FMT_YUV422, 342*53ee8cc1Swenshuai.xi /// Color format RGBA5551. - Andriod format 343*53ee8cc1Swenshuai.xi E_DRV_GOP_COLOR_RGBA5551 =E_MS_FMT_RGBA5551, 344*53ee8cc1Swenshuai.xi /// Color format RGBA4444. - Andriod format 345*53ee8cc1Swenshuai.xi E_DRV_GOP_COLOR_RGBA4444 =E_MS_FMT_RGBA4444, 346*53ee8cc1Swenshuai.xi /// Color format RGBA8888. - Andriod Format 347*53ee8cc1Swenshuai.xi E_DRV_GOP_COLOR_RGBA8888 =E_MS_FMT_RGBA8888, 348*53ee8cc1Swenshuai.xi /// Color format BGR565. - Andriod Format 349*53ee8cc1Swenshuai.xi E_DRV_GOP_COLOR_BGR565 =E_MS_FMT_BGR565, 350*53ee8cc1Swenshuai.xi /// Color format ABGR4444. - Andriod Format 351*53ee8cc1Swenshuai.xi E_DRV_GOP_COLOR_ABGR4444 =E_MS_FMT_ABGR4444, 352*53ee8cc1Swenshuai.xi /// Color format AYUV8888. - Andriod Format 353*53ee8cc1Swenshuai.xi E_DRV_GOP_COLOR_AYUV8888 =E_MS_FMT_AYUV8888, 354*53ee8cc1Swenshuai.xi /// Color format ABGR1555. - Andriod Format 355*53ee8cc1Swenshuai.xi E_DRV_GOP_COLOR_ABGR1555 =E_MS_FMT_ABGR1555, 356*53ee8cc1Swenshuai.xi /// Color format BGRA5551. - Andriod Format 357*53ee8cc1Swenshuai.xi E_DRV_GOP_COLOR_BGRA5551 =E_MS_FMT_BGRA5551, 358*53ee8cc1Swenshuai.xi /// Color format BGRA4444. - Andriod Format 359*53ee8cc1Swenshuai.xi E_DRV_GOP_COLOR_BGRA4444 =E_MS_FMT_BGRA4444, 360*53ee8cc1Swenshuai.xi /// Color format BGRA8888. - Andriod Format 361*53ee8cc1Swenshuai.xi E_DRV_GOP_COLOR_BGRA8888 =E_MS_FMT_BGRA8888, 362*53ee8cc1Swenshuai.xi 363*53ee8cc1Swenshuai.xi /// Invalid color format. 364*53ee8cc1Swenshuai.xi E_DRV_GOP_COLOR_INVALID =E_MS_FMT_GENERIC 365*53ee8cc1Swenshuai.xi } DRV_GOPColorType; 366*53ee8cc1Swenshuai.xi 367*53ee8cc1Swenshuai.xi typedef enum 368*53ee8cc1Swenshuai.xi { 369*53ee8cc1Swenshuai.xi DRV_VALID_6BITS = 0, 370*53ee8cc1Swenshuai.xi DRV_VALID_8BITS = 1, 371*53ee8cc1Swenshuai.xi DRV_NONE_SETTING = 2, 372*53ee8cc1Swenshuai.xi } DRV_GOP_CONSALPHA_BITS; 373*53ee8cc1Swenshuai.xi 374*53ee8cc1Swenshuai.xi typedef enum 375*53ee8cc1Swenshuai.xi { 376*53ee8cc1Swenshuai.xi E_DRV_3D_NONE = 0, ///3D type: Not support 377*53ee8cc1Swenshuai.xi E_DRV_3D_DUP_HALF = 1, ///3D type: Support, but SW need expand GWIN and StretchWin 378*53ee8cc1Swenshuai.xi E_DRV_3D_DUP_FULL = 2, ///3D type: Support, and HW automatically expand GWIN and StretchWin 379*53ee8cc1Swenshuai.xi } EN_DRV_GOP_3D_TYPE; 380*53ee8cc1Swenshuai.xi 381*53ee8cc1Swenshuai.xi /// Define Mux 382*53ee8cc1Swenshuai.xi typedef enum 383*53ee8cc1Swenshuai.xi { 384*53ee8cc1Swenshuai.xi ///Select gop output to mux0 385*53ee8cc1Swenshuai.xi E_GOP_MUX0 = 0, 386*53ee8cc1Swenshuai.xi /// Select gop output to mux1 387*53ee8cc1Swenshuai.xi E_GOP_MUX1 = 1, 388*53ee8cc1Swenshuai.xi /// Select gop output to mux2 389*53ee8cc1Swenshuai.xi E_GOP_MUX2 = 2, 390*53ee8cc1Swenshuai.xi /// Select gop output to mux3 391*53ee8cc1Swenshuai.xi E_GOP_MUX3 = 3, 392*53ee8cc1Swenshuai.xi /// Select gop output to mux4 393*53ee8cc1Swenshuai.xi E_GOP_MUX4 = 4, 394*53ee8cc1Swenshuai.xi ///Select gop output to IP0 395*53ee8cc1Swenshuai.xi E_GOP_IP0_MUX, 396*53ee8cc1Swenshuai.xi /// Select gop output to IP1 397*53ee8cc1Swenshuai.xi E_GOP_IP1_MUX, 398*53ee8cc1Swenshuai.xi /// Select gop output to vop0 399*53ee8cc1Swenshuai.xi E_GOP_VOP0_MUX, 400*53ee8cc1Swenshuai.xi /// Select gop output to vop1 401*53ee8cc1Swenshuai.xi E_GOP_VOP1_MUX, 402*53ee8cc1Swenshuai.xi /// Select gop output to FRC mux0 403*53ee8cc1Swenshuai.xi E_GOP_FRC_MUX0, 404*53ee8cc1Swenshuai.xi /// Select gop output to FRC mux1 405*53ee8cc1Swenshuai.xi E_GOP_FRC_MUX1, 406*53ee8cc1Swenshuai.xi /// Select gop output to FRC mux2 407*53ee8cc1Swenshuai.xi E_GOP_FRC_MUX2, 408*53ee8cc1Swenshuai.xi /// Select gop output to FRC mux3 409*53ee8cc1Swenshuai.xi E_GOP_FRC_MUX3, 410*53ee8cc1Swenshuai.xi /// Select gop output to BYPASS mux 411*53ee8cc1Swenshuai.xi E_GOP_BYPASS_MUX0, 412*53ee8cc1Swenshuai.xi /// Select gop output to IP0_SUB 413*53ee8cc1Swenshuai.xi E_GOP_IP0_SUB_MUX, 414*53ee8cc1Swenshuai.xi /// Select gop output to VOP0_SUB 415*53ee8cc1Swenshuai.xi E_GOP_VOP0_SUB_MUX, 416*53ee8cc1Swenshuai.xi /// Select gop output to OP1 417*53ee8cc1Swenshuai.xi E_GOP_OP1_MUX, 418*53ee8cc1Swenshuai.xi /// Select gop output to DIP 419*53ee8cc1Swenshuai.xi E_GOP_DIP_MUX, 420*53ee8cc1Swenshuai.xi /// Select gop output to DIP 421*53ee8cc1Swenshuai.xi E_GOP_GS_MUX, 422*53ee8cc1Swenshuai.xi /// Select gop output to Mix layer0 423*53ee8cc1Swenshuai.xi E_GOP_Mix_MUX0, 424*53ee8cc1Swenshuai.xi /// Select gop output to Mix layer1 425*53ee8cc1Swenshuai.xi E_GOP_Mix_MUX1, 426*53ee8cc1Swenshuai.xi /// Select gop output to VE0 427*53ee8cc1Swenshuai.xi E_GOP_VE0_MUX, 428*53ee8cc1Swenshuai.xi /// Select gop output to VE1 429*53ee8cc1Swenshuai.xi E_GOP_VE1_MUX, 430*53ee8cc1Swenshuai.xi 431*53ee8cc1Swenshuai.xi ///Select gop output to dual rate op mux0 432*53ee8cc1Swenshuai.xi E_GOP_DUALRATE_OP_MUX0, 433*53ee8cc1Swenshuai.xi ///Select gop output to dual rate op mux1 434*53ee8cc1Swenshuai.xi E_GOP_DUALRATE_OP_MUX1, 435*53ee8cc1Swenshuai.xi ///Select gop output to dual rate op mux2 436*53ee8cc1Swenshuai.xi E_GOP_DUALRATE_OP_MUX2, 437*53ee8cc1Swenshuai.xi 438*53ee8cc1Swenshuai.xi MAX_GOP_MUX_SUPPORT, 439*53ee8cc1Swenshuai.xi E_GOP_MUX_INVAILD, 440*53ee8cc1Swenshuai.xi } Gop_MuxSel; 441*53ee8cc1Swenshuai.xi 442*53ee8cc1Swenshuai.xi /// Define GOP destination displayplane type 443*53ee8cc1Swenshuai.xi typedef enum 444*53ee8cc1Swenshuai.xi { 445*53ee8cc1Swenshuai.xi E_DRV_GOP_DST_IP0 = 0, 446*53ee8cc1Swenshuai.xi E_DRV_GOP_DST_IP0_SUB = 1, 447*53ee8cc1Swenshuai.xi E_DRV_GOP_DST_MIXER2VE = 2, 448*53ee8cc1Swenshuai.xi E_DRV_GOP_DST_OP0 = 3, 449*53ee8cc1Swenshuai.xi E_DRV_GOP_DST_VOP = 4, 450*53ee8cc1Swenshuai.xi E_DRV_GOP_DST_IP1 = 5, 451*53ee8cc1Swenshuai.xi E_DRV_GOP_DST_IP1_SUB = 6, 452*53ee8cc1Swenshuai.xi E_DRV_GOP_DST_MIXER2OP = 7, 453*53ee8cc1Swenshuai.xi E_DRV_GOP_DST_VOP_SUB = 8, 454*53ee8cc1Swenshuai.xi E_DRV_GOP_DST_FRC = 9, 455*53ee8cc1Swenshuai.xi E_DRV_GOP_DST_VE = 10, 456*53ee8cc1Swenshuai.xi E_DRV_GOP_DST_BYPASS = 11, 457*53ee8cc1Swenshuai.xi E_DRV_GOP_DST_OP1 = 12, 458*53ee8cc1Swenshuai.xi E_DRV_GOP_DST_MIXER2OP1 = 13, 459*53ee8cc1Swenshuai.xi E_DRV_GOP_DST_DIP = 14, 460*53ee8cc1Swenshuai.xi E_DRV_GOP_DST_GOPScaling = 15, 461*53ee8cc1Swenshuai.xi E_DRV_GOP_DST_OP_DUAL_RATE = 16, 462*53ee8cc1Swenshuai.xi MAX_DRV_GOP_DST_SUPPORT , 463*53ee8cc1Swenshuai.xi E_DRV_GOP_DST_INVALID , 464*53ee8cc1Swenshuai.xi } DRV_GOPDstType; 465*53ee8cc1Swenshuai.xi 466*53ee8cc1Swenshuai.xi /// Define GOP chip property for different chip characteristic. 467*53ee8cc1Swenshuai.xi typedef struct __attribute__((packed)) 468*53ee8cc1Swenshuai.xi { 469*53ee8cc1Swenshuai.xi MS_BOOL bSetHSyncInverse; 470*53ee8cc1Swenshuai.xi MS_BOOL bGop1GPalette; 471*53ee8cc1Swenshuai.xi MS_BOOL bSetHPipeOfst; 472*53ee8cc1Swenshuai.xi MS_BOOL bNeedCheckMVOP; 473*53ee8cc1Swenshuai.xi MS_BOOL bNeedSetMUX1ToIP0; 474*53ee8cc1Swenshuai.xi MS_BOOL bNeedSetMUX3ToIP0; 475*53ee8cc1Swenshuai.xi MS_BOOL bNewMux; 476*53ee8cc1Swenshuai.xi MS_BOOL bNewPalette; 477*53ee8cc1Swenshuai.xi MS_BOOL bNewBwReg; 478*53ee8cc1Swenshuai.xi MS_BOOL bGop2VStretch; 479*53ee8cc1Swenshuai.xi MS_BOOL bIgnoreIPHPD; 480*53ee8cc1Swenshuai.xi MS_BOOL bIgnoreIP1HPD; 481*53ee8cc1Swenshuai.xi MS_BOOL bIgnoreVEHPD; 482*53ee8cc1Swenshuai.xi MS_BOOL bhastilemode; 483*53ee8cc1Swenshuai.xi MS_BOOL bInitNotEnableGOPToSC; 484*53ee8cc1Swenshuai.xi MS_BOOL bXCDirrectBankSupport; 485*53ee8cc1Swenshuai.xi MS_BOOL bTstPatternAlpha; 486*53ee8cc1Swenshuai.xi MS_BOOL bFRCSupport; 487*53ee8cc1Swenshuai.xi MS_BOOL bGOPMixerToVE; 488*53ee8cc1Swenshuai.xi MS_BOOL bBnkForceWrite; 489*53ee8cc1Swenshuai.xi MS_BOOL bPixelModeSupport; 490*53ee8cc1Swenshuai.xi MS_BOOL bDWINSupport; 491*53ee8cc1Swenshuai.xi MS_BOOL bScalingDownSupport; 492*53ee8cc1Swenshuai.xi MS_BOOL b2Pto1PSupport; 493*53ee8cc1Swenshuai.xi MS_BOOL bTLBSupport[6]; 494*53ee8cc1Swenshuai.xi MS_BOOL bInternalMIUSelect[8]; 495*53ee8cc1Swenshuai.xi MS_BOOL bAFBC_Support[6]; 496*53ee8cc1Swenshuai.xi 497*53ee8cc1Swenshuai.xi MS_BOOL bAutoAdjustMirrorHSize; 498*53ee8cc1Swenshuai.xi MS_BOOL bGOPWithVscale[6]; 499*53ee8cc1Swenshuai.xi MS_BOOL bGOPWithScaleDown[6]; 500*53ee8cc1Swenshuai.xi 501*53ee8cc1Swenshuai.xi MS_U16 GOP_TestPattern_Vaild; 502*53ee8cc1Swenshuai.xi MS_U16 DwinVer; 503*53ee8cc1Swenshuai.xi MS_S16 GOP_PD; 504*53ee8cc1Swenshuai.xi MS_U16 GOP_IP_PD; 505*53ee8cc1Swenshuai.xi MS_U16 GOP_MVOP_PD; 506*53ee8cc1Swenshuai.xi MS_U16 GOP_VE_PD; 507*53ee8cc1Swenshuai.xi MS_U16 GOP_OP1_PD; 508*53ee8cc1Swenshuai.xi MS_U16 GOP_MIXER_PD; 509*53ee8cc1Swenshuai.xi MS_U16 GOP_NonVS_PD_Offset; 510*53ee8cc1Swenshuai.xi MS_U16 GOP_NonVS_DualOpPD_Offset; 511*53ee8cc1Swenshuai.xi MS_U16 GOP_VE_V_Offset; 512*53ee8cc1Swenshuai.xi MS_U16 GOP_HDR_OP_PD; 513*53ee8cc1Swenshuai.xi MS_U16 GOP_DUAL_OP_PD; 514*53ee8cc1Swenshuai.xi 515*53ee8cc1Swenshuai.xi MS_U16 GOP_MUX_Delta; 516*53ee8cc1Swenshuai.xi MS_U16 GOP_Mux_Offset[6]; 517*53ee8cc1Swenshuai.xi MS_U16 GOP_Zorder_Mux_Offset[6]; 518*53ee8cc1Swenshuai.xi Gop_MuxSel GOP_MapLayer2Mux[6]; 519*53ee8cc1Swenshuai.xi Gop_MuxSel GOP_MapLayer2DualOpMux[6]; 520*53ee8cc1Swenshuai.xi MS_U16 GOP_Mux_FRC_offset; 521*53ee8cc1Swenshuai.xi MS_U16 GOP_DualRateMux_Offset[6]; 522*53ee8cc1Swenshuai.xi MS_U16 GOP_REF_POSITION_X; 523*53ee8cc1Swenshuai.xi 524*53ee8cc1Swenshuai.xi MS_U16 WordUnit; 525*53ee8cc1Swenshuai.xi MS_U16 TotalGwinNum; 526*53ee8cc1Swenshuai.xi DRV_GOP_CONSALPHA_BITS Default_ConsAlpha_bits; 527*53ee8cc1Swenshuai.xi EN_DRV_GOP_3D_TYPE enGOP3DType; 528*53ee8cc1Swenshuai.xi MS_BOOL bOpInterlace; 529*53ee8cc1Swenshuai.xi 530*53ee8cc1Swenshuai.xi MS_BOOL bAFBCMIUSelDoubleBuffer; 531*53ee8cc1Swenshuai.xi MS_BOOL bAFBC_Merge_GOP_Trig; 532*53ee8cc1Swenshuai.xi MS_BOOL bGOPVscalePipeDelay[6]; 533*53ee8cc1Swenshuai.xi MS_BOOL bGOPNeedSplitMode4DualRate[6]; 534*53ee8cc1Swenshuai.xi MS_BOOL bOPHandShakeModeSupport; 535*53ee8cc1Swenshuai.xi MS_BOOL bOPMuxDoubleBuffer; 536*53ee8cc1Swenshuai.xi MS_BOOL bGOPAutoClkGating; 537*53ee8cc1Swenshuai.xi }GOP_CHIP_PROPERTY; 538*53ee8cc1Swenshuai.xi 539*53ee8cc1Swenshuai.xi /// GOP0 gwin priority 540*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 541*53ee8cc1Swenshuai.xi { 542*53ee8cc1Swenshuai.xi MS_U8 u81stGwin; 543*53ee8cc1Swenshuai.xi MS_U8 u82stGwin; 544*53ee8cc1Swenshuai.xi MS_U8 u83stGwin; 545*53ee8cc1Swenshuai.xi MS_U8 u84stGwin; 546*53ee8cc1Swenshuai.xi }GOP0_GwinPri; 547*53ee8cc1Swenshuai.xi 548*53ee8cc1Swenshuai.xi // GOP0/GOP1 gwin priority 549*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 550*53ee8cc1Swenshuai.xi { 551*53ee8cc1Swenshuai.xi GOP0_GwinPri Gop0_GwinPri; 552*53ee8cc1Swenshuai.xi MS_U8 Gop1_1stGwin :1; 553*53ee8cc1Swenshuai.xi }GOP_GwinPriority; 554*53ee8cc1Swenshuai.xi 555*53ee8cc1Swenshuai.xi /// GWIN Information 556*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 557*53ee8cc1Swenshuai.xi { 558*53ee8cc1Swenshuai.xi MS_U16 u16DispVPixelStart; //!< unit: pix 559*53ee8cc1Swenshuai.xi MS_U16 u16DispVPixelEnd; //!< unit: pix 560*53ee8cc1Swenshuai.xi MS_U16 u16DispHPixelStart; //!< unit: pix 561*53ee8cc1Swenshuai.xi MS_U16 u16DispHPixelEnd; //!< unit: pix 562*53ee8cc1Swenshuai.xi MS_PHY u64DRAMRBlkStart; //!< unit: Byte 563*53ee8cc1Swenshuai.xi MS_U16 u16RBlkHPixSize; //!< unit: pix 564*53ee8cc1Swenshuai.xi MS_U16 u16RBlkVPixSize; //!< unit: pix 565*53ee8cc1Swenshuai.xi MS_U16 u16RBlkHRblkSize; //!< unit: Byte 566*53ee8cc1Swenshuai.xi MS_U16 u16WinX; //!< unit: pix 567*53ee8cc1Swenshuai.xi MS_U16 u16WinY; //!< unit: pix 568*53ee8cc1Swenshuai.xi MS_U32 u32scrX; //!< unit: pix 569*53ee8cc1Swenshuai.xi MS_U32 u32scrY; //!< unit: pix 570*53ee8cc1Swenshuai.xi DRV_GOPColorType clrType; //!< color format of the buffer 571*53ee8cc1Swenshuai.xi } DRV_GOP_GWIN_INFO; 572*53ee8cc1Swenshuai.xi 573*53ee8cc1Swenshuai.xi /// Dump Window Information 574*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 575*53ee8cc1Swenshuai.xi { 576*53ee8cc1Swenshuai.xi MS_U16 u16VPixelStart; //!< unit: pix 577*53ee8cc1Swenshuai.xi MS_U16 u16VPixelEnd; //!< unit: pix 578*53ee8cc1Swenshuai.xi MS_U16 u16HPixelStart; //!< unit: pix 579*53ee8cc1Swenshuai.xi MS_U16 u16HPixelEnd; //!< unit: pix 580*53ee8cc1Swenshuai.xi MS_PHY u64TFDRAMAddr; //!< unit: Byte 581*53ee8cc1Swenshuai.xi MS_PHY u64BFDRAMAddr; //!< unit: Byte 582*53ee8cc1Swenshuai.xi MS_U16 u16DRAMJumpLen; //!< unit: Byte 583*53ee8cc1Swenshuai.xi MS_U8 u8fmt; //!< DWIN format: 0 UV7Y8, 1 UV8Y8, 2 ARGB8888, 3 RGB565 584*53ee8cc1Swenshuai.xi } DRV_GOP_DWIN_INFO; 585*53ee8cc1Swenshuai.xi 586*53ee8cc1Swenshuai.xi /// DWIN propert 587*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 588*53ee8cc1Swenshuai.xi { 589*53ee8cc1Swenshuai.xi MS_U16 u16x; ///< x 590*53ee8cc1Swenshuai.xi MS_U16 u16y; ///< y 591*53ee8cc1Swenshuai.xi MS_U16 u16w; ///< width 592*53ee8cc1Swenshuai.xi MS_U16 u16h; ///< height 593*53ee8cc1Swenshuai.xi MS_PHY u64fbaddr0; ///< Top field DRAM address 594*53ee8cc1Swenshuai.xi MS_PHY u64fbaddr1; ///< Bottom field DRAM address 595*53ee8cc1Swenshuai.xi MS_U16 u16fbw; ///< Number of bytes per horizontal line 596*53ee8cc1Swenshuai.xi } DRV_GOP_DwinProperty; 597*53ee8cc1Swenshuai.xi 598*53ee8cc1Swenshuai.xi typedef union DLL_PACKED 599*53ee8cc1Swenshuai.xi { 600*53ee8cc1Swenshuai.xi MS_U8 u8DWinIntInfo; 601*53ee8cc1Swenshuai.xi struct DLL_PACKED 602*53ee8cc1Swenshuai.xi { 603*53ee8cc1Swenshuai.xi MS_U8 bDWinIntWADR:1; 604*53ee8cc1Swenshuai.xi MS_U8 bDWinIntPROG:1; 605*53ee8cc1Swenshuai.xi MS_U8 bDWinIntTF:1; 606*53ee8cc1Swenshuai.xi MS_U8 bDWinIntBF:1; 607*53ee8cc1Swenshuai.xi MS_U8 bDWinIntVS:1; 608*53ee8cc1Swenshuai.xi MS_U8 reserved:3; 609*53ee8cc1Swenshuai.xi }sDwinIntInfo; 610*53ee8cc1Swenshuai.xi } DRV_GOP_DWinIntInfo; 611*53ee8cc1Swenshuai.xi 612*53ee8cc1Swenshuai.xi /// Frame buffer attributes for GWIN 613*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 614*53ee8cc1Swenshuai.xi { 615*53ee8cc1Swenshuai.xi MS_U8 gWinId; ///< id 616*53ee8cc1Swenshuai.xi MS_U8 enable:1; ///< 4bits enable 617*53ee8cc1Swenshuai.xi MS_U8 allocated:1; ///< 4bits 618*53ee8cc1Swenshuai.xi 619*53ee8cc1Swenshuai.xi MS_U16 x0; ///< MS_U16 620*53ee8cc1Swenshuai.xi MS_U16 y0; ///< MS_U16 621*53ee8cc1Swenshuai.xi MS_U16 x1; ///< MS_U16 622*53ee8cc1Swenshuai.xi MS_U16 y1; ///< MS_U16 623*53ee8cc1Swenshuai.xi MS_U16 width; ///< MS_U16 624*53ee8cc1Swenshuai.xi MS_U16 height; ///< MS_U16 625*53ee8cc1Swenshuai.xi MS_U16 pitch; ///< MS_U16 626*53ee8cc1Swenshuai.xi MS_U16 fbFmt; ///< MS_U16 627*53ee8cc1Swenshuai.xi 628*53ee8cc1Swenshuai.xi MS_U32 addr; ///< MS_U32 629*53ee8cc1Swenshuai.xi MS_U32 size; ///< MS_U32 630*53ee8cc1Swenshuai.xi 631*53ee8cc1Swenshuai.xi MS_U8 next; ///< MS_U8 632*53ee8cc1Swenshuai.xi MS_U8 prev; ///< MS_U8 633*53ee8cc1Swenshuai.xi MS_U8 string; //store which AP use this FB 634*53ee8cc1Swenshuai.xi //MS_U8 flag; ///< bit 0:scroll 635*53ee8cc1Swenshuai.xi MS_U16 s_x; ///< MS_U16 636*53ee8cc1Swenshuai.xi MS_U16 s_y; ///< MS_U16 637*53ee8cc1Swenshuai.xi MS_U16 dispWidth; ///< MS_U16 638*53ee8cc1Swenshuai.xi MS_U16 dispHeight; ///< MS_U16 639*53ee8cc1Swenshuai.xi } DRV_Gwin_FB_Attr; 640*53ee8cc1Swenshuai.xi 641*53ee8cc1Swenshuai.xi /// OC Info 642*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 643*53ee8cc1Swenshuai.xi { 644*53ee8cc1Swenshuai.xi MS_PHY u64GOP_OC_DRAM_RBLK; ///Bytes 645*53ee8cc1Swenshuai.xi MS_PHY u64GOP_OC_ADDRPROTECT_STR; ///Bytes 646*53ee8cc1Swenshuai.xi MS_PHY u64GOP_OC_ADDRPROTECT_END; ///Bytes 647*53ee8cc1Swenshuai.xi MS_U32 u32GOP_OC_FETCH; 648*53ee8cc1Swenshuai.xi MS_U16 u16GOP_OC_HSIZE; 649*53ee8cc1Swenshuai.xi MS_U16 u16GOP_OC_VSIZE; 650*53ee8cc1Swenshuai.xi MS_BOOL bGOP_OC_MIUID; 651*53ee8cc1Swenshuai.xi MS_U8 u8GOP_OC_BANK_MODE; 652*53ee8cc1Swenshuai.xi } DRV_GOP_OC_INFO; 653*53ee8cc1Swenshuai.xi 654*53ee8cc1Swenshuai.xi /// GWIN output color domain 655*53ee8cc1Swenshuai.xi typedef enum 656*53ee8cc1Swenshuai.xi { 657*53ee8cc1Swenshuai.xi DRV_GOPOUT_RGB, ///< 0: output color RGB 658*53ee8cc1Swenshuai.xi DRV_GOPOUT_YUV, ///< 1: output color YUV 659*53ee8cc1Swenshuai.xi } GOP_OupputColor; 660*53ee8cc1Swenshuai.xi 661*53ee8cc1Swenshuai.xi /// Transparent color format 662*53ee8cc1Swenshuai.xi typedef enum 663*53ee8cc1Swenshuai.xi { 664*53ee8cc1Swenshuai.xi DRV_GOPTRANSCLR_FMT0, //!< RGB mode transparent color 665*53ee8cc1Swenshuai.xi DRV_GOPTRANSCLR_FMT1, //!< index mode transparent color 666*53ee8cc1Swenshuai.xi DRV_GOPTRANSCLR_FMT2, //!< ARGB 8888 transparent color 667*53ee8cc1Swenshuai.xi DRV_GOPTRANSCLR_FMT3, //!< YUV mode transparent color 668*53ee8cc1Swenshuai.xi } GOP_TransClrFmt; 669*53ee8cc1Swenshuai.xi 670*53ee8cc1Swenshuai.xi /// Define Scaler GOP IP setting. 671*53ee8cc1Swenshuai.xi typedef enum 672*53ee8cc1Swenshuai.xi { 673*53ee8cc1Swenshuai.xi MS_DRV_IP0_SEL_GOP0, 674*53ee8cc1Swenshuai.xi MS_DRV_IP0_SEL_GOP1, 675*53ee8cc1Swenshuai.xi MS_DRV_IP0_SEL_GOP2, 676*53ee8cc1Swenshuai.xi MS_DRV_NIP_SEL_GOP0, 677*53ee8cc1Swenshuai.xi MS_DRV_NIP_SEL_GOP1, 678*53ee8cc1Swenshuai.xi MS_DRV_NIP_SEL_GOP2, 679*53ee8cc1Swenshuai.xi MS_DRV_MVOP_SEL, 680*53ee8cc1Swenshuai.xi MS_DRV_SUBMVOP_SEL, 681*53ee8cc1Swenshuai.xi MS_DRV_IP1_SEL, 682*53ee8cc1Swenshuai.xi MS_DRV_SUBIP0_SEL, 683*53ee8cc1Swenshuai.xi MS_DRV_SC1OP_SEL, 684*53ee8cc1Swenshuai.xi MS_DRV_DIP_SEL, 685*53ee8cc1Swenshuai.xi }MS_IPSEL_GOP; 686*53ee8cc1Swenshuai.xi 687*53ee8cc1Swenshuai.xi typedef enum 688*53ee8cc1Swenshuai.xi { 689*53ee8cc1Swenshuai.xi E_DRV_MIXER_DST_IP = 0, 690*53ee8cc1Swenshuai.xi E_DRV_MIXER_DST_MIXER = 1, 691*53ee8cc1Swenshuai.xi E_DRV_MIXER_DST_OP = 2, 692*53ee8cc1Swenshuai.xi E_DRV_MIXER_DST_VE = 3, 693*53ee8cc1Swenshuai.xi E_DRV_MIXER_DST_OP1 = 4, 694*53ee8cc1Swenshuai.xi MAX_DRV_MIXER_DST_SUPPORT , 695*53ee8cc1Swenshuai.xi E_DRV_MIXER_DST_INVALID = 0xFF, 696*53ee8cc1Swenshuai.xi } DRV_MixerDstType; 697*53ee8cc1Swenshuai.xi 698*53ee8cc1Swenshuai.xi /// Define GOP H-Stretch mode. 699*53ee8cc1Swenshuai.xi typedef enum 700*53ee8cc1Swenshuai.xi { 701*53ee8cc1Swenshuai.xi E_DRV_GOP_HSTRCH_6TAPE = 0, 702*53ee8cc1Swenshuai.xi E_DRV_GOP_HSTRCH_DUPLICATE = 1, 703*53ee8cc1Swenshuai.xi E_DRV_GOP_HSTRCH_6TAPE_LINEAR = 2, 704*53ee8cc1Swenshuai.xi E_DRV_GOP_HSTRCH_6TAPE_NEAREST = 3, 705*53ee8cc1Swenshuai.xi E_DRV_GOP_HSTRCH_6TAPE_GAIN0 = 4, 706*53ee8cc1Swenshuai.xi E_DRV_GOP_HSTRCH_6TAPE_GAIN1 = 5, 707*53ee8cc1Swenshuai.xi E_DRV_GOP_HSTRCH_6TAPE_GAIN2 = 6, 708*53ee8cc1Swenshuai.xi E_DRV_GOP_HSTRCH_6TAPE_GAIN3 = 7, 709*53ee8cc1Swenshuai.xi E_DRV_GOP_HSTRCH_6TAPE_GAIN4 = 8, 710*53ee8cc1Swenshuai.xi E_DRV_GOP_HSTRCH_6TAPE_GAIN5 = 9, 711*53ee8cc1Swenshuai.xi E_DRV_GOP_HSTRCH_4TAPE = 0xA, 712*53ee8cc1Swenshuai.xi E_DRV_GOP_HSTRCH_2TAPE = 0xB, 713*53ee8cc1Swenshuai.xi MAX_GOP_HSTRETCH_MODE_SUPPORT, 714*53ee8cc1Swenshuai.xi } DRV_GOPStrchHMode; 715*53ee8cc1Swenshuai.xi 716*53ee8cc1Swenshuai.xi /// Define GOP V-Stretch mode. 717*53ee8cc1Swenshuai.xi typedef enum 718*53ee8cc1Swenshuai.xi { 719*53ee8cc1Swenshuai.xi E_DRV_GOP_VSTRCH_LINEAR = 0, 720*53ee8cc1Swenshuai.xi E_DRV_GOP_VSTRCH_DUPLICATE = 1, 721*53ee8cc1Swenshuai.xi E_DRV_GOP_VSTRCH_NEAREST = 2, 722*53ee8cc1Swenshuai.xi E_DRV_GOP_VSTRCH_LINEAR_GAIN0 = 3, 723*53ee8cc1Swenshuai.xi E_DRV_GOP_VSTRCH_LINEAR_GAIN1 = 4, 724*53ee8cc1Swenshuai.xi E_DRV_GOP_VSTRCH_LINEAR_GAIN2 = 5, 725*53ee8cc1Swenshuai.xi E_DRV_GOP_VSTRCH_4TAP = 6, 726*53ee8cc1Swenshuai.xi MAX_GOP_VSTRETCH_MODE_SUPPORT, 727*53ee8cc1Swenshuai.xi } DRV_GOPStrchVMode; 728*53ee8cc1Swenshuai.xi 729*53ee8cc1Swenshuai.xi /// Define GOP Transparent color Stretch mode. 730*53ee8cc1Swenshuai.xi typedef enum 731*53ee8cc1Swenshuai.xi { 732*53ee8cc1Swenshuai.xi E_DRV_GOP_TRANSPCOLOR_STRCH_DUPLICATE = 0, 733*53ee8cc1Swenshuai.xi E_DRV_GOP_TRANSPCOLOR_STRCH_ASNORMAL = 1, 734*53ee8cc1Swenshuai.xi MAX_GOP_TRANSPCOLOR_STRETCH_MODE_SUPPORT, 735*53ee8cc1Swenshuai.xi } DRV_GOPSTRCH_TRANSPCOLORMODE; 736*53ee8cc1Swenshuai.xi 737*53ee8cc1Swenshuai.xi /// Define palette read type. 738*53ee8cc1Swenshuai.xi typedef enum 739*53ee8cc1Swenshuai.xi { 740*53ee8cc1Swenshuai.xi /// Palette access from GOP0 RIU 741*53ee8cc1Swenshuai.xi E_DRV_GOP_PAL_GOP_RIU = 0, 742*53ee8cc1Swenshuai.xi /// Palette access from GOP0 REGDMA 743*53ee8cc1Swenshuai.xi E_DRV_GOP_PAL_GOP_REGDMA = 1, 744*53ee8cc1Swenshuai.xi /// Palette access from GOP1 RIU 745*53ee8cc1Swenshuai.xi E_DRV_GOP1_PAL_GOP_RIU = 2, 746*53ee8cc1Swenshuai.xi /// Palette access from GOP1 REGDMA 747*53ee8cc1Swenshuai.xi E_DRV_GOP1_PAL_GOP_REGDMA = 3, 748*53ee8cc1Swenshuai.xi } DRV_GopPalReadType; 749*53ee8cc1Swenshuai.xi 750*53ee8cc1Swenshuai.xi /// Scroll direction 751*53ee8cc1Swenshuai.xi typedef enum 752*53ee8cc1Swenshuai.xi { 753*53ee8cc1Swenshuai.xi GOP_DRV_SCROLL_NONE = 0, 754*53ee8cc1Swenshuai.xi GOP_DRV_SCROLL_UP, // bottom to top 755*53ee8cc1Swenshuai.xi GOP_DRV_SCROLL_DOWN, // top to bottom 756*53ee8cc1Swenshuai.xi GOP_DRV_SCROLL_LEFT, //right to left 757*53ee8cc1Swenshuai.xi GOP_DRV_SCROLL_RIGHT, //left to right 758*53ee8cc1Swenshuai.xi GOP_DRV_SCROLL_SW, // Scroll by sw 759*53ee8cc1Swenshuai.xi GOP_DRV_SCROLL_KERNEL, // Scroll by sw on kernel 760*53ee8cc1Swenshuai.xi GOP_DRV_SCROLL_MAX, 761*53ee8cc1Swenshuai.xi } E_GOP_SCROLL_TYPE; 762*53ee8cc1Swenshuai.xi 763*53ee8cc1Swenshuai.xi /// DWIN capture data source 764*53ee8cc1Swenshuai.xi typedef enum 765*53ee8cc1Swenshuai.xi { 766*53ee8cc1Swenshuai.xi GOPDWIN_DATA_SRC_SCALAR, //!< scaler output 767*53ee8cc1Swenshuai.xi GOPDWIN_DATA_SRC_EXTRGB, //!< External, RGB, YUV(pass R2Y) 768*53ee8cc1Swenshuai.xi GOPDWIN_DATA_SRC_VOP, //!< DVB VOP (MVOP) 769*53ee8cc1Swenshuai.xi GOPDWIN_DATA_SRC_MAX 770*53ee8cc1Swenshuai.xi } EN_GOP_DWIN_DATA_SRC; 771*53ee8cc1Swenshuai.xi 772*53ee8cc1Swenshuai.xi /// DWIN scan mode 773*53ee8cc1Swenshuai.xi typedef enum 774*53ee8cc1Swenshuai.xi { 775*53ee8cc1Swenshuai.xi GOPDWIN_SCAN_MODE_PROGRESSIVE, ///< Progressive scan 776*53ee8cc1Swenshuai.xi GOPDWIN_SCAN_MODE_INTERLACE, ///< Interlace scan 777*53ee8cc1Swenshuai.xi GOPDWIN_SCAN_MODE_MAX 778*53ee8cc1Swenshuai.xi } EN_GOP_DWIN_SCAN_TYPE; 779*53ee8cc1Swenshuai.xi 780*53ee8cc1Swenshuai.xi /// DWIN source selection 781*53ee8cc1Swenshuai.xi typedef enum 782*53ee8cc1Swenshuai.xi { 783*53ee8cc1Swenshuai.xi /// DWIN OP source 784*53ee8cc1Swenshuai.xi GOP_DRV_DWIN_SRC_OP = 0, 785*53ee8cc1Swenshuai.xi /// DWIN MVOP source 786*53ee8cc1Swenshuai.xi GOP_DRV_DWIN_SRC_MVOP = 1, 787*53ee8cc1Swenshuai.xi /// DWIN IP source 788*53ee8cc1Swenshuai.xi GOP_DRV_DWIN_SRC_IP = 2, 789*53ee8cc1Swenshuai.xi /// DWIN OP1 source 790*53ee8cc1Swenshuai.xi GOP_DRV_DWIN_SRC_OP1 =3, 791*53ee8cc1Swenshuai.xi /// DWIN SUB MVOP source 792*53ee8cc1Swenshuai.xi GOP_DRV_DWIN_SRC_SUBMVOP =4, 793*53ee8cc1Swenshuai.xi /// DWIN GOPScaling source 794*53ee8cc1Swenshuai.xi GOP_DRV_DWIN_SRC_GOPScaling =5, 795*53ee8cc1Swenshuai.xi GOP_DRV_DWIN_SRC_MAX = 6 796*53ee8cc1Swenshuai.xi }DRV_GOP_DWIN_SRC_SEL; 797*53ee8cc1Swenshuai.xi 798*53ee8cc1Swenshuai.xi /// DWIN source data format 799*53ee8cc1Swenshuai.xi typedef enum 800*53ee8cc1Swenshuai.xi { 801*53ee8cc1Swenshuai.xi GOPDWIN_DATA_FMT_UV7Y8 = 0, //!< CrYCb domain 802*53ee8cc1Swenshuai.xi GOPDWIN_DATA_FMT_UV8Y8, //!< CrYCb domain 803*53ee8cc1Swenshuai.xi GOPDWIN_DATA_FMT_ARGB8888, //!< RGB domain (CSC bypass) 804*53ee8cc1Swenshuai.xi GOPDWIN_DATA_FMT_RGB565, //!< RGB domain (CSC bypass) 805*53ee8cc1Swenshuai.xi GOPDWIN_DATA_FMT_MAX 806*53ee8cc1Swenshuai.xi } DRV_GOP_DWIN_DATA_FMT; 807*53ee8cc1Swenshuai.xi 808*53ee8cc1Swenshuai.xi /// Define palette color format. 809*53ee8cc1Swenshuai.xi typedef enum 810*53ee8cc1Swenshuai.xi { 811*53ee8cc1Swenshuai.xi /// Palette color format is RGB888. 812*53ee8cc1Swenshuai.xi E_DRV_GOP_PAL_ARGB8888 = 0, 813*53ee8cc1Swenshuai.xi /// Invalid palette color format. 814*53ee8cc1Swenshuai.xi E_DRV_GOP_PAL_INVALID 815*53ee8cc1Swenshuai.xi } DRV_GopPalType; 816*53ee8cc1Swenshuai.xi 817*53ee8cc1Swenshuai.xi /// Define GOP gwin fade in/out. 818*53ee8cc1Swenshuai.xi typedef enum 819*53ee8cc1Swenshuai.xi { 820*53ee8cc1Swenshuai.xi /// GOP gwin fade in. 821*53ee8cc1Swenshuai.xi E_DRV_GOP_GWIN_FADE_IN, 822*53ee8cc1Swenshuai.xi /// GOP gwin fade out. 823*53ee8cc1Swenshuai.xi E_DRV_GOP_GWIN_FADE_OUT, 824*53ee8cc1Swenshuai.xi /// GOP gwin fade unknow type. 825*53ee8cc1Swenshuai.xi E_DRV_GOP_GWIN_FADE_UNKNOWN, 826*53ee8cc1Swenshuai.xi } DRV_GOP_FADE_TYPE; 827*53ee8cc1Swenshuai.xi 828*53ee8cc1Swenshuai.xi //---------------------------------------------------------------------------- 829*53ee8cc1Swenshuai.xi // GOP Reg Page Form 830*53ee8cc1Swenshuai.xi //---------------------------------------------------------------------------- 831*53ee8cc1Swenshuai.xi typedef enum 832*53ee8cc1Swenshuai.xi { 833*53ee8cc1Swenshuai.xi E_GOP_REG_FORM_4G = 0x0000, 834*53ee8cc1Swenshuai.xi E_GOP_REG_FORM_T21G = 0x0001, 835*53ee8cc1Swenshuai.xi E_GOP_REG_FORM_2G = 0x0002, 836*53ee8cc1Swenshuai.xi E_GOP_REG_FORM_T81G = 0x0003, 837*53ee8cc1Swenshuai.xi E_GOP_REG_FORM_U42G = 0x0004, 838*53ee8cc1Swenshuai.xi E_GOP_REG_FORM_NONE = 0x000F, 839*53ee8cc1Swenshuai.xi E_GOP_REG_FORM_MASK = 0x000F, 840*53ee8cc1Swenshuai.xi } E_GOP_REG_FORM; 841*53ee8cc1Swenshuai.xi 842*53ee8cc1Swenshuai.xi typedef enum 843*53ee8cc1Swenshuai.xi { 844*53ee8cc1Swenshuai.xi E_GOPD_FIFO_DEPTH_64 = 0x0000, 845*53ee8cc1Swenshuai.xi E_GOPD_FIFO_DEPTH_128 = 0x0010, 846*53ee8cc1Swenshuai.xi E_GOPD_FIFO_DEPTH_256 = 0x0020, 847*53ee8cc1Swenshuai.xi E_GOPD_FIFO_DEPTH_MASK = 0x00F0, 848*53ee8cc1Swenshuai.xi } E_GOPD_FIFO_DEPTH; 849*53ee8cc1Swenshuai.xi 850*53ee8cc1Swenshuai.xi // GOP palette type 851*53ee8cc1Swenshuai.xi typedef enum 852*53ee8cc1Swenshuai.xi { 853*53ee8cc1Swenshuai.xi E_GOP_PAL_SIZE_NONE = 0x0000, 854*53ee8cc1Swenshuai.xi E_GOP_PAL_SIZE_256 = 0x0100, 855*53ee8cc1Swenshuai.xi E_GOP_PAL_SIZE_64 = 0x0200, 856*53ee8cc1Swenshuai.xi E_GOP_PAL_SIZE_MASK = 0x0F00, 857*53ee8cc1Swenshuai.xi } E_GOP_PAL_SIZE; 858*53ee8cc1Swenshuai.xi 859*53ee8cc1Swenshuai.xi /// GOP VE timing type 860*53ee8cc1Swenshuai.xi typedef enum 861*53ee8cc1Swenshuai.xi { 862*53ee8cc1Swenshuai.xi E_GOP_VE_NTSC , 863*53ee8cc1Swenshuai.xi E_GOP_VE_PAL, 864*53ee8cc1Swenshuai.xi E_GOP_VE_TIMEING_MAX, 865*53ee8cc1Swenshuai.xi }E_GOP_VE_TIMINGTYPE; 866*53ee8cc1Swenshuai.xi 867*53ee8cc1Swenshuai.xi /// GOP MIXER timing type 868*53ee8cc1Swenshuai.xi typedef enum 869*53ee8cc1Swenshuai.xi { 870*53ee8cc1Swenshuai.xi E_GOP_NTSC , 871*53ee8cc1Swenshuai.xi E_GOP_PAL, 872*53ee8cc1Swenshuai.xi E_GOP_CUSTOM, 873*53ee8cc1Swenshuai.xi E_GOP_CUSTOM_OP, 874*53ee8cc1Swenshuai.xi E_GOP_MIXER_TIMEING_MAX, 875*53ee8cc1Swenshuai.xi }E_GOP_MIXER_TIMINGTYPE; 876*53ee8cc1Swenshuai.xi 877*53ee8cc1Swenshuai.xi /// video timing mirror type 878*53ee8cc1Swenshuai.xi typedef enum 879*53ee8cc1Swenshuai.xi { 880*53ee8cc1Swenshuai.xi E_GOP_VIDEOTIMING_MIRROR_BYSCALER, 881*53ee8cc1Swenshuai.xi E_GOP_VIDEOTIMING_MIRROR_BYMVOP, 882*53ee8cc1Swenshuai.xi E_GOP_VIDEOTIMING_MIRROR_MAX, 883*53ee8cc1Swenshuai.xi }E_GOP_VIDEOTIMING_MIRRORTYPE; 884*53ee8cc1Swenshuai.xi 885*53ee8cc1Swenshuai.xi 886*53ee8cc1Swenshuai.xi /// Define GOP burst length. 887*53ee8cc1Swenshuai.xi typedef enum 888*53ee8cc1Swenshuai.xi { 889*53ee8cc1Swenshuai.xi /// burst length: long 890*53ee8cc1Swenshuai.xi E_GOP_BURSTLEN_LONG, 891*53ee8cc1Swenshuai.xi /// burst length: middle 892*53ee8cc1Swenshuai.xi E_GOP_BURSTLEN_MIDDLE, 893*53ee8cc1Swenshuai.xi /// burst length: short 894*53ee8cc1Swenshuai.xi E_GOP_BURSTLEN_SHORT, 895*53ee8cc1Swenshuai.xi } EN_GOP_BURST_LEN; 896*53ee8cc1Swenshuai.xi 897*53ee8cc1Swenshuai.xi /// Define GOP G3D DATA FORMAT. 898*53ee8cc1Swenshuai.xi typedef enum 899*53ee8cc1Swenshuai.xi { 900*53ee8cc1Swenshuai.xi /// E_GOP_TILE_DATA_16BPP. 16 BPP DATA FOR TILE MODE 901*53ee8cc1Swenshuai.xi E_DRV_GOP_TILE_DATA_16BPP = 0, 902*53ee8cc1Swenshuai.xi /// E_GOP_TILE_DATA_16BPP. 32 BPP DATA FOR TILE MODE 903*53ee8cc1Swenshuai.xi E_DRV_GOP_TILE_DATA_32BPP = 1, 904*53ee8cc1Swenshuai.xi } E_GOP_TILE_DATA_TYPE; 905*53ee8cc1Swenshuai.xi 906*53ee8cc1Swenshuai.xi /// Define GOP MIU SEL 907*53ee8cc1Swenshuai.xi typedef enum 908*53ee8cc1Swenshuai.xi { 909*53ee8cc1Swenshuai.xi /// E_DRV_GOP_SEL_MIU0. gop access miu 0 910*53ee8cc1Swenshuai.xi E_DRV_GOP_SEL_MIU0 = 0, 911*53ee8cc1Swenshuai.xi /// E_GOP_SEL_MIU1. gop access miu1 912*53ee8cc1Swenshuai.xi E_DRV_GOP_SEL_MIU1 = 1, 913*53ee8cc1Swenshuai.xi /// E_GOP_SEL_MIU2. gop access miu2 914*53ee8cc1Swenshuai.xi E_DRV_GOP_SEL_MIU2 = 2, 915*53ee8cc1Swenshuai.xi /// E_GOP_SEL_MIU3. gop access miu3 916*53ee8cc1Swenshuai.xi E_DRV_GOP_SEL_MIU3 = 3, 917*53ee8cc1Swenshuai.xi } E_DRV_GOP_SEL_TYPE; 918*53ee8cc1Swenshuai.xi 919*53ee8cc1Swenshuai.xi /// Define GOP PINPON Mode 920*53ee8cc1Swenshuai.xi typedef enum 921*53ee8cc1Swenshuai.xi { 922*53ee8cc1Swenshuai.xi /// E_DRV_GOP_PINPON_G3D. gop set g3d pinpon 923*53ee8cc1Swenshuai.xi E_DRV_GOP_PINPON_G3D = 0, 924*53ee8cc1Swenshuai.xi /// E_DRV_GOP_PINPON_VE. gop set ve pinpon 925*53ee8cc1Swenshuai.xi E_DRV_GOP_PINPON_VE = 1, 926*53ee8cc1Swenshuai.xi /// E_DRV_GOP_PINPON_DWIN. gop set dwin pinpon 927*53ee8cc1Swenshuai.xi E_DRV_GOP_PINPON_DWIN = 2, 928*53ee8cc1Swenshuai.xi /// E_DRV_GOP_PINPON_DIP. gop set dwin pinpon 929*53ee8cc1Swenshuai.xi E_DRV_GOP_PINPON_DIP = 3, 930*53ee8cc1Swenshuai.xi /// E_DRV_GOP_PINPON_DWIN0. gop set dwin pinpon 931*53ee8cc1Swenshuai.xi E_DRV_GOP_PINPON_DWIN0 = 4, 932*53ee8cc1Swenshuai.xi /// E_DRV_GOP_PINPON_DWIN1. gop set dwin pinpon 933*53ee8cc1Swenshuai.xi E_DRV_GOP_PINPON_DWIN1 = 5, 934*53ee8cc1Swenshuai.xi 935*53ee8cc1Swenshuai.xi } E_DRV_GOP_PINPON_MODE; 936*53ee8cc1Swenshuai.xi 937*53ee8cc1Swenshuai.xi 938*53ee8cc1Swenshuai.xi 939*53ee8cc1Swenshuai.xi /// Define the entry of palette. 940*53ee8cc1Swenshuai.xi typedef union DLL_PACKED 941*53ee8cc1Swenshuai.xi { 942*53ee8cc1Swenshuai.xi /// ARGB888 943*53ee8cc1Swenshuai.xi struct DLL_PACKED 944*53ee8cc1Swenshuai.xi { 945*53ee8cc1Swenshuai.xi MS_U8 u8A; 946*53ee8cc1Swenshuai.xi MS_U8 u8R; 947*53ee8cc1Swenshuai.xi MS_U8 u8G; 948*53ee8cc1Swenshuai.xi MS_U8 u8B; 949*53ee8cc1Swenshuai.xi } RGB; 950*53ee8cc1Swenshuai.xi /// 32-bit direct access. 951*53ee8cc1Swenshuai.xi MS_U8 u8Data[4]; 952*53ee8cc1Swenshuai.xi } DRV_GopPaletteEntry; 953*53ee8cc1Swenshuai.xi 954*53ee8cc1Swenshuai.xi typedef enum 955*53ee8cc1Swenshuai.xi { 956*53ee8cc1Swenshuai.xi GOP_WINFB_POOL_NULL = 0, 957*53ee8cc1Swenshuai.xi GOP_WINFB_POOL1 = 1, 958*53ee8cc1Swenshuai.xi GOP_WINFB_POOL2= 2 959*53ee8cc1Swenshuai.xi }GOP_FBPOOL_ID; 960*53ee8cc1Swenshuai.xi 961*53ee8cc1Swenshuai.xi typedef enum 962*53ee8cc1Swenshuai.xi { 963*53ee8cc1Swenshuai.xi E_DRV_GOP_AFBC_SPILT =0x1, 964*53ee8cc1Swenshuai.xi E_DRV_GOP_AFBC_YUV_TRANSFER =0x2, 965*53ee8cc1Swenshuai.xi E_DRV_GOP_AFBC_ARGB8888 =0x4, 966*53ee8cc1Swenshuai.xi E_DRV_GOP_AFBC_MAX, 967*53ee8cc1Swenshuai.xi }EN_DRV_GOP_AFBC_CNTL; 968*53ee8cc1Swenshuai.xi 969*53ee8cc1Swenshuai.xi /// Define GOP FB string. 970*53ee8cc1Swenshuai.xi typedef enum 971*53ee8cc1Swenshuai.xi { 972*53ee8cc1Swenshuai.xi E_DRV_GOP_FB_NULL, 973*53ee8cc1Swenshuai.xi /// OSD frame buffer. 974*53ee8cc1Swenshuai.xi E_DRV_GOP_FB_OSD, 975*53ee8cc1Swenshuai.xi /// Mute frame buffer. 976*53ee8cc1Swenshuai.xi E_DRV_GOP_FB_MUTE, 977*53ee8cc1Swenshuai.xi /// subtitle frame buffer. 978*53ee8cc1Swenshuai.xi E_DRV_GOP_FB_SUBTITLE, 979*53ee8cc1Swenshuai.xi /// teltext frame buffer. 980*53ee8cc1Swenshuai.xi E_DRV_GOP_FB_TELTEXT, 981*53ee8cc1Swenshuai.xi /// MHEG5 frame buffer. 982*53ee8cc1Swenshuai.xi E_DRV_GOP_FB_MHEG5, 983*53ee8cc1Swenshuai.xi /// CC frame buffer. 984*53ee8cc1Swenshuai.xi E_DRV_GOP_FB_CLOSEDCAPTION, 985*53ee8cc1Swenshuai.xi /// AFBC frame buffer. 986*53ee8cc1Swenshuai.xi E_DRV_GOP_FB_AFBC_SPLT_YUVTRNSFER_ARGB8888 = 0x100, 987*53ee8cc1Swenshuai.xi E_DRV_GOP_FB_AFBC_NONSPLT_YUVTRS_ARGB8888, 988*53ee8cc1Swenshuai.xi E_DRV_GOP_FB_AFBC_SPLT_NONYUVTRS_ARGB8888, 989*53ee8cc1Swenshuai.xi E_DRV_GOP_FB_AFBC_NONSPLT_NONYUVTRS_ARGB8888, 990*53ee8cc1Swenshuai.xi } EN_DRV_FRAMEBUFFER_STRING; 991*53ee8cc1Swenshuai.xi 992*53ee8cc1Swenshuai.xi /// Frame buffer attributes for GWIN 993*53ee8cc1Swenshuai.xi typedef struct __attribute__((packed)) 994*53ee8cc1Swenshuai.xi { 995*53ee8cc1Swenshuai.xi MS_PHY addr; ///< MS_U64 /*For 32/64 share memory align*/ 996*53ee8cc1Swenshuai.xi MS_U32 size; ///< MS_U32 997*53ee8cc1Swenshuai.xi MS_U32 nextFBIdInPool; ///next winId in same pool 998*53ee8cc1Swenshuai.xi 999*53ee8cc1Swenshuai.xi MS_U16 x0; ///< MS_U16 1000*53ee8cc1Swenshuai.xi MS_U16 y0; ///< MS_U16 1001*53ee8cc1Swenshuai.xi MS_U16 x1; ///< MS_U16 1002*53ee8cc1Swenshuai.xi MS_U16 y1; ///< MS_U16 1003*53ee8cc1Swenshuai.xi MS_U16 width; ///< MS_U16 1004*53ee8cc1Swenshuai.xi MS_U16 height; ///< MS_U16 1005*53ee8cc1Swenshuai.xi MS_U16 pitch; ///< MS_U16 1006*53ee8cc1Swenshuai.xi MS_U16 fbFmt; ///< MS_U16 1007*53ee8cc1Swenshuai.xi 1008*53ee8cc1Swenshuai.xi MS_U16 s_x; ///< MS_U16 1009*53ee8cc1Swenshuai.xi MS_U16 s_y; ///< MS_U16 1010*53ee8cc1Swenshuai.xi MS_U16 dispWidth; ///< MS_U16 1011*53ee8cc1Swenshuai.xi MS_U16 dispHeight; ///< MS_U16 1012*53ee8cc1Swenshuai.xi 1013*53ee8cc1Swenshuai.xi GOP_FBPOOL_ID poolId; 1014*53ee8cc1Swenshuai.xi 1015*53ee8cc1Swenshuai.xi MS_U8 gWinId; 1016*53ee8cc1Swenshuai.xi MS_U8 string; ///store which AP use this FB 1017*53ee8cc1Swenshuai.xi MS_U8 enable:1; 1018*53ee8cc1Swenshuai.xi MS_U8 in_use:1; 1019*53ee8cc1Swenshuai.xi MS_U32 u32GOPClientId; ///<<store Client ID of using this FB 1020*53ee8cc1Swenshuai.xi MS_U8 obtain; 1021*53ee8cc1Swenshuai.xi EN_DRV_FRAMEBUFFER_STRING FBString; 1022*53ee8cc1Swenshuai.xi } GOP_WinFB_INFO; 1023*53ee8cc1Swenshuai.xi 1024*53ee8cc1Swenshuai.xi typedef struct __attribute__((packed)) 1025*53ee8cc1Swenshuai.xi { 1026*53ee8cc1Swenshuai.xi MS_U32 PalSWArray[GOP_PALETTE_ENTRY_NUM_MAX]; 1027*53ee8cc1Swenshuai.xi }GOP_Palette_INFO; 1028*53ee8cc1Swenshuai.xi 1029*53ee8cc1Swenshuai.xi typedef struct __attribute__((packed)) 1030*53ee8cc1Swenshuai.xi { 1031*53ee8cc1Swenshuai.xi GOP_FBPOOL_ID poolId; 1032*53ee8cc1Swenshuai.xi MS_PHY GWinFB_Pool_BaseAddr; 1033*53ee8cc1Swenshuai.xi MS_U32 u32GWinFB_Pool_MemLen; 1034*53ee8cc1Swenshuai.xi MS_U32 u32FirstFBIdInPool; 1035*53ee8cc1Swenshuai.xi }GOP_FB_POOL; 1036*53ee8cc1Swenshuai.xi 1037*53ee8cc1Swenshuai.xi typedef struct __attribute__((packed)) 1038*53ee8cc1Swenshuai.xi { 1039*53ee8cc1Swenshuai.xi MS_U32 u32GOPClientId; 1040*53ee8cc1Swenshuai.xi MS_U32 u32CurFBId; 1041*53ee8cc1Swenshuai.xi MS_U16 u16SharedCnt; 1042*53ee8cc1Swenshuai.xi MS_BOOL bIsShared; 1043*53ee8cc1Swenshuai.xi }GWIN_MAP; 1044*53ee8cc1Swenshuai.xi 1045*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 1046*53ee8cc1Swenshuai.xi { 1047*53ee8cc1Swenshuai.xi MS_PHY u64NonMirrorFBAdr; 1048*53ee8cc1Swenshuai.xi MS_U16 u16NonMirrorHStr; 1049*53ee8cc1Swenshuai.xi MS_U16 u16NonMirrorHEnd; 1050*53ee8cc1Swenshuai.xi MS_U16 u16NonMirrorVStr; 1051*53ee8cc1Swenshuai.xi MS_U16 u16NonMirrorVEnd; 1052*53ee8cc1Swenshuai.xi MS_U16 u16NonMirrorGOP0WinX; 1053*53ee8cc1Swenshuai.xi MS_U16 u16NonMirrorGOP0WinY; 1054*53ee8cc1Swenshuai.xi }GOP_GwinMirror_Info; 1055*53ee8cc1Swenshuai.xi 1056*53ee8cc1Swenshuai.xi ///the GOP MIXER timing info 1057*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 1058*53ee8cc1Swenshuai.xi { 1059*53ee8cc1Swenshuai.xi MS_U32 hstart; 1060*53ee8cc1Swenshuai.xi MS_U32 hend; 1061*53ee8cc1Swenshuai.xi MS_U32 vstart; 1062*53ee8cc1Swenshuai.xi MS_U32 vend; 1063*53ee8cc1Swenshuai.xi MS_U32 htotal; 1064*53ee8cc1Swenshuai.xi MS_U32 hsyncdelay; 1065*53ee8cc1Swenshuai.xi }GOP_DRV_MixerTiming; 1066*53ee8cc1Swenshuai.xi 1067*53ee8cc1Swenshuai.xi ///GOP Ignore init value 1068*53ee8cc1Swenshuai.xi typedef enum 1069*53ee8cc1Swenshuai.xi { 1070*53ee8cc1Swenshuai.xi E_DRV_GOP_MUX_IGNORE = 0x0001, 1071*53ee8cc1Swenshuai.xi E_DRV_GOP_GWIN_IGNORE = 0x0002, 1072*53ee8cc1Swenshuai.xi E_DRV_GOP_STRETCHWIN_IGNORE = 0x0004, 1073*53ee8cc1Swenshuai.xi E_DRV_GOP_PALETTE_IGNORE = 0x0008, 1074*53ee8cc1Swenshuai.xi E_DRV_GOP_SET_DST_OP_IGNORE = 0x0010, 1075*53ee8cc1Swenshuai.xi E_DRV_GOP_ENABLE_TRANSCLR_IGNORE = 0x0020, 1076*53ee8cc1Swenshuai.xi E_DRV_GOP_ALL_IGNORE = 0xFFFF, 1077*53ee8cc1Swenshuai.xi } DRV_GOP_IGNOREINIT; 1078*53ee8cc1Swenshuai.xi 1079*53ee8cc1Swenshuai.xi ///the GOP config 1080*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 1081*53ee8cc1Swenshuai.xi { 1082*53ee8cc1Swenshuai.xi DRV_GOP_IGNOREINIT eGopIgnoreInit; 1083*53ee8cc1Swenshuai.xi }GOP_Config; 1084*53ee8cc1Swenshuai.xi 1085*53ee8cc1Swenshuai.xi typedef struct __attribute__((packed)) 1086*53ee8cc1Swenshuai.xi { 1087*53ee8cc1Swenshuai.xi MS_U32 u32ClientIdAllocator; 1088*53ee8cc1Swenshuai.xi MS_U32 u32LstGOPClientId; 1089*53ee8cc1Swenshuai.xi MS_U16 u16PnlWidth[SHARED_GOP_MAX_COUNT]; 1090*53ee8cc1Swenshuai.xi MS_U16 u16PnlHeight[SHARED_GOP_MAX_COUNT]; 1091*53ee8cc1Swenshuai.xi MS_U16 u16PnlHStr[SHARED_GOP_MAX_COUNT]; 1092*53ee8cc1Swenshuai.xi MS_BOOL bHMirror; 1093*53ee8cc1Swenshuai.xi MS_BOOL bVMirror; 1094*53ee8cc1Swenshuai.xi MS_BOOL b16TileMode[SHARED_GOP_MAX_COUNT]; 1095*53ee8cc1Swenshuai.xi MS_BOOL b32TileMode[SHARED_GOP_MAX_COUNT]; 1096*53ee8cc1Swenshuai.xi MS_U16 ScrollBufNum; 1097*53ee8cc1Swenshuai.xi MS_U16 ScrollBufIdx; 1098*53ee8cc1Swenshuai.xi MS_U32 ScrollBuffer[MAX_GOP_SW_SCROLLNUM]; 1099*53ee8cc1Swenshuai.xi 1100*53ee8cc1Swenshuai.xi GWIN_MAP gwinMap[SHARED_GWIN_MAX_COUNT]; 1101*53ee8cc1Swenshuai.xi 1102*53ee8cc1Swenshuai.xi GOP_FB_POOL fbPool1; 1103*53ee8cc1Swenshuai.xi GOP_FB_POOL fbPool2; 1104*53ee8cc1Swenshuai.xi GOP_FBPOOL_ID fb_currentPoolId; 1105*53ee8cc1Swenshuai.xi 1106*53ee8cc1Swenshuai.xi MS_S32 s32OutputColorType[SHARED_GOP_MAX_COUNT]; 1107*53ee8cc1Swenshuai.xi MS_BOOL bGopHasInitialized[SHARED_GOP_MAX_COUNT]; 1108*53ee8cc1Swenshuai.xi MS_BOOL bGWINEnable[SHARED_GWIN_MAX_COUNT]; 1109*53ee8cc1Swenshuai.xi #if WINFB_INSHARED 1110*53ee8cc1Swenshuai.xi GOP_WinFB_INFO winFB[DRV_MAX_GWIN_FB_SUPPORT+1]; 1111*53ee8cc1Swenshuai.xi #endif 1112*53ee8cc1Swenshuai.xi MS_U8 GOP_StereoMode[SHARED_GOP_MAX_COUNT]; 1113*53ee8cc1Swenshuai.xi MS_U16 u16APIStretchWidth[SHARED_GOP_MAX_COUNT]; //Store API set stretch win width(May Not sync with HW register in GOP 3D SBS mode) 1114*53ee8cc1Swenshuai.xi MS_U16 u16APIStretchHeight[SHARED_GOP_MAX_COUNT]; 1115*53ee8cc1Swenshuai.xi MS_U8 GOP_TestPatternMode; 1116*53ee8cc1Swenshuai.xi MS_BOOL bGOP3DLRSwitch[SHARED_GOP_MAX_COUNT]; //GOP 3D L/R Switch flag 1117*53ee8cc1Swenshuai.xi MS_U16 u16HScaleDst[SHARED_GOP_MAX_COUNT]; 1118*53ee8cc1Swenshuai.xi MS_U16 u16VScaleDst[SHARED_GOP_MAX_COUNT]; 1119*53ee8cc1Swenshuai.xi MS_BOOL bPixelMode[SHARED_GOP_MAX_COUNT]; 1120*53ee8cc1Swenshuai.xi MS_BOOL bInitShared; 1121*53ee8cc1Swenshuai.xi MS_BOOL bDummyInit;//TRUE: the gop init's input parameter is NULL when SHM is firstly initialized 1122*53ee8cc1Swenshuai.xi MS_BOOL bEnableVsyncIntFlip; 1123*53ee8cc1Swenshuai.xi MS_S32 s32GOPLockTid; 1124*53ee8cc1Swenshuai.xi MS_U32 GOPLockPid; 1125*53ee8cc1Swenshuai.xi MS_BOOL bTLB[SHARED_GOP_MAX_COUNT]; 1126*53ee8cc1Swenshuai.xi MS_PHY u64TLBAddress[SHARED_GOP_MAX_COUNT]; 1127*53ee8cc1Swenshuai.xi GOP_Palette_INFO GOPPaletteInfo[SHARED_GOP_MAX_COUNT]; 1128*53ee8cc1Swenshuai.xi #ifdef CONFIG_MSTAR_SRAMPD 1129*53ee8cc1Swenshuai.xi MS_BOOL bGOPPowerDown[SHARED_GOP_MAX_COUNT]; 1130*53ee8cc1Swenshuai.xi #endif 1131*53ee8cc1Swenshuai.xi MS_PHY phyGOPRegdmaAdr; 1132*53ee8cc1Swenshuai.xi MS_U32 u32GOPRegdmaLen; 1133*53ee8cc1Swenshuai.xi } MS_GOP_CTX_SHARED; 1134*53ee8cc1Swenshuai.xi 1135*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 1136*53ee8cc1Swenshuai.xi { 1137*53ee8cc1Swenshuai.xi MS_GOP_CTX_SHARED *pGOPCtxShared;//pointer to shared context paramemetrs; 1138*53ee8cc1Swenshuai.xi GOP_CHIP_PROPERTY *pGopChipProperty; 1139*53ee8cc1Swenshuai.xi DRV_GOP_CONSALPHA_BITS *pGopConsAlphaBits; 1140*53ee8cc1Swenshuai.xi GOP_Config sGOPConfig; //GOP configs set for special cases 1141*53ee8cc1Swenshuai.xi MS_U32 u32GOPClientId; 1142*53ee8cc1Swenshuai.xi #if GOP_LOCK_SUPPORT 1143*53ee8cc1Swenshuai.xi MS_S32 s32GOPMutex; 1144*53ee8cc1Swenshuai.xi MS_S32 s32GOPLock; 1145*53ee8cc1Swenshuai.xi MS_S32 s32GOPMutexCnt; 1146*53ee8cc1Swenshuai.xi #endif 1147*53ee8cc1Swenshuai.xi #if GOP_XC_LOCK_SUPPORT 1148*53ee8cc1Swenshuai.xi MS_S32 s32GOPXC_Mutex; 1149*53ee8cc1Swenshuai.xi MS_S32 s32GOPXC_Lock; 1150*53ee8cc1Swenshuai.xi MS_S32 s32GOPXC_MutexCnt; 1151*53ee8cc1Swenshuai.xi #endif 1152*53ee8cc1Swenshuai.xi //for local GWIN memory pool 1153*53ee8cc1Swenshuai.xi 1154*53ee8cc1Swenshuai.xi #if WINFB_INSHARED 1155*53ee8cc1Swenshuai.xi //GOP_WinFB_INFO winFB[MAX_GWIN_FB_SUPPORT+1]; //move to MS_GOP_CTX_SHARED 1156*53ee8cc1Swenshuai.xi #else 1157*53ee8cc1Swenshuai.xi GOP_WinFB_INFO winFB[DRV_MAX_GWIN_FB_SUPPORT+1]; 1158*53ee8cc1Swenshuai.xi #endif 1159*53ee8cc1Swenshuai.xi MS_U8 current_winId; 1160*53ee8cc1Swenshuai.xi 1161*53ee8cc1Swenshuai.xi 1162*53ee8cc1Swenshuai.xi MS_BOOL Gwin_H_Dup, Gwin_V_Dup; 1163*53ee8cc1Swenshuai.xi MS_U16 u16GOP_HMirrorRBLK_Adr; //Consider 16Gwins totally 1164*53ee8cc1Swenshuai.xi MS_U16 u16GOP_VMirrorRBLK_Adr; //Consider 16Gwins totally 1165*53ee8cc1Swenshuai.xi MS_U16 u16GOP_HMirror_HPos; //Consider 16Gwins totally 1166*53ee8cc1Swenshuai.xi MS_U16 u16GOP_VMirror_VPos; //Consider 16Gwins totally 1167*53ee8cc1Swenshuai.xi 1168*53ee8cc1Swenshuai.xi GOP_GwinMirror_Info* sMirrorInfo; 1169*53ee8cc1Swenshuai.xi MS_U8 MS_MuxGop[MAX_GOP_MUX_SUPPORT]; 1170*53ee8cc1Swenshuai.xi MS_U8 u8ChgIpMuxGop; 1171*53ee8cc1Swenshuai.xi MS_BOOL IsChgMux; 1172*53ee8cc1Swenshuai.xi MS_BOOL IsClkClosed; 1173*53ee8cc1Swenshuai.xi MS_BOOL bUpdateRegOnce[SHARED_GOP_MAX_COUNT]; 1174*53ee8cc1Swenshuai.xi #ifdef CONFIG_GOP_TEST_PATTERN 1175*53ee8cc1Swenshuai.xi MS_U16 GOPBnk[SHARED_GOP_MAX_COUNT][GOP_REG_MAX]; 1176*53ee8cc1Swenshuai.xi MS_U16 GWINBnk[SHARED_GOP_MAX_COUNT][GOP_REG_MAX]; 1177*53ee8cc1Swenshuai.xi MS_U16 GOPStBnk[SHARED_GOP_MAX_COUNT][GOP_REG_MAX]; 1178*53ee8cc1Swenshuai.xi #endif 1179*53ee8cc1Swenshuai.xi MS_U16 GOP_FramePacking_Gap; 1180*53ee8cc1Swenshuai.xi MS_U16 u16GOPGWinMiddle[SHARED_GOP_MAX_COUNT]; 1181*53ee8cc1Swenshuai.xi 1182*53ee8cc1Swenshuai.xi MS_BOOL bInitFWR; 1183*53ee8cc1Swenshuai.xi }MS_GOP_CTX_LOCAL; 1184*53ee8cc1Swenshuai.xi 1185*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 1186*53ee8cc1Swenshuai.xi { 1187*53ee8cc1Swenshuai.xi MS_BOOL bEnable; //InOut 1188*53ee8cc1Swenshuai.xi MS_U8 u8FrameCount; //Out, value range: 0~3 1189*53ee8cc1Swenshuai.xi MS_U8 u8Result; //Out 1190*53ee8cc1Swenshuai.xi }MS_DRVGOP_VECAPTURESTATE, *PMS_DRVGOP_VECAPTURESTATE; 1191*53ee8cc1Swenshuai.xi 1192*53ee8cc1Swenshuai.xi 1193*53ee8cc1Swenshuai.xi //3D OSD mode type 1194*53ee8cc1Swenshuai.xi typedef enum 1195*53ee8cc1Swenshuai.xi { 1196*53ee8cc1Swenshuai.xi E_DRV_GOP_3D_DISABLE , 1197*53ee8cc1Swenshuai.xi E_DRV_GOP_3D_SWITH_BY_FRAME, 1198*53ee8cc1Swenshuai.xi E_DRV_GOP_3D_SIDE_BY_SYDE, 1199*53ee8cc1Swenshuai.xi E_DRV_GOP_3D_TOP_BOTTOM, 1200*53ee8cc1Swenshuai.xi E_DRV_GOP_3D_LINE_ALTERNATIVE, 1201*53ee8cc1Swenshuai.xi E_DRV_GOP_3D_LINE_FRAMEPACKING, 1202*53ee8cc1Swenshuai.xi }EN_DRV_GOP_3D_MODE; 1203*53ee8cc1Swenshuai.xi 1204*53ee8cc1Swenshuai.xi typedef enum 1205*53ee8cc1Swenshuai.xi { 1206*53ee8cc1Swenshuai.xi E_DRV_GOP_Deldirect_Front , 1207*53ee8cc1Swenshuai.xi E_DRV_GOP_Deldirect_Back, 1208*53ee8cc1Swenshuai.xi }E_DRV_GOP_DelDirect; 1209*53ee8cc1Swenshuai.xi 1210*53ee8cc1Swenshuai.xi 1211*53ee8cc1Swenshuai.xi typedef enum 1212*53ee8cc1Swenshuai.xi { 1213*53ee8cc1Swenshuai.xi E_DRV_GOP_MAIN_WINDOW=0, ///< main window if with PIP or without PIP 1214*53ee8cc1Swenshuai.xi E_DRV_GOP_SUB_WINDOW=1, ///< sub window if PIP 1215*53ee8cc1Swenshuai.xi E_DRV_GOP_MAX_WINDOW /// The max support window 1216*53ee8cc1Swenshuai.xi }E_DRV_GOP_SCALER_WIN; 1217*53ee8cc1Swenshuai.xi 1218*53ee8cc1Swenshuai.xi ///Dwin Capability of IC 1219*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 1220*53ee8cc1Swenshuai.xi { 1221*53ee8cc1Swenshuai.xi MS_BOOL bSupportWindowDECapture; //TRUE: Support it; FALSE:Not support, should use FrameDE to capture video 1222*53ee8cc1Swenshuai.xi MS_BOOL bSupportOSDCapture; //TRUE: Support it; FALSE:Not support 1223*53ee8cc1Swenshuai.xi }DRV_GOP_DWIN_CAP, *PDRV_GOP_DWIN_CAP; 1224*53ee8cc1Swenshuai.xi 1225*53ee8cc1Swenshuai.xi ///GOP MUX Caps 1226*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 1227*53ee8cc1Swenshuai.xi { 1228*53ee8cc1Swenshuai.xi MS_U8 u8MuxNumber; 1229*53ee8cc1Swenshuai.xi MS_U8 *pu8MuxProrityArray; 1230*53ee8cc1Swenshuai.xi MS_BOOL bNewMux; 1231*53ee8cc1Swenshuai.xi MS_BOOL bNeedSetMUX1ToIP0; 1232*53ee8cc1Swenshuai.xi MS_BOOL bNeedSetMUX3ToIP0; 1233*53ee8cc1Swenshuai.xi }ST_DRV_GOP_MUX_CAP, *PST_DRV_GOP_MUX_CAP; 1234*53ee8cc1Swenshuai.xi 1235*53ee8cc1Swenshuai.xi ///GOP MUX Caps 1236*53ee8cc1Swenshuai.xi typedef struct 1237*53ee8cc1Swenshuai.xi { 1238*53ee8cc1Swenshuai.xi MS_U8 u8MuxNumber; 1239*53ee8cc1Swenshuai.xi MS_U8 pu8MuxProrityArray[MAX_GOP_INFO_COUNT]; 1240*53ee8cc1Swenshuai.xi MS_BOOL bNewMux; 1241*53ee8cc1Swenshuai.xi MS_BOOL bNeedSetMUX1ToIP0; 1242*53ee8cc1Swenshuai.xi MS_BOOL bNeedSetMUX3ToIP0; 1243*53ee8cc1Swenshuai.xi }ST_DRV_GOP_MUX_CAP_EX, *PST_DRV_GOP_MUX_CAP_EX; 1244*53ee8cc1Swenshuai.xi 1245*53ee8cc1Swenshuai.xi typedef enum 1246*53ee8cc1Swenshuai.xi { 1247*53ee8cc1Swenshuai.xi E_DRV_GOP_BNK_WRITE =0, //restore the bank register 1248*53ee8cc1Swenshuai.xi E_DRV_GOP_BNK_READ, //back the bank register 1249*53ee8cc1Swenshuai.xi }E_DRV_GOP_BNK_STATUS; 1250*53ee8cc1Swenshuai.xi 1251*53ee8cc1Swenshuai.xi typedef enum 1252*53ee8cc1Swenshuai.xi { 1253*53ee8cc1Swenshuai.xi E_DRV_GOP_GPU_TILE_LINEAR =0, 1254*53ee8cc1Swenshuai.xi E_DRV_GOP_GPU_TILE_DIP8X, 1255*53ee8cc1Swenshuai.xi E_DRV_GOP_GPU_TILE_DIP16X, 1256*53ee8cc1Swenshuai.xi E_DRV_GOP_GPU_TILE_GPU, 1257*53ee8cc1Swenshuai.xi }EN_DRV_GOP_GPU_TILE_MODE; 1258*53ee8cc1Swenshuai.xi 1259*53ee8cc1Swenshuai.xi typedef enum 1260*53ee8cc1Swenshuai.xi { 1261*53ee8cc1Swenshuai.xi EN_GOP_CROP_DISABLE = 0, 1262*53ee8cc1Swenshuai.xi EN_GOP_CROP_ENABLE = 1, 1263*53ee8cc1Swenshuai.xi } EN_GOP_CROP_CTL; 1264*53ee8cc1Swenshuai.xi 1265*53ee8cc1Swenshuai.xi /// Test Pattern 1266*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 1267*53ee8cc1Swenshuai.xi { 1268*53ee8cc1Swenshuai.xi /// TSTClr_en 1269*53ee8cc1Swenshuai.xi MS_BOOL bTSTClr_En; 1270*53ee8cc1Swenshuai.xi /// TSTClr_Alpha_En 1271*53ee8cc1Swenshuai.xi MS_BOOL bTSTClr_Alpha_En; 1272*53ee8cc1Swenshuai.xi 1273*53ee8cc1Swenshuai.xi ///TSTClr_Alpha 1274*53ee8cc1Swenshuai.xi MS_U8 u8TSTClr_Alpha; 1275*53ee8cc1Swenshuai.xi /// R_stc 1276*53ee8cc1Swenshuai.xi MS_U8 u8R_stc; 1277*53ee8cc1Swenshuai.xi /// G_stc. 1278*53ee8cc1Swenshuai.xi MS_U8 u8G_stc; 1279*53ee8cc1Swenshuai.xi /// B_stc. 1280*53ee8cc1Swenshuai.xi MS_U8 u8B_stc; 1281*53ee8cc1Swenshuai.xi 1282*53ee8cc1Swenshuai.xi /// TSTClr_hdup 1283*53ee8cc1Swenshuai.xi MS_U8 u8TSTClr_Hdup; 1284*53ee8cc1Swenshuai.xi /// TSTClr_vdup. 1285*53ee8cc1Swenshuai.xi MS_U8 u8TSTClr_Vdup; 1286*53ee8cc1Swenshuai.xi 1287*53ee8cc1Swenshuai.xi /// H_R_inc. 1288*53ee8cc1Swenshuai.xi MS_U8 u8HR_inc; 1289*53ee8cc1Swenshuai.xi /// H_R_inc_signz 1290*53ee8cc1Swenshuai.xi MS_BOOL u8HR_inc_signz; 1291*53ee8cc1Swenshuai.xi /// H_G_inc. 1292*53ee8cc1Swenshuai.xi MS_U8 u8HG_inc; 1293*53ee8cc1Swenshuai.xi /// H_G_inc_signz 1294*53ee8cc1Swenshuai.xi MS_BOOL u8HG_inc_signz; 1295*53ee8cc1Swenshuai.xi /// H_B_inc. 1296*53ee8cc1Swenshuai.xi MS_U8 u8HB_inc; 1297*53ee8cc1Swenshuai.xi /// H_B_inc_signz 1298*53ee8cc1Swenshuai.xi MS_BOOL u8HB_inc_signz; 1299*53ee8cc1Swenshuai.xi /// H_R_step 1300*53ee8cc1Swenshuai.xi MS_U8 u8HR_step; 1301*53ee8cc1Swenshuai.xi /// H_G_stepc 1302*53ee8cc1Swenshuai.xi MS_U8 u8HG_step; 1303*53ee8cc1Swenshuai.xi /// H_B_step. 1304*53ee8cc1Swenshuai.xi MS_U8 u8HB_step; 1305*53ee8cc1Swenshuai.xi 1306*53ee8cc1Swenshuai.xi /// V_R_inc. 1307*53ee8cc1Swenshuai.xi MS_U8 u8VR_inc; 1308*53ee8cc1Swenshuai.xi /// V_R_inc_signz 1309*53ee8cc1Swenshuai.xi MS_BOOL u8VR_inc_signz; 1310*53ee8cc1Swenshuai.xi /// V_G_inc. 1311*53ee8cc1Swenshuai.xi MS_U8 u8VG_inc; 1312*53ee8cc1Swenshuai.xi /// V_G_inc_signz 1313*53ee8cc1Swenshuai.xi MS_BOOL u8VG_inc_signz; 1314*53ee8cc1Swenshuai.xi /// V_B_inc. 1315*53ee8cc1Swenshuai.xi MS_U8 u8VB_inc; 1316*53ee8cc1Swenshuai.xi /// V_B_inc_signz 1317*53ee8cc1Swenshuai.xi MS_BOOL u8VB_inc_signz; 1318*53ee8cc1Swenshuai.xi /// V_R_step 1319*53ee8cc1Swenshuai.xi MS_U8 u8VR_step; 1320*53ee8cc1Swenshuai.xi /// V_G_step 1321*53ee8cc1Swenshuai.xi MS_U8 u8VG_step; 1322*53ee8cc1Swenshuai.xi /// V_B_step. 1323*53ee8cc1Swenshuai.xi MS_U8 u8VB_step; 1324*53ee8cc1Swenshuai.xi } DRV_GOP_TSTPATTERN; 1325*53ee8cc1Swenshuai.xi 1326*53ee8cc1Swenshuai.xi 1327*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 1328*53ee8cc1Swenshuai.xi { 1329*53ee8cc1Swenshuai.xi MS_U8 GOP0; 1330*53ee8cc1Swenshuai.xi MS_U8 GOP1; 1331*53ee8cc1Swenshuai.xi MS_U8 GOP2; 1332*53ee8cc1Swenshuai.xi MS_U8 GOP3; 1333*53ee8cc1Swenshuai.xi MS_U8 GOP4; 1334*53ee8cc1Swenshuai.xi MS_U8 GOP5; 1335*53ee8cc1Swenshuai.xi MS_U8 DWIN; 1336*53ee8cc1Swenshuai.xi MS_U8 MIXER; 1337*53ee8cc1Swenshuai.xi }GOP_TYPE_DEF; 1338*53ee8cc1Swenshuai.xi 1339*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 1340*53ee8cc1Swenshuai.xi { 1341*53ee8cc1Swenshuai.xi MS_PHY u64Addr; 1342*53ee8cc1Swenshuai.xi MS_U16 u16Pitch; 1343*53ee8cc1Swenshuai.xi MS_U16 u16Fmt; 1344*53ee8cc1Swenshuai.xi }DRV_GOP_CBFmtInfo; 1345*53ee8cc1Swenshuai.xi 1346*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 1347*53ee8cc1Swenshuai.xi { 1348*53ee8cc1Swenshuai.xi MS_PHY u64DRAMAddr; //!< unit: Byte 1349*53ee8cc1Swenshuai.xi MS_U16 u16HPixelStart; //!< unit: pix 1350*53ee8cc1Swenshuai.xi MS_U16 u16HPixelEnd; //!< unit: pix 1351*53ee8cc1Swenshuai.xi MS_U16 u16VPixelStart; //!< unit: pix 1352*53ee8cc1Swenshuai.xi MS_U16 u16VPixelEnd; //!< unit: pix 1353*53ee8cc1Swenshuai.xi MS_U16 u16Pitch; //!< unit: Byte 1354*53ee8cc1Swenshuai.xi MS_U8 u8Fmt; 1355*53ee8cc1Swenshuai.xi }DRV_GOP_AFBC_Info; 1356*53ee8cc1Swenshuai.xi 1357*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 1358*53ee8cc1Swenshuai.xi // Function and Variable 1359*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 1360*53ee8cc1Swenshuai.xi 1361*53ee8cc1Swenshuai.xi //====================================================================================== 1362*53ee8cc1Swenshuai.xi // GOP Common utility 1363*53ee8cc1Swenshuai.xi //====================================================================================== 1364*53ee8cc1Swenshuai.xi MS_U8 MDrv_DumpGopByGwinId(MS_GOP_CTX_LOCAL*pGOPCtx,MS_U32 GwinID); 1365*53ee8cc1Swenshuai.xi void* MDrv_GOP_GetShareMemory(MS_BOOL *pbNeedInitShared); 1366*53ee8cc1Swenshuai.xi GOP_Result MDrv_GOP_Sel(MS_GOP_CTX_LOCAL*pGOPCtx, MS_U8 u8GOPNum); 1367*53ee8cc1Swenshuai.xi MS_GOP_CTX_LOCAL* Drv_GOP_Init_Context(void* pInstance,MS_BOOL *pbNeedInitShared); 1368*53ee8cc1Swenshuai.xi void MDrv_GOP_Init(MS_GOP_CTX_LOCAL*pGOPCtx, MS_U8 u8GOPNum, MS_PHY u64GOP_REGDMABASE, MS_U32 u32GOP_RegdmaLen, MS_BOOL bEnableVsyncIntFlip); 1369*53ee8cc1Swenshuai.xi void MDrv_GOP_DeInit(MS_GOP_CTX_LOCAL*pGOPCtx, MS_U8 u8GOPNum); 1370*53ee8cc1Swenshuai.xi void MDrv_GOP_PerClientInit(MS_GOP_CTX_LOCAL*pGOPCtx, MS_U8 u8GOPNum, MS_PHY u64GOP_REGDMABASE, MS_U32 u32GOP_RegdmaLen, MS_BOOL bEnableVsyncIntFlip); 1371*53ee8cc1Swenshuai.xi void MDrv_GOP_SetRegDMA(MS_GOP_CTX_LOCAL*pGOPCtx,MS_U8 u8GOP, MS_PHY u64GOP_REGDMABASE, MS_U32 u32GOP_RegdmaLen); 1372*53ee8cc1Swenshuai.xi void MDrv_GOP_SetGOPEnable2SC(MS_GOP_CTX_LOCAL*pGOPCtx, MS_U8 gopNum, MS_BOOL bEnable); 1373*53ee8cc1Swenshuai.xi void MDrv_GOP_SetIPSel2SC(MS_GOP_CTX_LOCAL*pGOPCtx, MS_IPSEL_GOP ipSelGop); 1374*53ee8cc1Swenshuai.xi void MDrv_GOP_SetClkForCapture(MS_GOP_CTX_LOCAL*pGOPCtx, DRV_GOP_DWIN_SRC_SEL enSrcSel); 1375*53ee8cc1Swenshuai.xi void MDrv_GOP_SetVOPNBL(MS_GOP_CTX_LOCAL*pGOPCtx,MS_BOOL bEnable); 1376*53ee8cc1Swenshuai.xi void MDrv_GOP_GWIN_UpdateReg(MS_GOP_CTX_LOCAL*pGOPCtx, MS_U8 u8GOP); 1377*53ee8cc1Swenshuai.xi void MDrv_GOP_GWIN_UpdateRegWithSync(MS_GOP_CTX_LOCAL*pGOPCtx, MS_U8 u8GOP, MS_BOOL bSync); 1378*53ee8cc1Swenshuai.xi void MDrv_GOP_GWIN_UpdateRegWithMaskSync(MS_GOP_CTX_LOCAL*pGOPCtx, MS_U16 u16GopMask, MS_BOOL bSync); 1379*53ee8cc1Swenshuai.xi void MDrv_GOP_TriggerRegWriteIn(MS_GOP_CTX_LOCAL*pGOPCtx, MS_U8 u8GOP, MS_BOOL bForceWriteIn, MS_BOOL bSync); 1380*53ee8cc1Swenshuai.xi void MDrv_GOP_Restore_Ctx(MS_GOP_CTX_LOCAL*pGOPCtx); 1381*53ee8cc1Swenshuai.xi MS_BOOL MDrv_GetAFBCCapsSupport(MS_GOP_CTX_LOCAL*pGOPCtx); 1382*53ee8cc1Swenshuai.xi MS_U8 MDrv_GOP_Get(MS_GOP_CTX_LOCAL*pGOPCtx); 1383*53ee8cc1Swenshuai.xi MS_U8 MDrv_GOP_GetGwinNum(MS_GOP_CTX_LOCAL*pGOPCtx, MS_U8 u8GopNum); 1384*53ee8cc1Swenshuai.xi MS_U8 MDrv_GetMaxMuxOPNum(void); 1385*53ee8cc1Swenshuai.xi MS_BOOL MDrv_GOP_SetIOMapBase(MS_GOP_CTX_LOCAL*pGOPCtx); 1386*53ee8cc1Swenshuai.xi MS_BOOL MDrv_GOP_HasGop1GPalette(MS_GOP_CTX_LOCAL*pGOPCtx); 1387*53ee8cc1Swenshuai.xi MS_BOOL MDrv_GOP_SwitchGWIN2Addr(MS_GOP_CTX_LOCAL*pGOPCtx, MS_U8 gWinId, MS_PHY u64MainAddress, MS_PHY u64SubAddress, MS_U32 u32WaitTagID, MS_U32 *pU32QueueCnt); 1388*53ee8cc1Swenshuai.xi GOP_Result MDrv_GOP_SetGOPClk(MS_GOP_CTX_LOCAL*pGOPCtx, MS_U8 gopNum, DRV_GOPDstType eDstType); 1389*53ee8cc1Swenshuai.xi GOP_Result MDrv_GOP_MIXER_SetGOPEnable2Mixer(MS_GOP_CTX_LOCAL*pGOPCtx, MS_U8 gopNum, MS_BOOL bEnable); 1390*53ee8cc1Swenshuai.xi GOP_Result MDrv_GOP_SetGOPHighPri(MS_GOP_CTX_LOCAL*pGOPCtx, MS_U8 u8GOPNum); 1391*53ee8cc1Swenshuai.xi GOP_Result MDrv_GOP_InitMux(MS_GOP_CTX_LOCAL*pGOPCtx); 1392*53ee8cc1Swenshuai.xi MS_U8 MDrv_GOP_GetWordUnit(MS_GOP_CTX_LOCAL*pGOPCtx, MS_U8 u8GOPNum); 1393*53ee8cc1Swenshuai.xi MS_U16 MDrv_GOP_GetGOPACK(MS_GOP_CTX_LOCAL *pGOPCtx, MS_U8 enGopType); 1394*53ee8cc1Swenshuai.xi MS_U8 MDrv_GOP_GetMaxGOPNum(MS_GOP_CTX_LOCAL*pGOPCtx); 1395*53ee8cc1Swenshuai.xi MS_U8 MDrv_GOP_GetMaxMuxSel(MS_GOP_CTX_LOCAL*pGOPCtx); 1396*53ee8cc1Swenshuai.xi MS_U8 MDrv_GOP_SelGwinIdByGOP(MS_GOP_CTX_LOCAL*pGOPCtx, MS_U8 u8GOP, MS_U8 u8GWinIdx); 1397*53ee8cc1Swenshuai.xi GOP_Result MDrv_GOP_SetClock(MS_GOP_CTX_LOCAL*pGOPCtx,MS_BOOL bEnable); 1398*53ee8cc1Swenshuai.xi GOP_Result MDrv_GOP_ConvertAPIAddr2HAL(MS_GOP_CTX_LOCAL*pGOPCtx, MS_U8 u8Gwinid, MS_PHY* u64ApiAdr); 1399*53ee8cc1Swenshuai.xi GOP_Result MDrv_GOP_GWIN_SetFadeInOut(MS_GOP_CTX_LOCAL*pGOPCtx, MS_U8 gId, DRV_GOP_FADE_TYPE eGwinFadeType, MS_BOOL bEnable, MS_U8 u8FadeRate); 1400*53ee8cc1Swenshuai.xi MS_U32 MDrv_GOP_GetMIULen(MS_GOP_CTX_LOCAL*pGOPCtx); 1401*53ee8cc1Swenshuai.xi void MDrv_GOP_MIU_Sel(MS_GOP_CTX_LOCAL*pGOPCtx, MS_U8 u8GOPNum,E_DRV_GOP_SEL_TYPE miusel); 1402*53ee8cc1Swenshuai.xi MS_U8 MDrv_GOP_Get_MIU_Sel(MS_GOP_CTX_LOCAL*pGOPCtx, MS_U8 u8GOPNum); 1403*53ee8cc1Swenshuai.xi void MDrv_GOP_SetGOPBWStrength(MS_GOP_CTX_LOCAL*pGOPCtx,MS_U8 u8GOP, EN_GOP_BURST_LEN eGOPBWStr); 1404*53ee8cc1Swenshuai.xi EN_GOP_BURST_LEN MDrv_GOP_GetGOPBWStrength(MS_GOP_CTX_LOCAL*pGOPCtx, MS_U8 u8GOP); 1405*53ee8cc1Swenshuai.xi void MDrv_GOP_SetGOPYUV(MS_GOP_CTX_LOCAL*pGOPCtx, MS_U8 u8GOP); 1406*53ee8cc1Swenshuai.xi MS_U8 MDrv_GOP_GetHPipeOfst(MS_GOP_CTX_LOCAL*pGOPCtx, MS_U8 u8GOP_num, DRV_GOPDstType GopDst); 1407*53ee8cc1Swenshuai.xi MS_U8 MDrv_GOP_GetDWINMIU(MS_GOP_CTX_LOCAL*pGOPCtx); 1408*53ee8cc1Swenshuai.xi GOP_Result MDrv_GOP_SetDWINMIU(MS_GOP_CTX_LOCAL*pGOPCtx, MS_U8 miu); 1409*53ee8cc1Swenshuai.xi GOP_Result MDrv_GOP_VE_SetOutputTiming(MS_GOP_CTX_LOCAL*pGOPCtx, MS_U32 u32mode); 1410*53ee8cc1Swenshuai.xi GOP_Result MDrv_GOP_MIXER_SetOutputTiming(MS_GOP_CTX_LOCAL*pGOPCtx, MS_U32 u32mode, GOP_DRV_MixerTiming *pTM); 1411*53ee8cc1Swenshuai.xi GOP_Result MDrv_GOP_MIXER_EnableVfilter(MS_GOP_CTX_LOCAL*pGOPCtx, MS_BOOL bEnable); 1412*53ee8cc1Swenshuai.xi GOP_Result MDrv_GOP_MIXER_EnableOldBlendMode(MS_GOP_CTX_LOCAL*pGOPCtx, MS_U8 gopNum, MS_BOOL bEnable); 1413*53ee8cc1Swenshuai.xi MS_BOOL MDrv_GOP_RestoreFromVsyncLimitation(MS_GOP_CTX_LOCAL *pGOPCtx); 1414*53ee8cc1Swenshuai.xi MS_U32 MDrv_GOP_GetRegForm(MS_GOP_CTX_LOCAL *pGOPCtx, MS_U8 u8gop, MS_U8 u8gwin); 1415*53ee8cc1Swenshuai.xi GOP_Result MDrv_GOP_SetGOPBrightness(MS_GOP_CTX_LOCAL*pGOPCtx,MS_U8 u8GOP,MS_U16 u16BriVal,MS_BOOL bMSB); 1416*53ee8cc1Swenshuai.xi GOP_Result MDrv_GOP_GetGOPBrightness(MS_GOP_CTX_LOCAL*pGOPCtx,MS_U8 u8GOP,MS_U16* u16BriVal,MS_BOOL* bMSB); 1417*53ee8cc1Swenshuai.xi GOP_Result MDrv_GOP_EnableLBCouple(MS_GOP_CTX_LOCAL*pGOPCtx, MS_U8 u8GOP, MS_BOOL bEnable); 1418*53ee8cc1Swenshuai.xi GOP_Result MDrv_GOP_Set_PINPON(MS_GOP_CTX_LOCAL*pGOPCtx, MS_U8 u8GOPNum,MS_BOOL bEn,E_DRV_GOP_PINPON_MODE pinpon_mode); 1419*53ee8cc1Swenshuai.xi GOP_Result MDrv_GOP_Set_BufferPINPON(MS_GOP_CTX_LOCAL*pGOPCtx,MS_PHY u64fbaddr0,MS_PHY u64fbaddr1); 1420*53ee8cc1Swenshuai.xi GOP_Result MDrv_GOP_Set_16bBus(MS_GOP_CTX_LOCAL*pGOPCtx, MS_U8 u8GOPNum,MS_BOOL bEn); 1421*53ee8cc1Swenshuai.xi GOP_Result MDrv_GOP_SetUVSwap(MS_GOP_CTX_LOCAL*pGOPCtx, MS_U8 u8GOPNum,MS_BOOL bEn); 1422*53ee8cc1Swenshuai.xi GOP_Result MDrv_GOP_SetYCSwap(MS_GOP_CTX_LOCAL*pGOPCtx, MS_U8 u8GOPNum,MS_BOOL bEn); 1423*53ee8cc1Swenshuai.xi GOP_Result MDrv_GOP_SetGOPContrast(MS_GOP_CTX_LOCAL* pGOPCtx, MS_U8 u8GOP, MS_U16 u16YContrast, MS_U16 u16UContrast, MS_U16 u16VContrast); 1424*53ee8cc1Swenshuai.xi GOP_Result MDrv_GOP_GetGOPContrast(MS_GOP_CTX_LOCAL* pGOPCtx, MS_U8 u8GOP, MS_U32* u32YContrast, MS_U32* u32UContrast, MS_U32* u32VContrast); 1425*53ee8cc1Swenshuai.xi MS_BOOL MDrv_GOP_GetVECaptureState(MS_GOP_CTX_LOCAL *pGOPCtx, PMS_DRVGOP_VECAPTURESTATE pstVECapState); 1426*53ee8cc1Swenshuai.xi MS_BOOL MDrv_GOP_VECaptureWaitOnFrame(MS_GOP_CTX_LOCAL *pGOPCtx, PMS_DRVGOP_VECAPTURESTATE pstVECapState); 1427*53ee8cc1Swenshuai.xi MS_BOOL MDrv_GOP_EnaVECapture(MS_GOP_CTX_LOCAL *pGOPCtx, PMS_DRVGOP_VECAPTURESTATE pstVECapState); 1428*53ee8cc1Swenshuai.xi GOP_Result MDrv_GOP_Set3DOSD_Mode(MS_GOP_CTX_LOCAL* pGOPCtx, MS_U8 u8GOP ,EN_DRV_GOP_3D_MODE en3DOSDMode); 1429*53ee8cc1Swenshuai.xi GOP_Result MDrv_GOP_Set3DOSD_Sub(MS_GOP_CTX_LOCAL* pGOPCtx, MS_U8 u8Gwin, MS_PHY u64SubAddr); 1430*53ee8cc1Swenshuai.xi GOP_Result MDrv_GOP_Set3D_LR_FrameExchange(MS_GOP_CTX_LOCAL* pGOPCtx, MS_U8 u8GOP); 1431*53ee8cc1Swenshuai.xi MS_U16 MDrv_GOP_GetCurrentHSPipe(MS_GOP_CTX_LOCAL*pGOPCtx, MS_U8 u8GOP); 1432*53ee8cc1Swenshuai.xi void MDrv_GOP_Set3DOSD_Middle(MS_GOP_CTX_LOCAL*pGOPCtx, MS_U8 u8GOP); 1433*53ee8cc1Swenshuai.xi MS_BOOL MDrv_GOP_SetGPIO3DPin(MS_GOP_CTX_LOCAL*pGOPCtx, MS_U32 u32GPIO3DPin); 1434*53ee8cc1Swenshuai.xi void MDrv_GOP_Mask_First_Hsync(MS_GOP_CTX_LOCAL*pGOPCtx,MS_U8 u8GOP, MS_BOOL bMask ); 1435*53ee8cc1Swenshuai.xi GOP_Result MDrv_GOP_Set_VE_MUX(MS_GOP_CTX_LOCAL*pGOPCtx, MS_U8 gopNum, MS_BOOL bEn); 1436*53ee8cc1Swenshuai.xi GOP_Result MDrv_GOP_BNK(MS_GOP_CTX_LOCAL*pGOPCtx, E_DRV_GOP_BNK_STATUS Bnk_op); 1437*53ee8cc1Swenshuai.xi MS_BOOL MDrv_GOP_GetGOPEnum(MS_GOP_CTX_LOCAL*pGOPCtx, GOP_TYPE_DEF* GOP_TYPE); 1438*53ee8cc1Swenshuai.xi GOP_Result MDrv_GOP_GWIN_PowerState(void* pInstance, MS_U32 u32PowerState, void* pModule); 1439*53ee8cc1Swenshuai.xi GOP_Result MDrv_GOP_AFBC_Core_Reset(MS_GOP_CTX_LOCAL*pGOPCtx, MS_U8 u8GOP); 1440*53ee8cc1Swenshuai.xi GOP_Result MDrv_GOP_AFBC_Core_Enable(MS_GOP_CTX_LOCAL*pGOPCtx, MS_U8 u8GOP, MS_BOOL bEna); 1441*53ee8cc1Swenshuai.xi GOP_Result MDrv_GOP_GWIN_AFBCMode(MS_GOP_CTX_LOCAL*pGOPCtx, MS_BOOL u8GOP, MS_BOOL bEnable, EN_DRV_GOP_AFBC_CNTL eCTL); 1442*53ee8cc1Swenshuai.xi GOP_Result MDrv_GOP_GWIN_AFBCSetWindow(MS_GOP_CTX_LOCAL*pGOPCtx, MS_U8 u8GOP, DRV_GOP_AFBC_Info* pinfo, MS_BOOL bChangePitch); 1443*53ee8cc1Swenshuai.xi GOP_Result MDrv_GOP_SetDbgLevel(EN_GOP_DEBUG_LEVEL level); 1444*53ee8cc1Swenshuai.xi //====================================================================================== 1445*53ee8cc1Swenshuai.xi // GOP GWIN Setting 1446*53ee8cc1Swenshuai.xi //====================================================================================== 1447*53ee8cc1Swenshuai.xi void MDrv_GOP_GWIN_EnableProgressive(MS_GOP_CTX_LOCAL*pGOPCtx, MS_U8 u8GOPNum, MS_BOOL bEnable); 1448*53ee8cc1Swenshuai.xi MS_BOOL MDrv_GOP_GWIN_IsProgressive(MS_GOP_CTX_LOCAL*pGOPCtx, MS_U8 u8GOPNum); 1449*53ee8cc1Swenshuai.xi void MDrv_GOP_GWIN_SetForceWrite(MS_GOP_CTX_LOCAL*pGOPCtx, MS_BOOL bEnable); 1450*53ee8cc1Swenshuai.xi void MDrv_GOP_GWIN_SetBnkForceWrite(MS_GOP_CTX_LOCAL*pGOPCtx, MS_U8 u8GOP, MS_BOOL bEnable); 1451*53ee8cc1Swenshuai.xi void MDrv_GOP_GWIN_ForceWrite_Update(MS_GOP_CTX_LOCAL*pGOPCtx, MS_U8 u8GOP, MS_BOOL bEnable); 1452*53ee8cc1Swenshuai.xi MS_BOOL MDrv_GOP_GWIN_IsForceWrite(MS_GOP_CTX_LOCAL*pGOPCtx, MS_U8 u8GOP); 1453*53ee8cc1Swenshuai.xi void MDrv_GOP_GWIN_OutputColor(MS_GOP_CTX_LOCAL*pGOPCtx,MS_U8 u8GOP, GOP_OupputColor type); 1454*53ee8cc1Swenshuai.xi void MDrv_GOP_GWIN_SetTransClr_8888(MS_GOP_CTX_LOCAL*pGOPCtx,MS_U8 u8GOP, MS_U32 clr, MS_U32 mask); 1455*53ee8cc1Swenshuai.xi void MDrv_GOP_GWIN_SetTransClr_YUV(MS_GOP_CTX_LOCAL*pGOPCtx,MS_U8 u8GOP, MS_U32 clr, MS_U32 mask); 1456*53ee8cc1Swenshuai.xi void MDrv_GOP_GWIN_EnableTransClr(MS_GOP_CTX_LOCAL*pGOPCtx,MS_U8 u8GOP, GOP_TransClrFmt fmt, MS_BOOL bEnable); 1457*53ee8cc1Swenshuai.xi void MDrv_GOP_GWIN_EnableMultiAlpha(MS_GOP_CTX_LOCAL*pGOPCtx, MS_U32 u32GopIdx, MS_BOOL bEnable); 1458*53ee8cc1Swenshuai.xi MS_BOOL MDrv_GOP_GWIN_IsMultiAlphaEnable(MS_GOP_CTX_LOCAL*pGOPCtx, MS_U32 u32GopIdx); 1459*53ee8cc1Swenshuai.xi void MDrv_GOP_GWIN_SetBlink(MS_GOP_CTX_LOCAL*pGOPCtx, MS_U8 u8win, MS_BOOL bEnable, MS_U8 u8rate); 1460*53ee8cc1Swenshuai.xi void MDrv_GOP_GWIN_SetFieldInver(MS_GOP_CTX_LOCAL*pGOPCtx,MS_U8 u8GOP, MS_BOOL enable); 1461*53ee8cc1Swenshuai.xi void MDrv_GOP_GWIN_SetAlphaInverse(MS_GOP_CTX_LOCAL*pGOPCtx, MS_U8 u8gopNum, MS_BOOL bEnable); 1462*53ee8cc1Swenshuai.xi void MDrv_GOP_GWIN_GetAlphaInverse(MS_GOP_CTX_LOCAL*pGOPCtx,MS_U8 u8GOP, MS_BOOL *bBool); 1463*53ee8cc1Swenshuai.xi GOP_Result MDrv_GOP_GWIN_GetDstPlane(MS_GOP_CTX_LOCAL*pGOPCtx, MS_U8 u8GOPNum, DRV_GOPDstType *pGopDst); 1464*53ee8cc1Swenshuai.xi void MDrv_GOP_GWIN_SetBlending(MS_GOP_CTX_LOCAL*pGOPCtx, MS_U8 u8win, MS_BOOL bEnable, MS_U8 u8coef); 1465*53ee8cc1Swenshuai.xi void MDrv_GOP_GWIN_SetWinFmt(MS_GOP_CTX_LOCAL*pGOPCtx, MS_U8 u8win, DRV_GOPColorType clrtype); 1466*53ee8cc1Swenshuai.xi void MDrv_GOP_GWIN_EnableGwin(MS_GOP_CTX_LOCAL*pGOPCtx, MS_U8 u8win, MS_BOOL bEnable); 1467*53ee8cc1Swenshuai.xi void MDrv_GOP_GWIN_Set_BGWIN(MS_GOP_CTX_LOCAL*pGOPCtx, MS_U8 bgwID, MS_U16 x0, MS_U16 y0, MS_U16 x1, MS_U16 y1, MS_U16 color); 1468*53ee8cc1Swenshuai.xi void MDrv_GOP_GWIN_Set_BGWIN_Alpha(MS_GOP_CTX_LOCAL*pGOPCtx, MS_U8 bgwID, MS_BOOL bEnable, MS_U8 alpha); 1469*53ee8cc1Swenshuai.xi void MDrv_GOP_GWIN_IsGWINEnabled(MS_GOP_CTX_LOCAL*pGOPCtx, MS_U8 u8win, MS_BOOL* pbEnable ); 1470*53ee8cc1Swenshuai.xi void MDrv_GOP_GWIN_EnableHMirror(MS_GOP_CTX_LOCAL*pGOPCtx, MS_U8 u8GOPNum, MS_BOOL bEnable); 1471*53ee8cc1Swenshuai.xi void MDrv_GOP_GWIN_EnableVMirror(MS_GOP_CTX_LOCAL*pGOPCtx, MS_U8 u8GOPNum, MS_BOOL bEnalbe); 1472*53ee8cc1Swenshuai.xi void MDrv_GOP_IsGOPMirrorEnable(MS_GOP_CTX_LOCAL*pGOPCtx, MS_U8 u8GOPNum, MS_BOOL *bHMirror, MS_BOOL *bVMirror); 1473*53ee8cc1Swenshuai.xi void MDrv_GOP_GWIN_SetGwinPriority(MS_GOP_CTX_LOCAL*pGOPCtx, MS_U8 u8GopNum, GOP_GwinPriority *GwinPri); 1474*53ee8cc1Swenshuai.xi void MDrv_GOP_GWIN_GetGwinPriority(MS_GOP_CTX_LOCAL*pGOPCtx, MS_U8 u8Gopnum, GOP_GwinPriority *GwinPri); 1475*53ee8cc1Swenshuai.xi void MDrv_GOP_GWIN_SetMux(MS_GOP_CTX_LOCAL*pGOPCtx, MS_U8 u8GOPNum, Gop_MuxSel eGopMux); 1476*53ee8cc1Swenshuai.xi void MDrv_GOP_MapLayer2Mux(MS_GOP_CTX_LOCAL*pGOPCtx, MS_U32 u32Layer, MS_U8 u8Gopnum, MS_U32 *pu32Mux); 1477*53ee8cc1Swenshuai.xi void MDrv_GOP_GWIN_GetMux(MS_GOP_CTX_LOCAL*pGOPCtx, MS_U8* u8GOPNum, Gop_MuxSel eGopMux); 1478*53ee8cc1Swenshuai.xi MS_BOOL Mdrv_GOP_GetMuxPriority(MS_GOP_CTX_LOCAL*pGOPCtx, PST_DRV_GOP_MUX_CAP_EX pstMuxPriEx); 1479*53ee8cc1Swenshuai.xi void MDrv_GOP_GWIN_SetHSPipe(MS_GOP_CTX_LOCAL*pGOPCtx, MS_U8 u8GOPNum, MS_U16 u16HSPipe); 1480*53ee8cc1Swenshuai.xi void MDrv_GOP_DWIN_GetWinProperty(MS_GOP_CTX_LOCAL*pGOPCtx, DRV_GOP_DwinProperty *pproperty); 1481*53ee8cc1Swenshuai.xi void MDrv_GOP_DWIN_SetWinProperty(MS_GOP_CTX_LOCAL*pGOPCtx, DRV_GOP_DwinProperty *pproperty); 1482*53ee8cc1Swenshuai.xi void MDrv_GOP_GWIN_SetVSyncinverse(MS_GOP_CTX_LOCAL*pGOPCtx,MS_U8 u8GOP, MS_BOOL bEnable); 1483*53ee8cc1Swenshuai.xi void MDrv_GOP_SetGOPEnable2Mode1(MS_GOP_CTX_LOCAL*pGOPCtx, MS_U8 gopNum, MS_BOOL bEnable); 1484*53ee8cc1Swenshuai.xi void MDrv_GOP_GetGOPEnable2Mode1(MS_GOP_CTX_LOCAL*pGOPCtx, MS_U8 gopNum, MS_BOOL *pbEnable); 1485*53ee8cc1Swenshuai.xi GOP_Result MDrv_GOP_GWIN_GetGwinInfo(MS_GOP_CTX_LOCAL*pGOPCtx, MS_U8 u8win, DRV_GOP_GWIN_INFO* pinfo); 1486*53ee8cc1Swenshuai.xi GOP_Result MDrv_GOP_GWIN_SetGwinInfo(MS_GOP_CTX_LOCAL*pGOPCtx, MS_U8 u8win, DRV_GOP_GWIN_INFO* pinfo); 1487*53ee8cc1Swenshuai.xi MS_BOOL MDrv_GOP_GWIN_SendGwinInfo2Flip(MS_GOP_CTX_LOCAL*pGOPCtx, MS_U8 u8win, DRV_GOP_GWIN_INFO* pinfo); 1488*53ee8cc1Swenshuai.xi GOP_Result MDrv_GOP_GWIN_SetDstPlane(MS_GOP_CTX_LOCAL*pGOPCtx, MS_U8 u8GOPNum, DRV_GOPDstType eDstType,MS_BOOL bOnlyCheck); 1489*53ee8cc1Swenshuai.xi GOP_Result MDrv_GOP_GWIN_Enable_BGWIN(MS_GOP_CTX_LOCAL*pGOPCtx, MS_U8 bgwID, MS_BOOL bEnable); 1490*53ee8cc1Swenshuai.xi GOP_Result MDrv_GOP_GWIN_EnableTileMode(MS_GOP_CTX_LOCAL*pGOPCtx,MS_U8 u8win, MS_BOOL bEnable,E_GOP_TILE_DATA_TYPE tilemode); 1491*53ee8cc1Swenshuai.xi GOP_Result MDrv_GOP_GWIN_SetMixerDstPlane(MS_GOP_CTX_LOCAL*pGOPCtx, MS_U8 u8GOPNum, DRV_GOPDstType eDstType); 1492*53ee8cc1Swenshuai.xi GOP_Result MDrv_GOP_GWIN_GetMixerDstPlane(MS_GOP_CTX_LOCAL*pGOPCtx, MS_U8 u8GOPNum, DRV_GOPDstType *pGopDst); 1493*53ee8cc1Swenshuai.xi GOP_Result MDrv_GOP_MIXER_SetMux(MS_GOP_CTX_LOCAL*pGOPCtx, MS_U8 gopNum, MS_U8 muxNum, MS_BOOL bEnable); 1494*53ee8cc1Swenshuai.xi GOP_Result MDrv_GOP_GWIN_GetGwinNewAlphaModeEnable(MS_GOP_CTX_LOCAL*pGOPCtx, MS_U8 u8win, MS_BOOL* bEnable); 1495*53ee8cc1Swenshuai.xi GOP_Result MDrv_GOP_GWIN_SetNewAlphaMode(MS_GOP_CTX_LOCAL*pGOPCtx, MS_U8 u8win, MS_BOOL bEnable); 1496*53ee8cc1Swenshuai.xi GOP_Result MDrv_GOP_GWIN_ClearFlipQueue(MS_GOP_CTX_LOCAL*pGOPCtx,MS_U8 gWinId); 1497*53ee8cc1Swenshuai.xi MS_U16 MDrv_GOP_GetBPP(MS_GOP_CTX_LOCAL*pGOPCtx, DRV_GOPColorType fbFmt); 1498*53ee8cc1Swenshuai.xi E_GOP_VIDEOTIMING_MIRRORTYPE Mdrv_GOP_GetVideoTimingMirrorType(MS_GOP_CTX_LOCAL* pGOPCtx, MS_BOOL bHorizontal); 1499*53ee8cc1Swenshuai.xi GOP_Result MDrv_GOP_GWIN_DeleteWinHVSize(MS_GOP_CTX_LOCAL*pGOPCtx, MS_U8 u8GOP, MS_U16 u16HSize, MS_U16 u16VSize); 1500*53ee8cc1Swenshuai.xi void MDrv_GOP_SelfFirstHs(MS_GOP_CTX_LOCAL*pGOPCtx, MS_U8 u8Gop, MS_BOOL bEnable); 1501*53ee8cc1Swenshuai.xi 1502*53ee8cc1Swenshuai.xi //====================================================================================== 1503*53ee8cc1Swenshuai.xi // GOP Stretch Window Setting 1504*53ee8cc1Swenshuai.xi //====================================================================================== 1505*53ee8cc1Swenshuai.xi void MDrv_GOP_GWIN_SetStretchWin(MS_GOP_CTX_LOCAL*pGOPCtx, MS_U8 u8GOP, MS_U16 x, MS_U16 y, MS_U16 width, MS_U16 height); 1506*53ee8cc1Swenshuai.xi void MDrv_GOP_GWIN_SetStretchWinPosition(MS_GOP_CTX_LOCAL*pGOPCtx, MS_U8 u8GOP,MS_U16 u16x, MS_U16 u16y); 1507*53ee8cc1Swenshuai.xi void MDrv_GOP_GWIN_SetHTotal(MS_GOP_CTX_LOCAL*pGOPCtx, MS_U8 u8GOP, MS_U16 width); 1508*53ee8cc1Swenshuai.xi void MDrv_GOP_GWIN_Get_StretchWin(MS_GOP_CTX_LOCAL*pGOPCtx, MS_U8 u8GOP, MS_U16 *x, MS_U16 *y, MS_U16 *width, MS_U16 *height); 1509*53ee8cc1Swenshuai.xi MS_BOOL MDrv_GOP_GWIN_Get_HVScaleRatio(MS_GOP_CTX_LOCAL*pGOPCtx, MS_U8 u8GOP_num, MS_U16 *pu16HScaleRat, MS_U16 *pu16VScaleRat); 1510*53ee8cc1Swenshuai.xi void MDrv_GOP_GWIN_Set_HSCALE(MS_GOP_CTX_LOCAL*pGOPCtx, MS_U8 u8GOP, MS_BOOL bEnable, MS_U16 src, MS_U16 dst) ; 1511*53ee8cc1Swenshuai.xi void MDrv_GOP_GWIN_Set_VSCALE(MS_GOP_CTX_LOCAL*pGOPCtx, MS_U8 u8GOP, MS_BOOL bEnable, MS_U16 src, MS_U16 dst) ; 1512*53ee8cc1Swenshuai.xi void MDrv_GOP_GWIN_Set_HStretchMode(MS_GOP_CTX_LOCAL*pGOPCtx,MS_U8 u8GOP, DRV_GOPStrchHMode HStrchMode); 1513*53ee8cc1Swenshuai.xi void MDrv_GOP_GWIN_Set_VStretchMode(MS_GOP_CTX_LOCAL*pGOPCtx,MS_U8 u8GOP, DRV_GOPStrchVMode VStrchMode); 1514*53ee8cc1Swenshuai.xi GOP_Result MDrv_GOP_GWIN_Set_TranspColorStretchMode(MS_GOP_CTX_LOCAL*pGOPCtx, MS_U8 u8GOP, DRV_GOPSTRCH_TRANSPCOLORMODE TColorStrchMode); 1515*53ee8cc1Swenshuai.xi void MDrv_GOP_GWIN_Load_HStretchModeTable(MS_GOP_CTX_LOCAL*pGOPCtx,MS_U8 u8GOP , DRV_GOPStrchHMode HStrchMode); 1516*53ee8cc1Swenshuai.xi void MDrv_GOP_GWIN_Load_VStretchModeTable(MS_GOP_CTX_LOCAL*pGOPCtx,MS_U8 u8GOP, DRV_GOPStrchVMode VStrchMode); 1517*53ee8cc1Swenshuai.xi 1518*53ee8cc1Swenshuai.xi //====================================================================================== 1519*53ee8cc1Swenshuai.xi // GOP Palette setting 1520*53ee8cc1Swenshuai.xi //====================================================================================== 1521*53ee8cc1Swenshuai.xi void MDrv_GOP_GWIN_SetPaletteOpt( MS_GOP_CTX_LOCAL*pGOPCtx,MS_U8 u8GOP, DRV_GopPaletteEntry *pPalArray, MS_U16 u32PalStart, MS_U16 u32PalEnd, DRV_GopPalType ePalType); 1522*53ee8cc1Swenshuai.xi void MDrv_GOP_GWIN_SetPaletteRead(MS_GOP_CTX_LOCAL*pGOPCtx,MS_U8 u8GOP, DRV_GopPalReadType type); 1523*53ee8cc1Swenshuai.xi void MDrv_GOP_GWIN_ReadPalette(MS_GOP_CTX_LOCAL*pGOPCtx,MS_U8 u8GOP, MS_U8 idx, MS_U32* clr); 1524*53ee8cc1Swenshuai.xi void MDrv_GOP_GWIN_2GSetPaletteOpt(MS_GOP_CTX_LOCAL*pGOPCtx,MS_U8 u8GOP, DRV_GopPaletteEntry *pPalArray, MS_U16 u32PalStart, MS_U16 u32PalEnd); 1525*53ee8cc1Swenshuai.xi void MDrv_GOP_GWIN_2GSetPaletteRead(MS_GOP_CTX_LOCAL*pGOPCtx,MS_U8 u8GOP, DRV_GopPalReadType type); 1526*53ee8cc1Swenshuai.xi void MDrv_GOP_GWIN_2GReadPalette(MS_GOP_CTX_LOCAL*pGOPCtx,MS_U8 u8GOP, MS_U8 idx, MS_U32* clr); 1527*53ee8cc1Swenshuai.xi 1528*53ee8cc1Swenshuai.xi //====================================================================================== 1529*53ee8cc1Swenshuai.xi // GOP GWIN H/V Scroll 1530*53ee8cc1Swenshuai.xi //====================================================================================== 1531*53ee8cc1Swenshuai.xi void MDrv_GOP_GWIN_SetScrollRate(MS_GOP_CTX_LOCAL*pGOPCtx, MS_U8 u8rate); 1532*53ee8cc1Swenshuai.xi void MDrv_GOP_GWIN_SetHScroll(MS_GOP_CTX_LOCAL*pGOPCtx, MS_U8 u8win, E_GOP_SCROLL_TYPE type, MS_U32 offset, MS_BOOL bEnable); 1533*53ee8cc1Swenshuai.xi void MDrv_GOP_GWIN_SetVScroll(MS_GOP_CTX_LOCAL*pGOPCtx, MS_U8 u8win, E_GOP_SCROLL_TYPE type, MS_U32 offset, MS_BOOL bEnable); 1534*53ee8cc1Swenshuai.xi void MDrv_GOP_GWIN_Scroll_EnableAutoStop(MS_GOP_CTX_LOCAL*pGOPCtx, MS_U8 u8win, MS_BOOL bEnable); 1535*53ee8cc1Swenshuai.xi MS_BOOL MDrv_GOP_GWIN_Scroll_AutoStop_HSet(MS_GOP_CTX_LOCAL*pGOPCtx, MS_U8 u8win, MS_U32 u32AutoHStopOffset); 1536*53ee8cc1Swenshuai.xi MS_BOOL MDrv_GOP_GWIN_Scroll_AutoStop_VSet(MS_GOP_CTX_LOCAL*pGOPCtx, MS_U8 u8win, MS_U32 u32AutoVStopOffset); 1537*53ee8cc1Swenshuai.xi 1538*53ee8cc1Swenshuai.xi 1539*53ee8cc1Swenshuai.xi //====================================================================================== 1540*53ee8cc1Swenshuai.xi // GOP DWIN Utility 1541*53ee8cc1Swenshuai.xi //====================================================================================== 1542*53ee8cc1Swenshuai.xi void MDrv_GOP_DWIN_SetForceWrite(MS_GOP_CTX_LOCAL*pGOPCtx, MS_BOOL bEnable); 1543*53ee8cc1Swenshuai.xi void MDrv_GOP_DWIN_EnableCaptureStream(MS_GOP_CTX_LOCAL*pGOPCtx, MS_BOOL bEnable); 1544*53ee8cc1Swenshuai.xi void MDrv_GOP_DWIN_CaptureOneFrame(MS_GOP_CTX_LOCAL*pGOPCtx); 1545*53ee8cc1Swenshuai.xi void MDrv_GOP_DWIN_CaptureOneFrame2(MS_GOP_CTX_LOCAL*pGOPCtx); 1546*53ee8cc1Swenshuai.xi void MDrv_GOP_DWIN_SetWinInfo(MS_GOP_CTX_LOCAL*pGOPCtx, DRV_GOP_DWIN_INFO* pinfo); 1547*53ee8cc1Swenshuai.xi void MDrv_GOP_DWIN_GetWinInfo(MS_GOP_CTX_LOCAL*pGOPCtx, DRV_GOP_DWIN_INFO* pinfo); 1548*53ee8cc1Swenshuai.xi void MDrv_GOP_DWIN_EnableProgressive(MS_GOP_CTX_LOCAL*pGOPCtx, MS_BOOL bEnable); 1549*53ee8cc1Swenshuai.xi void MDrv_GOP_DWIN_SelectSource(MS_GOP_CTX_LOCAL*pGOPCtx, EN_GOP_DWIN_DATA_SRC enSrc); 1550*53ee8cc1Swenshuai.xi void MDrv_GOP_DWIN_SelectSourceScanType(MS_GOP_CTX_LOCAL*pGOPCtx, EN_GOP_DWIN_SCAN_TYPE enScan); 1551*53ee8cc1Swenshuai.xi void MDrv_GOP_DWIN_EnableIntr(MS_GOP_CTX_LOCAL*pGOPCtx, MS_U16 u8mask, MS_BOOL bEnable); 1552*53ee8cc1Swenshuai.xi void MDrv_GOP_DWIN_ClearIntr(MS_GOP_CTX_LOCAL*pGOPCtx, MS_U16 u8mask); 1553*53ee8cc1Swenshuai.xi void MDrv_GOP_DWIN_Set_CTRL0(MS_GOP_CTX_LOCAL*pGOPCtx, MS_U16 val, MS_U16 mask); 1554*53ee8cc1Swenshuai.xi void MDrv_GOP_DWIN_SetDataFmt(MS_GOP_CTX_LOCAL*pGOPCtx, DRV_GOP_DWIN_DATA_FMT fmt) ; 1555*53ee8cc1Swenshuai.xi void MDrv_GOP_DWIN_GetDataFmt(MS_GOP_CTX_LOCAL*pGOPCtx, MS_U8 *fmt); 1556*53ee8cc1Swenshuai.xi void MDrv_GOP_DWIN_SetAlphaValue(MS_GOP_CTX_LOCAL*pGOPCtx, MS_U8 u8AlphaVal); 1557*53ee8cc1Swenshuai.xi void MDrv_GOP_DWIN_SetAlphaSrc(MS_GOP_CTX_LOCAL*pGOPCtx, MS_U8 source); 1558*53ee8cc1Swenshuai.xi void MDrv_GOP_DWIN_SetAlphaInverse(MS_GOP_CTX_LOCAL*pGOPCtx, MS_BOOL bEnable); 1559*53ee8cc1Swenshuai.xi void MDrv_GOP_DWIN_SetUVSample(MS_GOP_CTX_LOCAL*pGOPCtx, MS_U8 mode); 1560*53ee8cc1Swenshuai.xi void MDrv_GOP_DWIN_SetSkipFrame(MS_GOP_CTX_LOCAL*pGOPCtx, MS_U32 framecount); 1561*53ee8cc1Swenshuai.xi void MDrv_GOP_DWIN_EnableDither(MS_GOP_CTX_LOCAL*pGOPCtx, MS_BOOL bEnable); 1562*53ee8cc1Swenshuai.xi GOP_Result MDrv_GOP_DWIN_EnableR2YCSC(MS_GOP_CTX_LOCAL*pGOPCtx, MS_BOOL bEnable); 1563*53ee8cc1Swenshuai.xi void MDrv_GOP_DWIN_SetUVSwap(MS_GOP_CTX_LOCAL*pGOPCtx, MS_BOOL bEnable); 1564*53ee8cc1Swenshuai.xi MS_U16 MDrv_GOP_DWIN_GetIntrStatus(MS_GOP_CTX_LOCAL*pGOPCtx); 1565*53ee8cc1Swenshuai.xi GOP_Result MDrv_GOP_DWIN_SetSourceSel(MS_GOP_CTX_LOCAL*pGOPCtx, DRV_GOP_DWIN_SRC_SEL enSrcSel); 1566*53ee8cc1Swenshuai.xi GOP_Result MDrv_GOP_DWIN_GetDWinIntInfo(MS_GOP_CTX_LOCAL *pGOPCtx, DRV_GOP_DWinIntInfo *pGopDWinIntInfo,MS_U32 u32Timeout); 1567*53ee8cc1Swenshuai.xi void Mdrv_GOP_GetDWinCapability(MS_GOP_CTX_LOCAL*pGOPCtx, PDRV_GOP_DWIN_CAP pDwinCap); 1568*53ee8cc1Swenshuai.xi 1569*53ee8cc1Swenshuai.xi //====================================================================================== 1570*53ee8cc1Swenshuai.xi // GOP OC 1571*53ee8cc1Swenshuai.xi //====================================================================================== 1572*53ee8cc1Swenshuai.xi GOP_Result MDrv_GOP_OC_SetOCEn(MS_GOP_CTX_LOCAL*pGOPCtx, MS_U8 u8GOPNum, MS_BOOL bOCEn); 1573*53ee8cc1Swenshuai.xi GOP_Result MDrv_GOP_OC_SetOCInfo(MS_GOP_CTX_LOCAL*pGOPCtx, DRV_GOP_OC_INFO* OCinfo); 1574*53ee8cc1Swenshuai.xi 1575*53ee8cc1Swenshuai.xi //====================================================================================== 1576*53ee8cc1Swenshuai.xi // GOP GPU Tile 1577*53ee8cc1Swenshuai.xi //====================================================================================== 1578*53ee8cc1Swenshuai.xi GOP_Result MDrv_GOP_GWIN_SetGPUTileMode(MS_GOP_CTX_LOCAL*pGOPCtx, MS_U8 u8win, EN_DRV_GOP_GPU_TILE_MODE mode); 1579*53ee8cc1Swenshuai.xi 1580*53ee8cc1Swenshuai.xi 1581*53ee8cc1Swenshuai.xi //====================================================================================== 1582*53ee8cc1Swenshuai.xi // GOP TLB 1583*53ee8cc1Swenshuai.xi //====================================================================================== 1584*53ee8cc1Swenshuai.xi GOP_Result MDrv_GOP_TLBEnable(MS_GOP_CTX_LOCAL*pGOPCtx, MS_U8 u8GOP, MS_BOOL bTLBEn); 1585*53ee8cc1Swenshuai.xi GOP_Result MDrv_GOP_SetTLBAddr(MS_GOP_CTX_LOCAL*pGOPCtx,MS_U8 GOP, MS_PHY u64TLBAddr,MS_BOOL bHMirror,MS_BOOL bVMirror,DRV_GOP_GWIN_INFO* pinfo); 1586*53ee8cc1Swenshuai.xi GOP_Result MDrv_GOP_SetTLBSubAddr(MS_GOP_CTX_LOCAL*pGOPCtx,MS_U8 u8GOP, MS_PHY u64TLBAddr); 1587*53ee8cc1Swenshuai.xi 1588*53ee8cc1Swenshuai.xi //====================================================================================== 1589*53ee8cc1Swenshuai.xi // GOP INTERNAL GET XC STATUS 1590*53ee8cc1Swenshuai.xi //====================================================================================== 1591*53ee8cc1Swenshuai.xi GOP_Result MDrv_GOP_GetIPCaptureHStart(MS_GOP_CTX_LOCAL*pGOPCtx,MS_U32 *u32Hstart,E_DRV_GOP_SCALER_WIN eWindow); 1592*53ee8cc1Swenshuai.xi GOP_Result MDrv_GOP_GetIPInterlace(MS_GOP_CTX_LOCAL*pGOPCtx,MS_BOOL *bInterlace,E_DRV_GOP_SCALER_WIN eWindow); 1593*53ee8cc1Swenshuai.xi 1594*53ee8cc1Swenshuai.xi 1595*53ee8cc1Swenshuai.xi //====================================================================================== 1596*53ee8cc1Swenshuai.xi // GOP TestPattern Setting 1597*53ee8cc1Swenshuai.xi //====================================================================================== 1598*53ee8cc1Swenshuai.xi GOP_Result MDrv_GOP_TestPattern_IsVaild(MS_GOP_CTX_LOCAL*pGOPCtx); 1599*53ee8cc1Swenshuai.xi GOP_Result MDrv_GOP_TestPatternAlpha_Enable(MS_GOP_CTX_LOCAL*pGOPCtx, MS_BOOL bTSTClr_Alpha_En); 1600*53ee8cc1Swenshuai.xi GOP_Result MDrv_GOP_TestPattern(MS_GOP_CTX_LOCAL*pGOPCtx, MS_BOOL bTSTClr_En, MS_U8 u8TSTClr_Alpha); 1601*53ee8cc1Swenshuai.xi GOP_Result MDrv_GOP_TestPattern_SetStartClr(MS_GOP_CTX_LOCAL*pGOPCtx,MS_U8 u8StartR,MS_U8 u8StartG,MS_U8 u8StartB); 1602*53ee8cc1Swenshuai.xi GOP_Result MDrv_GOP_TestPattern_SetHInitColor(MS_GOP_CTX_LOCAL*pGOPCtx,MS_U8 u8HIniR,MS_U8 u8HIniG,MS_U8 u8HIniB); 1603*53ee8cc1Swenshuai.xi GOP_Result MDrv_GOP_TestPattern_SetVInitColor(MS_GOP_CTX_LOCAL*pGOPCtx,MS_U8 u8VIniR,MS_U8 u8VIniG,MS_U8 u8VIniB); 1604*53ee8cc1Swenshuai.xi GOP_Result MDrv_GOP_TestPattern_SetHIncremental_Signz(MS_GOP_CTX_LOCAL*pGOPCtx,MS_BOOL bHIncreSigR,MS_BOOL bHIncreSigG,MS_BOOL bHIncreSigB); 1605*53ee8cc1Swenshuai.xi GOP_Result MDrv_GOP_TestPattern_SetVIncremental_Signz(MS_GOP_CTX_LOCAL*pGOPCtx,MS_BOOL bVIncreSigR,MS_BOOL bVIncreSigG,MS_BOOL bVIncreSigB); 1606*53ee8cc1Swenshuai.xi GOP_Result MDrv_GOP_TestPattern_SetHStep(MS_GOP_CTX_LOCAL*pGOPCtx,MS_U8 u8HStepR,MS_U8 u8HStepG,MS_U8 u8HStepB); 1607*53ee8cc1Swenshuai.xi GOP_Result MDrv_GOP_TestPattern_SetVStep(MS_GOP_CTX_LOCAL*pGOPCtx,MS_U8 u8VStepR,MS_U8 u8VStepG,MS_U8 u8VStepB); 1608*53ee8cc1Swenshuai.xi GOP_Result MDrv_GOP_TestPattern_SetHVDuplicate(MS_GOP_CTX_LOCAL*pGOPCtx,MS_U8 u8HDup,MS_U8 u8VDup); 1609*53ee8cc1Swenshuai.xi MS_BOOL MDrv_GOP_GWIN_BeginDraw(void); 1610*53ee8cc1Swenshuai.xi MS_BOOL MDrv_GOP_GWIN_EndDraw(void); 1611*53ee8cc1Swenshuai.xi void MDrv_GOP_GWIN_Interrupt(MS_GOP_CTX_LOCAL*pGOPCtx,MS_U8 u8Gop,MS_BOOL bEable); 1612*53ee8cc1Swenshuai.xi 1613*53ee8cc1Swenshuai.xi //====================================================================================== 1614*53ee8cc1Swenshuai.xi // GOP HDR 1615*53ee8cc1Swenshuai.xi //====================================================================================== 1616*53ee8cc1Swenshuai.xi GOP_Result MDrv_GOP_IsHDREnabled(MS_GOP_CTX_LOCAL*pGOPCtx, MS_BOOL* pbHDREnable); 1617*53ee8cc1Swenshuai.xi 1618*53ee8cc1Swenshuai.xi #ifdef CONFIG_UTOPIA_PROC_DBG_SUPPORT 1619*53ee8cc1Swenshuai.xi void MDrv_GOP_MDCMD_GETINFO(void* pInstance, MS_U64* u64ReqHdl); 1620*53ee8cc1Swenshuai.xi void MDrv_GOP_MDCMD_EchoCmd(void* pInstance, MS_U64* u64ReqHdl, char* pcCmdLine); 1621*53ee8cc1Swenshuai.xi #endif 1622*53ee8cc1Swenshuai.xi 1623*53ee8cc1Swenshuai.xi #ifdef __cplusplus 1624*53ee8cc1Swenshuai.xi } 1625*53ee8cc1Swenshuai.xi #endif 1626*53ee8cc1Swenshuai.xi 1627*53ee8cc1Swenshuai.xi 1628*53ee8cc1Swenshuai.xi #endif // _DRV_TEMP_H_ 1629