xref: /utopia/UTPA2-700.0.x/projects/tmplib/include/drvAVD.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.h
98*53ee8cc1Swenshuai.xi /// @brief  AVD Driver Interface
99*53ee8cc1Swenshuai.xi /// @author MStar Semiconductor Inc.
100*53ee8cc1Swenshuai.xi ///////////////////////////////////////////////////////////////////////////////////////////////////
101*53ee8cc1Swenshuai.xi 
102*53ee8cc1Swenshuai.xi /*! \defgroup VDEC VDEC modules
103*53ee8cc1Swenshuai.xi 
104*53ee8cc1Swenshuai.xi  *! \defgroup AVD AVD interface (drvAVD.h)
105*53ee8cc1Swenshuai.xi  *  \ingroup VDEC
106*53ee8cc1Swenshuai.xi 
107*53ee8cc1Swenshuai.xi      AVD (Analog Video Decoder) gets CVBS signal status from VDMCU through VD mailbox. VDMCU reports information like H/V sync status, video standard...\n
108*53ee8cc1Swenshuai.xi      AVD separate CVBS signal into Y/C signal by using 2D/3D COMB filter.
109*53ee8cc1Swenshuai.xi 
110*53ee8cc1Swenshuai.xi      <b>Features</b>
111*53ee8cc1Swenshuai.xi 
112*53ee8cc1Swenshuai.xi      - detect CVBS signal status and video stadnard
113*53ee8cc1Swenshuai.xi      - 3D COMB filter
114*53ee8cc1Swenshuai.xi      - Get signal Noise
115*53ee8cc1Swenshuai.xi      - CVBS color on/off
116*53ee8cc1Swenshuai.xi 
117*53ee8cc1Swenshuai.xi      <b> AVD Block Diagram: </b> \n
118*53ee8cc1Swenshuai.xi      \image html drvAVD_1.png
119*53ee8cc1Swenshuai.xi 
120*53ee8cc1Swenshuai.xi      <b> AVD Code Flow: </b> \n
121*53ee8cc1Swenshuai.xi      \image html drvAVD_2.png
122*53ee8cc1Swenshuai.xi 
123*53ee8cc1Swenshuai.xi  *! \defgroup VDMCU VDMCU
124*53ee8cc1Swenshuai.xi  *  \ingroup AVD
125*53ee8cc1Swenshuai.xi 
126*53ee8cc1Swenshuai.xi  *! \defgroup VD_Info VD_Info
127*53ee8cc1Swenshuai.xi  *  \ingroup AVD
128*53ee8cc1Swenshuai.xi 
129*53ee8cc1Swenshuai.xi  *! \defgroup VD_Task VD_Task
130*53ee8cc1Swenshuai.xi  *  \ingroup AVD
131*53ee8cc1Swenshuai.xi 
132*53ee8cc1Swenshuai.xi  *! \defgroup COMB COMB relative
133*53ee8cc1Swenshuai.xi  *  \ingroup AVD
134*53ee8cc1Swenshuai.xi 
135*53ee8cc1Swenshuai.xi  *! \defgroup AVD_ToBeModified AVD api to be modified
136*53ee8cc1Swenshuai.xi  *  \ingroup AVD
137*53ee8cc1Swenshuai.xi 
138*53ee8cc1Swenshuai.xi  *! \defgroup AVD_ToBeRemove AVD api to be removed
139*53ee8cc1Swenshuai.xi  *  \ingroup AVD
140*53ee8cc1Swenshuai.xi 
141*53ee8cc1Swenshuai.xi  *! \defgroup Get_VD_Info Get_VD_Info
142*53ee8cc1Swenshuai.xi  *  \ingroup VD_Info
143*53ee8cc1Swenshuai.xi 
144*53ee8cc1Swenshuai.xi  *! \defgroup Set_VD_Info Set_VD_Info
145*53ee8cc1Swenshuai.xi  *  \ingroup VD_Info
146*53ee8cc1Swenshuai.xi 
147*53ee8cc1Swenshuai.xi  */
148*53ee8cc1Swenshuai.xi 
149*53ee8cc1Swenshuai.xi 
150*53ee8cc1Swenshuai.xi #ifndef _DRV_AVD_H_
151*53ee8cc1Swenshuai.xi #define _DRV_AVD_H_
152*53ee8cc1Swenshuai.xi 
153*53ee8cc1Swenshuai.xi #include "MsCommon.h"
154*53ee8cc1Swenshuai.xi 
155*53ee8cc1Swenshuai.xi #ifdef __cplusplus
156*53ee8cc1Swenshuai.xi extern "C"
157*53ee8cc1Swenshuai.xi {
158*53ee8cc1Swenshuai.xi #endif
159*53ee8cc1Swenshuai.xi 
160*53ee8cc1Swenshuai.xi 
161*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
162*53ee8cc1Swenshuai.xi //  Driver Capability
163*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
164*53ee8cc1Swenshuai.xi 
165*53ee8cc1Swenshuai.xi 
166*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
167*53ee8cc1Swenshuai.xi //  Macro and Define
168*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
169*53ee8cc1Swenshuai.xi #define MSIF_AVD_LIB_CODE                   {'A','V','D','_'} //Lib code
170*53ee8cc1Swenshuai.xi #define MSIF_AVD_LIBVER                        {'1','1'}      //LIB version
171*53ee8cc1Swenshuai.xi #define MSIF_AVD_BUILDNUM                 {'0','0' }    //Build Number
172*53ee8cc1Swenshuai.xi #define MSIF_AVD_CHANGELIST             {'0','0','6','1','6','9','9','1'} //P4 ChangeList Number
173*53ee8cc1Swenshuai.xi 
174*53ee8cc1Swenshuai.xi #define AVD_VER                 /* Character String for DRV/API version             */  \
175*53ee8cc1Swenshuai.xi     MSIF_TAG,                           /* 'MSIF'                                           */  \
176*53ee8cc1Swenshuai.xi     MSIF_CLASS,                         /* '00'                                             */  \
177*53ee8cc1Swenshuai.xi     MSIF_CUS,                           /* 0x0000                                           */  \
178*53ee8cc1Swenshuai.xi     MSIF_MOD,                           /* 0x0000                                           */  \
179*53ee8cc1Swenshuai.xi     MSIF_CHIP,                                                                                  \
180*53ee8cc1Swenshuai.xi     MSIF_CPU,                                                                                   \
181*53ee8cc1Swenshuai.xi     MSIF_AVD_LIB_CODE,                  /* IP__                                             */  \
182*53ee8cc1Swenshuai.xi     MSIF_AVD_LIBVER,                       /* 0.0 ~ Z.Z                                        */  \
183*53ee8cc1Swenshuai.xi     MSIF_AVD_BUILDNUM,                 /* 00 ~ 99                                          */  \
184*53ee8cc1Swenshuai.xi     MSIF_AVD_CHANGELIST,             /* CL#                                              */  \
185*53ee8cc1Swenshuai.xi     MSIF_OS
186*53ee8cc1Swenshuai.xi 
187*53ee8cc1Swenshuai.xi // video decoder status
188*53ee8cc1Swenshuai.xi #define VD_SYNC_LOCKED                  ((BIT_(15)))
189*53ee8cc1Swenshuai.xi #define VD_HSYNC_LOCKED                 ((BIT_(14)))
190*53ee8cc1Swenshuai.xi #define VD_INTERLACED                   ((BIT_(13)))
191*53ee8cc1Swenshuai.xi #define VD_VSYNC_50HZ                   ((BIT_(12)))
192*53ee8cc1Swenshuai.xi #define VD_RESET_ON                     ((BIT_(11)))
193*53ee8cc1Swenshuai.xi #define VD_COLOR_LOCKED                 ((BIT_(10)))
194*53ee8cc1Swenshuai.xi #define VD_PAL_SWITCH                   ((BIT_(9)))
195*53ee8cc1Swenshuai.xi #define VD_FSC_TYPE                     ((BIT_(7))|(BIT_(6))|(BIT_(5)))
196*53ee8cc1Swenshuai.xi #define VD_FSC_3579                     ((BIT_(6)))              // NTSC
197*53ee8cc1Swenshuai.xi #define VD_FSC_3575                     ((BIT_(7)))              // PAL(M)
198*53ee8cc1Swenshuai.xi #define VD_FSC_3582                     ((BIT_(7))|(BIT_(6)))         // PAL(Nc)
199*53ee8cc1Swenshuai.xi #define VD_FSC_4433                     (0)                 // PAL or NTSC443
200*53ee8cc1Swenshuai.xi #define VD_FSC_4285                     (BIT_(5))              // SECAM
201*53ee8cc1Swenshuai.xi #define VD_VCR_MODE                     (BIT_(4))
202*53ee8cc1Swenshuai.xi #define VD_VCR_PAUSE                    (BIT_(3))
203*53ee8cc1Swenshuai.xi #define VD_MACROVISION                  (BIT_(2))
204*53ee8cc1Swenshuai.xi #define VD_BURST_ON                        (BIT_(1))
205*53ee8cc1Swenshuai.xi #define VD_STATUS_RDY                   (BIT_(0))
206*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
207*53ee8cc1Swenshuai.xi 
208*53ee8cc1Swenshuai.xi // Gain Control (Auto/Fix/Mix) Define
209*53ee8cc1Swenshuai.xi #define VD_USE_FIX_GAIN                 0
210*53ee8cc1Swenshuai.xi #define VD_USE_AUTO_GAIN                1
211*53ee8cc1Swenshuai.xi // Gain Control (Auto/Fix/Mix) Define
212*53ee8cc1Swenshuai.xi //#define AVD_AGC_ENABLE                              0x00
213*53ee8cc1Swenshuai.xi //#define AVD_AGC_DISABLE                             0x03
214*53ee8cc1Swenshuai.xi 
215*53ee8cc1Swenshuai.xi 
216*53ee8cc1Swenshuai.xi #define IS_BITS_SET(val, bits)                  (((val)&(bits)) == (bits))
217*53ee8cc1Swenshuai.xi #define VD_MODE_STANDARD_MASK                   (VD_VSYNC_50HZ | VD_PAL_SWITCH | VD_FSC_TYPE | VD_STATUS_RDY)
218*53ee8cc1Swenshuai.xi 
219*53ee8cc1Swenshuai.xi #define FSC_AUTO_DET_ENABLE                     0x00
220*53ee8cc1Swenshuai.xi #define FSC_AUTO_DET_DISABLE                    0x01
221*53ee8cc1Swenshuai.xi 
222*53ee8cc1Swenshuai.xi #define VD_USE_FB                               0
223*53ee8cc1Swenshuai.xi 
224*53ee8cc1Swenshuai.xi // VD Check Hsync Thresholdffff
225*53ee8cc1Swenshuai.xi #define VD_CHK_HSYNC_WAIT                1         // ms
226*53ee8cc1Swenshuai.xi #define VD_CHK_HSYNC_CONT                60//40        // timeout=VD_CHK_HSYNC_CONT*VD_CHK_HSYNC_WAIT=20ms
227*53ee8cc1Swenshuai.xi #define VD_CHK_HSYNC_OK_THR             2   //7
228*53ee8cc1Swenshuai.xi #define VD_CHK_DEBOUNCE_WAIT         20        // ms
229*53ee8cc1Swenshuai.xi #define VD_CHK_DEBOUNCE_CONT         40        // timeout=VD_CHK_COLOR_CONT*VD_CHK_COLOR_WAIT=800ms
230*53ee8cc1Swenshuai.xi #define VD_CHK_NSPL_WAIT                   1       //ms
231*53ee8cc1Swenshuai.xi #define VD_CHK_NSPL_CONT                   500       //timeout=VD_CHK_NSPL_WAIT*VD_CHK_NSPL_CONT=400ms
232*53ee8cc1Swenshuai.xi #define VD_CHK_NSPL_OK_THR              20//10
233*53ee8cc1Swenshuai.xi #define VD_CHK_VideoSys_CONT                   250       //timeout=VD_CHK_NSPL_WAIT*VD_CHK_NSPL_CONT=400ms
234*53ee8cc1Swenshuai.xi 
235*53ee8cc1Swenshuai.xi #define DSP_VER_OFFSET 255
236*53ee8cc1Swenshuai.xi 
237*53ee8cc1Swenshuai.xi 
238*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
239*53ee8cc1Swenshuai.xi //  Type and Structure
240*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
241*53ee8cc1Swenshuai.xi typedef enum
242*53ee8cc1Swenshuai.xi {
243*53ee8cc1Swenshuai.xi     AVD_LOAD_CODE_BDMA_FROM_SPI,
244*53ee8cc1Swenshuai.xi     AVD_LOAD_CODE_BDMA_FROM_DRAM,
245*53ee8cc1Swenshuai.xi     AVD_LOAD_CODE_BYTE_WRITE,
246*53ee8cc1Swenshuai.xi } AVD_LoadCodeType;
247*53ee8cc1Swenshuai.xi 
248*53ee8cc1Swenshuai.xi typedef enum
249*53ee8cc1Swenshuai.xi {
250*53ee8cc1Swenshuai.xi     DEMODE_NORMAL                   = 0,
251*53ee8cc1Swenshuai.xi     DEMODE_MSTAR_VIF                = 1,
252*53ee8cc1Swenshuai.xi     DEMODE_MSTAR_VIF_MSB1210        = 2,
253*53ee8cc1Swenshuai.xi } AVD_DemodType;
254*53ee8cc1Swenshuai.xi 
255*53ee8cc1Swenshuai.xi typedef enum
256*53ee8cc1Swenshuai.xi {
257*53ee8cc1Swenshuai.xi     E_VIDEO_SYSTEM_ATSC,
258*53ee8cc1Swenshuai.xi     E_VIDEO_SYSTEM_DVB
259*53ee8cc1Swenshuai.xi } AVD_VideoSystem;
260*53ee8cc1Swenshuai.xi 
261*53ee8cc1Swenshuai.xi typedef enum
262*53ee8cc1Swenshuai.xi {
263*53ee8cc1Swenshuai.xi     E_VIDEO_FQ_NOSIGNAL             = 0,     // Video Frequency No signal
264*53ee8cc1Swenshuai.xi     E_VIDEO_FQ_50Hz                 = 50,    // Video Frequency 50Hz
265*53ee8cc1Swenshuai.xi     E_VIDEO_FQ_60Hz                 = 60     // Video Frequency 60Hz
266*53ee8cc1Swenshuai.xi } AVD_VideoFreq;
267*53ee8cc1Swenshuai.xi 
268*53ee8cc1Swenshuai.xi typedef enum
269*53ee8cc1Swenshuai.xi {
270*53ee8cc1Swenshuai.xi     E_FREERUN_FQ_AUTO               = 0x00,
271*53ee8cc1Swenshuai.xi     E_FREERUN_FQ_50Hz               = 0x01,
272*53ee8cc1Swenshuai.xi     E_FREERUN_FQ_60Hz               = 0x02,
273*53ee8cc1Swenshuai.xi     E_FREERUN_FQ_MAX
274*53ee8cc1Swenshuai.xi } AVD_FreeRunFreq;
275*53ee8cc1Swenshuai.xi 
276*53ee8cc1Swenshuai.xi typedef enum
277*53ee8cc1Swenshuai.xi {
278*53ee8cc1Swenshuai.xi     E_VIDEOSTANDARD_PAL_BGHI        = 0x00,        // Video standard PAL BGHI
279*53ee8cc1Swenshuai.xi     E_VIDEOSTANDARD_NTSC_M          = 0x01,        // Video standard NTSC M
280*53ee8cc1Swenshuai.xi     E_VIDEOSTANDARD_SECAM           = 0x02,        // Video standard SECAM
281*53ee8cc1Swenshuai.xi     E_VIDEOSTANDARD_NTSC_44         = 0x03,        // Video standard  NTSC 44
282*53ee8cc1Swenshuai.xi     E_VIDEOSTANDARD_PAL_M           = 0x04,        // Video standard  PAL M
283*53ee8cc1Swenshuai.xi     E_VIDEOSTANDARD_PAL_N           = 0x05,        // Video standard  PAL N
284*53ee8cc1Swenshuai.xi     E_VIDEOSTANDARD_PAL_60          = 0x06,        // Video standard PAL 60
285*53ee8cc1Swenshuai.xi     E_VIDEOSTANDARD_NOTSTANDARD     = 0x07,        // NOT Video standard
286*53ee8cc1Swenshuai.xi     E_VIDEOSTANDARD_AUTO            = 0x08,         // Video standard AUTO
287*53ee8cc1Swenshuai.xi     E_VIDEOSTANDARD_MAX                                // Max Number
288*53ee8cc1Swenshuai.xi } AVD_VideoStandardType;
289*53ee8cc1Swenshuai.xi 
290*53ee8cc1Swenshuai.xi typedef enum
291*53ee8cc1Swenshuai.xi {
292*53ee8cc1Swenshuai.xi     E_INPUT_SOURCE_INVALID                  =   0x00,               // Video source Invalid
293*53ee8cc1Swenshuai.xi     E_INPUT_SOURCE_ATV                      =   0x01,               // Video source ATV
294*53ee8cc1Swenshuai.xi     E_INPUT_SOURCE_CVBS1                    =   0x02,               // Video source CVBS 1
295*53ee8cc1Swenshuai.xi     E_INPUT_SOURCE_CVBS2                    =   0x03,               // Video source CVBS 2
296*53ee8cc1Swenshuai.xi     E_INPUT_SOURCE_CVBS3                    =   0x04,               // Video source CVBS 2
297*53ee8cc1Swenshuai.xi     E_INPUT_SOURCE_SVIDEO1                  =   0x05,               // Video source SVIDEO 1
298*53ee8cc1Swenshuai.xi     E_INPUT_SOURCE_SVIDEO2                  =   0x06,               // Video source SVIDEO 2
299*53ee8cc1Swenshuai.xi     E_INPUT_SOURCE_SCART1                   =   0x07,               // Video source SCART 1
300*53ee8cc1Swenshuai.xi     E_INPUT_SOURCE_SCART2                   =   0x08,               // Video source SCART 2
301*53ee8cc1Swenshuai.xi     E_INPUT_SOURCE_YPbPr                    =   0x09,               // Video source YPbPr
302*53ee8cc1Swenshuai.xi     E_INPUT_SOURCE_THROUGH_3DCOMB           =   0x50,               // Video source through 3D Comb
303*53ee8cc1Swenshuai.xi     E_INPUT_SOURCE_THROUGH_3DCOMB_ATV       =   (E_INPUT_SOURCE_THROUGH_3DCOMB | E_INPUT_SOURCE_ATV),   // through 3D Comb ATV
304*53ee8cc1Swenshuai.xi     E_INPUT_SOURCE_THROUGH_3DCOMB_CVBS1     =   (E_INPUT_SOURCE_THROUGH_3DCOMB | E_INPUT_SOURCE_CVBS1),// through 3D Comb CVBS1
305*53ee8cc1Swenshuai.xi     E_INPUT_SOURCE_THROUGH_3DCOMB_CVBS2     =   (E_INPUT_SOURCE_THROUGH_3DCOMB | E_INPUT_SOURCE_CVBS2),// through 3D Comb CVBS2
306*53ee8cc1Swenshuai.xi     E_INPUT_SOURCE_THROUGH_3DCOMB_SCART1    =   (E_INPUT_SOURCE_THROUGH_3DCOMB | E_INPUT_SOURCE_SCART1),// through 3D Comb SCART1
307*53ee8cc1Swenshuai.xi     E_INPUT_SOURCE_THROUGH_3DCOMB_SCART2    =   (E_INPUT_SOURCE_THROUGH_3DCOMB | E_INPUT_SOURCE_SCART2),// through 3D Comb SCART2
308*53ee8cc1Swenshuai.xi     E_INPUT_SOURCE_MAX                      =   0x60
309*53ee8cc1Swenshuai.xi } AVD_InputSourceType;
310*53ee8cc1Swenshuai.xi 
311*53ee8cc1Swenshuai.xi /// Auto AV Source type
312*53ee8cc1Swenshuai.xi typedef enum
313*53ee8cc1Swenshuai.xi {
314*53ee8cc1Swenshuai.xi     E_AUTOAV_SOURCE_1   =   E_INPUT_SOURCE_SCART1,       // Auto AV source SCART 1
315*53ee8cc1Swenshuai.xi     E_AUTOAV_SOURCE_2   =   E_INPUT_SOURCE_SCART2,       // Auto AV source SCART 2
316*53ee8cc1Swenshuai.xi     E_AUTOAV_SOURCE_ALL =   0xFF                // Auto AV source ALL
317*53ee8cc1Swenshuai.xi } AVD_AutoAVSourceType;
318*53ee8cc1Swenshuai.xi 
319*53ee8cc1Swenshuai.xi typedef enum    // 0x2580[5:4]
320*53ee8cc1Swenshuai.xi {
321*53ee8cc1Swenshuai.xi     SCART_FB_NONE = 0x00,
322*53ee8cc1Swenshuai.xi     SCART_FB0,
323*53ee8cc1Swenshuai.xi     SCART_FB1,
324*53ee8cc1Swenshuai.xi     SCART_FB2,
325*53ee8cc1Swenshuai.xi } AVD_INPUT_SCART_FB;
326*53ee8cc1Swenshuai.xi 
327*53ee8cc1Swenshuai.xi typedef enum
328*53ee8cc1Swenshuai.xi {
329*53ee8cc1Swenshuai.xi     E_ATV_CLK_ORIGIN_43P2MHZ   =    0x00,
330*53ee8cc1Swenshuai.xi     E_ATV_CLK_TYPE1_42MHZ         =    0x01,
331*53ee8cc1Swenshuai.xi     E_ATV_CLK_TYPE2_44P4MHZ     =    0x02,
332*53ee8cc1Swenshuai.xi }AVD_ATV_CLK_TYPE;
333*53ee8cc1Swenshuai.xi 
334*53ee8cc1Swenshuai.xi typedef struct
335*53ee8cc1Swenshuai.xi {
336*53ee8cc1Swenshuai.xi     MS_U8 u8DetectWinBeforeLock;
337*53ee8cc1Swenshuai.xi     MS_U8 u8DetectWinAfterLock;
338*53ee8cc1Swenshuai.xi     MS_U8 u8CNTRFailBeforeLock;
339*53ee8cc1Swenshuai.xi     MS_U8 u8CNTRSyncBeforeLock;
340*53ee8cc1Swenshuai.xi     MS_U8 u8CNTRSyncAfterLock;
341*53ee8cc1Swenshuai.xi } VD_HSYNC_SENSITIVITY;
342*53ee8cc1Swenshuai.xi 
343*53ee8cc1Swenshuai.xi typedef enum
344*53ee8cc1Swenshuai.xi {
345*53ee8cc1Swenshuai.xi     AVD_DBGLV_NONE,    // disable all the debug message
346*53ee8cc1Swenshuai.xi     AVD_DBGLV_INFO,    // information
347*53ee8cc1Swenshuai.xi     AVD_DBGLV_NOTICE,  // normal but significant condition
348*53ee8cc1Swenshuai.xi     AVD_DBGLV_WARNING, // warning conditions
349*53ee8cc1Swenshuai.xi     AVD_DBGLV_ERR,     // error conditions
350*53ee8cc1Swenshuai.xi     AVD_DBGLV_CRIT,    // critical conditions
351*53ee8cc1Swenshuai.xi     AVD_DBGLV_ALERT,   // action must be taken immediately
352*53ee8cc1Swenshuai.xi     AVD_DBGLV_EMERG,   // system is unusable
353*53ee8cc1Swenshuai.xi     AVD_DBGLV_DEBUG,   // debug-level messages
354*53ee8cc1Swenshuai.xi } AVD_DbgLv;
355*53ee8cc1Swenshuai.xi 
356*53ee8cc1Swenshuai.xi #define AVD_PATCH_NONE 0
357*53ee8cc1Swenshuai.xi #define AVD_PATCH_NTSC_50 BIT_(0)
358*53ee8cc1Swenshuai.xi #define AVD_PATCH_FINE_TUNE_FH_DOT BIT_(1)
359*53ee8cc1Swenshuai.xi #define AVD_PATCH_FINE_TUNE_COMB_F2 BIT_(2)
360*53ee8cc1Swenshuai.xi #define AVD_PATCH_FINE_TUNE_3D_COMB BIT_(3)
361*53ee8cc1Swenshuai.xi #define AVD_PATCH_FINE_TUNE_FSC_SHIFT BIT_(4)
362*53ee8cc1Swenshuai.xi #define AVD_PATCH_NON_STANDARD_VTOTAL BIT_(5)
363*53ee8cc1Swenshuai.xi #define AVD_PATCH_FINE_TUNE_STILL_IMAGE BIT_(6)
364*53ee8cc1Swenshuai.xi 
365*53ee8cc1Swenshuai.xi #define AVD_PATCH_HTOTAL_1135_MUL_15 0
366*53ee8cc1Swenshuai.xi #define AVD_PATCH_HTOTAL_1135 BIT_(8)
367*53ee8cc1Swenshuai.xi #define AVD_PATCH_HTOTAL_DYNAMIC BIT_(9)
368*53ee8cc1Swenshuai.xi #define AVD_PATCH_HTOTAL_USER (BIT_(9)|BIT_(8))
369*53ee8cc1Swenshuai.xi #define AVD_PATCH_HTOTAL_MASK (BIT_(9)|BIT_(8))
370*53ee8cc1Swenshuai.xi #define AVD_PATCH_SCART_SVIDEO (BIT_(10))
371*53ee8cc1Swenshuai.xi #define AVD_PATCH_CVBS_NEGATIVESIG (BIT_(11))
372*53ee8cc1Swenshuai.xi 
373*53ee8cc1Swenshuai.xi #define AVD_PATCH_DISABLE_PWS BIT_(24)    // used to store ENABLE_PWS
374*53ee8cc1Swenshuai.xi /// For vd init
375*53ee8cc1Swenshuai.xi typedef struct
376*53ee8cc1Swenshuai.xi {
377*53ee8cc1Swenshuai.xi         // register init
378*53ee8cc1Swenshuai.xi     MS_U8 *u8VdDecInitializeExt; // TODO use system variable type
379*53ee8cc1Swenshuai.xi 
380*53ee8cc1Swenshuai.xi     MS_U32 u32XTAL_Clock;
381*53ee8cc1Swenshuai.xi     AVD_LoadCodeType eLoadCodeType;
382*53ee8cc1Swenshuai.xi     MS_U32 u32VD_DSP_Code_Address;
383*53ee8cc1Swenshuai.xi     MS_U8 *pu8VD_DSP_Code_Address;
384*53ee8cc1Swenshuai.xi     MS_U32 u32VD_DSP_Code_Len;
385*53ee8cc1Swenshuai.xi     // VIF related
386*53ee8cc1Swenshuai.xi     AVD_DemodType eDemodType;
387*53ee8cc1Swenshuai.xi 
388*53ee8cc1Swenshuai.xi     // afec related
389*53ee8cc1Swenshuai.xi     MS_U16 u16VDDSPBinID;
390*53ee8cc1Swenshuai.xi     MS_U8 bRFGainSel;
391*53ee8cc1Swenshuai.xi     MS_U8 bAVGainSel;
392*53ee8cc1Swenshuai.xi     MS_U8 u8RFGain;
393*53ee8cc1Swenshuai.xi     MS_U8 u8AVGain;
394*53ee8cc1Swenshuai.xi     MS_U32  u32VDPatchFlag;
395*53ee8cc1Swenshuai.xi     MS_U8 u8ColorKillHighBound;
396*53ee8cc1Swenshuai.xi     MS_U8 u8ColorKillLowBound;
397*53ee8cc1Swenshuai.xi     MS_U8 u8SwingThreshold;
398*53ee8cc1Swenshuai.xi     VD_HSYNC_SENSITIVITY eVDHsyncSensitivityNormal;
399*53ee8cc1Swenshuai.xi     VD_HSYNC_SENSITIVITY eVDHsyncSensitivityTuning;
400*53ee8cc1Swenshuai.xi 
401*53ee8cc1Swenshuai.xi     // comb related
402*53ee8cc1Swenshuai.xi     MS_PHY u32COMB_3D_ADR;
403*53ee8cc1Swenshuai.xi     MS_U32 u32COMB_3D_LEN;
404*53ee8cc1Swenshuai.xi 
405*53ee8cc1Swenshuai.xi } VD_INITDATA;
406*53ee8cc1Swenshuai.xi 
407*53ee8cc1Swenshuai.xi typedef enum
408*53ee8cc1Swenshuai.xi {
409*53ee8cc1Swenshuai.xi     E_AVD_FAIL=0,
410*53ee8cc1Swenshuai.xi     E_AVD_OK=1
411*53ee8cc1Swenshuai.xi } AVD_Result;
412*53ee8cc1Swenshuai.xi 
413*53ee8cc1Swenshuai.xi 
414*53ee8cc1Swenshuai.xi typedef struct
415*53ee8cc1Swenshuai.xi {
416*53ee8cc1Swenshuai.xi     AVD_InputSourceType eVDInputSource;
417*53ee8cc1Swenshuai.xi     AVD_VideoStandardType eVideoSystem;
418*53ee8cc1Swenshuai.xi     AVD_VideoStandardType eLastStandard;
419*53ee8cc1Swenshuai.xi     MS_U8  u8AutoDetMode;
420*53ee8cc1Swenshuai.xi     MS_U16 u16CurVDStatus;
421*53ee8cc1Swenshuai.xi     MS_U8 u8AutoTuningIsProgress;
422*53ee8cc1Swenshuai.xi } AVD_Info;
423*53ee8cc1Swenshuai.xi 
424*53ee8cc1Swenshuai.xi typedef struct
425*53ee8cc1Swenshuai.xi {
426*53ee8cc1Swenshuai.xi     MS_U8 u8Threshold1;
427*53ee8cc1Swenshuai.xi     MS_U8 u8Threshold2;
428*53ee8cc1Swenshuai.xi     MS_U8 u8Threshold3;
429*53ee8cc1Swenshuai.xi     MS_U8 u8Threshold4;
430*53ee8cc1Swenshuai.xi 
431*53ee8cc1Swenshuai.xi     MS_U8 u8Str1_COMB37;
432*53ee8cc1Swenshuai.xi     MS_U8 u8Str1_COMB38;
433*53ee8cc1Swenshuai.xi     MS_U8 u8Str1_COMB7C;
434*53ee8cc1Swenshuai.xi     MS_U8 u8Str1_COMBED;
435*53ee8cc1Swenshuai.xi 
436*53ee8cc1Swenshuai.xi     MS_U8 u8Str2_COMB37;
437*53ee8cc1Swenshuai.xi     MS_U8 u8Str2_COMB38;
438*53ee8cc1Swenshuai.xi     MS_U8 u8Str2_COMB7C;
439*53ee8cc1Swenshuai.xi     MS_U8 u8Str2_COMBED;
440*53ee8cc1Swenshuai.xi 
441*53ee8cc1Swenshuai.xi     MS_U8 u8Str3_COMB37;
442*53ee8cc1Swenshuai.xi     MS_U8 u8Str3_COMB38;
443*53ee8cc1Swenshuai.xi     MS_U8 u8Str3_COMB7C;
444*53ee8cc1Swenshuai.xi     MS_U8 u8Str3_COMBED;
445*53ee8cc1Swenshuai.xi 
446*53ee8cc1Swenshuai.xi     MS_BOOL bMessageOn;
447*53ee8cc1Swenshuai.xi } AVD_Still_Image_Param;
448*53ee8cc1Swenshuai.xi 
449*53ee8cc1Swenshuai.xi typedef enum
450*53ee8cc1Swenshuai.xi {
451*53ee8cc1Swenshuai.xi     E_FACTORY_PARA_AFEC_D4,
452*53ee8cc1Swenshuai.xi     E_FACTORY_PARA_AFEC_D8,
453*53ee8cc1Swenshuai.xi     E_FACTORY_PARA_AFEC_D5_BIT2,
454*53ee8cc1Swenshuai.xi     E_FACTORY_PARA_AFEC_D9_BIT0,
455*53ee8cc1Swenshuai.xi     E_FACTORY_PARA_AFEC_A0,
456*53ee8cc1Swenshuai.xi     E_FACTORY_PARA_AFEC_A1,
457*53ee8cc1Swenshuai.xi     E_FACTORY_PARA_AFEC_66_BIT67,
458*53ee8cc1Swenshuai.xi     E_FACTORY_PARA_AFEC_6E_BIT7654,
459*53ee8cc1Swenshuai.xi     E_FACTORY_PARA_AFEC_6E_BIT3210,
460*53ee8cc1Swenshuai.xi     E_FACTORY_PARA_AFEC_43,
461*53ee8cc1Swenshuai.xi     E_FACTORY_PARA_AFEC_44,
462*53ee8cc1Swenshuai.xi     E_FACTORY_PARA_AFEC_CB,
463*53ee8cc1Swenshuai.xi     E_FACTORY_PARA_AFEC_CF_BIT2,
464*53ee8cc1Swenshuai.xi     E_FACTORY_PARA_AFEC_D5_BIT3,
465*53ee8cc1Swenshuai.xi     E_FACTORY_PARA_AFEC_MAX
466*53ee8cc1Swenshuai.xi }AVD_Factory_Para;
467*53ee8cc1Swenshuai.xi 
468*53ee8cc1Swenshuai.xi //typedef void(*P_AVD_ISR_Proc)(MS_U8 u8AVDID);
469*53ee8cc1Swenshuai.xi 
470*53ee8cc1Swenshuai.xi 
471*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
472*53ee8cc1Swenshuai.xi //  Function and Variable
473*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
474*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
475*53ee8cc1Swenshuai.xi /// Set VDMCU freeze
476*53ee8cc1Swenshuai.xi /// @ingroup VDMCU
477*53ee8cc1Swenshuai.xi /// @param  bEnable   \b IN: MCU freeze enable
478*53ee8cc1Swenshuai.xi /// @return NA
479*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
480*53ee8cc1Swenshuai.xi // extern void MDrv_AVD_MCUFreeze(MS_BOOL bEnable);
481*53ee8cc1Swenshuai.xi 
482*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
483*53ee8cc1Swenshuai.xi /// Turn OFF AVD
484*53ee8cc1Swenshuai.xi /// @ingroup VD_Task
485*53ee8cc1Swenshuai.xi /// @return NA
486*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
487*53ee8cc1Swenshuai.xi extern void MDrv_AVD_Exit(void);
488*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
489*53ee8cc1Swenshuai.xi /// To initialize Video Decoder.\n
490*53ee8cc1Swenshuai.xi /// When turning power on or waking up from power saving mode,\n
491*53ee8cc1Swenshuai.xi /// this function should be called before using all funcions\n
492*53ee8cc1Swenshuai.xi /// MS_U32 u32XTAL_Clock        : external crystal clock.\n
493*53ee8cc1Swenshuai.xi /// MS_U32 u32VD_DSP_Code_Address        : absolute flash address of VDDSP bin file\n
494*53ee8cc1Swenshuai.xi /// MS_U8 *pu8VD_DSP_Code_Address        : address of VDDSP code\n
495*53ee8cc1Swenshuai.xi /// MS_U32 u32VD_DSP_Code_Len        : VDDSP code length.\n
496*53ee8cc1Swenshuai.xi /// AVD_DemodType eDemodType        : analog Demod. type.\n
497*53ee8cc1Swenshuai.xi /// MS_U16 u16VDDSPBinID     : binary ID of VD DSP code.\n
498*53ee8cc1Swenshuai.xi /// MS_U8 bRFGainSel        : RF auto/fix gain selection\n
499*53ee8cc1Swenshuai.xi /// MS_U8 bAVGainSel        : AV auto/fix gain selection\n
500*53ee8cc1Swenshuai.xi /// MS_U8 u8RFGain        : when RF is fix gain, u8RFGain will set gain value\n
501*53ee8cc1Swenshuai.xi /// MS_U8 u8AVGain        : when AV is fix gain, u8AVGain will set gain value\n
502*53ee8cc1Swenshuai.xi /// MS_U32 u32VDPatchFlag        : set AVD control flag\n
503*53ee8cc1Swenshuai.xi /// MS_U8 u8ColorKillHighBound        : when color burst is detected and color burst S/N is lower than u8ColorKillLowBound, turn off color.\n
504*53ee8cc1Swenshuai.xi /// MS_U8 u8ColorKillLowBound        : when color burst is not detected and color burst S/N is higher than u8ColorKillHighBound, turn on color.\n
505*53ee8cc1Swenshuai.xi ///                                                                          u8ColorKillHighBound should be larger than u8ColorKillLowBound for hysteresis\n
506*53ee8cc1Swenshuai.xi /// MS_U8 u8SwingThreshold        : when signal swing(top-bottom) is smaller than u8SwingThreshold*16mV, report no sync\n
507*53ee8cc1Swenshuai.xi ///                                                                      this threshold is used to filter out false channel, but the value should be set to 0 at channel scan to prevent channel lost\n
508*53ee8cc1Swenshuai.xi /// VD_HSYNC_SENSITIVITY eVDHsyncSensitivityNormal        : hsync sensitivity at normal condition\n
509*53ee8cc1Swenshuai.xi /// VD_HSYNC_SENSITIVITY eVDHsyncSensitivityTuning        : hsync sensitivity at channel scan\n
510*53ee8cc1Swenshuai.xi /// MS_U32 u32COMB_3D_ADR    : 3D COMB protected memory buffer start address.\n
511*53ee8cc1Swenshuai.xi /// MS_U32 u32COMB_3D_LEN    : 3D COMB protected memory length.\n
512*53ee8cc1Swenshuai.xi /// MS_U8 *u8VdDecInitializeExt    : additional initial table for different project requirements\n
513*53ee8cc1Swenshuai.xi ///
514*53ee8cc1Swenshuai.xi /// MS_U32 u32InitDataLen : used to check data size correct or not
515*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
516*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
517*53ee8cc1Swenshuai.xi /// Initialize AVD
518*53ee8cc1Swenshuai.xi /// @ingroup VD_Task
519*53ee8cc1Swenshuai.xi /// @param  pVD_InitData   \b IN: AVD initialize parameters
520*53ee8cc1Swenshuai.xi /// @param  u32InitDataLen   \b IN: InitData length
521*53ee8cc1Swenshuai.xi /// @return NA
522*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
523*53ee8cc1Swenshuai.xi extern AVD_Result MDrv_AVD_Init(VD_INITDATA *pVD_InitData, MS_U32 u32InitDataLen);
524*53ee8cc1Swenshuai.xi 
525*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
526*53ee8cc1Swenshuai.xi /// Reset VDMCU
527*53ee8cc1Swenshuai.xi /// @ingroup VDMCU
528*53ee8cc1Swenshuai.xi /// @return TRUE : succeed
529*53ee8cc1Swenshuai.xi /// @return FALSE : fail
530*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
531*53ee8cc1Swenshuai.xi extern MS_BOOL MDrv_AVD_McuReset(void);
532*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
533*53ee8cc1Swenshuai.xi /// Get video decoder status
534*53ee8cc1Swenshuai.xi /// VD_SYNC_LOCKED                  ((BIT(15)))\n
535*53ee8cc1Swenshuai.xi /// VD_HSYNC_LOCKED                 ((BIT(14)))\n
536*53ee8cc1Swenshuai.xi /// VD_INTERLACED                   ((BIT(13)))\n
537*53ee8cc1Swenshuai.xi /// VD_VSYNC_50HZ                   ((BIT(12)))\n
538*53ee8cc1Swenshuai.xi /// VD_RESET_ON                     ((BIT(11)))\n
539*53ee8cc1Swenshuai.xi /// VD_COLOR_LOCKED                 ((BIT(10)))\n
540*53ee8cc1Swenshuai.xi /// VD_PAL_SWITCH                   ((BIT(9)))\n
541*53ee8cc1Swenshuai.xi /// VD_FSC_TYPE                     ((BIT(7))|(BIT(6))|(BIT(5)))\n
542*53ee8cc1Swenshuai.xi /// VD_FSC_3579                     ((BIT(6)))              // NTSC\n
543*53ee8cc1Swenshuai.xi /// VD_FSC_3575                     ((BIT(7)))              // PAL(M)\n
544*53ee8cc1Swenshuai.xi /// VD_FSC_3582                     ((BIT(7))|(BIT(6)))         // PAL(Nc)\n
545*53ee8cc1Swenshuai.xi /// VD_FSC_4433                     (0)                 // PAL or NTSC443\n
546*53ee8cc1Swenshuai.xi /// VD_FSC_4285                     (BIT(5))              // SECAM\n
547*53ee8cc1Swenshuai.xi /// VD_VCR_MODE                     (BIT(4))\n
548*53ee8cc1Swenshuai.xi /// VD_VCR_PAUSE                    (BIT(3))\n
549*53ee8cc1Swenshuai.xi /// VD_MACROVISION                  (BIT(2))\n
550*53ee8cc1Swenshuai.xi /// VD_BURST_ON                        (BIT(1))\n
551*53ee8cc1Swenshuai.xi /// VD_STATUS_RDY                   (BIT(0))\n
552*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
553*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
554*53ee8cc1Swenshuai.xi /// Get VD Status
555*53ee8cc1Swenshuai.xi /// @ingroup Get_VD_Info
556*53ee8cc1Swenshuai.xi /// @return U16 parameters : AVD U16 Status
557*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
558*53ee8cc1Swenshuai.xi extern MS_U16 MDrv_AVD_GetStatus(void);
559*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
560*53ee8cc1Swenshuai.xi /// Get VD Status
561*53ee8cc1Swenshuai.xi /// @ingroup AVD_ToBeRemove
562*53ee8cc1Swenshuai.xi /// @return U16 parameters : AVD U16 Status
563*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
564*53ee8cc1Swenshuai.xi // extern AVD_Result MDrv_AVD_GetLibVer(const MSIF_Version **ppVersion);
565*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
566*53ee8cc1Swenshuai.xi /// Set AVD debug parameters
567*53ee8cc1Swenshuai.xi /// @ingroup Set_VD_Info
568*53ee8cc1Swenshuai.xi /// @param  u8DbgLevel   \b IN: debug parameters
569*53ee8cc1Swenshuai.xi /// @return TRUE : succeed
570*53ee8cc1Swenshuai.xi /// @return FALSE : fail
571*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
572*53ee8cc1Swenshuai.xi extern MS_BOOL MDrv_AVD_SetDbgLevel(AVD_DbgLv u8DbgLevel);
573*53ee8cc1Swenshuai.xi 
574*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
575*53ee8cc1Swenshuai.xi /// Get AVD Info(standard, source type, VD status)
576*53ee8cc1Swenshuai.xi /// @ingroup Get_VD_Info
577*53ee8cc1Swenshuai.xi /// @return : AVD Info struct
578*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
579*53ee8cc1Swenshuai.xi extern const AVD_Info* MDrv_AVD_GetInfo(void);
580*53ee8cc1Swenshuai.xi 
581*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
582*53ee8cc1Swenshuai.xi /// Get Hsync lock information
583*53ee8cc1Swenshuai.xi /// @ingroup Get_VD_Info
584*53ee8cc1Swenshuai.xi /// @return TRUE: Hsync lock
585*53ee8cc1Swenshuai.xi /// @return FALSE: Hsync unlock
586*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
587*53ee8cc1Swenshuai.xi extern MS_BOOL MDrv_AVD_IsSyncLocked(void);
588*53ee8cc1Swenshuai.xi #if 0 // use MDrv_AVD_IsHsyncLocked
589*53ee8cc1Swenshuai.xi extern MS_BOOL MDrv_VD_IsSyncDetected(void);
590*53ee8cc1Swenshuai.xi #endif
591*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
592*53ee8cc1Swenshuai.xi /// Get Hsync lock information while ATV auto-tuning
593*53ee8cc1Swenshuai.xi /// @ingroup Get_VD_Info
594*53ee8cc1Swenshuai.xi /// @param  u8HtotalTolerance   \b IN: Htotal tolerance for Hsync lock detection
595*53ee8cc1Swenshuai.xi /// @return TRUE : Find legal channel while auto-tuning
596*53ee8cc1Swenshuai.xi /// @return FALSE : No legal channel while auto-tuning
597*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
598*53ee8cc1Swenshuai.xi extern MS_U16 MDrv_AVD_Scan_HsyncCheck(MS_U8 u8HtotalTolerance); //TODO should add delay between register read
599*53ee8cc1Swenshuai.xi 
600*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
601*53ee8cc1Swenshuai.xi /// Get VD Status
602*53ee8cc1Swenshuai.xi /// @ingroup AVD_ToBeRemove
603*53ee8cc1Swenshuai.xi /// @return U16 parameters : AVD U16 Status
604*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
605*53ee8cc1Swenshuai.xi // extern MS_BOOL MDrv_AVD_IsSignalInterlaced(void);
606*53ee8cc1Swenshuai.xi 
607*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
608*53ee8cc1Swenshuai.xi /// Get VD Status
609*53ee8cc1Swenshuai.xi /// @ingroup AVD_ToBeRemove
610*53ee8cc1Swenshuai.xi /// @return U16 parameters : AVD U16 Status
611*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
612*53ee8cc1Swenshuai.xi // extern MS_BOOL MDrv_AVD_IsColorOn(void);
613*53ee8cc1Swenshuai.xi #if 0 // BY 20090403 unused function
614*53ee8cc1Swenshuai.xi MS_BOOL MDrv_VD_IsStandardValid(void);
615*53ee8cc1Swenshuai.xi #endif
616*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
617*53ee8cc1Swenshuai.xi /// Get Vsync freq information
618*53ee8cc1Swenshuai.xi /// @ingroup Get_VD_Info
619*53ee8cc1Swenshuai.xi /// @return Vsync frequency
620*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
621*53ee8cc1Swenshuai.xi extern AVD_VideoFreq MDrv_AVD_GetVerticalFreq(void);
622*53ee8cc1Swenshuai.xi 
623*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
624*53ee8cc1Swenshuai.xi /// Get V total
625*53ee8cc1Swenshuai.xi /// @ingroup Get_VD_Info
626*53ee8cc1Swenshuai.xi /// @return U16 Vtotal
627*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
628*53ee8cc1Swenshuai.xi extern MS_U16 MDrv_AVD_GetVTotal(void);
629*53ee8cc1Swenshuai.xi 
630*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
631*53ee8cc1Swenshuai.xi /// Get Noise magnitude
632*53ee8cc1Swenshuai.xi /// @ingroup Get_VD_Info
633*53ee8cc1Swenshuai.xi /// @return U8 Noise
634*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
635*53ee8cc1Swenshuai.xi extern MS_U8 MDrv_AVD_GetNoiseMag(void);
636*53ee8cc1Swenshuai.xi 
637*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
638*53ee8cc1Swenshuai.xi /// Set Input source and MUX
639*53ee8cc1Swenshuai.xi /// @ingroup VD_Task
640*53ee8cc1Swenshuai.xi /// @param  eSource   \b IN: Input source type
641*53ee8cc1Swenshuai.xi /// @param  u8ScartFB   \b IN: Fast blanking setting
642*53ee8cc1Swenshuai.xi /// @return TRUE: succeed
643*53ee8cc1Swenshuai.xi /// @return FALSE: fail
644*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
645*53ee8cc1Swenshuai.xi extern MS_BOOL MDrv_AVD_SetInput(AVD_InputSourceType eSource, MS_U8 u8ScartFB);
646*53ee8cc1Swenshuai.xi 
647*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
648*53ee8cc1Swenshuai.xi /// Set Video standard
649*53ee8cc1Swenshuai.xi /// @ingroup Set_VD_Info
650*53ee8cc1Swenshuai.xi /// @param  eStandard   \b IN: Input video standard type
651*53ee8cc1Swenshuai.xi /// @param  bIsInAutoTuning   \b IN: Auto-tuning flag
652*53ee8cc1Swenshuai.xi /// @return TRUE: succeed
653*53ee8cc1Swenshuai.xi /// @return FALSE: fail
654*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
655*53ee8cc1Swenshuai.xi extern MS_BOOL MDrv_AVD_SetVideoStandard(AVD_VideoStandardType eStandard, MS_BOOL bIsInAutoTuning);
656*53ee8cc1Swenshuai.xi 
657*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
658*53ee8cc1Swenshuai.xi /// Set auto standard detection from force standard
659*53ee8cc1Swenshuai.xi /// @ingroup Set_VD_Info
660*53ee8cc1Swenshuai.xi /// @return NA
661*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
662*53ee8cc1Swenshuai.xi extern void MDrv_AVD_StartAutoStandardDetection(void);
663*53ee8cc1Swenshuai.xi #if 0 // BY 20090403 unused function
664*53ee8cc1Swenshuai.xi extern void MDrv_VD_StopAutoStandardDetection(void);
665*53ee8cc1Swenshuai.xi #endif
666*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
667*53ee8cc1Swenshuai.xi /// Force video standard and disable auto standard detection
668*53ee8cc1Swenshuai.xi /// @ingroup Set_VD_Info
669*53ee8cc1Swenshuai.xi /// @param  eVideoStandardType   \b IN: Force video standard type
670*53ee8cc1Swenshuai.xi /// @return TRUE: succeed
671*53ee8cc1Swenshuai.xi /// @return FALSE: fail
672*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
673*53ee8cc1Swenshuai.xi extern MS_BOOL MDrv_AVD_ForceVideoStandard(AVD_VideoStandardType eVideoStandardType);
674*53ee8cc1Swenshuai.xi #if 0 // BY 20090403 use MDrv_VD_StartAutoStandardDetection, not supported
675*53ee8cc1Swenshuai.xi extern void MDrv_VD_DisableForceMode(void);
676*53ee8cc1Swenshuai.xi #endif
677*53ee8cc1Swenshuai.xi #if 0 // BY 20090403 use MDrv_VD_GetStandardDetection, not supported
678*53ee8cc1Swenshuai.xi extern AVD_VIDEOSTANDARD_TYPE MDrv_VD_GetResultOfAutoStandardDetection(void);
679*53ee8cc1Swenshuai.xi #endif
680*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
681*53ee8cc1Swenshuai.xi /// Get video standard
682*53ee8cc1Swenshuai.xi /// @ingroup Get_VD_Info
683*53ee8cc1Swenshuai.xi /// @param  u16LatchStatus   \b IN: AVD status
684*53ee8cc1Swenshuai.xi /// @return AVD video standard
685*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
686*53ee8cc1Swenshuai.xi extern AVD_VideoStandardType MDrv_AVD_GetStandardDetection(MS_U16 *u16LatchStatus);
687*53ee8cc1Swenshuai.xi #if 0 // BY 20090408 unused function
688*53ee8cc1Swenshuai.xi extern AVD_VIDEOSTANDARD_TYPE MDrv_VD_DetectStandardAutomatically(void);
689*53ee8cc1Swenshuai.xi #endif
690*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
691*53ee8cc1Swenshuai.xi /// Get VD Status
692*53ee8cc1Swenshuai.xi /// @ingroup AVD_ToBeRemove
693*53ee8cc1Swenshuai.xi /// @return U16 parameters : AVD U16 Status
694*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
695*53ee8cc1Swenshuai.xi // extern AVD_VideoStandardType MDrv_AVD_GetLastDetectedStandard(void);
696*53ee8cc1Swenshuai.xi #if 0 // BY 20090403 unused function
697*53ee8cc1Swenshuai.xi extern void MDrv_VD_EnableAutoGainControl(MS_BOOL bEnable);
698*53ee8cc1Swenshuai.xi #endif
699*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
700*53ee8cc1Swenshuai.xi /// Set 3D COMB para
701*53ee8cc1Swenshuai.xi /// @ingroup COMB relative
702*53ee8cc1Swenshuai.xi /// @param  bEnable   \b IN: set 3D COMB enable
703*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
704*53ee8cc1Swenshuai.xi extern void MDrv_AVD_Set3dComb(MS_BOOL bEnable);
705*53ee8cc1Swenshuai.xi 
706*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
707*53ee8cc1Swenshuai.xi /// Set 3D COMB speed up settings
708*53ee8cc1Swenshuai.xi /// @ingroup COMB relative
709*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
710*53ee8cc1Swenshuai.xi extern void MDrv_AVD_3DCombSpeedup(void);
711*53ee8cc1Swenshuai.xi 
712*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
713*53ee8cc1Swenshuai.xi /// Get VD Status
714*53ee8cc1Swenshuai.xi /// @ingroup AVD_ToBeRemove
715*53ee8cc1Swenshuai.xi /// @return U16 parameters : AVD U16 Status
716*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
717*53ee8cc1Swenshuai.xi // extern void MDrv_AVD_SetFreerunPLL(AVD_VideoFreq eVideoFreq);// 060508 chris
718*53ee8cc1Swenshuai.xi 
719*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
720*53ee8cc1Swenshuai.xi /// Set free run vertical lines
721*53ee8cc1Swenshuai.xi /// @ingroup COMB relative
722*53ee8cc1Swenshuai.xi /// @param  eFreerunfreq   \b IN: input freen run frequency
723*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
724*53ee8cc1Swenshuai.xi extern void MDrv_AVD_SetFreerunFreq(AVD_FreeRunFreq eFreerunfreq);
725*53ee8cc1Swenshuai.xi 
726*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
727*53ee8cc1Swenshuai.xi /// Set register from DSP and monitor register settings
728*53ee8cc1Swenshuai.xi /// @ingroup VD_Task
729*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
730*53ee8cc1Swenshuai.xi extern void MDrv_AVD_SetRegFromDSP(void);
731*53ee8cc1Swenshuai.xi 
732*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
733*53ee8cc1Swenshuai.xi /// Set AVD patch flag
734*53ee8cc1Swenshuai.xi /// @ingroup Set_VD_Info
735*53ee8cc1Swenshuai.xi /// @param  u32VDPatchFlag   \b IN: AVD patch flag
736*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
737*53ee8cc1Swenshuai.xi extern void MDrv_AVD_SetFlag(MS_U32  u32VDPatchFlag);
738*53ee8cc1Swenshuai.xi 
739*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
740*53ee8cc1Swenshuai.xi /// Get AVD patch flag
741*53ee8cc1Swenshuai.xi /// @ingroup Get_VD_Info
742*53ee8cc1Swenshuai.xi /// @return AVD patch flag
743*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
744*53ee8cc1Swenshuai.xi extern MS_U32 MDrv_AVD_GetFlag(void);
745*53ee8cc1Swenshuai.xi 
746*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
747*53ee8cc1Swenshuai.xi /// Set output sampling htotal by user
748*53ee8cc1Swenshuai.xi /// @ingroup Set_VD_Info
749*53ee8cc1Swenshuai.xi /// @param  u16Htt   \b IN: output htotal
750*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
751*53ee8cc1Swenshuai.xi extern void MDrv_AVD_Set_Htt_UserMD(MS_U16 u16Htt);
752*53ee8cc1Swenshuai.xi 
753*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
754*53ee8cc1Swenshuai.xi /// Reset DSP AGC duriing ATV channel change
755*53ee8cc1Swenshuai.xi /// @ingroup Set_VD_Info
756*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
757*53ee8cc1Swenshuai.xi extern void MDrv_AVD_SetChannelChange(void);
758*53ee8cc1Swenshuai.xi 
759*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
760*53ee8cc1Swenshuai.xi /// Set Hsync lock sensitivity for auto-tuning/normal
761*53ee8cc1Swenshuai.xi /// @ingroup Set_VD_Info
762*53ee8cc1Swenshuai.xi /// @param  bEnable   \b IN: auto-tuning:1  normal:0   Hsync sensitivity settings
763*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
764*53ee8cc1Swenshuai.xi extern void MDrv_AVD_SetHsyncDetectionForTuning(MS_BOOL bEnable);
765*53ee8cc1Swenshuai.xi 
766*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
767*53ee8cc1Swenshuai.xi /// Set AVD register
768*53ee8cc1Swenshuai.xi /// @ingroup Set_VD_Info
769*53ee8cc1Swenshuai.xi /// @param  u16Addr   \b IN: register address
770*53ee8cc1Swenshuai.xi /// @param  u8Value   \b IN: register value
771*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
772*53ee8cc1Swenshuai.xi extern void MDrv_AVD_SetRegValue(MS_U16 u16Addr,MS_U8 u8Value);
773*53ee8cc1Swenshuai.xi 
774*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
775*53ee8cc1Swenshuai.xi /// Get AVD register value
776*53ee8cc1Swenshuai.xi /// @ingroup Get_VD_Info
777*53ee8cc1Swenshuai.xi /// @param  u16Addr   \b IN: register address
778*53ee8cc1Swenshuai.xi /// @return register value
779*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
780*53ee8cc1Swenshuai.xi extern MS_U8 MDrv_AVD_GetRegValue(MS_U16 u16Addr);
781*53ee8cc1Swenshuai.xi 
782*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
783*53ee8cc1Swenshuai.xi /// Load VD DSP code
784*53ee8cc1Swenshuai.xi /// @ingroup AVD_ToBeRemove
785*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
786*53ee8cc1Swenshuai.xi // extern void MDrv_AVD_LoadDSP(MS_U8 *pu8VD_DSP, MS_U32 len);
787*53ee8cc1Swenshuai.xi 
788*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
789*53ee8cc1Swenshuai.xi /// Set fixed gain enable
790*53ee8cc1Swenshuai.xi /// @ingroup AVD_ToBeRemove
791*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
792*53ee8cc1Swenshuai.xi // extern void MDrv_AVD_SetPQFineTune(void);
793*53ee8cc1Swenshuai.xi 
794*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
795*53ee8cc1Swenshuai.xi /// Set 3D COMB speed para
796*53ee8cc1Swenshuai.xi /// @ingroup COMB relative
797*53ee8cc1Swenshuai.xi /// @param  u8COMB57   \b IN: set BK_COMB_57 value
798*53ee8cc1Swenshuai.xi /// @param  u8COMB58   \b IN: set BK_COMB_58 value
799*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
800*53ee8cc1Swenshuai.xi // extern void MDrv_AVD_Set3dCombSpeed(MS_U8 u8COMB57, MS_U8 u8COMB58);
801*53ee8cc1Swenshuai.xi 
802*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
803*53ee8cc1Swenshuai.xi /// Get capture window
804*53ee8cc1Swenshuai.xi /// @ingroup AVD_ToBeRemove
805*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
806*53ee8cc1Swenshuai.xi extern void MDrv_AVD_GetCaptureWindow(void *stCapWin, AVD_VideoStandardType eVideoStandardType);
807*53ee8cc1Swenshuai.xi 
808*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
809*53ee8cc1Swenshuai.xi /// Read value from VD mailbox
810*53ee8cc1Swenshuai.xi /// @ingroup AVD_ToBeRemove
811*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
812*53ee8cc1Swenshuai.xi extern MS_U8 MDrv_AVD_MBX_ReadByteByVDMbox(MS_U8 u8Addr);
813*53ee8cc1Swenshuai.xi 
814*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
815*53ee8cc1Swenshuai.xi /// Get Hsync edge
816*53ee8cc1Swenshuai.xi /// @ingroup Get_VD_Info
817*53ee8cc1Swenshuai.xi /// @return Hsync edge
818*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
819*53ee8cc1Swenshuai.xi extern MS_U8 MDrv_AVD_GetHsyncEdge(void);
820*53ee8cc1Swenshuai.xi 
821*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
822*53ee8cc1Swenshuai.xi /// Set 3D COMB stillimage parameters
823*53ee8cc1Swenshuai.xi /// @ingroup COMB relative
824*53ee8cc1Swenshuai.xi /// @param  param   \b IN: Stillimage parameters
825*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
826*53ee8cc1Swenshuai.xi extern void MDrv_AVD_SetStillImageParam(AVD_Still_Image_Param param);
827*53ee8cc1Swenshuai.xi 
828*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
829*53ee8cc1Swenshuai.xi /// Set BK_AFEC_D4 value
830*53ee8cc1Swenshuai.xi /// @ingroup AVD_ToBeRemove
831*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
832*53ee8cc1Swenshuai.xi // extern void MDrv_AVD_SetAFECD4Factory(MS_U8 u8Value);
833*53ee8cc1Swenshuai.xi 
834*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
835*53ee8cc1Swenshuai.xi /// Set 2D/3D COMB patch
836*53ee8cc1Swenshuai.xi /// @ingroup AVD_ToBeRemove
837*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
838*53ee8cc1Swenshuai.xi // extern void MDrv_AVD_Set2D3DPatchOnOff(MS_BOOL bEnable);
839*53ee8cc1Swenshuai.xi 
840*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
841*53ee8cc1Swenshuai.xi /// Set back porch position
842*53ee8cc1Swenshuai.xi /// @ingroup AVD_ToBeRemove
843*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
844*53ee8cc1Swenshuai.xi // extern void MDrv_AVD_BackPorchWindowPositon(MS_BOOL bEnable , MS_U8 u8Value);
845*53ee8cc1Swenshuai.xi 
846*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
847*53ee8cc1Swenshuai.xi /// Set AVD factory parameters
848*53ee8cc1Swenshuai.xi /// @ingroup Set_VD_Info
849*53ee8cc1Swenshuai.xi /// @param  FactoryPara   \b IN: factory parameters/register
850*53ee8cc1Swenshuai.xi /// @param  u8Value   \b IN: setting value
851*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
852*53ee8cc1Swenshuai.xi extern void MDrv_AVD_SetFactoryPara(AVD_Factory_Para FactoryPara,MS_U8 u8Value);
853*53ee8cc1Swenshuai.xi 
854*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
855*53ee8cc1Swenshuai.xi /// Set fixed gain
856*53ee8cc1Swenshuai.xi /// @ingroup AVD_ToBeRemove
857*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
858*53ee8cc1Swenshuai.xi // extern MS_U8 MDrv_AVD_SetAutoFineGainToFixed(void);
859*53ee8cc1Swenshuai.xi 
860*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
861*53ee8cc1Swenshuai.xi /// Get DSP fine gain value
862*53ee8cc1Swenshuai.xi /// @ingroup Get_VD_Info
863*53ee8cc1Swenshuai.xi /// @return fine gain
864*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
865*53ee8cc1Swenshuai.xi extern MS_U8 MDrv_AVD_GetDSPFineGain(void);
866*53ee8cc1Swenshuai.xi 
867*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
868*53ee8cc1Swenshuai.xi /// Get DSP version
869*53ee8cc1Swenshuai.xi /// @ingroup Get_VD_Info
870*53ee8cc1Swenshuai.xi /// @return DSP version
871*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
872*53ee8cc1Swenshuai.xi extern MS_U16 MDrv_AVD_GetDSPVersion(void);
873*53ee8cc1Swenshuai.xi 
874*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
875*53ee8cc1Swenshuai.xi /// Shift clock function
876*53ee8cc1Swenshuai.xi /// @ingroup AVD_ToBeRemove
877*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
878*53ee8cc1Swenshuai.xi // extern void MDrv_AVD_ShiftClk(AVD_ATV_CLK_TYPE eShiftMode);
879*53ee8cc1Swenshuai.xi 
880*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
881*53ee8cc1Swenshuai.xi /// Set shift clock parameters
882*53ee8cc1Swenshuai.xi /// @ingroup Set_VD_Info
883*53ee8cc1Swenshuai.xi /// @param  bEnable   \b IN: shift clock enable
884*53ee8cc1Swenshuai.xi /// @param  eShiftMode   \b IN: shift clock mode
885*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
886*53ee8cc1Swenshuai.xi extern void MDrv_AVD_SetShiftClk(MS_BOOL bEnable,AVD_ATV_CLK_TYPE eShiftMode);
887*53ee8cc1Swenshuai.xi 
888*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
889*53ee8cc1Swenshuai.xi /// shift clock monitor function
890*53ee8cc1Swenshuai.xi /// @ingroup VD_Task
891*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
892*53ee8cc1Swenshuai.xi // extern void MDrv_AVD_ShifClk_Monitor(void);
893*53ee8cc1Swenshuai.xi 
894*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
895*53ee8cc1Swenshuai.xi /// SCART monitor function
896*53ee8cc1Swenshuai.xi /// @ingroup VD_Task
897*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
898*53ee8cc1Swenshuai.xi // extern void MDrv_AVD_SCART_Monitor(void);
899*53ee8cc1Swenshuai.xi 
900*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
901*53ee8cc1Swenshuai.xi /// Set AVD STR(resume/suspend) state
902*53ee8cc1Swenshuai.xi /// @ingroup Set_VD_Info
903*53ee8cc1Swenshuai.xi /// @param  u16PowerState   \b IN: STR state
904*53ee8cc1Swenshuai.xi /// @return status
905*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
906*53ee8cc1Swenshuai.xi extern MS_U32 MDrv_AVD_SetPowerState(EN_POWER_MODE u16PowerState);
907*53ee8cc1Swenshuai.xi 
908*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
909*53ee8cc1Swenshuai.xi /// Get MacroVision detection
910*53ee8cc1Swenshuai.xi /// @ingroup Get_VD_Info
911*53ee8cc1Swenshuai.xi /// @return Macro Vision detection status
912*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
913*53ee8cc1Swenshuai.xi // extern MS_BOOL MDrv_AVD_GetMacroVisionDetect(void);
914*53ee8cc1Swenshuai.xi 
915*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
916*53ee8cc1Swenshuai.xi /// Get VBI CGMS detection
917*53ee8cc1Swenshuai.xi /// @ingroup Get_VD_Info
918*53ee8cc1Swenshuai.xi /// @return CGMS detection status
919*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
920*53ee8cc1Swenshuai.xi // extern MS_BOOL MDrv_AVD_GetCGMSDetect(void);
921*53ee8cc1Swenshuai.xi #ifdef __cplusplus
922*53ee8cc1Swenshuai.xi }
923*53ee8cc1Swenshuai.xi #endif
924*53ee8cc1Swenshuai.xi 
925*53ee8cc1Swenshuai.xi 
926*53ee8cc1Swenshuai.xi #endif // _DRV_AVD_H_
927*53ee8cc1Swenshuai.xi 
928