xref: /utopia/UTPA2-700.0.x/modules/vd/drv/avd/drvAVD_v2.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   drvAVD_v2.h
98*53ee8cc1Swenshuai.xi /// @brief  AVD Driver utopia 2.0 Interface
99*53ee8cc1Swenshuai.xi /// @author MStar Semiconductor Inc.
100*53ee8cc1Swenshuai.xi ///////////////////////////////////////////////////////////////////////////////////////////////////
101*53ee8cc1Swenshuai.xi 
102*53ee8cc1Swenshuai.xi #include "drvAVD.h"
103*53ee8cc1Swenshuai.xi 
104*53ee8cc1Swenshuai.xi #ifndef _DRV_AVD_V2_H_
105*53ee8cc1Swenshuai.xi #define _DRV_AVD_V2_H_
106*53ee8cc1Swenshuai.xi 
107*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
108*53ee8cc1Swenshuai.xi //  Macro and Define
109*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
110*53ee8cc1Swenshuai.xi 
111*53ee8cc1Swenshuai.xi #ifdef MS_DEBUG
112*53ee8cc1Swenshuai.xi #define AVD_DRV_DEBUG 1
113*53ee8cc1Swenshuai.xi #else
114*53ee8cc1Swenshuai.xi #define AVD_DRV_DEBUG 0
115*53ee8cc1Swenshuai.xi #endif
116*53ee8cc1Swenshuai.xi 
117*53ee8cc1Swenshuai.xi #if 0
118*53ee8cc1Swenshuai.xi #define MSIF_AVD_LIB_CODE                   {'A','V','D','_'} //Lib code
119*53ee8cc1Swenshuai.xi #define MSIF_AVD_LIBVER                        {'1','1'}      //LIB version
120*53ee8cc1Swenshuai.xi #define MSIF_AVD_BUILDNUM                 {'0','0' }    //Build Number
121*53ee8cc1Swenshuai.xi #define MSIF_AVD_CHANGELIST             {'0','0','6','1','6','9','9','1'} //P4 ChangeList Number
122*53ee8cc1Swenshuai.xi 
123*53ee8cc1Swenshuai.xi #define AVD_VER                 /* Character String for DRV/API version             */  \
124*53ee8cc1Swenshuai.xi     MSIF_TAG,                           /* 'MSIF'                                           */  \
125*53ee8cc1Swenshuai.xi     MSIF_CLASS,                         /* '00'                                             */  \
126*53ee8cc1Swenshuai.xi     MSIF_CUS,                           /* 0x0000                                           */  \
127*53ee8cc1Swenshuai.xi     MSIF_MOD,                           /* 0x0000                                           */  \
128*53ee8cc1Swenshuai.xi     MSIF_CHIP,                                                                                  \
129*53ee8cc1Swenshuai.xi     MSIF_CPU,                                                                                   \
130*53ee8cc1Swenshuai.xi     MSIF_AVD_LIB_CODE,                  /* IP__                                             */  \
131*53ee8cc1Swenshuai.xi     MSIF_AVD_LIBVER,                       /* 0.0 ~ Z.Z                                        */  \
132*53ee8cc1Swenshuai.xi     MSIF_AVD_BUILDNUM,                 /* 00 ~ 99                                          */  \
133*53ee8cc1Swenshuai.xi     MSIF_AVD_CHANGELIST,             /* CL#                                              */  \
134*53ee8cc1Swenshuai.xi     MSIF_OS
135*53ee8cc1Swenshuai.xi 
136*53ee8cc1Swenshuai.xi // video decoder status
137*53ee8cc1Swenshuai.xi #define VD_SYNC_LOCKED                  ((BIT_(15)))
138*53ee8cc1Swenshuai.xi #define VD_HSYNC_LOCKED                 ((BIT_(14)))
139*53ee8cc1Swenshuai.xi #define VD_INTERLACED                   ((BIT_(13)))
140*53ee8cc1Swenshuai.xi #define VD_VSYNC_50HZ                   ((BIT_(12)))
141*53ee8cc1Swenshuai.xi #define VD_RESET_ON                     ((BIT_(11)))
142*53ee8cc1Swenshuai.xi #define VD_COLOR_LOCKED                 ((BIT_(10)))
143*53ee8cc1Swenshuai.xi #define VD_PAL_SWITCH                   ((BIT_(9)))
144*53ee8cc1Swenshuai.xi #define VD_FSC_TYPE                     ((BIT_(7))|(BIT_(6))|(BIT_(5)))
145*53ee8cc1Swenshuai.xi #define VD_FSC_3579                     ((BIT_(6)))              // NTSC
146*53ee8cc1Swenshuai.xi #define VD_FSC_3575                     ((BIT_(7)))              // PAL(M)
147*53ee8cc1Swenshuai.xi #define VD_FSC_3582                     ((BIT_(7))|(BIT_(6)))         // PAL(Nc)
148*53ee8cc1Swenshuai.xi #define VD_FSC_4433                     (0)                 // PAL or NTSC443
149*53ee8cc1Swenshuai.xi #define VD_FSC_4285                     (BIT_(5))              // SECAM
150*53ee8cc1Swenshuai.xi #define VD_VCR_MODE                     (BIT_(4))
151*53ee8cc1Swenshuai.xi #define VD_VCR_PAUSE                    (BIT_(3))
152*53ee8cc1Swenshuai.xi #define VD_MACROVISION                  (BIT_(2))
153*53ee8cc1Swenshuai.xi #define VD_BURST_ON                        (BIT_(1))
154*53ee8cc1Swenshuai.xi #define VD_STATUS_RDY                   (BIT_(0))
155*53ee8cc1Swenshuai.xi #define VD_MODE_DETECT_MASK             (VD_SYNC_LOCKED|VD_HSYNC_LOCKED|VD_VSYNC_50HZ|VD_FSC_TYPE|VD_RESET_ON) // 20100331 remove BURST check first because too many burst on/off issues
156*53ee8cc1Swenshuai.xi 
157*53ee8cc1Swenshuai.xi // Gain Control (Auto/Fix/Mix) Define
158*53ee8cc1Swenshuai.xi #define VD_USE_FIX_GAIN                 0
159*53ee8cc1Swenshuai.xi #define VD_USE_AUTO_GAIN                1
160*53ee8cc1Swenshuai.xi // Gain Control (Auto/Fix/Mix) Define
161*53ee8cc1Swenshuai.xi //#define AVD_AGC_ENABLE                              0x00
162*53ee8cc1Swenshuai.xi //#define AVD_AGC_DISABLE                             0x03
163*53ee8cc1Swenshuai.xi 
164*53ee8cc1Swenshuai.xi 
165*53ee8cc1Swenshuai.xi #define IS_BITS_SET(val, bits)                  (((val)&(bits)) == (bits))
166*53ee8cc1Swenshuai.xi #define VD_MODE_STANDARD_MASK                   (VD_VSYNC_50HZ | VD_PAL_SWITCH | VD_FSC_TYPE | VD_STATUS_RDY)
167*53ee8cc1Swenshuai.xi 
168*53ee8cc1Swenshuai.xi #define FSC_AUTO_DET_ENABLE                     0x00
169*53ee8cc1Swenshuai.xi #define FSC_AUTO_DET_DISABLE                    0x01
170*53ee8cc1Swenshuai.xi 
171*53ee8cc1Swenshuai.xi #define VD_USE_FB                               0
172*53ee8cc1Swenshuai.xi 
173*53ee8cc1Swenshuai.xi // VD Check Hsync Thresholdffff
174*53ee8cc1Swenshuai.xi #define VD_CHK_HSYNC_WAIT                1         // ms
175*53ee8cc1Swenshuai.xi #define VD_CHK_HSYNC_CONT                60//40        // timeout=VD_CHK_HSYNC_CONT*VD_CHK_HSYNC_WAIT=20ms
176*53ee8cc1Swenshuai.xi #define VD_CHK_HSYNC_OK_THR             2   //7
177*53ee8cc1Swenshuai.xi #define VD_CHK_DEBOUNCE_WAIT         20        // ms
178*53ee8cc1Swenshuai.xi #define VD_CHK_DEBOUNCE_CONT         40        // timeout=VD_CHK_COLOR_CONT*VD_CHK_COLOR_WAIT=800ms
179*53ee8cc1Swenshuai.xi #define VD_CHK_NSPL_WAIT                   1       //ms
180*53ee8cc1Swenshuai.xi #define VD_CHK_NSPL_CONT                   500       //timeout=VD_CHK_NSPL_WAIT*VD_CHK_NSPL_CONT=400ms
181*53ee8cc1Swenshuai.xi #define VD_CHK_NSPL_OK_THR              20//10
182*53ee8cc1Swenshuai.xi #define VD_CHK_VideoSys_CONT                   250       //timeout=VD_CHK_NSPL_WAIT*VD_CHK_NSPL_CONT=400ms
183*53ee8cc1Swenshuai.xi 
184*53ee8cc1Swenshuai.xi #define DSP_VER_OFFSET 255
185*53ee8cc1Swenshuai.xi 
186*53ee8cc1Swenshuai.xi //----------------AVD Patch flag item--------------------------------------------------------------------------
187*53ee8cc1Swenshuai.xi #define AVD_PATCH_NONE 0
188*53ee8cc1Swenshuai.xi #define AVD_PATCH_NTSC_50 BIT_(0)
189*53ee8cc1Swenshuai.xi #define AVD_PATCH_FINE_TUNE_FH_DOT BIT_(1)
190*53ee8cc1Swenshuai.xi #define AVD_PATCH_FINE_TUNE_COMB_F2 BIT_(2)
191*53ee8cc1Swenshuai.xi #define AVD_PATCH_FINE_TUNE_3D_COMB BIT_(3)
192*53ee8cc1Swenshuai.xi #define AVD_PATCH_FINE_TUNE_FSC_SHIFT BIT_(4)
193*53ee8cc1Swenshuai.xi #define AVD_PATCH_NON_STANDARD_VTOTAL BIT_(5)
194*53ee8cc1Swenshuai.xi #define AVD_PATCH_FINE_TUNE_STILL_IMAGE BIT_(6)
195*53ee8cc1Swenshuai.xi 
196*53ee8cc1Swenshuai.xi #define AVD_PATCH_HTOTAL_1135_MUL_15 0
197*53ee8cc1Swenshuai.xi #define AVD_PATCH_HTOTAL_1135 BIT_(8)
198*53ee8cc1Swenshuai.xi #define AVD_PATCH_HTOTAL_DYNAMIC BIT_(9)
199*53ee8cc1Swenshuai.xi #define AVD_PATCH_HTOTAL_USER (BIT_(9)|BIT_(8))
200*53ee8cc1Swenshuai.xi #define AVD_PATCH_HTOTAL_MASK (BIT_(9)|BIT_(8))
201*53ee8cc1Swenshuai.xi #define AVD_PATCH_SCART_SVIDEO (BIT_(10))
202*53ee8cc1Swenshuai.xi #define AVD_PATCH_CVBS_NEGATIVESIG (BIT_(11))
203*53ee8cc1Swenshuai.xi 
204*53ee8cc1Swenshuai.xi #define AVD_PATCH_DISABLE_PWS BIT_(24)    // used to store ENABLE_PWS
205*53ee8cc1Swenshuai.xi 
206*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
207*53ee8cc1Swenshuai.xi //  Type and Structure
208*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
209*53ee8cc1Swenshuai.xi typedef enum
210*53ee8cc1Swenshuai.xi {
211*53ee8cc1Swenshuai.xi     AVD_LOAD_CODE_BDMA_FROM_SPI,
212*53ee8cc1Swenshuai.xi     AVD_LOAD_CODE_BDMA_FROM_DRAM,
213*53ee8cc1Swenshuai.xi     AVD_LOAD_CODE_BYTE_WRITE,
214*53ee8cc1Swenshuai.xi } AVD_LoadCodeType;
215*53ee8cc1Swenshuai.xi 
216*53ee8cc1Swenshuai.xi typedef enum
217*53ee8cc1Swenshuai.xi {
218*53ee8cc1Swenshuai.xi     DEMODE_NORMAL                   = 0,
219*53ee8cc1Swenshuai.xi     DEMODE_MSTAR_VIF                = 1,
220*53ee8cc1Swenshuai.xi     DEMODE_MSTAR_VIF_MSB1210        = 2,
221*53ee8cc1Swenshuai.xi } AVD_DemodType;
222*53ee8cc1Swenshuai.xi 
223*53ee8cc1Swenshuai.xi typedef enum
224*53ee8cc1Swenshuai.xi {
225*53ee8cc1Swenshuai.xi     E_VIDEO_SYSTEM_ATSC,
226*53ee8cc1Swenshuai.xi     E_VIDEO_SYSTEM_DVB
227*53ee8cc1Swenshuai.xi } AVD_VideoSystem;
228*53ee8cc1Swenshuai.xi 
229*53ee8cc1Swenshuai.xi typedef enum
230*53ee8cc1Swenshuai.xi {
231*53ee8cc1Swenshuai.xi     E_VIDEO_FQ_NOSIGNAL             = 0,     // Video Frequency No signal
232*53ee8cc1Swenshuai.xi     E_VIDEO_FQ_50Hz                 = 50,    // Video Frequency 50Hz
233*53ee8cc1Swenshuai.xi     E_VIDEO_FQ_60Hz                 = 60     // Video Frequency 60Hz
234*53ee8cc1Swenshuai.xi } AVD_VideoFreq;
235*53ee8cc1Swenshuai.xi 
236*53ee8cc1Swenshuai.xi typedef enum
237*53ee8cc1Swenshuai.xi {
238*53ee8cc1Swenshuai.xi     E_FREERUN_FQ_AUTO               = 0x00,
239*53ee8cc1Swenshuai.xi     E_FREERUN_FQ_50Hz               = 0x01,
240*53ee8cc1Swenshuai.xi     E_FREERUN_FQ_60Hz               = 0x02,
241*53ee8cc1Swenshuai.xi     E_FREERUN_FQ_MAX
242*53ee8cc1Swenshuai.xi } AVD_FreeRunFreq;
243*53ee8cc1Swenshuai.xi 
244*53ee8cc1Swenshuai.xi typedef enum
245*53ee8cc1Swenshuai.xi {
246*53ee8cc1Swenshuai.xi     E_VIDEOSTANDARD_PAL_BGHI        = 0x00,        // Video standard PAL BGHI
247*53ee8cc1Swenshuai.xi     E_VIDEOSTANDARD_NTSC_M          = 0x01,        // Video standard NTSC M
248*53ee8cc1Swenshuai.xi     E_VIDEOSTANDARD_SECAM           = 0x02,        // Video standard SECAM
249*53ee8cc1Swenshuai.xi     E_VIDEOSTANDARD_NTSC_44         = 0x03,        // Video standard  NTSC 44
250*53ee8cc1Swenshuai.xi     E_VIDEOSTANDARD_PAL_M           = 0x04,        // Video standard  PAL M
251*53ee8cc1Swenshuai.xi     E_VIDEOSTANDARD_PAL_N           = 0x05,        // Video standard  PAL N
252*53ee8cc1Swenshuai.xi     E_VIDEOSTANDARD_PAL_60          = 0x06,        // Video standard PAL 60
253*53ee8cc1Swenshuai.xi     E_VIDEOSTANDARD_NOTSTANDARD     = 0x07,        // NOT Video standard
254*53ee8cc1Swenshuai.xi     E_VIDEOSTANDARD_AUTO            = 0x08,         // Video standard AUTO
255*53ee8cc1Swenshuai.xi     E_VIDEOSTANDARD_MAX                                // Max Number
256*53ee8cc1Swenshuai.xi } AVD_VideoStandardType;
257*53ee8cc1Swenshuai.xi 
258*53ee8cc1Swenshuai.xi typedef enum
259*53ee8cc1Swenshuai.xi {
260*53ee8cc1Swenshuai.xi     E_INPUT_SOURCE_INVALID                  =   0x00,               // Video source Invalid
261*53ee8cc1Swenshuai.xi     E_INPUT_SOURCE_ATV                      =   0x01,               // Video source ATV
262*53ee8cc1Swenshuai.xi     E_INPUT_SOURCE_CVBS1                    =   0x02,               // Video source CVBS 1
263*53ee8cc1Swenshuai.xi     E_INPUT_SOURCE_CVBS2                    =   0x03,               // Video source CVBS 2
264*53ee8cc1Swenshuai.xi     E_INPUT_SOURCE_CVBS3                    =   0x04,               // Video source CVBS 2
265*53ee8cc1Swenshuai.xi     E_INPUT_SOURCE_SVIDEO1                  =   0x05,               // Video source SVIDEO 1
266*53ee8cc1Swenshuai.xi     E_INPUT_SOURCE_SVIDEO2                  =   0x06,               // Video source SVIDEO 2
267*53ee8cc1Swenshuai.xi     E_INPUT_SOURCE_SCART1                   =   0x07,               // Video source SCART 1
268*53ee8cc1Swenshuai.xi     E_INPUT_SOURCE_SCART2                   =   0x08,               // Video source SCART 2
269*53ee8cc1Swenshuai.xi     E_INPUT_SOURCE_YPbPr                    =   0x09,               // Video source YPbPr
270*53ee8cc1Swenshuai.xi     E_INPUT_SOURCE_THROUGH_3DCOMB           =   0x50,               // Video source through 3D Comb
271*53ee8cc1Swenshuai.xi     E_INPUT_SOURCE_THROUGH_3DCOMB_ATV       =   (E_INPUT_SOURCE_THROUGH_3DCOMB | E_INPUT_SOURCE_ATV),   // through 3D Comb ATV
272*53ee8cc1Swenshuai.xi     E_INPUT_SOURCE_THROUGH_3DCOMB_CVBS1     =   (E_INPUT_SOURCE_THROUGH_3DCOMB | E_INPUT_SOURCE_CVBS1),// through 3D Comb CVBS1
273*53ee8cc1Swenshuai.xi     E_INPUT_SOURCE_THROUGH_3DCOMB_CVBS2     =   (E_INPUT_SOURCE_THROUGH_3DCOMB | E_INPUT_SOURCE_CVBS2),// through 3D Comb CVBS2
274*53ee8cc1Swenshuai.xi     E_INPUT_SOURCE_THROUGH_3DCOMB_SCART1    =   (E_INPUT_SOURCE_THROUGH_3DCOMB | E_INPUT_SOURCE_SCART1),// through 3D Comb SCART1
275*53ee8cc1Swenshuai.xi     E_INPUT_SOURCE_THROUGH_3DCOMB_SCART2    =   (E_INPUT_SOURCE_THROUGH_3DCOMB | E_INPUT_SOURCE_SCART2),// through 3D Comb SCART2
276*53ee8cc1Swenshuai.xi     E_INPUT_SOURCE_MAX                      =   0x60
277*53ee8cc1Swenshuai.xi } AVD_InputSourceType;
278*53ee8cc1Swenshuai.xi 
279*53ee8cc1Swenshuai.xi /// Auto AV Source type
280*53ee8cc1Swenshuai.xi typedef enum
281*53ee8cc1Swenshuai.xi {
282*53ee8cc1Swenshuai.xi     E_AUTOAV_SOURCE_1   =   E_INPUT_SOURCE_SCART1,       // Auto AV source SCART 1
283*53ee8cc1Swenshuai.xi     E_AUTOAV_SOURCE_2   =   E_INPUT_SOURCE_SCART2,       // Auto AV source SCART 2
284*53ee8cc1Swenshuai.xi     E_AUTOAV_SOURCE_ALL =   0xFF                // Auto AV source ALL
285*53ee8cc1Swenshuai.xi } AVD_AutoAVSourceType;
286*53ee8cc1Swenshuai.xi 
287*53ee8cc1Swenshuai.xi typedef enum    // 0x2580[5:4]
288*53ee8cc1Swenshuai.xi {
289*53ee8cc1Swenshuai.xi     SCART_FB_NONE = 0x00,
290*53ee8cc1Swenshuai.xi     SCART_FB0,
291*53ee8cc1Swenshuai.xi     SCART_FB1,
292*53ee8cc1Swenshuai.xi     SCART_FB2,
293*53ee8cc1Swenshuai.xi } AVD_INPUT_SCART_FB;
294*53ee8cc1Swenshuai.xi 
295*53ee8cc1Swenshuai.xi typedef enum
296*53ee8cc1Swenshuai.xi {
297*53ee8cc1Swenshuai.xi     E_ATV_CLK_ORIGIN_43P2MHZ   =    0x00,
298*53ee8cc1Swenshuai.xi     E_ATV_CLK_TYPE1_42MHZ         =    0x01,
299*53ee8cc1Swenshuai.xi     E_ATV_CLK_TYPE2_44P4MHZ     =    0x02,
300*53ee8cc1Swenshuai.xi }AVD_ATV_CLK_TYPE;
301*53ee8cc1Swenshuai.xi 
302*53ee8cc1Swenshuai.xi typedef struct
303*53ee8cc1Swenshuai.xi {
304*53ee8cc1Swenshuai.xi     MS_U8 u8DetectWinBeforeLock;
305*53ee8cc1Swenshuai.xi     MS_U8 u8DetectWinAfterLock;
306*53ee8cc1Swenshuai.xi     MS_U8 u8CNTRFailBeforeLock;
307*53ee8cc1Swenshuai.xi     MS_U8 u8CNTRSyncBeforeLock;
308*53ee8cc1Swenshuai.xi     MS_U8 u8CNTRSyncAfterLock;
309*53ee8cc1Swenshuai.xi } VD_HSYNC_SENSITIVITY;
310*53ee8cc1Swenshuai.xi 
311*53ee8cc1Swenshuai.xi typedef enum
312*53ee8cc1Swenshuai.xi {
313*53ee8cc1Swenshuai.xi     AVD_DBGLV_NONE,    // disable all the debug message
314*53ee8cc1Swenshuai.xi     AVD_DBGLV_INFO,    // information
315*53ee8cc1Swenshuai.xi     AVD_DBGLV_NOTICE,  // normal but significant condition
316*53ee8cc1Swenshuai.xi     AVD_DBGLV_WARNING, // warning conditions
317*53ee8cc1Swenshuai.xi     AVD_DBGLV_ERR,     // error conditions
318*53ee8cc1Swenshuai.xi     AVD_DBGLV_CRIT,    // critical conditions
319*53ee8cc1Swenshuai.xi     AVD_DBGLV_ALERT,   // action must be taken immediately
320*53ee8cc1Swenshuai.xi     AVD_DBGLV_EMERG,   // system is unusable
321*53ee8cc1Swenshuai.xi     AVD_DBGLV_DEBUG,   // debug-level messages
322*53ee8cc1Swenshuai.xi } AVD_DbgLv;
323*53ee8cc1Swenshuai.xi 
324*53ee8cc1Swenshuai.xi typedef struct
325*53ee8cc1Swenshuai.xi {
326*53ee8cc1Swenshuai.xi         // register init
327*53ee8cc1Swenshuai.xi     MS_U8 *u8VdDecInitializeExt; // TODO use system variable type
328*53ee8cc1Swenshuai.xi 
329*53ee8cc1Swenshuai.xi     MS_U32 u32XTAL_Clock;
330*53ee8cc1Swenshuai.xi     AVD_LoadCodeType eLoadCodeType;
331*53ee8cc1Swenshuai.xi     MS_U32 u32VD_DSP_Code_Address;
332*53ee8cc1Swenshuai.xi     MS_U8 *pu8VD_DSP_Code_Address;
333*53ee8cc1Swenshuai.xi     MS_U32 u32VD_DSP_Code_Len;
334*53ee8cc1Swenshuai.xi     // VIF related
335*53ee8cc1Swenshuai.xi     AVD_DemodType eDemodType;
336*53ee8cc1Swenshuai.xi 
337*53ee8cc1Swenshuai.xi     // afec related
338*53ee8cc1Swenshuai.xi     MS_U16 u16VDDSPBinID;
339*53ee8cc1Swenshuai.xi     MS_U8 bRFGainSel;
340*53ee8cc1Swenshuai.xi     MS_U8 bAVGainSel;
341*53ee8cc1Swenshuai.xi     MS_U8 u8RFGain;
342*53ee8cc1Swenshuai.xi     MS_U8 u8AVGain;
343*53ee8cc1Swenshuai.xi     MS_U32  u32VDPatchFlag;
344*53ee8cc1Swenshuai.xi     MS_U8 u8ColorKillHighBound;
345*53ee8cc1Swenshuai.xi     MS_U8 u8ColorKillLowBound;
346*53ee8cc1Swenshuai.xi     MS_U8 u8SwingThreshold;
347*53ee8cc1Swenshuai.xi     VD_HSYNC_SENSITIVITY eVDHsyncSensitivityNormal;
348*53ee8cc1Swenshuai.xi     VD_HSYNC_SENSITIVITY eVDHsyncSensitivityTuning;
349*53ee8cc1Swenshuai.xi 
350*53ee8cc1Swenshuai.xi     // comb related
351*53ee8cc1Swenshuai.xi     MS_U32 u32COMB_3D_ADR;
352*53ee8cc1Swenshuai.xi     MS_U32 u32COMB_3D_LEN;
353*53ee8cc1Swenshuai.xi 
354*53ee8cc1Swenshuai.xi } VD_INITDATA;
355*53ee8cc1Swenshuai.xi 
356*53ee8cc1Swenshuai.xi typedef enum
357*53ee8cc1Swenshuai.xi {
358*53ee8cc1Swenshuai.xi     E_AVD_FAIL=0,
359*53ee8cc1Swenshuai.xi     E_AVD_OK=1
360*53ee8cc1Swenshuai.xi } AVD_Result;
361*53ee8cc1Swenshuai.xi 
362*53ee8cc1Swenshuai.xi 
363*53ee8cc1Swenshuai.xi typedef struct
364*53ee8cc1Swenshuai.xi {
365*53ee8cc1Swenshuai.xi     AVD_InputSourceType eVDInputSource;
366*53ee8cc1Swenshuai.xi     AVD_VideoStandardType eVideoSystem;
367*53ee8cc1Swenshuai.xi     AVD_VideoStandardType eLastStandard;
368*53ee8cc1Swenshuai.xi     MS_U8  u8AutoDetMode;
369*53ee8cc1Swenshuai.xi     MS_U16 u16CurVDStatus;
370*53ee8cc1Swenshuai.xi     MS_U8 u8AutoTuningIsProgress;
371*53ee8cc1Swenshuai.xi } AVD_Info;
372*53ee8cc1Swenshuai.xi 
373*53ee8cc1Swenshuai.xi typedef struct
374*53ee8cc1Swenshuai.xi {
375*53ee8cc1Swenshuai.xi     MS_U8 u8Threshold1;
376*53ee8cc1Swenshuai.xi     MS_U8 u8Threshold2;
377*53ee8cc1Swenshuai.xi     MS_U8 u8Threshold3;
378*53ee8cc1Swenshuai.xi     MS_U8 u8Threshold4;
379*53ee8cc1Swenshuai.xi 
380*53ee8cc1Swenshuai.xi     MS_U8 u8Str1_COMB37;
381*53ee8cc1Swenshuai.xi     MS_U8 u8Str1_COMB38;
382*53ee8cc1Swenshuai.xi     MS_U8 u8Str1_COMB7C;
383*53ee8cc1Swenshuai.xi     MS_U8 u8Str1_COMBED;
384*53ee8cc1Swenshuai.xi 
385*53ee8cc1Swenshuai.xi     MS_U8 u8Str2_COMB37;
386*53ee8cc1Swenshuai.xi     MS_U8 u8Str2_COMB38;
387*53ee8cc1Swenshuai.xi     MS_U8 u8Str2_COMB7C;
388*53ee8cc1Swenshuai.xi     MS_U8 u8Str2_COMBED;
389*53ee8cc1Swenshuai.xi 
390*53ee8cc1Swenshuai.xi     MS_U8 u8Str3_COMB37;
391*53ee8cc1Swenshuai.xi     MS_U8 u8Str3_COMB38;
392*53ee8cc1Swenshuai.xi     MS_U8 u8Str3_COMB7C;
393*53ee8cc1Swenshuai.xi     MS_U8 u8Str3_COMBED;
394*53ee8cc1Swenshuai.xi 
395*53ee8cc1Swenshuai.xi     MS_BOOL bMessageOn;
396*53ee8cc1Swenshuai.xi } AVD_Still_Image_Param;
397*53ee8cc1Swenshuai.xi 
398*53ee8cc1Swenshuai.xi typedef enum
399*53ee8cc1Swenshuai.xi {
400*53ee8cc1Swenshuai.xi     E_FACTORY_PARA_AFEC_D4,
401*53ee8cc1Swenshuai.xi     E_FACTORY_PARA_AFEC_D8,
402*53ee8cc1Swenshuai.xi     E_FACTORY_PARA_AFEC_D5_BIT2,
403*53ee8cc1Swenshuai.xi     E_FACTORY_PARA_AFEC_D9_BIT0,
404*53ee8cc1Swenshuai.xi     E_FACTORY_PARA_AFEC_A0,
405*53ee8cc1Swenshuai.xi     E_FACTORY_PARA_AFEC_A1,
406*53ee8cc1Swenshuai.xi     E_FACTORY_PARA_AFEC_66_BIT67,
407*53ee8cc1Swenshuai.xi     E_FACTORY_PARA_AFEC_6E_BIT7654,
408*53ee8cc1Swenshuai.xi     E_FACTORY_PARA_AFEC_6E_BIT3210,
409*53ee8cc1Swenshuai.xi     E_FACTORY_PARA_AFEC_43,
410*53ee8cc1Swenshuai.xi     E_FACTORY_PARA_AFEC_44,
411*53ee8cc1Swenshuai.xi     E_FACTORY_PARA_AFEC_CB,
412*53ee8cc1Swenshuai.xi     E_FACTORY_PARA_AFEC_CF_BIT2,
413*53ee8cc1Swenshuai.xi     E_FACTORY_PARA_AFEC_D5_BIT3,
414*53ee8cc1Swenshuai.xi     E_FACTORY_PARA_AFEC_MAX
415*53ee8cc1Swenshuai.xi }AVD_Factory_Para;
416*53ee8cc1Swenshuai.xi #endif
417*53ee8cc1Swenshuai.xi 
418*53ee8cc1Swenshuai.xi // collect global variable into _AVD_RESOURCE_PRIVATE 201303 weicheng
419*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED _AVD_RESOURCE_PRIVATE
420*53ee8cc1Swenshuai.xi {
421*53ee8cc1Swenshuai.xi     MS_BOOL _bShiftClkFlag;
422*53ee8cc1Swenshuai.xi     MS_BOOL _b2d3dautoflag;
423*53ee8cc1Swenshuai.xi     MS_BOOL _bSTRFlag;
424*53ee8cc1Swenshuai.xi 
425*53ee8cc1Swenshuai.xi     MS_U8  _u8HtotalDebounce;
426*53ee8cc1Swenshuai.xi     MS_U8  _u8AutoDetMode;
427*53ee8cc1Swenshuai.xi     MS_U8 _u8AfecD4Factory;
428*53ee8cc1Swenshuai.xi     MS_U8 _u8Comb10Bit3Flag;
429*53ee8cc1Swenshuai.xi     MS_U8 _u8Comb57;
430*53ee8cc1Swenshuai.xi     MS_U8 _u8Comb58;
431*53ee8cc1Swenshuai.xi     MS_U8 _u8Comb5F;
432*53ee8cc1Swenshuai.xi     MS_U8 _u8SCARTSwitch;  // 0: CVBS, 1:Svideo;
433*53ee8cc1Swenshuai.xi     MS_U8 _u8SCARTPrestandard;
434*53ee8cc1Swenshuai.xi     MS_U8 _u8AutoTuningIsProgress;
435*53ee8cc1Swenshuai.xi 
436*53ee8cc1Swenshuai.xi     MS_U16 _u16CurVDStatus;
437*53ee8cc1Swenshuai.xi     MS_U16 _u16DataH[3];
438*53ee8cc1Swenshuai.xi     MS_U16 _u16LatchH;
439*53ee8cc1Swenshuai.xi     MS_U16 _u16Htt_UserMD;
440*53ee8cc1Swenshuai.xi     MS_U16 _u16DPL_MSB;
441*53ee8cc1Swenshuai.xi     MS_U16 _u16DPL_LSB;
442*53ee8cc1Swenshuai.xi     MS_U32 u32VDPatchFlagStatus;
443*53ee8cc1Swenshuai.xi     MS_U32 _u32VideoSystemTimer;
444*53ee8cc1Swenshuai.xi     MS_U32 _u32SCARTWaitTime;
445*53ee8cc1Swenshuai.xi     MS_S32 _s32AVD_Mutex;
446*53ee8cc1Swenshuai.xi 
447*53ee8cc1Swenshuai.xi     AVD_VideoStandardType _eVideoSystem;
448*53ee8cc1Swenshuai.xi     AVD_VideoStandardType _eForceVideoStandard;
449*53ee8cc1Swenshuai.xi     AVD_VideoStandardType _eLastStandard;
450*53ee8cc1Swenshuai.xi     AVD_InputSourceType _eVDInputSource;
451*53ee8cc1Swenshuai.xi     VD_INITDATA g_VD_InitData;
452*53ee8cc1Swenshuai.xi     AVD_ATV_CLK_TYPE gShiftMode;
453*53ee8cc1Swenshuai.xi     AVD_Still_Image_Param g_stillImageParam;
454*53ee8cc1Swenshuai.xi 
455*53ee8cc1Swenshuai.xi     #if AVD_DRV_DEBUG
456*53ee8cc1Swenshuai.xi     MS_U32 u32PreVDPatchFlagStatus;
457*53ee8cc1Swenshuai.xi     AVD_DbgLv _u8AVDDbgLevel;
458*53ee8cc1Swenshuai.xi     #endif
459*53ee8cc1Swenshuai.xi     #ifndef MSOS_TYPE_LINUX
460*53ee8cc1Swenshuai.xi     MS_U16 u16PreVtotal;
461*53ee8cc1Swenshuai.xi     #endif
462*53ee8cc1Swenshuai.xi 
463*53ee8cc1Swenshuai.xi }AVD_RESOURCE_PRIVATE;
464*53ee8cc1Swenshuai.xi 
465*53ee8cc1Swenshuai.xi typedef enum {
466*53ee8cc1Swenshuai.xi     MDrv_CMD_AVD_Init,
467*53ee8cc1Swenshuai.xi     MDrv_CMD_AVD_Exit,
468*53ee8cc1Swenshuai.xi     MDrv_CMD_AVD_ResetMCU,
469*53ee8cc1Swenshuai.xi     MDrv_CMD_AVD_FreezeMCU,
470*53ee8cc1Swenshuai.xi     MDrv_CMD_AVD_Scan_HsyncCheck,
471*53ee8cc1Swenshuai.xi     MDrv_CMD_AVD_StartAutoStandardDetection,
472*53ee8cc1Swenshuai.xi     MDrv_CMD_AVD_ForceVideoStandard,
473*53ee8cc1Swenshuai.xi     MDrv_CMD_AVD_3DCombSpeedup,
474*53ee8cc1Swenshuai.xi     MDrv_CMD_AVD_LoadDSP,
475*53ee8cc1Swenshuai.xi     MDrv_CMD_AVD_BackPorchWindowPositon,
476*53ee8cc1Swenshuai.xi     MDrv_CMD_AVD_MBX_ReadByteByVDMbox,
477*53ee8cc1Swenshuai.xi 
478*53ee8cc1Swenshuai.xi     MDrv_CMD_AVD_SetFlag,
479*53ee8cc1Swenshuai.xi     MDrv_CMD_AVD_SetRegValue,
480*53ee8cc1Swenshuai.xi     MDrv_CMD_AVD_SetRegFromDSP,
481*53ee8cc1Swenshuai.xi     MDrv_CMD_AVD_SetInput,
482*53ee8cc1Swenshuai.xi     MDrv_CMD_AVD_SetVideoStandard,
483*53ee8cc1Swenshuai.xi     MDrv_CMD_AVD_SetChannelChange,
484*53ee8cc1Swenshuai.xi     MDrv_CMD_AVD_SetHsyncDetectionForTuning,
485*53ee8cc1Swenshuai.xi     MDrv_CMD_AVD_Set3dComb,
486*53ee8cc1Swenshuai.xi     MDrv_CMD_AVD_SetShiftClk,
487*53ee8cc1Swenshuai.xi     MDrv_CMD_AVD_SetFreerunPLL,
488*53ee8cc1Swenshuai.xi     MDrv_CMD_AVD_SetFreerunFreq,
489*53ee8cc1Swenshuai.xi     MDrv_CMD_AVD_SetFactoryPara,
490*53ee8cc1Swenshuai.xi     MDrv_CMD_AVD_Set_Htt_UserMD,
491*53ee8cc1Swenshuai.xi     MDrv_CMD_AVD_SetDbgLevel,
492*53ee8cc1Swenshuai.xi     MDrv_CMD_AVD_SetPQFineTune,
493*53ee8cc1Swenshuai.xi     MDrv_CMD_AVD_Set3dCombSpeed,
494*53ee8cc1Swenshuai.xi     MDrv_CMD_AVD_SetStillImageParam,
495*53ee8cc1Swenshuai.xi     MDrv_CMD_AVD_SetAFECD4Factory,
496*53ee8cc1Swenshuai.xi     MDrv_CMD_AVD_Set2D3DPatchOnOff,
497*53ee8cc1Swenshuai.xi     MDrv_CMD_AVD_SetAutoFineGainToFixed,
498*53ee8cc1Swenshuai.xi 
499*53ee8cc1Swenshuai.xi     MDrv_CMD_AVD_GetFlag,
500*53ee8cc1Swenshuai.xi     MDrv_CMD_AVD_GetRegValue,
501*53ee8cc1Swenshuai.xi     MDrv_CMD_AVD_GetStatus,
502*53ee8cc1Swenshuai.xi     MDrv_CMD_AVD_GetNoiseMag,
503*53ee8cc1Swenshuai.xi     MDrv_CMD_AVD_GetVTotal,
504*53ee8cc1Swenshuai.xi     MDrv_CMD_AVD_GetStandardDetection,
505*53ee8cc1Swenshuai.xi     MDrv_CMD_AVD_GetLastDetectedStandard,
506*53ee8cc1Swenshuai.xi     MDrv_CMD_AVD_GetCaptureWindow,
507*53ee8cc1Swenshuai.xi     MDrv_CMD_AVD_GetVerticalFreq,
508*53ee8cc1Swenshuai.xi     MDrv_CMD_AVD_GetHsyncEdge,
509*53ee8cc1Swenshuai.xi     MDrv_CMD_AVD_GetDSPFineGain,
510*53ee8cc1Swenshuai.xi     MDrv_CMD_AVD_GetDSPVersion,
511*53ee8cc1Swenshuai.xi     MDrv_CMD_AVD_GetLibVer,
512*53ee8cc1Swenshuai.xi     MDrv_CMD_AVD_GetInfo,
513*53ee8cc1Swenshuai.xi     MDrv_CMD_AVD_IsSyncLocked,
514*53ee8cc1Swenshuai.xi     MDrv_CMD_AVD_IsSignalInterlaced,
515*53ee8cc1Swenshuai.xi     MDrv_CMD_AVD_IsColorOn,
516*53ee8cc1Swenshuai.xi     MDrv_CMD_AVD_SetPowerState,
517*53ee8cc1Swenshuai.xi     MDrv_CMD_AVD_GetMacroVisionDetect,
518*53ee8cc1Swenshuai.xi     MDrv_CMD_AVD_GetCGMSDetect,
519*53ee8cc1Swenshuai.xi     MDrv_CMD_AVD_SetBurstWinStart,
520*53ee8cc1Swenshuai.xi     MDrv_CMD_AVD_AliveCheck,
521*53ee8cc1Swenshuai.xi     MDrv_CMD_AVD_IsLockAudioCarrier,
522*53ee8cc1Swenshuai.xi } eAvdIoctlOpt;
523*53ee8cc1Swenshuai.xi 
524*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED _AVD_INIT
525*53ee8cc1Swenshuai.xi {
526*53ee8cc1Swenshuai.xi     VD_INITDATA pVD_InitData;
527*53ee8cc1Swenshuai.xi     MS_U32 u32InitDataLen;
528*53ee8cc1Swenshuai.xi     AVD_Result pVD_Result;
529*53ee8cc1Swenshuai.xi }AVD_INIT, *PAVD_INIT;
530*53ee8cc1Swenshuai.xi 
531*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED _AVD_LOADDSP
532*53ee8cc1Swenshuai.xi {
533*53ee8cc1Swenshuai.xi     MS_U8 *pu8VD_DSP;
534*53ee8cc1Swenshuai.xi     MS_U32 len;
535*53ee8cc1Swenshuai.xi }AVD_LOADDSP, *PAVD_LOADDSP;
536*53ee8cc1Swenshuai.xi 
537*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED _AVD_BACKPORCHWINPOS
538*53ee8cc1Swenshuai.xi {
539*53ee8cc1Swenshuai.xi     MS_BOOL bEnable ;
540*53ee8cc1Swenshuai.xi     MS_U8 u8Value;
541*53ee8cc1Swenshuai.xi }AVD_BACKPORCHWINPOS, *PAVD_BACKPORCHWINPOS;
542*53ee8cc1Swenshuai.xi 
543*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED _AVD_SETREGVALUE
544*53ee8cc1Swenshuai.xi {
545*53ee8cc1Swenshuai.xi     MS_U16 u16Addr;
546*53ee8cc1Swenshuai.xi     MS_U8 u8Value;
547*53ee8cc1Swenshuai.xi }AVD_SETREGVALUE, *PAVD_SETREGVALUE;
548*53ee8cc1Swenshuai.xi 
549*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED _AVD_SETINPUT
550*53ee8cc1Swenshuai.xi {
551*53ee8cc1Swenshuai.xi     AVD_InputSourceType eSource;
552*53ee8cc1Swenshuai.xi     MS_U8 u8ScartFB;
553*53ee8cc1Swenshuai.xi     MS_BOOL bEnable;
554*53ee8cc1Swenshuai.xi }AVD_SETINPUT, *PAVD_SETINPUT;
555*53ee8cc1Swenshuai.xi 
556*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED _AVD_SETVIDEOSTANDARD
557*53ee8cc1Swenshuai.xi {
558*53ee8cc1Swenshuai.xi     AVD_VideoStandardType eStandard;
559*53ee8cc1Swenshuai.xi     MS_BOOL bIsInAutoTuning;
560*53ee8cc1Swenshuai.xi     MS_BOOL bEnable;
561*53ee8cc1Swenshuai.xi }AVD_SETVIDEOSTANDARD, *PAVD_SETVIDEOSTANDARD;
562*53ee8cc1Swenshuai.xi 
563*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED _AVD_SETSHIFTCLK
564*53ee8cc1Swenshuai.xi {
565*53ee8cc1Swenshuai.xi     MS_BOOL bEnable;
566*53ee8cc1Swenshuai.xi     AVD_ATV_CLK_TYPE eShiftMode;
567*53ee8cc1Swenshuai.xi }AVD_SETSHIFTCLK, *PAVD_SETSHIFTCLK;
568*53ee8cc1Swenshuai.xi 
569*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED _AVD_SETFACTORYPARA
570*53ee8cc1Swenshuai.xi {
571*53ee8cc1Swenshuai.xi     AVD_Factory_Para FactoryPara;
572*53ee8cc1Swenshuai.xi     MS_U8 u8Value;
573*53ee8cc1Swenshuai.xi }AVD_SETFACTORYPARA, *PAVD_SETFACTORYPARA;
574*53ee8cc1Swenshuai.xi 
575*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED _AVD_SET3DCOMBSPEED
576*53ee8cc1Swenshuai.xi {
577*53ee8cc1Swenshuai.xi     MS_U8 u8COMB57;
578*53ee8cc1Swenshuai.xi     MS_U8 u8COMB58;
579*53ee8cc1Swenshuai.xi }AVD_SET3DCOMBSPEED, *PAVD_SET3DCOMBSPEED;
580*53ee8cc1Swenshuai.xi 
581*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED _AVD_GETCAPTUREWINDOW
582*53ee8cc1Swenshuai.xi {
583*53ee8cc1Swenshuai.xi     void *stCapWin;
584*53ee8cc1Swenshuai.xi     AVD_VideoStandardType eVideoStandardType;
585*53ee8cc1Swenshuai.xi }AVD_GETCAPTUREWINDOW, *PAVD_GETCAPTUREWINDOW;
586*53ee8cc1Swenshuai.xi 
587*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED _AVD_GETSTANDARDDETECTION
588*53ee8cc1Swenshuai.xi {
589*53ee8cc1Swenshuai.xi     AVD_VideoStandardType VideoStandardType;
590*53ee8cc1Swenshuai.xi     MS_U16 vdLatchStatus;
591*53ee8cc1Swenshuai.xi }AVD_GETSTANDARDDETECTION, *PAVD_GETSTANDARDDETECTION;
592*53ee8cc1Swenshuai.xi 
593*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED _AVD_SCANHSYNCCHECK
594*53ee8cc1Swenshuai.xi {
595*53ee8cc1Swenshuai.xi     MS_U8 u8HtotalTolerance;
596*53ee8cc1Swenshuai.xi     MS_U16 u16ScanHsyncCheck;
597*53ee8cc1Swenshuai.xi }AVD_SCANHSYNCCHECK, *PAVD_SCANHSYNCCHECK;
598*53ee8cc1Swenshuai.xi 
599*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED _AVD_FORCEVIDEOSTANDARD
600*53ee8cc1Swenshuai.xi {
601*53ee8cc1Swenshuai.xi     AVD_VideoStandardType eVideoStandardType;
602*53ee8cc1Swenshuai.xi     MS_BOOL bEnable;
603*53ee8cc1Swenshuai.xi }AVD_FORCEVIDEOSTANDARD, *PAVD_FORCEVIDEOSTANDARD;
604*53ee8cc1Swenshuai.xi 
605*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED _AVD_MBXREADBYTEBYVDMBOX
606*53ee8cc1Swenshuai.xi {
607*53ee8cc1Swenshuai.xi     MS_U8 u8Addr;
608*53ee8cc1Swenshuai.xi     MS_U8 u8Value;
609*53ee8cc1Swenshuai.xi }AVD_MBXREADBYTEBYVDMBOX, *PAVD_MBXREADBYTEBYVDMBOX;
610*53ee8cc1Swenshuai.xi 
611*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED _AVD_SETDBGLEVEL
612*53ee8cc1Swenshuai.xi {
613*53ee8cc1Swenshuai.xi     AVD_DbgLv u8DbgLevel;
614*53ee8cc1Swenshuai.xi     MS_BOOL bEnable;
615*53ee8cc1Swenshuai.xi }AVD_SETDBGLEVEL, *PAVD_SETDBGLEVEL;
616*53ee8cc1Swenshuai.xi 
617*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED _AVD_GETREGVALUE
618*53ee8cc1Swenshuai.xi {
619*53ee8cc1Swenshuai.xi     MS_U16 u16Addr;
620*53ee8cc1Swenshuai.xi     MS_U8 u8Value;
621*53ee8cc1Swenshuai.xi }AVD_GETREGVALUE, *PAVD_GETREGVALUE;
622*53ee8cc1Swenshuai.xi 
623*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED _AVD_SETPOWERSTATE
624*53ee8cc1Swenshuai.xi {
625*53ee8cc1Swenshuai.xi     EN_POWER_MODE u16PowerState;
626*53ee8cc1Swenshuai.xi     MS_U32 u32Value;
627*53ee8cc1Swenshuai.xi }AVD_SETPOWERSTATE, *PAVD_SETPOWERSTATE;
628*53ee8cc1Swenshuai.xi 
629*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED _AVD_GETLIBVER
630*53ee8cc1Swenshuai.xi {
631*53ee8cc1Swenshuai.xi     const MSIF_Version **ppVersion;
632*53ee8cc1Swenshuai.xi     AVD_Result eAVDResult;
633*53ee8cc1Swenshuai.xi }AVD_GETLIBVER, *PAVD_GETLIBVER;
634*53ee8cc1Swenshuai.xi 
635*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED _AVD_COPYTOUSER
636*53ee8cc1Swenshuai.xi {
637*53ee8cc1Swenshuai.xi     MS_BOOL bEnable;
638*53ee8cc1Swenshuai.xi     MS_U8 u8Value;
639*53ee8cc1Swenshuai.xi     MS_U16 u16Value;
640*53ee8cc1Swenshuai.xi     MS_U32 u32Value;
641*53ee8cc1Swenshuai.xi     AVD_VideoStandardType eVideoStandardType;
642*53ee8cc1Swenshuai.xi     AVD_VideoFreq eVideoFreq;
643*53ee8cc1Swenshuai.xi     AVD_Info eAVDInfo;
644*53ee8cc1Swenshuai.xi }AVD_COPYTOUSER, *PAVD_COPYTOUSER;
645 #endif // _DRV_AVD_V2_H_
646