xref: /utopia/UTPA2-700.0.x/modules/graphic/drv/gop/drvGOP.h (revision 53ee8cc121a030b8d368113ac3e966b4705770ef)
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