xref: /utopia/UTPA2-700.0.x/mxlib/include/drvDMD_ATSC.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   drvDMD_ATSC.h
98*53ee8cc1Swenshuai.xi /// @brief  ATSC Driver Interface
99*53ee8cc1Swenshuai.xi /// @author MStar Semiconductor Inc.
100*53ee8cc1Swenshuai.xi ///////////////////////////////////////////////////////////////////////////////////////////////////
101*53ee8cc1Swenshuai.xi 
102*53ee8cc1Swenshuai.xi #ifndef _DRV_ATSC_H_
103*53ee8cc1Swenshuai.xi #define _DRV_ATSC_H_
104*53ee8cc1Swenshuai.xi 
105*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
106*53ee8cc1Swenshuai.xi //  Driver Compiler Options
107*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
108*53ee8cc1Swenshuai.xi #if !defined UTPA2
109*53ee8cc1Swenshuai.xi #define DMD_ATSC_UTOPIA_EN                  1
110*53ee8cc1Swenshuai.xi #define DMD_ATSC_UTOPIA2_EN                 0
111*53ee8cc1Swenshuai.xi #else
112*53ee8cc1Swenshuai.xi #define DMD_ATSC_UTOPIA_EN                  0
113*53ee8cc1Swenshuai.xi #define DMD_ATSC_UTOPIA2_EN                 1
114*53ee8cc1Swenshuai.xi #endif
115*53ee8cc1Swenshuai.xi 
116*53ee8cc1Swenshuai.xi #define DMD_ATSC_STR_EN                     1
117*53ee8cc1Swenshuai.xi #define DMD_ATSC_MULTI_THREAD_SAFE          0
118*53ee8cc1Swenshuai.xi #define DMD_ATSC_MULTI_DMD_EN               1
119*53ee8cc1Swenshuai.xi 
120*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
121*53ee8cc1Swenshuai.xi //  Include Files
122*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
123*53ee8cc1Swenshuai.xi 
124*53ee8cc1Swenshuai.xi #include "MsTypes.h"
125*53ee8cc1Swenshuai.xi #if DMD_ATSC_UTOPIA_EN || DMD_ATSC_UTOPIA2_EN
126*53ee8cc1Swenshuai.xi #ifndef MSIF_TAG
127*53ee8cc1Swenshuai.xi #include "MsVersion.h"
128*53ee8cc1Swenshuai.xi #endif
129*53ee8cc1Swenshuai.xi #include "MsCommon.h"
130*53ee8cc1Swenshuai.xi #endif
131*53ee8cc1Swenshuai.xi #if DMD_ATSC_UTOPIA2_EN || DMD_ATSC_STR_EN
132*53ee8cc1Swenshuai.xi #include "utopia.h"
133*53ee8cc1Swenshuai.xi #endif
134*53ee8cc1Swenshuai.xi 
135*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
136*53ee8cc1Swenshuai.xi //  Driver Capability
137*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
138*53ee8cc1Swenshuai.xi 
139*53ee8cc1Swenshuai.xi 
140*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
141*53ee8cc1Swenshuai.xi //  Macro and Define
142*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
143*53ee8cc1Swenshuai.xi 
144*53ee8cc1Swenshuai.xi #ifndef DLL_PUBLIC
145*53ee8cc1Swenshuai.xi #define DLL_PUBLIC
146*53ee8cc1Swenshuai.xi #endif
147*53ee8cc1Swenshuai.xi 
148*53ee8cc1Swenshuai.xi #if DMD_ATSC_MULTI_DMD_EN
149*53ee8cc1Swenshuai.xi #define DMD_ATSC_MAX_DEMOD_NUM          2
150*53ee8cc1Swenshuai.xi #else
151*53ee8cc1Swenshuai.xi #define DMD_ATSC_MAX_DEMOD_NUM          1
152*53ee8cc1Swenshuai.xi #endif
153*53ee8cc1Swenshuai.xi 
154*53ee8cc1Swenshuai.xi #if DMD_ATSC_UTOPIA_EN || DMD_ATSC_UTOPIA2_EN
155*53ee8cc1Swenshuai.xi #define MSIF_DMD_ATSC_LIB_CODE          {'D','M','D','_','A','T', 'S','C','_'} //Lib code
156*53ee8cc1Swenshuai.xi #define MSIF_DMD_ATSC_LIBVER            {'0','0'}                              //LIB version
157*53ee8cc1Swenshuai.xi #define MSIF_DMD_ATSC_BUILDNUM          {'0','0' }                             //Build Number
158*53ee8cc1Swenshuai.xi #define MSIF_DMD_ATSC_CHANGELIST        {'0','0','0','0','0','0','0','0'}      //P4 ChangeList Number
159*53ee8cc1Swenshuai.xi 
160*53ee8cc1Swenshuai.xi #define DMD_ATSC_VER                    /* Character String for DRV/API version             */  \
161*53ee8cc1Swenshuai.xi     MSIF_TAG,                           /* 'MSIF'                                           */  \
162*53ee8cc1Swenshuai.xi     MSIF_CLASS,                         /* '00'                                             */  \
163*53ee8cc1Swenshuai.xi     MSIF_CUS,                           /* 0x0000                                           */  \
164*53ee8cc1Swenshuai.xi     MSIF_MOD,                           /* 0x0000                                           */  \
165*53ee8cc1Swenshuai.xi     MSIF_CHIP,                                                                                  \
166*53ee8cc1Swenshuai.xi     MSIF_CPU,                                                                                   \
167*53ee8cc1Swenshuai.xi     MSIF_DMD_ATSC_LIB_CODE,             /* IP__                                             */  \
168*53ee8cc1Swenshuai.xi     MSIF_DMD_ATSC_LIBVER,               /* 0.0 ~ Z.Z                                        */  \
169*53ee8cc1Swenshuai.xi     MSIF_DMD_ATSC_BUILDNUM,             /* 00 ~ 99                                          */  \
170*53ee8cc1Swenshuai.xi     MSIF_DMD_ATSC_CHANGELIST,           /* CL#                                              */  \
171*53ee8cc1Swenshuai.xi     MSIF_OS
172*53ee8cc1Swenshuai.xi #endif // #if DMD_ATSC_UTOPIA_EN || DMD_ATSC_UTOPIA2_EN
173*53ee8cc1Swenshuai.xi 
174*53ee8cc1Swenshuai.xi #ifndef BIT_
175*53ee8cc1Swenshuai.xi #define BIT_(n)                                 (1 << (n))
176*53ee8cc1Swenshuai.xi #endif
177*53ee8cc1Swenshuai.xi 
178*53ee8cc1Swenshuai.xi #define DMD_ATSC_LOCK_VSB_PRE_LOCK              BIT_(0)
179*53ee8cc1Swenshuai.xi #define DMD_ATSC_LOCK_VSB_FSYNC_LOCK            BIT_(1)
180*53ee8cc1Swenshuai.xi #define DMD_ATSC_LOCK_VSB_CE_LOCK               BIT_(2)
181*53ee8cc1Swenshuai.xi #define DMD_ATSC_LOCK_VSB_FEC_LOCK              BIT_(3)
182*53ee8cc1Swenshuai.xi 
183*53ee8cc1Swenshuai.xi #define DMD_ATSC_LOCK_QAM_AGC_LOCK              BIT_(8)
184*53ee8cc1Swenshuai.xi #define DMD_ATSC_LOCK_QAM_PRE_LOCK              BIT_(9)
185*53ee8cc1Swenshuai.xi #define DMD_ATSC_LOCK_QAM_MAIN_LOCK             BIT_(10)
186*53ee8cc1Swenshuai.xi 
187*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
188*53ee8cc1Swenshuai.xi //  Type and Structure
189*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
190*53ee8cc1Swenshuai.xi 
191*53ee8cc1Swenshuai.xi typedef enum
192*53ee8cc1Swenshuai.xi {
193*53ee8cc1Swenshuai.xi     DMD_ATSC_HAL_CMD_Exit = 0,
194*53ee8cc1Swenshuai.xi     DMD_ATSC_HAL_CMD_InitClk,
195*53ee8cc1Swenshuai.xi     DMD_ATSC_HAL_CMD_Download,
196*53ee8cc1Swenshuai.xi     DMD_ATSC_HAL_CMD_FWVERSION,
197*53ee8cc1Swenshuai.xi     DMD_ATSC_HAL_CMD_SoftReset,
198*53ee8cc1Swenshuai.xi     DMD_ATSC_HAL_CMD_SetVsbMode,
199*53ee8cc1Swenshuai.xi     DMD_ATSC_HAL_CMD_Set64QamMode,
200*53ee8cc1Swenshuai.xi     DMD_ATSC_HAL_CMD_Set256QamMode,
201*53ee8cc1Swenshuai.xi     DMD_ATSC_HAL_CMD_SetModeClean,
202*53ee8cc1Swenshuai.xi     DMD_ATSC_HAL_CMD_Set_QAM_SR,
203*53ee8cc1Swenshuai.xi     DMD_ATSC_HAL_CMD_Active,
204*53ee8cc1Swenshuai.xi     DMD_ATSC_HAL_CMD_Check8VSB64_256QAM,
205*53ee8cc1Swenshuai.xi     DMD_ATSC_HAL_CMD_AGCLock,
206*53ee8cc1Swenshuai.xi     DMD_ATSC_HAL_CMD_Vsb_PreLock,
207*53ee8cc1Swenshuai.xi     DMD_ATSC_HAL_CMD_Vsb_FSync_Lock,
208*53ee8cc1Swenshuai.xi     DMD_ATSC_HAL_CMD_Vsb_CE_Lock,
209*53ee8cc1Swenshuai.xi     DMD_ATSC_HAL_CMD_Vsb_FEC_Lock,
210*53ee8cc1Swenshuai.xi     DMD_ATSC_HAL_CMD_QAM_PreLock,
211*53ee8cc1Swenshuai.xi     DMD_ATSC_HAL_CMD_QAM_Main_Lock,
212*53ee8cc1Swenshuai.xi     DMD_ATSC_HAL_CMD_ReadIFAGC,
213*53ee8cc1Swenshuai.xi     DMD_ATSC_HAL_CMD_CheckSignalCondition,
214*53ee8cc1Swenshuai.xi     DMD_ATSC_HAL_CMD_ReadSNRPercentage,
215*53ee8cc1Swenshuai.xi     DMD_ATSC_HAL_CMD_GET_QAM_SNR,
216*53ee8cc1Swenshuai.xi     DMD_ATSC_HAL_CMD_ReadPKTERR,
217*53ee8cc1Swenshuai.xi     DMD_ATSC_HAL_CMD_GetPreViterbiBer,
218*53ee8cc1Swenshuai.xi     DMD_ATSC_HAL_CMD_GetPostViterbiBer,
219*53ee8cc1Swenshuai.xi     DMD_ATSC_HAL_CMD_ReadFrequencyOffset,
220*53ee8cc1Swenshuai.xi     DMD_ATSC_HAL_CMD_TS_INTERFACE_CONFIG,
221*53ee8cc1Swenshuai.xi     DMD_ATSC_HAL_CMD_IIC_Bypass_Mode,
222*53ee8cc1Swenshuai.xi     DMD_ATSC_HAL_CMD_SSPI_TO_GPIO,
223*53ee8cc1Swenshuai.xi     DMD_ATSC_HAL_CMD_GPIO_GET_LEVEL,
224*53ee8cc1Swenshuai.xi     DMD_ATSC_HAL_CMD_GPIO_SET_LEVEL,
225*53ee8cc1Swenshuai.xi     DMD_ATSC_HAL_CMD_GPIO_OUT_ENABLE,
226*53ee8cc1Swenshuai.xi     DMD_ATSC_HAL_CMD_DoIQSwap,
227*53ee8cc1Swenshuai.xi     DMD_ATSC_HAL_CMD_GET_REG,
228*53ee8cc1Swenshuai.xi     DMD_ATSC_HAL_CMD_SET_REG,
229*53ee8cc1Swenshuai.xi     CMD_ATSC_HAL_CMD_GET_QAM_SNR
230*53ee8cc1Swenshuai.xi } DMD_ATSC_HAL_COMMAND;
231*53ee8cc1Swenshuai.xi 
232*53ee8cc1Swenshuai.xi #ifdef UTPA2
233*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED
234*53ee8cc1Swenshuai.xi {
235*53ee8cc1Swenshuai.xi     MS_U8  Mode;
236*53ee8cc1Swenshuai.xi     MS_S16 FF;
237*53ee8cc1Swenshuai.xi     MS_S16 Rate;
238*53ee8cc1Swenshuai.xi } DMD_ATSC_CFO_DATA;
239*53ee8cc1Swenshuai.xi 
240*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED
241*53ee8cc1Swenshuai.xi {
242*53ee8cc1Swenshuai.xi     MS_U32 BitErr;
243*53ee8cc1Swenshuai.xi     MS_U16 Error_window;
244*53ee8cc1Swenshuai.xi     MS_U32 Win_unit;
245*53ee8cc1Swenshuai.xi } DMD_ATSC_BER_DATA;
246*53ee8cc1Swenshuai.xi 
247*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED
248*53ee8cc1Swenshuai.xi {
249*53ee8cc1Swenshuai.xi     MS_U16 noisepower;
250*53ee8cc1Swenshuai.xi     MS_U32 sym_num;
251*53ee8cc1Swenshuai.xi } DMD_ATSC_SNR_DATA;
252*53ee8cc1Swenshuai.xi #endif
253*53ee8cc1Swenshuai.xi 
254*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED
255*53ee8cc1Swenshuai.xi {
256*53ee8cc1Swenshuai.xi     MS_U8 u8Pin;
257*53ee8cc1Swenshuai.xi     union
258*53ee8cc1Swenshuai.xi     {
259*53ee8cc1Swenshuai.xi         MS_BOOL bLevel;
260*53ee8cc1Swenshuai.xi         MS_BOOL bIsOut;
261*53ee8cc1Swenshuai.xi     };
262*53ee8cc1Swenshuai.xi } DMD_ATSC_GPIO_PIN_DATA;
263*53ee8cc1Swenshuai.xi 
264*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED
265*53ee8cc1Swenshuai.xi {
266*53ee8cc1Swenshuai.xi     MS_U16 u16Addr;
267*53ee8cc1Swenshuai.xi     MS_U8  u8Data;
268*53ee8cc1Swenshuai.xi } DMD_ATSC_REG_DATA;
269*53ee8cc1Swenshuai.xi 
270*53ee8cc1Swenshuai.xi typedef enum
271*53ee8cc1Swenshuai.xi {
272*53ee8cc1Swenshuai.xi     DMD_ATSC_DBGLV_NONE,    // disable all the debug message
273*53ee8cc1Swenshuai.xi     DMD_ATSC_DBGLV_INFO,    // information
274*53ee8cc1Swenshuai.xi     DMD_ATSC_DBGLV_NOTICE,  // normal but significant condition
275*53ee8cc1Swenshuai.xi     DMD_ATSC_DBGLV_WARNING, // warning conditions
276*53ee8cc1Swenshuai.xi     DMD_ATSC_DBGLV_ERR,     // error conditions
277*53ee8cc1Swenshuai.xi     DMD_ATSC_DBGLV_CRIT,    // critical conditions
278*53ee8cc1Swenshuai.xi     DMD_ATSC_DBGLV_ALERT,   // action must be taken immediately
279*53ee8cc1Swenshuai.xi     DMD_ATSC_DBGLV_EMERG,   // system is unusable
280*53ee8cc1Swenshuai.xi     DMD_ATSC_DBGLV_DEBUG    // debug-level messages
281*53ee8cc1Swenshuai.xi } DMD_ATSC_DbgLv;
282*53ee8cc1Swenshuai.xi 
283*53ee8cc1Swenshuai.xi typedef enum
284*53ee8cc1Swenshuai.xi {
285*53ee8cc1Swenshuai.xi     DMD_ATSC_DEMOD_ATSC_VSB,
286*53ee8cc1Swenshuai.xi     DMD_ATSC_DEMOD_ATSC_64QAM,
287*53ee8cc1Swenshuai.xi     DMD_ATSC_DEMOD_ATSC_256QAM,
288*53ee8cc1Swenshuai.xi     DMD_ATSC_DEMOD_ATSC_16QAM,
289*53ee8cc1Swenshuai.xi     DMD_ATSC_DEMOD_ATSC_32QAM,
290*53ee8cc1Swenshuai.xi     DMD_ATSC_DEMOD_ATSC_128QAM,
291*53ee8cc1Swenshuai.xi     DMD_ATSC_DEMOD_MAX,
292*53ee8cc1Swenshuai.xi     DMD_ATSC_DEMOD_NULL = DMD_ATSC_DEMOD_MAX
293*53ee8cc1Swenshuai.xi } DMD_ATSC_DEMOD_TYPE;
294*53ee8cc1Swenshuai.xi 
295*53ee8cc1Swenshuai.xi typedef enum
296*53ee8cc1Swenshuai.xi {
297*53ee8cc1Swenshuai.xi     DMD_ATSC_SIGNAL_NO                   = 0,    /* little or no input power detected    */
298*53ee8cc1Swenshuai.xi     DMD_ATSC_SIGNAL_WEAK                 = 1,    /* some power detected.                 */
299*53ee8cc1Swenshuai.xi     DMD_ATSC_SIGNAL_MODERATE             = 2,
300*53ee8cc1Swenshuai.xi     DMD_ATSC_SIGNAL_STRONG               = 4,
301*53ee8cc1Swenshuai.xi     DMD_ATSC_SIGNAL_VERY_STRONG          = 8
302*53ee8cc1Swenshuai.xi } DMD_ATSC_SIGNAL_CONDITION;
303*53ee8cc1Swenshuai.xi 
304*53ee8cc1Swenshuai.xi typedef enum
305*53ee8cc1Swenshuai.xi {
306*53ee8cc1Swenshuai.xi     DMD_ATSC_GETLOCK,
307*53ee8cc1Swenshuai.xi     DMD_ATSC_GETLOCK_VSB_AGCLOCK,
308*53ee8cc1Swenshuai.xi     DMD_ATSC_GETLOCK_VSB_PRELOCK, // pilot lock
309*53ee8cc1Swenshuai.xi     DMD_ATSC_GETLOCK_VSB_FSYNCLOCK,
310*53ee8cc1Swenshuai.xi     DMD_ATSC_GETLOCK_VSB_CELOCK,
311*53ee8cc1Swenshuai.xi     DMD_ATSC_GETLOCK_VSB_FECLOCK,
312*53ee8cc1Swenshuai.xi     DMD_ATSC_GETLOCK_QAM_AGCLOCK,
313*53ee8cc1Swenshuai.xi     DMD_ATSC_GETLOCK_QAM_PRELOCK, // TR lock
314*53ee8cc1Swenshuai.xi     DMD_ATSC_GETLOCK_QAM_MAINLOCK
315*53ee8cc1Swenshuai.xi } DMD_ATSC_GETLOCK_TYPE;
316*53ee8cc1Swenshuai.xi 
317*53ee8cc1Swenshuai.xi typedef enum
318*53ee8cc1Swenshuai.xi {
319*53ee8cc1Swenshuai.xi     DMD_ATSC_LOCK,
320*53ee8cc1Swenshuai.xi     DMD_ATSC_CHECKING,
321*53ee8cc1Swenshuai.xi     DMD_ATSC_CHECKEND,
322*53ee8cc1Swenshuai.xi     DMD_ATSC_UNLOCK,
323*53ee8cc1Swenshuai.xi     DMD_ATSC_NULL
324*53ee8cc1Swenshuai.xi } DMD_ATSC_LOCK_STATUS;
325*53ee8cc1Swenshuai.xi 
326*53ee8cc1Swenshuai.xi typedef enum
327*53ee8cc1Swenshuai.xi {
328*53ee8cc1Swenshuai.xi     I_PAD,
329*53ee8cc1Swenshuai.xi     Q_PAD,
330*53ee8cc1Swenshuai.xi } DMD_ATSC_SEL_IQPAD;
331*53ee8cc1Swenshuai.xi 
332*53ee8cc1Swenshuai.xi typedef enum
333*53ee8cc1Swenshuai.xi {
334*53ee8cc1Swenshuai.xi     QAM_64,
335*53ee8cc1Swenshuai.xi     QAM_256,
336*53ee8cc1Swenshuai.xi } DMD_ATSC_QAM_TYPE;
337*53ee8cc1Swenshuai.xi 
338*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED
339*53ee8cc1Swenshuai.xi {
340*53ee8cc1Swenshuai.xi     MS_U8   QAM_type;
341*53ee8cc1Swenshuai.xi     MS_U16  symbol_rate;
342*53ee8cc1Swenshuai.xi }DMD_J83B_Info;
343*53ee8cc1Swenshuai.xi 
344*53ee8cc1Swenshuai.xi typedef enum _eDMD_SEL
345*53ee8cc1Swenshuai.xi {
346*53ee8cc1Swenshuai.xi     DMD0 = 0,
347*53ee8cc1Swenshuai.xi     DMD1,
348*53ee8cc1Swenshuai.xi     HK,
349*53ee8cc1Swenshuai.xi }eDMD_SEL;
350*53ee8cc1Swenshuai.xi 
351*53ee8cc1Swenshuai.xi /// For demod init
352*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED
353*53ee8cc1Swenshuai.xi {
354*53ee8cc1Swenshuai.xi     // Timeout time
355*53ee8cc1Swenshuai.xi     MS_U16 u16VSBAGCLockCheckTime;//50
356*53ee8cc1Swenshuai.xi     MS_U16 u16VSBPreLockCheckTime;//300
357*53ee8cc1Swenshuai.xi     MS_U16 u16VSBFSyncLockCheckTime;//1200
358*53ee8cc1Swenshuai.xi     MS_U16 u16VSBFECLockCheckTime;//5000
359*53ee8cc1Swenshuai.xi 
360*53ee8cc1Swenshuai.xi     MS_U16 u16QAMAGCLockCheckTime;//50
361*53ee8cc1Swenshuai.xi     MS_U16 u16QAMPreLockCheckTime;//1000
362*53ee8cc1Swenshuai.xi     MS_U16 u16QAMMainLockCheckTime;//3000
363*53ee8cc1Swenshuai.xi 
364*53ee8cc1Swenshuai.xi     // register init
365*53ee8cc1Swenshuai.xi     MS_U8 *u8DMD_ATSC_DSPRegInitExt; // TODO use system variable type
366*53ee8cc1Swenshuai.xi     MS_U8 u8DMD_ATSC_DSPRegInitSize;
367*53ee8cc1Swenshuai.xi     MS_U8 *u8DMD_ATSC_InitExt; // TODO use system variable type
368*53ee8cc1Swenshuai.xi 
369*53ee8cc1Swenshuai.xi     //By Tuners:
370*53ee8cc1Swenshuai.xi     MS_U16  u16IF_KHZ;//By Tuners
371*53ee8cc1Swenshuai.xi     MS_BOOL bIQSwap;//0
372*53ee8cc1Swenshuai.xi     MS_U16  u16AGC_REFERENCE;//0
373*53ee8cc1Swenshuai.xi     MS_BOOL bTunerGainInvert;//0
374*53ee8cc1Swenshuai.xi     MS_BOOL bIsQPad;//0 //Don't beed used anymore
375*53ee8cc1Swenshuai.xi 
376*53ee8cc1Swenshuai.xi     //By IC:
377*53ee8cc1Swenshuai.xi     MS_U8   u8IS_DUAL;//0
378*53ee8cc1Swenshuai.xi     MS_BOOL bIsExtDemod;//0
379*53ee8cc1Swenshuai.xi 
380*53ee8cc1Swenshuai.xi     //By TS (Only for MCP or ext demod):
381*53ee8cc1Swenshuai.xi     MS_U8 u1TsConfigByte_SerialMode : 1;
382*53ee8cc1Swenshuai.xi     MS_U8 u1TsConfigByte_DataSwap   : 1;
383*53ee8cc1Swenshuai.xi     MS_U8 u1TsConfigByte_ClockInv   : 1;
384*53ee8cc1Swenshuai.xi     MS_U8 u5TsConfigByte_DivNum     : 5;
385*53ee8cc1Swenshuai.xi 
386*53ee8cc1Swenshuai.xi     //By SYS I2C (Only for MCP or ext demod):
387*53ee8cc1Swenshuai.xi     MS_U8 u8I2CSlaveAddr;
388*53ee8cc1Swenshuai.xi     MS_U8 u8I2CSlaveBus;
389*53ee8cc1Swenshuai.xi     MS_BOOL (*I2C_WriteBytes)(MS_U16 u16BusNumSlaveID, MS_U8 u8addrcount, MS_U8* pu8addr, MS_U16 u16size, MS_U8* pu8data);
390*53ee8cc1Swenshuai.xi     MS_BOOL (*I2C_ReadBytes)(MS_U16 u16BusNumSlaveID, MS_U8 u8AddrNum, MS_U8* paddr, MS_U16 u16size, MS_U8* pu8data);
391*53ee8cc1Swenshuai.xi 
392*53ee8cc1Swenshuai.xi     //By SYS MSPI (Only for MCP or ext demod):
393*53ee8cc1Swenshuai.xi     MS_BOOL bIsUseSspiLoadCode;
394*53ee8cc1Swenshuai.xi     MS_BOOL bIsSspiUseTsPin;
395*53ee8cc1Swenshuai.xi 
396*53ee8cc1Swenshuai.xi     #if !DMD_ATSC_UTOPIA_EN && !DMD_ATSC_UTOPIA2_EN
397*53ee8cc1Swenshuai.xi     MS_U32  (*GetSystemTimeMS)(void);       // Get sys time (unit: ms)
398*53ee8cc1Swenshuai.xi     void    (*DelayMS)(MS_U32 ms);          // Delay time (unit: ms)
399*53ee8cc1Swenshuai.xi     MS_BOOL (*CreateMutex)(MS_BOOL enable); // Create&Delete mutex
400*53ee8cc1Swenshuai.xi     void    (*LockDMD)(MS_BOOL enable);     // Enter&Leave mutex
401*53ee8cc1Swenshuai.xi     #endif
402*53ee8cc1Swenshuai.xi } DMD_ATSC_InitData;
403*53ee8cc1Swenshuai.xi 
404*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED
405*53ee8cc1Swenshuai.xi {
406*53ee8cc1Swenshuai.xi     MS_VIRT virtDMDBaseAddr;
407*53ee8cc1Swenshuai.xi 
408*53ee8cc1Swenshuai.xi     MS_BOOL bInit;
409*53ee8cc1Swenshuai.xi     MS_BOOL bDownloaded;
410*53ee8cc1Swenshuai.xi 
411*53ee8cc1Swenshuai.xi     #if DMD_ATSC_STR_EN
412*53ee8cc1Swenshuai.xi     MS_BOOL             bIsDTV;
413*53ee8cc1Swenshuai.xi     EN_POWER_MODE       eLastState;
414*53ee8cc1Swenshuai.xi     #endif
415*53ee8cc1Swenshuai.xi     DMD_ATSC_DEMOD_TYPE eLastType;
416*53ee8cc1Swenshuai.xi     MS_U16              u16SymRate;
417*53ee8cc1Swenshuai.xi 
418*53ee8cc1Swenshuai.xi     MS_BOOL bIsQPad;
419*53ee8cc1Swenshuai.xi 
420*53ee8cc1Swenshuai.xi     MS_BOOL (*HAL_DMD_ATSC_IOCTL_CMD)(DMD_ATSC_HAL_COMMAND eCmd, void *pPara);
421*53ee8cc1Swenshuai.xi } DMD_ATSC_PriData;
422*53ee8cc1Swenshuai.xi 
423*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED
424*53ee8cc1Swenshuai.xi {
425*53ee8cc1Swenshuai.xi     MS_U8  u8Version;
426*53ee8cc1Swenshuai.xi     MS_U32 u32ATSCScanTimeStart;
427*53ee8cc1Swenshuai.xi     MS_U32 u32ATSCFECLockTime;
428*53ee8cc1Swenshuai.xi     MS_U32 u32ATSCLockStatus;
429*53ee8cc1Swenshuai.xi } DMD_ATSC_Info;
430*53ee8cc1Swenshuai.xi 
431*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED
432*53ee8cc1Swenshuai.xi {
433*53ee8cc1Swenshuai.xi     DMD_ATSC_InitData  sDMD_ATSC_InitData;
434*53ee8cc1Swenshuai.xi     DMD_ATSC_PriData   sDMD_ATSC_PriData;
435*53ee8cc1Swenshuai.xi     DMD_ATSC_Info      sDMD_ATSC_Info;
436*53ee8cc1Swenshuai.xi } DMD_ATSC_ResData;
437*53ee8cc1Swenshuai.xi 
438*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
439*53ee8cc1Swenshuai.xi //  Function and Variable
440*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
441*53ee8cc1Swenshuai.xi 
442*53ee8cc1Swenshuai.xi #ifdef __cplusplus
443*53ee8cc1Swenshuai.xi extern "C"
444*53ee8cc1Swenshuai.xi {
445*53ee8cc1Swenshuai.xi #endif
446*53ee8cc1Swenshuai.xi 
447*53ee8cc1Swenshuai.xi #ifndef MSOS_TYPE_LINUX_KERNEL
448*53ee8cc1Swenshuai.xi 
449*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
450*53ee8cc1Swenshuai.xi /// Set detailed level of ATSC driver debug message
451*53ee8cc1Swenshuai.xi /// u8DbgLevel : debug level for Parallel Flash driver\n
452*53ee8cc1Swenshuai.xi /// AVD_DBGLV_NONE,    ///< disable all the debug message\n
453*53ee8cc1Swenshuai.xi /// AVD_DBGLV_INFO,    ///< information\n
454*53ee8cc1Swenshuai.xi /// AVD_DBGLV_NOTICE,  ///< normal but significant condition\n
455*53ee8cc1Swenshuai.xi /// AVD_DBGLV_WARNING, ///< warning conditions\n
456*53ee8cc1Swenshuai.xi /// AVD_DBGLV_ERR,     ///< error conditions\n
457*53ee8cc1Swenshuai.xi /// AVD_DBGLV_CRIT,    ///< critical conditions\n
458*53ee8cc1Swenshuai.xi /// AVD_DBGLV_ALERT,   ///< action must be taken immediately\n
459*53ee8cc1Swenshuai.xi /// AVD_DBGLV_EMERG,   ///< system is unusable\n
460*53ee8cc1Swenshuai.xi /// AVD_DBGLV_DEBUG,   ///< debug-level messages\n
461*53ee8cc1Swenshuai.xi /// @return TRUE : succeed
462*53ee8cc1Swenshuai.xi /// @return FALSE : failed to set the debug level
463*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
464*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_SetDbgLevel(DMD_ATSC_DbgLv u8DbgLevel);
465*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
466*53ee8cc1Swenshuai.xi /// Get the information of ATSC driver\n
467*53ee8cc1Swenshuai.xi /// @return the pointer to the driver information
468*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
469*53ee8cc1Swenshuai.xi DLL_PUBLIC extern DMD_ATSC_Info* MDrv_DMD_ATSC_GetInfo(void);
470*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
471*53ee8cc1Swenshuai.xi /// Get ATSC driver version
472*53ee8cc1Swenshuai.xi /// when get ok, return the pointer to the driver version
473*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
474*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_GetLibVer(const MSIF_Version **ppVersion);
475*53ee8cc1Swenshuai.xi 
476*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
477*53ee8cc1Swenshuai.xi /// Should be called once when power on init (no use)
478*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
479*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_Initial_Hal_Interface(void);
480*53ee8cc1Swenshuai.xi 
481*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
482*53ee8cc1Swenshuai.xi ///                            SINGLE DEMOD API                              ///
483*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
484*53ee8cc1Swenshuai.xi 
485*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
486*53ee8cc1Swenshuai.xi /// Should be called every time when enter DTV input source
487*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
488*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_Init(DMD_ATSC_InitData *pDMD_ATSC_InitData, MS_U32 u32InitDataLen);
489*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
490*53ee8cc1Swenshuai.xi /// Should be called every time when exit DTV input source
491*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
492*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_Exit(void);
493*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
494*53ee8cc1Swenshuai.xi /// Get Initial Data
495*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
496*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_U32 MDrv_DMD_ATSC_GetConfig(DMD_ATSC_InitData *psDMD_ATSC_InitData);
497*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
498*53ee8cc1Swenshuai.xi /// Set demod mode and enable demod
499*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
500*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_SetConfig(DMD_ATSC_DEMOD_TYPE eType, MS_BOOL bEnable);
501*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
502*53ee8cc1Swenshuai.xi /// Reset FW state machine (no use)
503*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
504*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_SetReset(void);
505*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
506*53ee8cc1Swenshuai.xi /// Set demod mode and enable demod (only for J83B)
507*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
508*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_Set_QAM_SR(DMD_ATSC_DEMOD_TYPE eType, MS_U16 symbol_rate);
509*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
510*53ee8cc1Swenshuai.xi /// Active demod (not use)
511*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
512*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_SetActive(MS_BOOL bEnable);
513*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
514*53ee8cc1Swenshuai.xi /// Set demod power state for STR
515*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
516*53ee8cc1Swenshuai.xi #if DMD_ATSC_STR_EN
517*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_U32 MDrv_DMD_ATSC_SetPowerState(EN_POWER_MODE u16PowerState);
518*53ee8cc1Swenshuai.xi #endif
519*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
520*53ee8cc1Swenshuai.xi /// Get demod lock status
521*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
522*53ee8cc1Swenshuai.xi DLL_PUBLIC extern DMD_ATSC_LOCK_STATUS MDrv_DMD_ATSC_GetLock(DMD_ATSC_GETLOCK_TYPE eType);
523*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
524*53ee8cc1Swenshuai.xi /// Get demod modulation mode
525*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
526*53ee8cc1Swenshuai.xi DLL_PUBLIC extern DMD_ATSC_DEMOD_TYPE MDrv_DMD_ATSC_GetModulationMode(void);
527*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
528*53ee8cc1Swenshuai.xi /// Get demod signal strength (IF AGC gain)
529*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
530*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_GetSignalStrength(MS_U16 *u16Strength);
531*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
532*53ee8cc1Swenshuai.xi /// Get demod signal quality (NO SIGNAL, WEAK, MODERATE, STRONG and VERY_STRONG)
533*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
534*53ee8cc1Swenshuai.xi DLL_PUBLIC extern DMD_ATSC_SIGNAL_CONDITION MDrv_DMD_ATSC_GetSignalQuality(void);
535*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
536*53ee8cc1Swenshuai.xi /// Get demod SNR percentage (MAX SNR 40dB)
537*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
538*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_U8 MDrv_DMD_ATSC_GetSNRPercentage(void);
539*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
540*53ee8cc1Swenshuai.xi /// Get demod SNR (only for J.83ABC)
541*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
542*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_GET_QAM_SNR(float *f_snr);
543*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
544*53ee8cc1Swenshuai.xi /// Get demod packet error number
545*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
546*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_Read_uCPKT_ERR(MS_U16 *u16PacketErr);
547*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
548*53ee8cc1Swenshuai.xi /// Get demod pre Viterbi BER
549*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
550*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_GetPreViterbiBer(float *ber);
551*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
552*53ee8cc1Swenshuai.xi /// Get demod post Viterbi BER
553*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
554*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_GetPostViterbiBer(float *ber);
555*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
556*53ee8cc1Swenshuai.xi /// Get demod frequency offset
557*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
558*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_ReadFrequencyOffset(MS_S16 *cfo);
559*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
560*53ee8cc1Swenshuai.xi /// Set TS output mode (only for external demod)
561*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
562*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_SetSerialControl(MS_U8 u8TsConfigData);
563*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
564*53ee8cc1Swenshuai.xi /// Enable I2C bypass mode (only for external demod)
565*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
566*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_IIC_BYPASS_MODE(MS_BOOL bEnable);
567*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
568*53ee8cc1Swenshuai.xi /// Switch pin to SSPI or GPIO (only for external demod)
569*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
570*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_SWITCH_SSPI_GPIO(MS_BOOL bEnable);
571*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
572*53ee8cc1Swenshuai.xi /// Get GPIO pin high or low (only for external demod)
573*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
574*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_GPIO_GET_LEVEL(MS_U8 u8Pin, MS_BOOL *bLevel);
575*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
576*53ee8cc1Swenshuai.xi /// Set GPIO pin high or low (only for external demod)
577*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
578*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_GPIO_SET_LEVEL(MS_U8 u8Pin, MS_BOOL bLevel);
579*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
580*53ee8cc1Swenshuai.xi /// Set GPIO pin output or input (only for external demod)
581*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
582*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_GPIO_OUT_ENABLE(MS_U8 u8Pin, MS_BOOL bEnableOut);
583*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
584*53ee8cc1Swenshuai.xi /// Swap ADC input (usually for external demod)
585*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
586*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_DoIQSwap(MS_BOOL bIsQPad);
587*53ee8cc1Swenshuai.xi 
588*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
589*53ee8cc1Swenshuai.xi /// To get ATSC's register  value, only for special purpose.\n
590*53ee8cc1Swenshuai.xi /// u16Addr       : the address of ATSC's register\n
591*53ee8cc1Swenshuai.xi /// pu8Data       : the value to be gotten\n
592*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
593*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_GetReg(MS_U16 u16Addr, MS_U8 *pu8Data);
594*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
595*53ee8cc1Swenshuai.xi /// To set ATSC's register value, only for special purpose.\n
596*53ee8cc1Swenshuai.xi /// u16Addr       : the address of ATSC's register\n
597*53ee8cc1Swenshuai.xi /// u8Value       : the value to be set\n
598*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
599*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_SetReg(MS_U16 u16Addr, MS_U8 u8Data);
600*53ee8cc1Swenshuai.xi 
601*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
602*53ee8cc1Swenshuai.xi ///                      BACKWARD COMPATIBLE API                             ///
603*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
604*53ee8cc1Swenshuai.xi 
605*53ee8cc1Swenshuai.xi #ifndef UTPA2
606*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
607*53ee8cc1Swenshuai.xi /// SEL DEMOD (no use)
608*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
609*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_SEL_DMD(eDMD_SEL eDMD_NUM);
610*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
611*53ee8cc1Swenshuai.xi /// Load FW (no use)
612*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
613*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_LoadFW(eDMD_SEL DMD_NUM);
614*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
615*53ee8cc1Swenshuai.xi /// Set VSB mode (no use)
616*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
617*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_SetVsbMode(void);
618*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
619*53ee8cc1Swenshuai.xi /// Set 256QAM mode (no use)
620*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
621*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_Set256QamMode(void);
622*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
623*53ee8cc1Swenshuai.xi /// Set 64QAM mode (no use)
624*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
625*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_Set64QamMode(void);
626*53ee8cc1Swenshuai.xi #endif
627*53ee8cc1Swenshuai.xi 
628*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
629*53ee8cc1Swenshuai.xi ///                            MULTI DEMOD API                               ///
630*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
631*53ee8cc1Swenshuai.xi 
632*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
633*53ee8cc1Swenshuai.xi /// Should be called every time when enter DTV input source
634*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
635*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_MD_Init(MS_U8 id, DMD_ATSC_InitData *pDMD_ATSC_InitData, MS_U32 u32InitDataLen);
636*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
637*53ee8cc1Swenshuai.xi /// Should be called every time when exit DTV input source
638*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
639*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_MD_Exit(MS_U8 id);
640*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
641*53ee8cc1Swenshuai.xi /// Get Initial Data
642*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
643*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_U32 MDrv_DMD_ATSC_MD_GetConfig(MS_U8 id, DMD_ATSC_InitData *psDMD_ATSC_InitData);
644*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
645*53ee8cc1Swenshuai.xi /// Set demod mode and enable demod
646*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
647*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_MD_SetConfig(MS_U8 id, DMD_ATSC_DEMOD_TYPE eType, MS_BOOL bEnable);
648*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
649*53ee8cc1Swenshuai.xi /// Reset FW state machine (no use)
650*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
651*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_MD_SetReset(MS_U8 id);
652*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
653*53ee8cc1Swenshuai.xi /// Set demod mode and enable demod (only for J83B)
654*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
655*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_MD_Set_QAM_SR(MS_U8 id, DMD_ATSC_DEMOD_TYPE eType, MS_U16 symbol_rate);
656*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
657*53ee8cc1Swenshuai.xi /// Active demod (not use)
658*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
659*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_MD_SetActive(MS_U8 id, MS_BOOL bEnable);
660*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
661*53ee8cc1Swenshuai.xi /// Set demod power state for STR
662*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
663*53ee8cc1Swenshuai.xi #if DMD_ATSC_STR_EN
664*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_U32 MDrv_DMD_ATSC_MD_SetPowerState(MS_U8 id, EN_POWER_MODE u16PowerState);
665*53ee8cc1Swenshuai.xi #endif
666*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
667*53ee8cc1Swenshuai.xi /// Get demod lock status
668*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
669*53ee8cc1Swenshuai.xi DLL_PUBLIC extern DMD_ATSC_LOCK_STATUS MDrv_DMD_ATSC_MD_GetLock(MS_U8 id, DMD_ATSC_GETLOCK_TYPE eType);
670*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
671*53ee8cc1Swenshuai.xi /// Get demod modulation mode
672*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
673*53ee8cc1Swenshuai.xi DLL_PUBLIC extern DMD_ATSC_DEMOD_TYPE MDrv_DMD_ATSC_MD_GetModulationMode(MS_U8 id);
674*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
675*53ee8cc1Swenshuai.xi /// Get demod signal strength (IF AGC gain)
676*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
677*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_MD_GetSignalStrength(MS_U8 id, MS_U16 *u16Strength);
678*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
679*53ee8cc1Swenshuai.xi /// Get demod signal quality (NO SIGNAL, WEAK, MODERATE, STRONG and VERY_STRONG)
680*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
681*53ee8cc1Swenshuai.xi DLL_PUBLIC extern DMD_ATSC_SIGNAL_CONDITION MDrv_DMD_ATSC_MD_GetSignalQuality(MS_U8 id);
682*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
683*53ee8cc1Swenshuai.xi /// Get demod SNR percentage (MAX SNR 40dB)
684*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
685*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_U8 MDrv_DMD_ATSC_MD_GetSNRPercentage(MS_U8 id);
686*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
687*53ee8cc1Swenshuai.xi /// Get demod SNR (only for J.83ABC)
688*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
689*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_MD_GET_QAM_SNR(MS_U8 id, float *f_snr);
690*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
691*53ee8cc1Swenshuai.xi /// Get demod packet error number
692*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
693*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_MD_Read_uCPKT_ERR(MS_U8 id, MS_U16 *u16PacketErr);
694*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
695*53ee8cc1Swenshuai.xi /// Get demod pre Viterbi BER
696*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
697*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_MD_GetPreViterbiBer(MS_U8 id, float *ber);
698*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
699*53ee8cc1Swenshuai.xi /// Get demod post Viterbi BER
700*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
701*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_MD_GetPostViterbiBer(MS_U8 id, float *ber);
702*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
703*53ee8cc1Swenshuai.xi /// Get demod frequency offset
704*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
705*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_MD_ReadFrequencyOffset(MS_U8 id, MS_S16 *cfo);
706*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
707*53ee8cc1Swenshuai.xi /// Set TS output mode (only for external demod)
708*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
709*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_MD_SetSerialControl(MS_U8 id, MS_U8 u8TsConfigData);
710*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
711*53ee8cc1Swenshuai.xi /// Enable I2C bypass mode (only for external demod)
712*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
713*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_MD_IIC_BYPASS_MODE(MS_U8 id, MS_BOOL bEnable);
714*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
715*53ee8cc1Swenshuai.xi /// Switch pin to SSPI or GPIO (only for external demod)
716*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
717*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_MD_SWITCH_SSPI_GPIO(MS_U8 id, MS_BOOL bEnable);
718*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
719*53ee8cc1Swenshuai.xi /// Get GPIO pin high or low (only for external demod)
720*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
721*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_MD_GPIO_GET_LEVEL(MS_U8 id, MS_U8 u8Pin, MS_BOOL *bLevel);
722*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
723*53ee8cc1Swenshuai.xi /// Set GPIO pin high or low (only for external demod)
724*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
725*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_MD_GPIO_SET_LEVEL(MS_U8 id, MS_U8 u8Pin, MS_BOOL bLevel);
726*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
727*53ee8cc1Swenshuai.xi /// Set GPIO pin output or input (only for external demod)
728*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
729*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_MD_GPIO_OUT_ENABLE(MS_U8 id, MS_U8 u8Pin, MS_BOOL bEnableOut);
730*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
731*53ee8cc1Swenshuai.xi /// Swap ADC input (usually for external demod)
732*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
733*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_MD_DoIQSwap(MS_U8 id, MS_BOOL bIsQPad);
734*53ee8cc1Swenshuai.xi 
735*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
736*53ee8cc1Swenshuai.xi /// To get ATSC's register  value, only for special purpose.\n
737*53ee8cc1Swenshuai.xi /// u16Addr       : the address of ATSC's register\n
738*53ee8cc1Swenshuai.xi /// pu8Data       : the value to be gotten\n
739*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
740*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_MD_GetReg(MS_U8 id, MS_U16 u16Addr, MS_U8 *pu8Data);
741*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
742*53ee8cc1Swenshuai.xi /// To set ATSC's register value, only for special purpose.\n
743*53ee8cc1Swenshuai.xi /// u16Addr       : the address of ATSC's register\n
744*53ee8cc1Swenshuai.xi /// u8Value       : the value to be set\n
745*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
746*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_MD_SetReg(MS_U8 id, MS_U16 u16Addr, MS_U8 u8Data);
747*53ee8cc1Swenshuai.xi 
748*53ee8cc1Swenshuai.xi #endif // #ifndef MSOS_TYPE_LINUX_KERNEL
749*53ee8cc1Swenshuai.xi 
750*53ee8cc1Swenshuai.xi #ifdef UTPA2
751*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL _MDrv_DMD_ATSC_SetDbgLevel(DMD_ATSC_DbgLv u8DbgLevel);
752*53ee8cc1Swenshuai.xi DLL_PUBLIC extern DMD_ATSC_Info* _MDrv_DMD_ATSC_GetInfo(void);
753*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL _MDrv_DMD_ATSC_GetLibVer(const MSIF_Version **ppVersion);
754*53ee8cc1Swenshuai.xi 
755*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL _MDrv_DMD_ATSC_MD_Init(MS_U8 id, DMD_ATSC_InitData *pDMD_ATSC_InitData, MS_U32 u32InitDataLen);
756*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL _MDrv_DMD_ATSC_MD_Exit(MS_U8 id);
757*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_U32 _MDrv_DMD_ATSC_MD_GetConfig(MS_U8 id, DMD_ATSC_InitData *psDMD_ATSC_InitData);
758*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL _MDrv_DMD_ATSC_MD_SetConfig(MS_U8 id, DMD_ATSC_DEMOD_TYPE eType, MS_BOOL bEnable);
759*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL _MDrv_DMD_ATSC_MD_SetReset(MS_U8 id);
760*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL _MDrv_DMD_ATSC_MD_Set_QAM_SR(MS_U8 id, DMD_ATSC_DEMOD_TYPE eType, MS_U16 symbol_rate);
761*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL _MDrv_DMD_ATSC_MD_SetActive(MS_U8 id, MS_BOOL bEnable);
762*53ee8cc1Swenshuai.xi #if DMD_ATSC_STR_EN
763*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_U32 _MDrv_DMD_ATSC_MD_SetPowerState(MS_U8 id, EN_POWER_MODE u16PowerState);
764*53ee8cc1Swenshuai.xi #endif
765*53ee8cc1Swenshuai.xi DLL_PUBLIC extern DMD_ATSC_LOCK_STATUS _MDrv_DMD_ATSC_MD_GetLock(MS_U8 id, DMD_ATSC_GETLOCK_TYPE eType);
766*53ee8cc1Swenshuai.xi DLL_PUBLIC extern DMD_ATSC_DEMOD_TYPE _MDrv_DMD_ATSC_MD_GetModulationMode(MS_U8 id);
767*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL _MDrv_DMD_ATSC_MD_GetSignalStrength(MS_U8 id, MS_U16 *u16Strength);
768*53ee8cc1Swenshuai.xi DLL_PUBLIC extern DMD_ATSC_SIGNAL_CONDITION _MDrv_DMD_ATSC_MD_GetSignalQuality(MS_U8 id);
769*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_U8 _MDrv_DMD_ATSC_MD_GetSNRPercentage(MS_U8 id);
770*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL _MDrv_DMD_ATSC_MD_GET_QAM_SNR(MS_U8 id, DMD_ATSC_SNR_DATA *f_snr);
771*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL _MDrv_DMD_ATSC_MD_Read_uCPKT_ERR(MS_U8 id, MS_U16 *u16PacketErr);
772*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL _MDrv_DMD_ATSC_MD_GetPreViterbiBer(MS_U8 id, DMD_ATSC_BER_DATA *ber);
773*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL _MDrv_DMD_ATSC_MD_GetPostViterbiBer(MS_U8 id, DMD_ATSC_BER_DATA *ber);
774*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL _MDrv_DMD_ATSC_MD_ReadFrequencyOffset(MS_U8 id, DMD_ATSC_CFO_DATA *cfo);
775*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL _MDrv_DMD_ATSC_MD_SetSerialControl(MS_U8 id, MS_U8 u8TsConfigData);
776*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL _MDrv_DMD_ATSC_MD_IIC_BYPASS_MODE(MS_U8 id, MS_BOOL bEnable);
777*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL _MDrv_DMD_ATSC_MD_SWITCH_SSPI_GPIO(MS_U8 id, MS_BOOL bEnable);
778*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL _MDrv_DMD_ATSC_MD_GPIO_GET_LEVEL(MS_U8 id, MS_U8 u8Pin, MS_BOOL *bLevel);
779*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL _MDrv_DMD_ATSC_MD_GPIO_SET_LEVEL(MS_U8 id, MS_U8 u8Pin, MS_BOOL bLevel);
780*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL _MDrv_DMD_ATSC_MD_GPIO_OUT_ENABLE(MS_U8 id, MS_U8 u8Pin, MS_BOOL bEnableOut);
781*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL _MDrv_DMD_ATSC_MD_DoIQSwap(MS_U8 id, MS_BOOL bIsQPad);
782*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL _MDrv_DMD_ATSC_MD_GetReg(MS_U8 id, MS_U16 u16Addr, MS_U8 *pu8Data);
783*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL _MDrv_DMD_ATSC_MD_SetReg(MS_U8 id, MS_U16 u16Addr, MS_U8 u8Data);
784*53ee8cc1Swenshuai.xi #endif // #ifdef UTPA2
785*53ee8cc1Swenshuai.xi 
786*53ee8cc1Swenshuai.xi #ifdef __cplusplus
787*53ee8cc1Swenshuai.xi }
788*53ee8cc1Swenshuai.xi #endif
789*53ee8cc1Swenshuai.xi 
790*53ee8cc1Swenshuai.xi #endif // _DRV_ATSC_H_
791