xref: /utopia/UTPA2-700.0.x/modules/mvop/drv/mvop/MVOP_private.h (revision 53ee8cc121a030b8d368113ac3e966b4705770ef)
1 //<MStar Software>
2 //******************************************************************************
3 // MStar Software
4 // Copyright (c) 2010 - 2012 MStar Semiconductor, Inc. All rights reserved.
5 // All software, firmware and related documentation herein ("MStar Software") are
6 // intellectual property of MStar Semiconductor, Inc. ("MStar") and protected by
7 // law, including, but not limited to, copyright law and international treaties.
8 // Any use, modification, reproduction, retransmission, or republication of all
9 // or part of MStar Software is expressly prohibited, unless prior written
10 // permission has been granted by MStar.
11 //
12 // By accessing, browsing and/or using MStar Software, you acknowledge that you
13 // have read, understood, and agree, to be bound by below terms ("Terms") and to
14 // comply with all applicable laws and regulations
15 //
16 // 1. MStar shall retain any and all right, ownership and interest to MStar
17 //    Software and any modification/derivatives thereof.
18 //    No right, ownership, or interest to MStar Software and any
19 //    modification/derivatives thereof is transferred to you under Terms.
20 //
21 // 2. You understand that MStar Software might include, incorporate or be
22 //    supplied together with third party`s software and the use of MStar
23 //    Software may require additional licenses from third parties.
24 //    Therefore, you hereby agree it is your sole responsibility to separately
25 //    obtain any and all third party right and license necessary for your use of
26 //    such third party`s software.
27 //
28 // 3. MStar Software and any modification/derivatives thereof shall be deemed as
29 //    MStar`s confidential information and you agree to keep MStar`s
30 //    confidential information in strictest confidence and not disclose to any
31 //    third party.
32 //
33 // 4. MStar Software is provided on an "AS IS" basis without warranties of any
34 //    kind. Any warranties are hereby expressly disclaimed by MStar, including
35 //    without limitation, any warranties of merchantability, non-infringement of
36 //    intellectual property rights, fitness for a particular purpose, error free
37 //    and in conformity with any international standard.  You agree to waive any
38 //    claim against MStar for any loss, damage, cost or expense that you may
39 //    incur related to your use of MStar Software.
40 //    In no event shall MStar be liable for any direct, indirect, incidental or
41 //    consequential damages, including without limitation, lost of profit or
42 //    revenues, lost or damage of data, and unauthorized system use.
43 //    You agree that this Section 4 shall still apply without being affected
44 //    even if MStar Software has been modified by MStar in accordance with your
45 //    request or instruction for your use, except otherwise agreed by both
46 //    parties in writing.
47 //
48 // 5. If requested, MStar may from time to time provide technical supports or
49 //    services in relation with MStar Software to you for your use of
50 //    MStar Software in conjunction with your or your customer`s product
51 //    ("Services").
52 //    You understand and agree that, except otherwise agreed by both parties in
53 //    writing, Services are provided on an "AS IS" basis and the warranty
54 //    disclaimer set forth in Section 4 above shall apply.
55 //
56 // 6. Nothing contained herein shall be construed as by implication, estoppels
57 //    or otherwise
58 //    (a) conferring any license or right to use MStar name, trademark, service
59 //        mark, symbol or any other identification;
60 //    (b) obligating MStar or any of its affiliates to furnish any person,
61 //        including without limitation, you and your customers, any assistance
62 //        of any kind whatsoever, or any information; or
63 //    (c) conferring any license or right under any intellectual property right.
64 //
65 // 7. These terms shall be governed by and construed in accordance with the laws
66 //    of Taiwan, R.O.C., excluding its conflict of law rules.
67 //    Any and all dispute arising out hereof or related hereto shall be finally
68 //    settled by arbitration referred to the Chinese Arbitration Association,
69 //    Taipei in accordance with the ROC Arbitration Law and the Arbitration
70 //    Rules of the Association by three (3) arbitrators appointed in accordance
71 //    with the said Rules.
72 //    The place of arbitration shall be in Taipei, Taiwan and the language shall
73 //    be English.
74 //    The arbitration award shall be final and binding to both parties.
75 //
76 //******************************************************************************
77 
78 #ifndef _API_MVOP_PRIV_H_
79 #define _API_MVOP_PRIV_H_
80 
81 
82 ////////////////////////////////////////////////////////////////////////////////
83 // Header Files
84 ////////////////////////////////////////////////////////////////////////////////
85 #ifdef __cplusplus
86 extern "C"
87 {
88 #endif
89 
90 typedef struct __attribute__((packed))
91 {
92     MS_U32 Dummy;
93 }MVOP_RESOURCE_PRIVATE;
94 
95 typedef void                         (*IOCTL_MVOP_INIT)                                 (void*);
96 typedef void                         (*IOCTL_MVOP_EXIT)                                 (void*);
97 typedef void                         (*IOCTL_MVOP_ENABLE)                                 (void*, MS_BOOL);
98 typedef MVOP_Result                         (*IOCTL_MVOP_SETINPUTCFG)                                 (void*, MVOP_InputSel, MVOP_InputCfg*);
99 typedef MVOP_Result                         (*IOCTL_MVOP_SETOTPUTCFG)                                 (void*, MVOP_VidStat*, MS_BOOL);
100 typedef void                         (*IOCTL_MVOP_ENABLEBLACKBG)                                 (void*);
101 typedef void                         (*IOCTL_MVOP_ENABLEUVSHIFT)                                 (void*, MS_BOOL);
102 typedef void                         (*IOCTL_MVOP_SETMONOMODE)                                 (void*, MS_BOOL);
103 
104 typedef MS_U16                         (*IOCTL_MVOP_GETHSIZE)                                 (void*);
105 typedef MS_U16                         (*IOCTL_MVOP_GETVSIZE)                                 (void*);
106 typedef MS_U16                         (*IOCTL_MVOP_GETHSTART)                                 (void*);
107 typedef MS_U16                         (*IOCTL_MVOP_GETVSTART)                                 (void*);
108 typedef MS_BOOL                         (*IOCTL_MVOP_GETISINTERLACE)                                 (void*);
109 typedef MS_BOOL                         (*IOCTL_MVOP_GETISHDUPLICATE)                                 (void*);
110 typedef MVOP_Result                         (*IOCTL_MVOP_GETISENABLE)                                 (void*, MS_BOOL*);
111 typedef MVOP_Result                         (*IOCTL_MVOP_GETOUTPUTTIMING)                                 (void*, MVOP_Timing*);
112 typedef MVOP_Result                         (*IOCTL_MVOP_GETLIBVER)                                 (void*, const MSIF_Version **);
113 typedef MS_BOOL                         (*IOCTL_MVOP_CHECKCAPABILITY)                                 (void*, MS_U16, MS_U16, MS_U16);
114 typedef MS_U16                         (*IOCTL_MVOP_GETMAXHOFFSET)                                 (void*, MS_U16, MS_U16, MS_U16);
115 typedef MS_U16                         (*IOCTL_MVOP_GETMAXVOFFSET)                                 (void*, MS_U16, MS_U16, MS_U16);
116 
117 typedef void                         (*IOCTL_MVOP_SETDBGLEVEL)                                 (void*, MS_U8);
118 typedef const MVOP_DrvInfo*                         (*IOCTL_MVOP_GETINFO)                     (void*);
119 typedef MS_BOOL                         (*IOCTL_MVOP_GETSTATUS)                                 (void*, MVOP_DrvStatus*);
120 typedef void                      (*IOCTL_MVOP_SETCLK)                                 (void*, MS_BOOL);
121 typedef void                         (*IOCTL_MVOP_SETPATTERN)                                 (void*, MVOP_Pattern);
122 typedef MS_BOOL                         (*IOCTL_MVOP_SETTILEFORMAT)                                 (void*, MVOP_TileFormat);
123 typedef MS_BOOL                         (*IOCTL_MVOP_GETDSTINFO)                                 (void*, MVOP_DST_DispInfo*, MS_U32);
124 typedef MS_BOOL                         (*IOCTL_MVOP_SETFIXVTT)                                 (void*, MS_U16);
125 typedef MS_BOOL                         (*IOCTL_MVOP_SETMMIOMAPBASE)                                 (void*);
126 typedef MVOP_Result                         (*IOCTL_MVOP_MIUSWITCH)                                 (void*, MS_U8);
127 typedef MS_BOOL                         (*IOCTL_MVOP_SETBASEADD)                                 (void*, MS_PHY, MS_PHY, MS_BOOL, MS_BOOL);
128 typedef void                         (*IOCTL_MVOP_SELOPFIELD)                                 (void*, MS_BOOL);
129 typedef void                         (*IOCTL_MVOP_SETREGSIZEFROMMVD)                                 (void*, MS_BOOL);
130 typedef void                         (*IOCTL_MVOP_SETSTARTPOS)                                 (void*, MS_U16, MS_U16);
131 typedef MS_BOOL                         (*IOCTL_MVOP_SETIMAGEWIDTHHIGHT)                                 (void*, MS_U16, MS_U16);
132 typedef void                         (*IOCTL_MVOP_SETVOPMIRRORMODE)                                 (void*, MS_BOOL, MVOP_DrvMirror);
133 typedef void                         (*IOCTL_MVOP_INVOPVS)                                 (void*, MS_BOOL);
134 typedef void                         (*IOCTL_MVOP_FORCETOP)                                 (void*, MS_BOOL);
135 typedef MS_BOOL                         (*IOCTL_MVOP_ENABLEFREERUNMODE)                                 (void*, MS_BOOL);
136 typedef void                         (*IOCTL_MVOP_GETBASEADD)                                 (void*, MS_PHY*, MS_PHY*);
137 
138 //Functions for Sub MVOP
139 //Basic control functions
140 typedef void                         (*IOCTL_MVOP_SUBINIT)                                 (void*);
141 typedef void                         (*IOCTL_MVOP_SUBEXIT)                                 (void*);
142 typedef void                         (*IOCTL_MVOP_SUBENABLE)                                 (void*, MS_BOOL);
143 typedef MVOP_Result                         (*IOCTL_MVOP_SUBSETINPUTCFG)                                 (void*, MVOP_InputSel, MVOP_InputCfg*);
144 typedef MVOP_Result                         (*IOCTL_MVOP_SUBSETOTPUTCFG)                                 (void*, MVOP_VidStat *, MS_BOOL);
145 
146 //Advanced control functions
147 typedef void                         (*IOCTL_MVOP_SUBENABLEBLACKBG)                                 (void*);
148 typedef void                         (*IOCTL_MVOP_SUBENABLEUVSHIFT)                                 (void*, MS_BOOL);
149 typedef void                         (*IOCTL_MVOP_SUBSETMONOMODE)                                 (void*, MS_BOOL);
150 typedef MS_BOOL                         (*IOCTL_MVOP_SUBGETSTATUS)                                 (void*, MVOP_DrvStatus*);
151 typedef MS_U16                         (*IOCTL_MVOP_SUBGETHSIZE)                                 (void*);
152 typedef MS_U16                         (*IOCTL_MVOP_SUBGETVSIZE)                                 (void*);
153 typedef MS_U16                         (*IOCTL_MVOP_SUBGETHSTART)                                 (void*);
154 typedef MS_U16                         (*IOCTL_MVOP_SUBGETVSTART)                                 (void*);
155 typedef MS_BOOL                         (*IOCTL_MVOP_SUBGETISINTERLACE)                                 (void*);
156 typedef MS_BOOL                         (*IOCTL_MVOP_SUBGETISHDUPLICATE)                                 (void*);
157 typedef MVOP_Result                         (*IOCTL_MVOP_SUBGETISENABLE)                                 (void*, MS_BOOL*);
158 typedef MVOP_Result                         (*IOCTL_MVOP_SUBGETOUTPUTTIMING)                                 (void*, MVOP_Timing*);
159 typedef MS_BOOL                         (*IOCTL_MVOP_SUBCHECKCAPABILITY)                                 (void*, MS_U16, MS_U16, MS_U16);
160 typedef MS_U16                         (*IOCTL_MVOP_SUBGETMAXHOFFSET)                                 (void*, MS_U16, MS_U16, MS_U16);
161 typedef MS_U16                         (*IOCTL_MVOP_SUBGETMAXVOFFSET)                                 (void*, MS_U16, MS_U16, MS_U16);
162 typedef void                        (*IOCTL_MVOP_SUBSETCLK)                                 (void*, MS_BOOL);
163 typedef void                         (*IOCTL_MVOP_SUBSETPATTERN)                                 (void*, MVOP_Pattern);
164 typedef MS_BOOL                         (*IOCTL_MVOP_SUBSETTILEFORMAT)                                 (void*, MVOP_TileFormat);
165 typedef MS_BOOL                         (*IOCTL_MVOP_SUBGETDSTINFO)                                 (void*, MVOP_DST_DispInfo*, MS_U32);
166 typedef MS_BOOL                         (*IOCTL_MVOP_SUBSETFIXVTT)                                 (void*, MS_U16);
167 typedef MS_BOOL                         (*IOCTL_MVOP_SUBSETMMIOMAPBASE)                                 (void*);
168 typedef MVOP_Result                         (*IOCTL_MVOP_SUBMIUSWITCH)                                 (void*, MS_U8);
169 typedef MS_BOOL                         (*IOCTL_MVOP_SUBSETBASEADD)                                 (void*, MS_PHY, MS_PHY, MS_BOOL, MS_BOOL);
170 typedef void                         (*IOCTL_MVOP_SUBSETVOPMIRRORMODE)                                 (void*, MS_BOOL, MVOP_DrvMirror);
171 typedef MS_BOOL                         (*IOCTL_MVOP_SUBENABLEFREERUNMODE)                                 (void*, MS_BOOL);
172 typedef void                         (*IOCTL_MVOP_SUBGETBASEADD)                             (void*, MS_PHY*, MS_PHY*);
173 
174 // { Functions for the 3rd MVOP
175 //Basic control functions
176 typedef MVOP_Result                         (*IOCTL_MVOP_EXINIT)                                 (void*, MVOP_DevID, MS_U32);
177 typedef MVOP_Result                         (*IOCTL_MVOP_EXEXIT)                                 (void*, MVOP_DevID, MS_U32);
178 typedef MVOP_Result                         (*IOCTL_MVOP_EXENABLE)                                 (void*, MVOP_DevID, MS_BOOL);
179 typedef MVOP_Result                         (*IOCTL_MVOP_EXSETINPUTCFG)                                 (void*, MVOP_DevID, MVOP_InputSel, MVOP_InputCfg*);
180 typedef MVOP_Result                         (*IOCTL_MVOP_EXSETOTPUTCFG)                                 (void*, MVOP_DevID, MVOP_VidStat*, MS_BOOL);
181 
182 //Advanced control functions
183 typedef void                        (*IOCTL_MVOP_EXSETCLK)                                 (void*, MVOP_DevID, MS_BOOL);
184 typedef MVOP_Result                         (*IOCTL_MVOP_EXSETPATTERN)                                 (void*, MVOP_DevID, MVOP_Pattern);
185 typedef MVOP_Result                         (*IOCTL_MVOP_EXSETTILEFORMAT)                                 (void*, MVOP_DevID, MVOP_TileFormat);
186 typedef MVOP_Result                         (*IOCTL_MVOP_EXENABLEUVSHIFT)                                 (void*, MVOP_DevID, MS_BOOL);
187 typedef MVOP_Result                         (*IOCTL_MVOP_EXENABLEBLACKBG)                                 (void*, MVOP_DevID);
188 typedef MVOP_Result                         (*IOCTL_MVOP_EXSETMONOMODE)                                 (void*, MVOP_DevID, MS_BOOL);
189 typedef MVOP_Result                         (*IOCTL_MVOP_EXSETFIXVTT)                                 (void*, MVOP_DevID, MS_U16);
190 typedef MVOP_Result                         (*IOCTL_MVOP_EXMIUSWITCH)                                 (void*, MVOP_DevID, MS_U8);
191 typedef MVOP_Result                         (*IOCTL_MVOP_EXSETVOPMIRRORMODE)                                 (void*, MVOP_DevID, MS_BOOL, MVOP_DrvMirror);
192 typedef MVOP_Result                         (*IOCTL_MVOP_EXENABLEFREERUNMODE)                                 (void*, MVOP_DevID, MS_BOOL);
193 
194 // Query functions
195 typedef MVOP_Result                         (*IOCTL_MVOP_EXGETOUTPUTTIMING)                                 (void*, MVOP_DevID, MVOP_Timing*);
196 typedef MVOP_Result                         (*IOCTL_MVOP_EXGETISENABLE)                                 (void*, MVOP_DevID, MS_BOOL*);
197 typedef MS_U16                         (*IOCTL_MVOP_EXGETHSIZE)                                 (void*, MVOP_DevID);
198 typedef MS_U16                         (*IOCTL_MVOP_EXGETVSIZE)                                 (void*, MVOP_DevID);
199 typedef MS_U16                         (*IOCTL_MVOP_EXGETHSTART)                                 (void*, MVOP_DevID);
200 typedef MS_U16                         (*IOCTL_MVOP_EXGETVSTART)                                 (void*, MVOP_DevID);
201 typedef MS_BOOL                         (*IOCTL_MVOP_EXGETISINTERLACE)                                 (void*, MVOP_DevID);
202 typedef MS_BOOL                         (*IOCTL_MVOP_EXGETISHDUPLICATE)                                 (void*, MVOP_DevID);
203 typedef MS_BOOL                         (*IOCTL_MVOP_EXGETSTATUS)                                 (void*, MVOP_DevID, MVOP_DrvStatus*);
204 typedef MS_BOOL                         (*IOCTL_MVOP_EXCHECKCAPABILITY)                                 (void*, MVOP_DevID, MS_U32);
205 typedef MS_BOOL                         (*IOCTL_MVOP_EXGETDSTINFO)                                 (void*, MVOP_DevID, MVOP_DST_DispInfo*, MS_U32);
206 
207 typedef MVOP_Result                         (*IOCTL_MVOP_SENDBLUESCREEN)                                 (void*, MS_U16, MS_U16);
208 typedef MVOP_Result                         (*IOCTL_MVOP_SETCOMMAND)                                 (void*, MVOP_Handle*, MVOP_Command, void*);
209 typedef MVOP_Result                         (*IOCTL_MVOP_GETCOMMAND)                                 (void*, MVOP_Handle*, MVOP_Command, void*, MS_U32);
210 typedef void                         (*IOCTL_MVOP_SETFREQUENCY)                                 (void*, MVOP_FREQUENCY);
211 
212 typedef MS_BOOL                         (*IOCTL_MVOP_ENABLEINTERRUPT)                                 (void*, MS_U8);
213 typedef MS_U8                         (*IOCTL_MVOP_GETINTSTATUS)                                 (void*);
214 typedef MS_BOOL                         (*IOCTL_MVOP_SUBENABLEINTERRUPT)                                 (void*, MVOP_IntType);
215 typedef MS_U8                         (*IOCTL_MVOP_SUBGETINTSTATUS)                                 (void*);
216 typedef MS_BOOL                         (*IOCTL_MVOP_EXENABLEINTERRUPT)                                 (void*, MVOP_DevID, MVOP_IntType);
217 typedef MS_U8                         (*IOCTL_MVOP_EXGETINTSTATUS)                                 (void*, MVOP_DevID);
218 
219 typedef MS_U32                         (*IOCTL_MVOP_SETPOWERSTATE)                                 (void*, EN_POWER_MODE);
220 typedef MS_U32                         (*IOCTL_MVOP_SETPOWERSTATE_USERMODE)                                 (void*, EN_POWER_MODE);
221 
222 
223 // OBSOLETE FUNCTION POINTER END
224 
225 
226 
227 typedef struct
228 {
229     IOCTL_MVOP_INIT                                 fpMVOP_Init;
230     IOCTL_MVOP_EXIT                                 fpMVOP_Exit;
231     IOCTL_MVOP_ENABLE                               fpMVOP_Enable;
232     IOCTL_MVOP_SETINPUTCFG                          fpMVOP_SetInputCfg;
233     IOCTL_MVOP_SETOTPUTCFG                          fpMVOP_SetOutputCfg;
234     IOCTL_MVOP_ENABLEBLACKBG                        fpMVOP_EnableBlackBG;
235     IOCTL_MVOP_ENABLEUVSHIFT                        fpMVOP_EnableUVShift;
236     IOCTL_MVOP_SETMONOMODE                          fpMVOP_SetMonoMode;
237 
238     IOCTL_MVOP_GETHSIZE                             fpMVOP_GetHSize;
239     IOCTL_MVOP_GETVSIZE                             fpMVOP_GetVSize;
240     IOCTL_MVOP_GETHSTART                            fpMVOP_GetHStart;
241     IOCTL_MVOP_GETVSTART                            fpMVOP_GetVStart;
242     IOCTL_MVOP_GETISINTERLACE                       fpMVOP_GetIsInterlace;
243     IOCTL_MVOP_GETISHDUPLICATE                      fpMVOP_GetIsHDuplicate;
244     IOCTL_MVOP_GETISENABLE                          fpMVOP_GetIsEnable;
245     IOCTL_MVOP_GETOUTPUTTIMING                      fpMVOP_GetOutputTiming;
246     IOCTL_MVOP_GETLIBVER                            fpMVOP_GetLibVer;
247     IOCTL_MVOP_CHECKCAPABILITY                      fpMVOP_CheckCapability;
248     IOCTL_MVOP_GETMAXHOFFSET                        fpMVOP_GetMaxHOffset;
249     IOCTL_MVOP_GETMAXVOFFSET                        fpMVOP_GetMaxVOffset;
250 
251     IOCTL_MVOP_SETDBGLEVEL                          fpMVOP_SetDbgLevel;
252     IOCTL_MVOP_GETINFO                              fpMVOP_GetInfo;
253     IOCTL_MVOP_GETSTATUS                            fpMVOP_GetStatus;
254     IOCTL_MVOP_SETCLK                               fpMVOP_SetClk;
255     IOCTL_MVOP_SETPATTERN                           fpMVOP_SetPattern;
256     IOCTL_MVOP_SETTILEFORMAT                        fpMVOP_SetTileFormat;
257     IOCTL_MVOP_GETDSTINFO                           fpMVOP_GetDstInfo;
258     IOCTL_MVOP_SETFIXVTT                            fpMVOP_SetFixVtt;
259     IOCTL_MVOP_SETMMIOMAPBASE                       fpMVOP_SetMMIOMapBase;
260     IOCTL_MVOP_MIUSWITCH                            fpMVOP_MiuSwitch;
261     IOCTL_MVOP_SETBASEADD                           fpMVOP_SetBaseAdd;
262     IOCTL_MVOP_SELOPFIELD                           fpMVOP_SelOPField;
263     IOCTL_MVOP_SETREGSIZEFROMMVD                    fpMVOP_SetRegSizeFromMVD;
264     IOCTL_MVOP_SETSTARTPOS                          fpMVOP_SetStartPos;
265     IOCTL_MVOP_SETIMAGEWIDTHHIGHT                   fpMVOP_SetImageWidthHight;
266     IOCTL_MVOP_SETVOPMIRRORMODE                     fpMVOP_SetVOPMirrorMode;
267     IOCTL_MVOP_INVOPVS                              fpMVOP_InvOPVS;
268     IOCTL_MVOP_FORCETOP                             fpMVOP_ForceTop;
269     IOCTL_MVOP_ENABLEFREERUNMODE                    fpMVOP_EnableFreerunMode;
270     IOCTL_MVOP_GETBASEADD                           fpMVOP_GetBaseAdd;
271 
272     //Sub MVOP
273     IOCTL_MVOP_SUBINIT                              fpMVOP_SubInit;
274     IOCTL_MVOP_SUBEXIT                              fpMVOP_SubExit;
275     IOCTL_MVOP_SUBENABLE                            fpMVOP_SubEnable;
276     IOCTL_MVOP_SUBSETINPUTCFG                       fpMVOP_SubSetInputCfg;
277     IOCTL_MVOP_SUBSETOTPUTCFG                       fpMVOP_SubSetOutputCfg;
278 
279     IOCTL_MVOP_SUBENABLEBLACKBG                     fpMVOP_SubEnableBlackBG;
280     IOCTL_MVOP_SUBENABLEUVSHIFT                     fpMVOP_SubEnableUVShift;
281     IOCTL_MVOP_SUBSETMONOMODE                       fpMVOP_SubSetMonoMode;
282     IOCTL_MVOP_SUBGETSTATUS                         fpMVOP_SubGetStatus;
283     IOCTL_MVOP_SUBGETHSIZE                          fpMVOP_SubGetHSize;
284     IOCTL_MVOP_SUBGETVSIZE                          fpMVOP_SubGetVSize;
285     IOCTL_MVOP_SUBGETHSTART                         fpMVOP_SubGetHStart;
286     IOCTL_MVOP_SUBGETVSTART                         fpMVOP_SubGetVStart;
287     IOCTL_MVOP_SUBGETISINTERLACE                    fpMVOP_SubGetIsInterlace;
288     IOCTL_MVOP_SUBGETISHDUPLICATE                   fpMVOP_SubGetIsHDuplicate;
289     IOCTL_MVOP_SUBGETISENABLE                       fpMVOP_SubGetIsEnable;
290     IOCTL_MVOP_SUBGETOUTPUTTIMING                   fpMVOP_SubGetOutputTiming;
291     IOCTL_MVOP_SUBCHECKCAPABILITY                   fpMVOP_SubCheckCapability;
292     IOCTL_MVOP_SUBGETMAXHOFFSET                     fpMVOP_SubGetMaxHOffset;
293     IOCTL_MVOP_SUBGETMAXVOFFSET                     fpMVOP_SubGetMaxVOffset;
294     IOCTL_MVOP_SUBSETCLK                            fpMVOP_SubSetClk;
295     IOCTL_MVOP_SUBSETPATTERN                        fpMVOP_SubSetPattern;
296     IOCTL_MVOP_SUBSETTILEFORMAT                     fpMVOP_SubSetTileFormat;
297     IOCTL_MVOP_SUBGETDSTINFO                        fpMVOP_SubGetDstInfo;
298     IOCTL_MVOP_SUBSETFIXVTT                         fpMVOP_SubSetFixVtt;
299     IOCTL_MVOP_SUBSETMMIOMAPBASE                    fpMVOP_SubSetMMIOMapBase;
300     IOCTL_MVOP_SUBMIUSWITCH                         fpMVOP_SubMiuSwitch;
301     IOCTL_MVOP_SUBSETBASEADD                        fpMVOP_SubSetBaseAdd;
302     IOCTL_MVOP_SUBSETVOPMIRRORMODE                  fpMVOP_SubSetVOPMirrorMode;
303     IOCTL_MVOP_SUBENABLEFREERUNMODE                 fpMVOP_SubEnableFreerunMode;
304     IOCTL_MVOP_SUBGETBASEADD                        fpMVOP_SubGetBaseAdd;
305 
306     //Third MVOP
307     IOCTL_MVOP_EXINIT                               fpMVOP_ExInit;
308     IOCTL_MVOP_EXEXIT                               fpMVOP_ExExit;
309     IOCTL_MVOP_EXENABLE                             fpMVOP_ExEnable;
310     IOCTL_MVOP_EXSETINPUTCFG                        fpMVOP_ExInputCfg;
311     IOCTL_MVOP_EXSETOTPUTCFG                        fpMVOP_ExOutputCfg;
312 
313     IOCTL_MVOP_EXSETCLK                             fpMVOP_ExSetClk;
314     IOCTL_MVOP_EXSETPATTERN                         fpMVOP_ExSetPattern;
315     IOCTL_MVOP_EXSETTILEFORMAT                      fpMVOP_ExSetTileFormat;
316     IOCTL_MVOP_EXENABLEUVSHIFT                      fpMVOP_ExEnableUVShift;
317     IOCTL_MVOP_EXENABLEBLACKBG                      fpMVOP_ExEnableBlackBG;
318     IOCTL_MVOP_EXSETMONOMODE                        fpMVOP_ExSetMonoMode;
319     IOCTL_MVOP_EXSETFIXVTT                          fpMVOP_ExSetFixVtt;
320     IOCTL_MVOP_EXMIUSWITCH                          fpMVOP_ExMiuSwitch;
321     IOCTL_MVOP_EXSETVOPMIRRORMODE                   fpMVOP_ExSetVOPMirrorMode;
322     IOCTL_MVOP_EXENABLEFREERUNMODE                  fpMVOP_ExEnableFreerunMode;
323 
324     IOCTL_MVOP_EXGETOUTPUTTIMING                    fpMVOP_ExGetOutputTiming;
325     IOCTL_MVOP_EXGETISENABLE                        fpMVOP_ExGetIsEnable;
326     IOCTL_MVOP_EXGETHSIZE                           fpMVOP_ExGetHSize;
327     IOCTL_MVOP_EXGETVSIZE                           fpMVOP_ExGetVSize;
328     IOCTL_MVOP_EXGETHSTART                          fpMVOP_ExGetHStart;
329     IOCTL_MVOP_EXGETVSTART                          fpMVOP_ExGetVStart;
330     IOCTL_MVOP_EXGETISINTERLACE                     fpMVOP_ExGetIsInterlace;
331     IOCTL_MVOP_EXGETISHDUPLICATE                    fpMVOP_ExGetIsHDuplicate;
332     IOCTL_MVOP_EXGETSTATUS                          fpMVOP_ExGetStatus;
333     IOCTL_MVOP_EXCHECKCAPABILITY                    fpMVOP_ExCheckCapability;
334     IOCTL_MVOP_EXGETDSTINFO                         fpMVOP_ExGetDstInfo;
335 
336     IOCTL_MVOP_SENDBLUESCREEN                       fpMVOP_SendBlueScreen;
337     IOCTL_MVOP_SETCOMMAND                           fpMVOP_SetCommand;
338     IOCTL_MVOP_GETCOMMAND                           fpMVOP_GetCommand;
339     IOCTL_MVOP_SETFREQUENCY                         fpMVOP_SetFrequency;
340 
341     IOCTL_MVOP_ENABLEINTERRUPT                      fpMVOP_EnableInterrupt;
342     IOCTL_MVOP_GETINTSTATUS                         fpMVOP_GetIntStatus;
343     IOCTL_MVOP_SUBENABLEINTERRUPT                   fpMVOP_SubEnableInterrupt;
344     IOCTL_MVOP_SUBGETINTSTATUS                      fpMVOP_SubGetIntStatus;
345     IOCTL_MVOP_EXENABLEINTERRUPT                    fpMVOP_ExEnableInterrupt;
346     IOCTL_MVOP_EXGETINTSTATUS                       fpMVOP_ExGetIntStatus;
347 
348     IOCTL_MVOP_SETPOWERSTATE                        fpMVOP_SetPowerState_Kernel;
349     IOCTL_MVOP_SETPOWERSTATE_USERMODE               fpMVOP_SetPowerState;
350 
351     // OBSOLETE FUNCTION POINTER END
352     // avoid using these functions pointers!!!!
353 }MVOP_INSTANCE_PRIVATE;
354 
355 //-------------------------------------------------------------------------------------------------
356 //  Function and Variable
357 //-------------------------------------------------------------------------------------------------
358 void MDrv_MVOP_Init_V2 (void* pInstance);
359 void MDrv_MVOP_Exit_V2(void* pInstance);
360 void MDrv_MVOP_Enable_V2(void* pInstance, MS_BOOL bEnable);
361 MVOP_Result MDrv_MVOP_SetInputCfg_V2 (void* pInstance, MVOP_InputSel in, MVOP_InputCfg* pCfg);
362 MVOP_Result MDrv_MVOP_SetOutputCfg_V2(void* pInstance, MVOP_VidStat *pstVideoStatus, MS_BOOL bEnHDup);
363 void MDrv_MVOP_EnableBlackBG_V2 (void* pInstance);
364 void MDrv_MVOP_EnableUVShift_V2(void* pInstance, MS_BOOL bEnable);
365 void MDrv_MVOP_SetMonoMode_V2(void* pInstance, MS_BOOL bEnable);
366 
367 MS_U16 MDrv_MVOP_GetHSize_V2(void* pInstance);
368 MS_U16 MDrv_MVOP_GetVSize_V2(void* pInstance);
369 MS_U16 MDrv_MVOP_GetHStart_V2(void* pInstance);
370 MS_U16 MDrv_MVOP_GetVStart_V2(void* pInstance);
371 MS_BOOL MDrv_MVOP_GetIsInterlace_V2(void* pInstance);
372 MS_BOOL MDrv_MVOP_GetIsHDuplicate_V2(void* pInstance);
373 MVOP_Result MDrv_MVOP_GetIsEnable_V2 ( void* pInstance, MS_BOOL* pbEnable );
374 MVOP_Result MDrv_MVOP_GetOutputTiming_V2(void* pInstance, MVOP_Timing* pMVOPTiming);
375 MVOP_Result MDrv_MVOP_GetLibVer_V2(void* pInstance, const MSIF_Version **ppVersion);
376 MS_BOOL MDrv_MVOP_CheckCapability_V2(void* pInstance, MS_U16 u16HSize, MS_U16 u16VSize, MS_U16 u16Fps);
377 MS_U16 MDrv_MVOP_GetMaxHOffset_V2(void* pInstance, MS_U16 u16HSize, MS_U16 u16VSize, MS_U16 u16Fps);
378 MS_U16 MDrv_MVOP_GetMaxVOffset_V2(void* pInstance, MS_U16 u16HSize, MS_U16 u16VSize, MS_U16 u16Fps);
379 
380 void MDrv_MVOP_SetDbgLevel_V2(void* pInstance, MS_U8 level);
381 const MVOP_DrvInfo* MDrv_MVOP_GetInfo_V2(void* pInstance);
382 MS_BOOL MDrv_MVOP_GetStatus_V2(void* pInstance, MVOP_DrvStatus *pMVOPStat);
383 void MDrv_MVOP_SetClk_V2 (void* pInstance, MS_BOOL bEnable );
384 void MDrv_MVOP_SetPattern_V2(void* pInstance, MVOP_Pattern enMVOPPattern);
385 MS_BOOL MDrv_MVOP_SetTileFormat_V2(void* pInstance, MVOP_TileFormat eTileFmt);
386 MS_BOOL MDrv_MVOP_GetDstInfo_V2(void* pInstance, MVOP_DST_DispInfo *pDstInfo, MS_U32 u32SizeofDstInfo);
387 MS_BOOL MDrv_MVOP_SetFixVtt_V2(void* pInstance, MS_U16 u16FixVtt);
388 MS_BOOL MDrv_MVOP_SetMMIOMapBase_V2(void* pInstance);
389 MVOP_Result MDrv_MVOP_MiuSwitch_V2(void* pInstance, MS_U8 u8Miu);
390 MS_BOOL MDrv_MVOP_SetBaseAdd_V2(void* pInstance, MS_PHY u32YOffset, MS_PHY u32UVOffset, MS_BOOL bProgressive, MS_BOOL b422pack);
391 void MDrv_MVOP_SEL_OP_FIELD_V2(void* pInstance, MS_BOOL bEnable);
392 void MDrv_MVOP_SetRegSizeFromMVD_V2(void* pInstance, MS_BOOL bEnable);
393 void MDrv_MVOP_SetStartPos_V2(void* pInstance, MS_U16 u16Xpos ,MS_U16 u16Ypos);
394 MS_BOOL MDrv_MVOP_SetImageWidthHight_V2(void* pInstance, MS_U16 u16Width ,MS_U16 u16Height);
395 void MDrv_MVOP_SetVOPMirrorMode_V2(void* pInstance, MS_BOOL bEnable,MVOP_DrvMirror eMirrorMode);
396 void MDrv_MVOP_INV_OP_VS_V2(void* pInstance, MS_BOOL bEnable);
397 void MDrv_MVOP_FORCE_TOP_V2(void* pInstance, MS_BOOL bEnable);
398 MS_BOOL MDrv_MVOP_EnableFreerunMode_V2(void* pInstance, MS_BOOL bEnable);
399 void MDrv_MVOP_GetBaseAdd_V2(void* pInstance, MS_PHY* u32YOffset, MS_PHY* u32UVOffset);
400 
401 //Functions for Sub MVOP
402 void MDrv_MVOP_SubInit_V2(void* pInstance);
403 void MDrv_MVOP_SubExit_V2(void* pInstance);
404 void MDrv_MVOP_SubEnable_V2(void* pInstance, MS_BOOL bEnable);
405 MVOP_Result MDrv_MVOP_SubSetInputCfg_V2 (void* pInstance, MVOP_InputSel in, MVOP_InputCfg* pCfg);
406 MVOP_Result MDrv_MVOP_SubSetOutputCfg_V2(void* pInstance, MVOP_VidStat *pstVideoStatus, MS_BOOL bEnHDup);
407 
408 void MDrv_MVOP_SubEnableBlackBG_V2(void* pInstance);
409 void MDrv_MVOP_SubEnableUVShift_V2(void* pInstance, MS_BOOL bEnable);
410 void MDrv_MVOP_SubSetMonoMode_V2(void* pInstance, MS_BOOL bEnable);
411 MS_BOOL MDrv_MVOP_SubGetStatus_V2(void* pInstance, MVOP_DrvStatus *pMVOPStat);
412 MS_U16 MDrv_MVOP_SubGetHSize_V2(void* pInstance);
413 MS_U16 MDrv_MVOP_SubGetVSize_V2(void* pInstance);
414 MS_U16 MDrv_MVOP_SubGetHStart_V2(void* pInstance);
415 MS_U16 MDrv_MVOP_SubGetVStart_V2(void* pInstance);
416 MS_BOOL MDrv_MVOP_SubGetIsInterlace_V2(void* pInstance);
417 MS_BOOL MDrv_MVOP_SubGetIsHDuplicate_V2(void* pInstance);
418 MVOP_Result MDrv_MVOP_SubGetIsEnable_V2 (void* pInstance, MS_BOOL* pbEnable);
419 MVOP_Result MDrv_MVOP_SubGetOutputTiming_V2(void* pInstance, MVOP_Timing* pMVOPTiming);
420 MS_BOOL MDrv_MVOP_SubCheckCapability_V2(void* pInstance, MS_U16 u16HSize, MS_U16 u16VSize, MS_U16 u16Fps);
421 MS_U16 MDrv_MVOP_SubGetMaxHOffset_V2(void* pInstance, MS_U16 u16HSize, MS_U16 u16VSize, MS_U16 u16Fps);
422 MS_U16 MDrv_MVOP_SubGetMaxVOffset_V2(void* pInstance, MS_U16 u16HSize, MS_U16 u16VSize, MS_U16 u16Fps);
423 void MDrv_MVOP_SubSetClk_V2 (void* pInstance, MS_BOOL bEnable );
424 void MDrv_MVOP_SubSetPattern_V2(void* pInstance, MVOP_Pattern enMVOPPattern);
425 MS_BOOL MDrv_MVOP_SubSetTileFormat_V2(void* pInstance, MVOP_TileFormat eTileFmt);
426 MS_BOOL MDrv_MVOP_SubGetDstInfo_V2(void* pInstance, MVOP_DST_DispInfo *pDstInfo, MS_U32 u32SizeofDstInfo);
427 MS_BOOL MDrv_MVOP_SubSetFixVtt_V2(void* pInstance, MS_U16 u16FixVtt);
428 MS_BOOL MDrv_MVOP_SubSetMMIOMapBase_V2(void* pInstance);
429 MVOP_Result MDrv_MVOP_SubMiuSwitch_V2(void* pInstance, MS_U8 u8Miu);
430 MS_BOOL MDrv_MVOP_SubSetBaseAdd_V2(void* pInstance, MS_PHY u32YOffset, MS_PHY u32UVOffset, MS_BOOL bProgressive, MS_BOOL b422pack);
431 void MDrv_MVOP_SubGetBaseAdd_V2(void* pInstance, MS_PHY* u32YOffset, MS_PHY* u32UVOffset);
432 void MDrv_MVOP_SubSetVOPMirrorMode_V2(void* pInstance, MS_BOOL bEnable, MVOP_DrvMirror eMirrorMode);
433 MS_BOOL MDrv_MVOP_SubEnableFreerunMode_V2(void* pInstance, MS_BOOL bEnable);
434 
435 // { Functions for the 3rd MVOP
436 //Basic control functions
437 MVOP_Result MDrv_MVOP_EX_Init_V2(void* pInstance, MVOP_DevID eID, MS_U32 u32InitParam);
438 MVOP_Result MDrv_MVOP_EX_Exit_V2(void* pInstance, MVOP_DevID eID, MS_U32 u32ExitParam);
439 MVOP_Result MDrv_MVOP_EX_Enable_V2(void* pInstance, MVOP_DevID eID, MS_BOOL bEnable);
440 MVOP_Result MDrv_MVOP_EX_SetInputCfg_V2 (void* pInstance, MVOP_DevID eID, MVOP_InputSel in, MVOP_InputCfg* pCfg);
441 MVOP_Result MDrv_MVOP_EX_SetOutputCfg_V2(void* pInstance, MVOP_DevID eID, MVOP_VidStat *pstVideoStatus, MS_BOOL bEnHDup);
442 
443 //Advanced control functions
444 void MDrv_MVOP_EX_SetClk_V2(void* pInstance, MVOP_DevID eID,  MS_BOOL bEnable);
445 MVOP_Result MDrv_MVOP_EX_SetPattern_V2(void* pInstance, MVOP_DevID eID, MVOP_Pattern enMVOPPattern);
446 MVOP_Result MDrv_MVOP_EX_SetTileFormat_V2(void* pInstance, MVOP_DevID eID, MVOP_TileFormat eTileFmt);
447 MVOP_Result MDrv_MVOP_EX_EnableUVShift_V2(void* pInstance, MVOP_DevID eID, MS_BOOL bEnable);
448 MVOP_Result MDrv_MVOP_EX_EnableBlackBG_V2(void* pInstance, MVOP_DevID eID);
449 MVOP_Result MDrv_MVOP_EX_SetMonoMode_V2(void* pInstance, MVOP_DevID eID, MS_BOOL bEnable);
450 MVOP_Result MDrv_MVOP_EX_SetFixVtt_V2(void* pInstance, MVOP_DevID eID, MS_U16 u16FixVtt);
451 MVOP_Result MDrv_MVOP_EX_MiuSwitch_V2(void* pInstance, MVOP_DevID eID, MS_U8 u8Miu);
452 MVOP_Result MDrv_MVOP_EX_SetVOPMirrorMode_V2(void* pInstance, MVOP_DevID eID, MS_BOOL bEnable, MVOP_DrvMirror eMirrorMode);
453 MVOP_Result MDrv_MVOP_EX_EnableFreerunMode_V2(void* pInstance, MVOP_DevID eID, MS_BOOL bEnable);
454 
455 // Query functions
456 MVOP_Result MDrv_MVOP_EX_GetOutputTiming_V2(void* pInstance, MVOP_DevID eID, MVOP_Timing* pMVOPTiming);
457 MVOP_Result MDrv_MVOP_EX_GetIsEnable_V2 (void* pInstance, MVOP_DevID eID, MS_BOOL* pbEnable);
458 MS_U16 MDrv_MVOP_EX_GetHStart_V2(void* pInstance, MVOP_DevID eID);
459 MS_U16 MDrv_MVOP_EX_GetVStart_V2(void* pInstance, MVOP_DevID eID);
460 MS_U16 MDrv_MVOP_EX_GetHSize_V2(void* pInstance, MVOP_DevID eID);
461 MS_U16 MDrv_MVOP_EX_GetVSize_V2(void* pInstance, MVOP_DevID eID);
462 MS_BOOL MDrv_MVOP_EX_GetIsInterlace_V2(void* pInstance, MVOP_DevID eID);
463 MS_BOOL MDrv_MVOP_EX_GetIsHDuplicate_V2(void* pInstance, MVOP_DevID eID);
464 MS_BOOL MDrv_MVOP_EX_GetStatus_V2(void* pInstance, MVOP_DevID eID, MVOP_DrvStatus *pMVOPStat);
465 MS_BOOL MDrv_MVOP_EX_CheckCapability_V2(void* pInstance, MVOP_DevID eID, MS_U32 u32InParam);
466 MS_BOOL MDrv_MVOP_EX_GetDstInfo_V2(void* pInstance, MVOP_DevID eID, MVOP_DST_DispInfo *pDstInfo, MS_U32 u32SizeofDstInfo);
467 //   Functions for the 3rd MVOP }
468 
469 MVOP_Result MDrv_MVOP_SendBlueScreen_V2(void* pInstance, MS_U16 u16Width, MS_U16 u16Height);
470 MVOP_Result MDrv_MVOP_SetCommand_V2(void* pInstance, MVOP_Handle* stHd, MVOP_Command eCmd, void* pPara);
471 MVOP_Result MDrv_MVOP_GetCommand_V2(void* pInstance, MVOP_Handle* stHd, MVOP_Command eCmd, void* pPara, MS_U32 u32ParaSize);
472 void MDrv_MVOP_SetFrequency_V2(void* pInstance, MVOP_FREQUENCY eFreq);
473 
474 MS_BOOL MDrv_MVOP_EnableInterrupt_V2(void* pInstance, MS_U8 eIntType);
475 MS_U8 MDrv_MVOP_GetIntStatus_V2(void* pInstance);
476 MS_BOOL MDrv_MVOP_SubEnableInterrupt_V2(void* pInstance, MVOP_IntType eIntType);
477 MS_U8 MDrv_MVOP_SubGetIntStatus_V2(void* pInstance);
478 MS_BOOL MDrv_MVOP_EX_EnableInterrupt_V2(void* pInstance, MVOP_DevID eID, MVOP_IntType eIntType);
479 MS_U8 MDrv_MVOP_EX_GetIntStatus_V2(void* pInstance, MVOP_DevID eID);
480 MS_U32 MDrv_MVOP_SetPowerState_Kernel_V2(void* pInstance, EN_POWER_MODE u16PowerState);
481 MS_U32 MDrv_MVOP_SetPowerState_V2(void* pInstance, EN_POWER_MODE u16PowerState);
482 #ifdef CONFIG_UTOPIA_PROC_DBG_SUPPORT
483 void MDrv_MVOP_GetMVOPMdbInfo_V2(MS_U64 *u64ReqHdl);
484 #endif
485 
486 // OBSOLETE FUNCTION POINTER END
487 
488 #ifdef __cplusplus
489 }
490 #endif
491 
492 #undef _API_MVOP_PRIV_H_
493 #endif // _API_MVOP_PRIV_H_
494