xref: /utopia/UTPA2-700.0.x/mxlib/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 #define AVD_PATCH_DSPCODE_0x24_ATSC BIT_(25) //L_ATSC
375*53ee8cc1Swenshuai.xi #define AVD_PATCH_DSPCODE_0x25 BIT_(26) //L_MSTAR
376*53ee8cc1Swenshuai.xi #define AVD_PATCH_DSPCODE_0x21_ATSC BIT_(27) //S_ATSC
377*53ee8cc1Swenshuai.xi #define AVD_PATCH_DSPCODE_0x21 BIT_(28) //S
378*53ee8cc1Swenshuai.xi 
379*53ee8cc1Swenshuai.xi /// For vd init
380*53ee8cc1Swenshuai.xi typedef struct __attribute__((__packed__))
381*53ee8cc1Swenshuai.xi {
382*53ee8cc1Swenshuai.xi         // register init
383*53ee8cc1Swenshuai.xi     MS_U8 *u8VdDecInitializeExt; // TODO use system variable type
384*53ee8cc1Swenshuai.xi     #if !defined (__aarch64__)
385*53ee8cc1Swenshuai.xi     MS_U32 u32AlignDummy;
386*53ee8cc1Swenshuai.xi     #endif
387*53ee8cc1Swenshuai.xi 
388*53ee8cc1Swenshuai.xi     MS_U32 u32XTAL_Clock;
389*53ee8cc1Swenshuai.xi     AVD_LoadCodeType eLoadCodeType;
390*53ee8cc1Swenshuai.xi     MS_U32 u32VD_DSP_Code_Address;
391*53ee8cc1Swenshuai.xi     MS_U8 *pu8VD_DSP_Code_Address;
392*53ee8cc1Swenshuai.xi     #if !defined (__aarch64__)
393*53ee8cc1Swenshuai.xi     MS_U32 u32AlignDummy1;
394*53ee8cc1Swenshuai.xi     #endif
395*53ee8cc1Swenshuai.xi 
396*53ee8cc1Swenshuai.xi     MS_U32 u32VD_DSP_Code_Len;
397*53ee8cc1Swenshuai.xi     // VIF related
398*53ee8cc1Swenshuai.xi     AVD_DemodType eDemodType;
399*53ee8cc1Swenshuai.xi 
400*53ee8cc1Swenshuai.xi     // afec related
401*53ee8cc1Swenshuai.xi     MS_U16 u16VDDSPBinID;
402*53ee8cc1Swenshuai.xi     MS_U8 bRFGainSel;
403*53ee8cc1Swenshuai.xi     MS_U8 bAVGainSel;
404*53ee8cc1Swenshuai.xi     MS_U8 u8RFGain;
405*53ee8cc1Swenshuai.xi     MS_U8 u8AVGain;
406*53ee8cc1Swenshuai.xi     MS_U32  u32VDPatchFlag;
407*53ee8cc1Swenshuai.xi     MS_U8 u8ColorKillHighBound;
408*53ee8cc1Swenshuai.xi     MS_U8 u8ColorKillLowBound;
409*53ee8cc1Swenshuai.xi     MS_U8 u8SwingThreshold;
410*53ee8cc1Swenshuai.xi     VD_HSYNC_SENSITIVITY eVDHsyncSensitivityNormal;
411*53ee8cc1Swenshuai.xi     VD_HSYNC_SENSITIVITY eVDHsyncSensitivityTuning;
412*53ee8cc1Swenshuai.xi 
413*53ee8cc1Swenshuai.xi     // comb related
414*53ee8cc1Swenshuai.xi     MS_PHY u32COMB_3D_ADR;
415*53ee8cc1Swenshuai.xi     MS_U32 u32COMB_3D_LEN;
416*53ee8cc1Swenshuai.xi 
417*53ee8cc1Swenshuai.xi } VD_INITDATA;
418*53ee8cc1Swenshuai.xi 
419*53ee8cc1Swenshuai.xi typedef enum
420*53ee8cc1Swenshuai.xi {
421*53ee8cc1Swenshuai.xi     E_AVD_FAIL=0,
422*53ee8cc1Swenshuai.xi     E_AVD_OK=1
423*53ee8cc1Swenshuai.xi } AVD_Result;
424*53ee8cc1Swenshuai.xi 
425*53ee8cc1Swenshuai.xi 
426*53ee8cc1Swenshuai.xi typedef struct
427*53ee8cc1Swenshuai.xi {
428*53ee8cc1Swenshuai.xi     AVD_InputSourceType eVDInputSource;
429*53ee8cc1Swenshuai.xi     AVD_VideoStandardType eVideoSystem;
430*53ee8cc1Swenshuai.xi     AVD_VideoStandardType eLastStandard;
431*53ee8cc1Swenshuai.xi     MS_U8  u8AutoDetMode;
432*53ee8cc1Swenshuai.xi     MS_U16 u16CurVDStatus;
433*53ee8cc1Swenshuai.xi     MS_U8 u8AutoTuningIsProgress;
434*53ee8cc1Swenshuai.xi } AVD_Info;
435*53ee8cc1Swenshuai.xi 
436*53ee8cc1Swenshuai.xi typedef struct
437*53ee8cc1Swenshuai.xi {
438*53ee8cc1Swenshuai.xi     MS_U8 u8Threshold1;
439*53ee8cc1Swenshuai.xi     MS_U8 u8Threshold2;
440*53ee8cc1Swenshuai.xi     MS_U8 u8Threshold3;
441*53ee8cc1Swenshuai.xi     MS_U8 u8Threshold4;
442*53ee8cc1Swenshuai.xi 
443*53ee8cc1Swenshuai.xi     MS_U8 u8Str1_COMB37;
444*53ee8cc1Swenshuai.xi     MS_U8 u8Str1_COMB38;
445*53ee8cc1Swenshuai.xi     MS_U8 u8Str1_COMB7C;
446*53ee8cc1Swenshuai.xi     MS_U8 u8Str1_COMBED;
447*53ee8cc1Swenshuai.xi 
448*53ee8cc1Swenshuai.xi     MS_U8 u8Str2_COMB37;
449*53ee8cc1Swenshuai.xi     MS_U8 u8Str2_COMB38;
450*53ee8cc1Swenshuai.xi     MS_U8 u8Str2_COMB7C;
451*53ee8cc1Swenshuai.xi     MS_U8 u8Str2_COMBED;
452*53ee8cc1Swenshuai.xi 
453*53ee8cc1Swenshuai.xi     MS_U8 u8Str3_COMB37;
454*53ee8cc1Swenshuai.xi     MS_U8 u8Str3_COMB38;
455*53ee8cc1Swenshuai.xi     MS_U8 u8Str3_COMB7C;
456*53ee8cc1Swenshuai.xi     MS_U8 u8Str3_COMBED;
457*53ee8cc1Swenshuai.xi 
458*53ee8cc1Swenshuai.xi     MS_BOOL bMessageOn;
459*53ee8cc1Swenshuai.xi } AVD_Still_Image_Param;
460*53ee8cc1Swenshuai.xi 
461*53ee8cc1Swenshuai.xi typedef enum
462*53ee8cc1Swenshuai.xi {
463*53ee8cc1Swenshuai.xi     E_FACTORY_PARA_AFEC_D4,
464*53ee8cc1Swenshuai.xi     E_FACTORY_PARA_AFEC_D8,
465*53ee8cc1Swenshuai.xi     E_FACTORY_PARA_AFEC_D5_BIT2,
466*53ee8cc1Swenshuai.xi     E_FACTORY_PARA_AFEC_D9_BIT0,
467*53ee8cc1Swenshuai.xi     E_FACTORY_PARA_AFEC_A0,
468*53ee8cc1Swenshuai.xi     E_FACTORY_PARA_AFEC_A1,
469*53ee8cc1Swenshuai.xi     E_FACTORY_PARA_AFEC_66_BIT67,
470*53ee8cc1Swenshuai.xi     E_FACTORY_PARA_AFEC_6E_BIT7654,
471*53ee8cc1Swenshuai.xi     E_FACTORY_PARA_AFEC_6E_BIT3210,
472*53ee8cc1Swenshuai.xi     E_FACTORY_PARA_AFEC_43,
473*53ee8cc1Swenshuai.xi     E_FACTORY_PARA_AFEC_44,
474*53ee8cc1Swenshuai.xi     E_FACTORY_PARA_AFEC_CB,
475*53ee8cc1Swenshuai.xi     E_FACTORY_PARA_AFEC_CF_BIT2,
476*53ee8cc1Swenshuai.xi     E_FACTORY_PARA_AFEC_D5_BIT3,
477*53ee8cc1Swenshuai.xi     E_FACTORY_PARA_AFEC_D7_HIGH,
478*53ee8cc1Swenshuai.xi     E_FACTORY_PARA_AFEC_D7_LOW,
479*53ee8cc1Swenshuai.xi     E_FACTORY_PARA_AFEC_MAX
480*53ee8cc1Swenshuai.xi }AVD_Factory_Para;
481*53ee8cc1Swenshuai.xi 
482*53ee8cc1Swenshuai.xi //typedef void(*P_AVD_ISR_Proc)(MS_U8 u8AVDID);
483*53ee8cc1Swenshuai.xi 
484*53ee8cc1Swenshuai.xi 
485*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
486*53ee8cc1Swenshuai.xi //  Function and Variable
487*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
488*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
489*53ee8cc1Swenshuai.xi /// Set VDMCU freeze
490*53ee8cc1Swenshuai.xi /// @ingroup VDMCU
491*53ee8cc1Swenshuai.xi /// @param  bEnable   \b IN: MCU freeze enable
492*53ee8cc1Swenshuai.xi /// @return NA
493*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
494*53ee8cc1Swenshuai.xi extern void MDrv_AVD_MCUFreeze(MS_BOOL bEnable);
495*53ee8cc1Swenshuai.xi 
496*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
497*53ee8cc1Swenshuai.xi /// Turn OFF AVD
498*53ee8cc1Swenshuai.xi /// @ingroup VD_Task
499*53ee8cc1Swenshuai.xi /// @return NA
500*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
501*53ee8cc1Swenshuai.xi extern void MDrv_AVD_Exit(void);
502*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
503*53ee8cc1Swenshuai.xi /// To initialize Video Decoder.\n
504*53ee8cc1Swenshuai.xi /// When turning power on or waking up from power saving mode,\n
505*53ee8cc1Swenshuai.xi /// this function should be called before using all funcions\n
506*53ee8cc1Swenshuai.xi /// MS_U32 u32XTAL_Clock        : external crystal clock.\n
507*53ee8cc1Swenshuai.xi /// MS_U32 u32VD_DSP_Code_Address        : absolute flash address of VDDSP bin file\n
508*53ee8cc1Swenshuai.xi /// MS_U8 *pu8VD_DSP_Code_Address        : address of VDDSP code\n
509*53ee8cc1Swenshuai.xi /// MS_U32 u32VD_DSP_Code_Len        : VDDSP code length.\n
510*53ee8cc1Swenshuai.xi /// AVD_DemodType eDemodType        : analog Demod. type.\n
511*53ee8cc1Swenshuai.xi /// MS_U16 u16VDDSPBinID     : binary ID of VD DSP code.\n
512*53ee8cc1Swenshuai.xi /// MS_U8 bRFGainSel        : RF auto/fix gain selection\n
513*53ee8cc1Swenshuai.xi /// MS_U8 bAVGainSel        : AV auto/fix gain selection\n
514*53ee8cc1Swenshuai.xi /// MS_U8 u8RFGain        : when RF is fix gain, u8RFGain will set gain value\n
515*53ee8cc1Swenshuai.xi /// MS_U8 u8AVGain        : when AV is fix gain, u8AVGain will set gain value\n
516*53ee8cc1Swenshuai.xi /// MS_U32 u32VDPatchFlag        : set AVD control flag\n
517*53ee8cc1Swenshuai.xi /// MS_U8 u8ColorKillHighBound        : when color burst is detected and color burst S/N is lower than u8ColorKillLowBound, turn off color.\n
518*53ee8cc1Swenshuai.xi /// MS_U8 u8ColorKillLowBound        : when color burst is not detected and color burst S/N is higher than u8ColorKillHighBound, turn on color.\n
519*53ee8cc1Swenshuai.xi ///                                                                          u8ColorKillHighBound should be larger than u8ColorKillLowBound for hysteresis\n
520*53ee8cc1Swenshuai.xi /// MS_U8 u8SwingThreshold        : when signal swing(top-bottom) is smaller than u8SwingThreshold*16mV, report no sync\n
521*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
522*53ee8cc1Swenshuai.xi /// VD_HSYNC_SENSITIVITY eVDHsyncSensitivityNormal        : hsync sensitivity at normal condition\n
523*53ee8cc1Swenshuai.xi /// VD_HSYNC_SENSITIVITY eVDHsyncSensitivityTuning        : hsync sensitivity at channel scan\n
524*53ee8cc1Swenshuai.xi /// MS_U32 u32COMB_3D_ADR    : 3D COMB protected memory buffer start address.\n
525*53ee8cc1Swenshuai.xi /// MS_U32 u32COMB_3D_LEN    : 3D COMB protected memory length.\n
526*53ee8cc1Swenshuai.xi /// MS_U8 *u8VdDecInitializeExt    : additional initial table for different project requirements\n
527*53ee8cc1Swenshuai.xi ///
528*53ee8cc1Swenshuai.xi /// MS_U32 u32InitDataLen : used to check data size correct or not
529*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
530*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
531*53ee8cc1Swenshuai.xi /// Initialize AVD
532*53ee8cc1Swenshuai.xi /// @ingroup VD_Task
533*53ee8cc1Swenshuai.xi /// @param  pVD_InitData   \b IN: AVD initialize parameters
534*53ee8cc1Swenshuai.xi /// @param  u32InitDataLen   \b IN: InitData length
535*53ee8cc1Swenshuai.xi /// @return NA
536*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
537*53ee8cc1Swenshuai.xi extern AVD_Result MDrv_AVD_Init(VD_INITDATA *pVD_InitData, MS_U32 u32InitDataLen);
538*53ee8cc1Swenshuai.xi 
539*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
540*53ee8cc1Swenshuai.xi /// Reset VDMCU
541*53ee8cc1Swenshuai.xi /// @ingroup VDMCU
542*53ee8cc1Swenshuai.xi /// @return TRUE : succeed
543*53ee8cc1Swenshuai.xi /// @return FALSE : fail
544*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
545*53ee8cc1Swenshuai.xi extern MS_BOOL MDrv_AVD_McuReset(void);
546*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
547*53ee8cc1Swenshuai.xi /// Get video decoder status
548*53ee8cc1Swenshuai.xi /// VD_SYNC_LOCKED                  ((BIT(15)))\n
549*53ee8cc1Swenshuai.xi /// VD_HSYNC_LOCKED                 ((BIT(14)))\n
550*53ee8cc1Swenshuai.xi /// VD_INTERLACED                   ((BIT(13)))\n
551*53ee8cc1Swenshuai.xi /// VD_VSYNC_50HZ                   ((BIT(12)))\n
552*53ee8cc1Swenshuai.xi /// VD_RESET_ON                     ((BIT(11)))\n
553*53ee8cc1Swenshuai.xi /// VD_COLOR_LOCKED                 ((BIT(10)))\n
554*53ee8cc1Swenshuai.xi /// VD_PAL_SWITCH                   ((BIT(9)))\n
555*53ee8cc1Swenshuai.xi /// VD_FSC_TYPE                     ((BIT(7))|(BIT(6))|(BIT(5)))\n
556*53ee8cc1Swenshuai.xi /// VD_FSC_3579                     ((BIT(6)))              // NTSC\n
557*53ee8cc1Swenshuai.xi /// VD_FSC_3575                     ((BIT(7)))              // PAL(M)\n
558*53ee8cc1Swenshuai.xi /// VD_FSC_3582                     ((BIT(7))|(BIT(6)))         // PAL(Nc)\n
559*53ee8cc1Swenshuai.xi /// VD_FSC_4433                     (0)                 // PAL or NTSC443\n
560*53ee8cc1Swenshuai.xi /// VD_FSC_4285                     (BIT(5))              // SECAM\n
561*53ee8cc1Swenshuai.xi /// VD_VCR_MODE                     (BIT(4))\n
562*53ee8cc1Swenshuai.xi /// VD_VCR_PAUSE                    (BIT(3))\n
563*53ee8cc1Swenshuai.xi /// VD_MACROVISION                  (BIT(2))\n
564*53ee8cc1Swenshuai.xi /// VD_BURST_ON                        (BIT(1))\n
565*53ee8cc1Swenshuai.xi /// VD_STATUS_RDY                   (BIT(0))\n
566*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
567*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
568*53ee8cc1Swenshuai.xi /// Get VD Status
569*53ee8cc1Swenshuai.xi /// @ingroup Get_VD_Info
570*53ee8cc1Swenshuai.xi /// @return U16 parameters : AVD U16 Status
571*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
572*53ee8cc1Swenshuai.xi extern MS_U16 MDrv_AVD_GetStatus(void);
573*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
574*53ee8cc1Swenshuai.xi /// Get VD Status
575*53ee8cc1Swenshuai.xi /// @ingroup AVD_ToBeRemove
576*53ee8cc1Swenshuai.xi /// @return U16 parameters : AVD U16 Status
577*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
578*53ee8cc1Swenshuai.xi extern AVD_Result MDrv_AVD_GetLibVer(const MSIF_Version **ppVersion);
579*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
580*53ee8cc1Swenshuai.xi /// Set AVD debug parameters
581*53ee8cc1Swenshuai.xi /// @ingroup Set_VD_Info
582*53ee8cc1Swenshuai.xi /// @param  u8DbgLevel   \b IN: debug parameters
583*53ee8cc1Swenshuai.xi /// @return TRUE : succeed
584*53ee8cc1Swenshuai.xi /// @return FALSE : fail
585*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
586*53ee8cc1Swenshuai.xi extern MS_BOOL MDrv_AVD_SetDbgLevel(AVD_DbgLv u8DbgLevel);
587*53ee8cc1Swenshuai.xi 
588*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
589*53ee8cc1Swenshuai.xi /// Get AVD Info(standard, source type, VD status)
590*53ee8cc1Swenshuai.xi /// @ingroup Get_VD_Info
591*53ee8cc1Swenshuai.xi /// @return : AVD Info struct
592*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
593*53ee8cc1Swenshuai.xi extern const AVD_Info* MDrv_AVD_GetInfo(void);
594*53ee8cc1Swenshuai.xi 
595*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
596*53ee8cc1Swenshuai.xi /// Get Hsync lock information
597*53ee8cc1Swenshuai.xi /// @ingroup Get_VD_Info
598*53ee8cc1Swenshuai.xi /// @return TRUE: Hsync lock
599*53ee8cc1Swenshuai.xi /// @return FALSE: Hsync unlock
600*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
601*53ee8cc1Swenshuai.xi extern MS_BOOL MDrv_AVD_IsSyncLocked(void);
602*53ee8cc1Swenshuai.xi #if 0 // use MDrv_AVD_IsHsyncLocked
603*53ee8cc1Swenshuai.xi extern MS_BOOL MDrv_VD_IsSyncDetected(void);
604*53ee8cc1Swenshuai.xi #endif
605*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
606*53ee8cc1Swenshuai.xi /// Get Hsync lock information while ATV auto-tuning
607*53ee8cc1Swenshuai.xi /// @ingroup Get_VD_Info
608*53ee8cc1Swenshuai.xi /// @param  u8HtotalTolerance   \b IN: Htotal tolerance for Hsync lock detection
609*53ee8cc1Swenshuai.xi /// @return TRUE : Find legal channel while auto-tuning
610*53ee8cc1Swenshuai.xi /// @return FALSE : No legal channel while auto-tuning
611*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
612*53ee8cc1Swenshuai.xi extern MS_U16 MDrv_AVD_Scan_HsyncCheck(MS_U8 u8HtotalTolerance); //TODO should add delay between register read
613*53ee8cc1Swenshuai.xi 
614*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
615*53ee8cc1Swenshuai.xi /// Get VD Status
616*53ee8cc1Swenshuai.xi /// @ingroup AVD_ToBeRemove
617*53ee8cc1Swenshuai.xi /// @return U16 parameters : AVD U16 Status
618*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
619*53ee8cc1Swenshuai.xi extern MS_BOOL MDrv_AVD_IsSignalInterlaced(void);
620*53ee8cc1Swenshuai.xi 
621*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
622*53ee8cc1Swenshuai.xi /// Get VD Status
623*53ee8cc1Swenshuai.xi /// @ingroup AVD_ToBeRemove
624*53ee8cc1Swenshuai.xi /// @return U16 parameters : AVD U16 Status
625*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
626*53ee8cc1Swenshuai.xi extern MS_BOOL MDrv_AVD_IsColorOn(void);
627*53ee8cc1Swenshuai.xi #if 0 // BY 20090403 unused function
628*53ee8cc1Swenshuai.xi MS_BOOL MDrv_VD_IsStandardValid(void);
629*53ee8cc1Swenshuai.xi #endif
630*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
631*53ee8cc1Swenshuai.xi /// Get Vsync freq information
632*53ee8cc1Swenshuai.xi /// @ingroup Get_VD_Info
633*53ee8cc1Swenshuai.xi /// @return Vsync frequency
634*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
635*53ee8cc1Swenshuai.xi extern AVD_VideoFreq MDrv_AVD_GetVerticalFreq(void);
636*53ee8cc1Swenshuai.xi 
637*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
638*53ee8cc1Swenshuai.xi /// Get V total
639*53ee8cc1Swenshuai.xi /// @ingroup Get_VD_Info
640*53ee8cc1Swenshuai.xi /// @return U16 Vtotal
641*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
642*53ee8cc1Swenshuai.xi extern MS_U16 MDrv_AVD_GetVTotal(void);
643*53ee8cc1Swenshuai.xi 
644*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
645*53ee8cc1Swenshuai.xi /// Get Noise magnitude
646*53ee8cc1Swenshuai.xi /// @ingroup Get_VD_Info
647*53ee8cc1Swenshuai.xi /// @return U8 Noise
648*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
649*53ee8cc1Swenshuai.xi extern MS_U8 MDrv_AVD_GetNoiseMag(void);
650*53ee8cc1Swenshuai.xi 
651*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
652*53ee8cc1Swenshuai.xi /// Set Input source and MUX
653*53ee8cc1Swenshuai.xi /// @ingroup VD_Task
654*53ee8cc1Swenshuai.xi /// @param  eSource   \b IN: Input source type
655*53ee8cc1Swenshuai.xi /// @param  u8ScartFB   \b IN: Fast blanking setting
656*53ee8cc1Swenshuai.xi /// @return TRUE: succeed
657*53ee8cc1Swenshuai.xi /// @return FALSE: fail
658*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
659*53ee8cc1Swenshuai.xi extern MS_BOOL MDrv_AVD_SetInput(AVD_InputSourceType eSource, MS_U8 u8ScartFB);
660*53ee8cc1Swenshuai.xi 
661*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
662*53ee8cc1Swenshuai.xi /// Set Video standard
663*53ee8cc1Swenshuai.xi /// @ingroup Set_VD_Info
664*53ee8cc1Swenshuai.xi /// @param  eStandard   \b IN: Input video standard type
665*53ee8cc1Swenshuai.xi /// @param  bIsInAutoTuning   \b IN: Auto-tuning flag
666*53ee8cc1Swenshuai.xi /// @return TRUE: succeed
667*53ee8cc1Swenshuai.xi /// @return FALSE: fail
668*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
669*53ee8cc1Swenshuai.xi extern MS_BOOL MDrv_AVD_SetVideoStandard(AVD_VideoStandardType eStandard, MS_BOOL bIsInAutoTuning);
670*53ee8cc1Swenshuai.xi 
671*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
672*53ee8cc1Swenshuai.xi /// Set auto standard detection from force standard
673*53ee8cc1Swenshuai.xi /// @ingroup Set_VD_Info
674*53ee8cc1Swenshuai.xi /// @return NA
675*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
676*53ee8cc1Swenshuai.xi extern void MDrv_AVD_StartAutoStandardDetection(void);
677*53ee8cc1Swenshuai.xi #if 0 // BY 20090403 unused function
678*53ee8cc1Swenshuai.xi extern void MDrv_VD_StopAutoStandardDetection(void);
679*53ee8cc1Swenshuai.xi #endif
680*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
681*53ee8cc1Swenshuai.xi /// Force video standard and disable auto standard detection
682*53ee8cc1Swenshuai.xi /// @ingroup Set_VD_Info
683*53ee8cc1Swenshuai.xi /// @param  eVideoStandardType   \b IN: Force video standard type
684*53ee8cc1Swenshuai.xi /// @return TRUE: succeed
685*53ee8cc1Swenshuai.xi /// @return FALSE: fail
686*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
687*53ee8cc1Swenshuai.xi extern MS_BOOL MDrv_AVD_ForceVideoStandard(AVD_VideoStandardType eVideoStandardType);
688*53ee8cc1Swenshuai.xi #if 0 // BY 20090403 use MDrv_VD_StartAutoStandardDetection, not supported
689*53ee8cc1Swenshuai.xi extern void MDrv_VD_DisableForceMode(void);
690*53ee8cc1Swenshuai.xi #endif
691*53ee8cc1Swenshuai.xi #if 0 // BY 20090403 use MDrv_VD_GetStandardDetection, not supported
692*53ee8cc1Swenshuai.xi extern AVD_VIDEOSTANDARD_TYPE MDrv_VD_GetResultOfAutoStandardDetection(void);
693*53ee8cc1Swenshuai.xi #endif
694*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
695*53ee8cc1Swenshuai.xi /// Get video standard
696*53ee8cc1Swenshuai.xi /// @ingroup Get_VD_Info
697*53ee8cc1Swenshuai.xi /// @param  u16LatchStatus   \b IN: AVD status
698*53ee8cc1Swenshuai.xi /// @return AVD video standard
699*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
700*53ee8cc1Swenshuai.xi extern AVD_VideoStandardType MDrv_AVD_GetStandardDetection(MS_U16 *u16LatchStatus);
701*53ee8cc1Swenshuai.xi #if 0 // BY 20090408 unused function
702*53ee8cc1Swenshuai.xi extern AVD_VIDEOSTANDARD_TYPE MDrv_VD_DetectStandardAutomatically(void);
703*53ee8cc1Swenshuai.xi #endif
704*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
705*53ee8cc1Swenshuai.xi /// Get VD Status
706*53ee8cc1Swenshuai.xi /// @ingroup AVD_ToBeRemove
707*53ee8cc1Swenshuai.xi /// @return U16 parameters : AVD U16 Status
708*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
709*53ee8cc1Swenshuai.xi extern AVD_VideoStandardType MDrv_AVD_GetLastDetectedStandard(void);
710*53ee8cc1Swenshuai.xi #if 0 // BY 20090403 unused function
711*53ee8cc1Swenshuai.xi extern void MDrv_VD_EnableAutoGainControl(MS_BOOL bEnable);
712*53ee8cc1Swenshuai.xi #endif
713*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
714*53ee8cc1Swenshuai.xi /// Set 3D COMB para
715*53ee8cc1Swenshuai.xi /// @ingroup COMB relative
716*53ee8cc1Swenshuai.xi /// @param  bEnable   \b IN: set 3D COMB enable
717*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
718*53ee8cc1Swenshuai.xi extern void MDrv_AVD_Set3dComb(MS_BOOL bEnable);
719*53ee8cc1Swenshuai.xi 
720*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
721*53ee8cc1Swenshuai.xi /// Set 3D COMB speed up settings
722*53ee8cc1Swenshuai.xi /// @ingroup COMB relative
723*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
724*53ee8cc1Swenshuai.xi extern void MDrv_AVD_3DCombSpeedup(void);
725*53ee8cc1Swenshuai.xi 
726*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
727*53ee8cc1Swenshuai.xi /// Get VD Status
728*53ee8cc1Swenshuai.xi /// @ingroup AVD_ToBeRemove
729*53ee8cc1Swenshuai.xi /// @return U16 parameters : AVD U16 Status
730*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
731*53ee8cc1Swenshuai.xi extern void MDrv_AVD_SetFreerunPLL(AVD_VideoFreq eVideoFreq);// 060508 chris
732*53ee8cc1Swenshuai.xi 
733*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
734*53ee8cc1Swenshuai.xi /// Set free run vertical lines
735*53ee8cc1Swenshuai.xi /// @ingroup COMB relative
736*53ee8cc1Swenshuai.xi /// @param  eFreerunfreq   \b IN: input freen run frequency
737*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
738*53ee8cc1Swenshuai.xi extern void MDrv_AVD_SetFreerunFreq(AVD_FreeRunFreq eFreerunfreq);
739*53ee8cc1Swenshuai.xi 
740*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
741*53ee8cc1Swenshuai.xi /// Set register from DSP and monitor register settings
742*53ee8cc1Swenshuai.xi /// @ingroup VD_Task
743*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
744*53ee8cc1Swenshuai.xi extern void MDrv_AVD_SetRegFromDSP(void);
745*53ee8cc1Swenshuai.xi 
746*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
747*53ee8cc1Swenshuai.xi /// Set AVD patch flag
748*53ee8cc1Swenshuai.xi /// @ingroup Set_VD_Info
749*53ee8cc1Swenshuai.xi /// @param  u32VDPatchFlag   \b IN: AVD patch flag
750*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
751*53ee8cc1Swenshuai.xi extern void MDrv_AVD_SetFlag(MS_U32  u32VDPatchFlag);
752*53ee8cc1Swenshuai.xi 
753*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
754*53ee8cc1Swenshuai.xi /// Get AVD patch flag
755*53ee8cc1Swenshuai.xi /// @ingroup Get_VD_Info
756*53ee8cc1Swenshuai.xi /// @return AVD patch flag
757*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
758*53ee8cc1Swenshuai.xi extern MS_U32 MDrv_AVD_GetFlag(void);
759*53ee8cc1Swenshuai.xi 
760*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
761*53ee8cc1Swenshuai.xi /// Set output sampling htotal by user
762*53ee8cc1Swenshuai.xi /// @ingroup Set_VD_Info
763*53ee8cc1Swenshuai.xi /// @param  u16Htt   \b IN: output htotal
764*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
765*53ee8cc1Swenshuai.xi extern void MDrv_AVD_Set_Htt_UserMD(MS_U16 u16Htt);
766*53ee8cc1Swenshuai.xi 
767*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
768*53ee8cc1Swenshuai.xi /// Reset DSP AGC duriing ATV channel change
769*53ee8cc1Swenshuai.xi /// @ingroup Set_VD_Info
770*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
771*53ee8cc1Swenshuai.xi extern void MDrv_AVD_SetChannelChange(void);
772*53ee8cc1Swenshuai.xi 
773*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
774*53ee8cc1Swenshuai.xi /// Set Hsync lock sensitivity for auto-tuning/normal
775*53ee8cc1Swenshuai.xi /// @ingroup Set_VD_Info
776*53ee8cc1Swenshuai.xi /// @param  bEnable   \b IN: auto-tuning:1  normal:0   Hsync sensitivity settings
777*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
778*53ee8cc1Swenshuai.xi extern void MDrv_AVD_SetHsyncDetectionForTuning(MS_BOOL bEnable);
779*53ee8cc1Swenshuai.xi 
780*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
781*53ee8cc1Swenshuai.xi /// Set AVD register
782*53ee8cc1Swenshuai.xi /// @ingroup Set_VD_Info
783*53ee8cc1Swenshuai.xi /// @param  u16Addr   \b IN: register address
784*53ee8cc1Swenshuai.xi /// @param  u8Value   \b IN: register value
785*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
786*53ee8cc1Swenshuai.xi extern void MDrv_AVD_SetRegValue(MS_U16 u16Addr,MS_U8 u8Value);
787*53ee8cc1Swenshuai.xi 
788*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
789*53ee8cc1Swenshuai.xi /// Get AVD register value
790*53ee8cc1Swenshuai.xi /// @ingroup Get_VD_Info
791*53ee8cc1Swenshuai.xi /// @param  u16Addr   \b IN: register address
792*53ee8cc1Swenshuai.xi /// @return register value
793*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
794*53ee8cc1Swenshuai.xi extern MS_U8 MDrv_AVD_GetRegValue(MS_U16 u16Addr);
795*53ee8cc1Swenshuai.xi 
796*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
797*53ee8cc1Swenshuai.xi /// Load VD DSP code
798*53ee8cc1Swenshuai.xi /// @ingroup AVD_ToBeRemove
799*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
800*53ee8cc1Swenshuai.xi extern void MDrv_AVD_LoadDSP(MS_U8 *pu8VD_DSP, MS_U32 len);
801*53ee8cc1Swenshuai.xi 
802*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
803*53ee8cc1Swenshuai.xi /// Set fixed gain enable
804*53ee8cc1Swenshuai.xi /// @ingroup AVD_ToBeRemove
805*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
806*53ee8cc1Swenshuai.xi extern void MDrv_AVD_SetPQFineTune(void);
807*53ee8cc1Swenshuai.xi 
808*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
809*53ee8cc1Swenshuai.xi /// Set 3D COMB speed para
810*53ee8cc1Swenshuai.xi /// @ingroup COMB relative
811*53ee8cc1Swenshuai.xi /// @param  u8COMB57   \b IN: set BK_COMB_57 value
812*53ee8cc1Swenshuai.xi /// @param  u8COMB58   \b IN: set BK_COMB_58 value
813*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
814*53ee8cc1Swenshuai.xi extern void MDrv_AVD_Set3dCombSpeed(MS_U8 u8COMB57, MS_U8 u8COMB58);
815*53ee8cc1Swenshuai.xi 
816*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
817*53ee8cc1Swenshuai.xi /// Get capture window
818*53ee8cc1Swenshuai.xi /// @ingroup AVD_ToBeRemove
819*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
820*53ee8cc1Swenshuai.xi extern void MDrv_AVD_GetCaptureWindow(void *stCapWin, AVD_VideoStandardType eVideoStandardType);
821*53ee8cc1Swenshuai.xi 
822*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
823*53ee8cc1Swenshuai.xi /// Read value from VD mailbox
824*53ee8cc1Swenshuai.xi /// @ingroup AVD_ToBeRemove
825*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
826*53ee8cc1Swenshuai.xi extern MS_U8 MDrv_AVD_MBX_ReadByteByVDMbox(MS_U8 u8Addr);
827*53ee8cc1Swenshuai.xi 
828*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
829*53ee8cc1Swenshuai.xi /// Get Hsync edge
830*53ee8cc1Swenshuai.xi /// @ingroup Get_VD_Info
831*53ee8cc1Swenshuai.xi /// @return Hsync edge
832*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
833*53ee8cc1Swenshuai.xi extern MS_U8 MDrv_AVD_GetHsyncEdge(void);
834*53ee8cc1Swenshuai.xi 
835*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
836*53ee8cc1Swenshuai.xi /// Set 3D COMB stillimage parameters
837*53ee8cc1Swenshuai.xi /// @ingroup COMB relative
838*53ee8cc1Swenshuai.xi /// @param  param   \b IN: Stillimage parameters
839*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
840*53ee8cc1Swenshuai.xi extern void MDrv_AVD_SetStillImageParam(AVD_Still_Image_Param param);
841*53ee8cc1Swenshuai.xi 
842*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
843*53ee8cc1Swenshuai.xi /// Set BK_AFEC_D4 value
844*53ee8cc1Swenshuai.xi /// @ingroup AVD_ToBeRemove
845*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
846*53ee8cc1Swenshuai.xi extern void MDrv_AVD_SetAFECD4Factory(MS_U8 u8Value);
847*53ee8cc1Swenshuai.xi 
848*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
849*53ee8cc1Swenshuai.xi /// Set 2D/3D COMB patch
850*53ee8cc1Swenshuai.xi /// @ingroup AVD_ToBeRemove
851*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
852*53ee8cc1Swenshuai.xi extern void MDrv_AVD_Set2D3DPatchOnOff(MS_BOOL bEnable);
853*53ee8cc1Swenshuai.xi 
854*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
855*53ee8cc1Swenshuai.xi /// Set back porch position
856*53ee8cc1Swenshuai.xi /// @ingroup AVD_ToBeRemove
857*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
858*53ee8cc1Swenshuai.xi extern void MDrv_AVD_BackPorchWindowPositon(MS_BOOL bEnable , MS_U8 u8Value);
859*53ee8cc1Swenshuai.xi 
860*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
861*53ee8cc1Swenshuai.xi /// Set AVD factory parameters
862*53ee8cc1Swenshuai.xi /// @ingroup Set_VD_Info
863*53ee8cc1Swenshuai.xi /// @param  FactoryPara   \b IN: factory parameters/register
864*53ee8cc1Swenshuai.xi /// @param  u8Value   \b IN: setting value
865*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
866*53ee8cc1Swenshuai.xi extern void MDrv_AVD_SetFactoryPara(AVD_Factory_Para FactoryPara,MS_U8 u8Value);
867*53ee8cc1Swenshuai.xi 
868*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
869*53ee8cc1Swenshuai.xi /// Set fixed gain
870*53ee8cc1Swenshuai.xi /// @ingroup AVD_ToBeRemove
871*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
872*53ee8cc1Swenshuai.xi extern MS_U8 MDrv_AVD_SetAutoFineGainToFixed(void);
873*53ee8cc1Swenshuai.xi 
874*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
875*53ee8cc1Swenshuai.xi /// Get DSP fine gain value
876*53ee8cc1Swenshuai.xi /// @ingroup Get_VD_Info
877*53ee8cc1Swenshuai.xi /// @return fine gain
878*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
879*53ee8cc1Swenshuai.xi extern MS_U8 MDrv_AVD_GetDSPFineGain(void);
880*53ee8cc1Swenshuai.xi 
881*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
882*53ee8cc1Swenshuai.xi /// Get DSP version
883*53ee8cc1Swenshuai.xi /// @ingroup Get_VD_Info
884*53ee8cc1Swenshuai.xi /// @return DSP version
885*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
886*53ee8cc1Swenshuai.xi extern MS_U16 MDrv_AVD_GetDSPVersion(void);
887*53ee8cc1Swenshuai.xi 
888*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
889*53ee8cc1Swenshuai.xi /// Shift clock function
890*53ee8cc1Swenshuai.xi /// @ingroup AVD_ToBeRemove
891*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
892*53ee8cc1Swenshuai.xi extern void MDrv_AVD_ShiftClk(AVD_ATV_CLK_TYPE eShiftMode);
893*53ee8cc1Swenshuai.xi 
894*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
895*53ee8cc1Swenshuai.xi /// Set shift clock parameters
896*53ee8cc1Swenshuai.xi /// @ingroup Set_VD_Info
897*53ee8cc1Swenshuai.xi /// @param  bEnable   \b IN: shift clock enable
898*53ee8cc1Swenshuai.xi /// @param  eShiftMode   \b IN: shift clock mode
899*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
900*53ee8cc1Swenshuai.xi extern void MDrv_AVD_SetShiftClk(MS_BOOL bEnable,AVD_ATV_CLK_TYPE eShiftMode);
901*53ee8cc1Swenshuai.xi 
902*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
903*53ee8cc1Swenshuai.xi /// shift clock monitor function
904*53ee8cc1Swenshuai.xi /// @ingroup VD_Task
905*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
906*53ee8cc1Swenshuai.xi extern void MDrv_AVD_ShifClk_Monitor(void);
907*53ee8cc1Swenshuai.xi 
908*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
909*53ee8cc1Swenshuai.xi /// SCART monitor function
910*53ee8cc1Swenshuai.xi /// @ingroup VD_Task
911*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
912*53ee8cc1Swenshuai.xi extern void MDrv_AVD_SCART_Monitor(void);
913*53ee8cc1Swenshuai.xi 
914*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
915*53ee8cc1Swenshuai.xi /// Set AVD STR(resume/suspend) state
916*53ee8cc1Swenshuai.xi /// @ingroup Set_VD_Info
917*53ee8cc1Swenshuai.xi /// @param  u16PowerState   \b IN: STR state
918*53ee8cc1Swenshuai.xi /// @return status
919*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
920*53ee8cc1Swenshuai.xi extern MS_U32 MDrv_AVD_SetPowerState(EN_POWER_MODE u16PowerState);
921*53ee8cc1Swenshuai.xi 
922*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
923*53ee8cc1Swenshuai.xi /// Get MacroVision detection
924*53ee8cc1Swenshuai.xi /// @ingroup Get_VD_Info
925*53ee8cc1Swenshuai.xi /// @return Macro Vision detection status
926*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
927*53ee8cc1Swenshuai.xi extern MS_BOOL MDrv_AVD_GetMacroVisionDetect(void);
928*53ee8cc1Swenshuai.xi 
929*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
930*53ee8cc1Swenshuai.xi /// Get VBI CGMS detection
931*53ee8cc1Swenshuai.xi /// @ingroup Get_VD_Info
932*53ee8cc1Swenshuai.xi /// @return CGMS detection status
933*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
934*53ee8cc1Swenshuai.xi extern MS_BOOL MDrv_AVD_GetCGMSDetect(void);
935*53ee8cc1Swenshuai.xi 
936*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
937*53ee8cc1Swenshuai.xi /// Set Burst Window detection
938*53ee8cc1Swenshuai.xi /// @ingroup Get_VD_Info
939*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
940*53ee8cc1Swenshuai.xi extern void SYMBOL_WEAK MDrv_AVD_SetBurstWinStart(MS_U8 u8BusrtStartPosition);
941*53ee8cc1Swenshuai.xi 
942*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
943*53ee8cc1Swenshuai.xi /// Check VD lock audio carrier
944*53ee8cc1Swenshuai.xi /// @ingroup Get_VD_Info
945*53ee8cc1Swenshuai.xi /// @return TRUE: lock in audio carrier
946*53ee8cc1Swenshuai.xi /// @return FALSE:unlock in audio carrier
947*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
948*53ee8cc1Swenshuai.xi extern MS_BOOL SYMBOL_WEAK MDrv_AVD_IsLockAudioCarrier(void);
949*53ee8cc1Swenshuai.xi 
950*53ee8cc1Swenshuai.xi #ifdef __cplusplus
951*53ee8cc1Swenshuai.xi }
952*53ee8cc1Swenshuai.xi #endif
953*53ee8cc1Swenshuai.xi 
954*53ee8cc1Swenshuai.xi 
955*53ee8cc1Swenshuai.xi #endif // _DRV_AVD_H_
956