xref: /utopia/UTPA2-700.0.x/projects/tmplib/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 /*! \defgroup Demod Demod interface
103*53ee8cc1Swenshuai.xi 
104*53ee8cc1Swenshuai.xi  *! \defgroup ATSC ATSC interface (drvDMD_ATSC.h)
105*53ee8cc1Swenshuai.xi  *  \ingroup Demod
106*53ee8cc1Swenshuai.xi 
107*53ee8cc1Swenshuai.xi     \brief
108*53ee8cc1Swenshuai.xi 
109*53ee8cc1Swenshuai.xi     ATSC is the demodulator of supporting 8VSB and J83B standard.
110*53ee8cc1Swenshuai.xi     Receive RF signal from Tuner and transmit demodulated data to TS module.
111*53ee8cc1Swenshuai.xi 
112*53ee8cc1Swenshuai.xi     <b>Features</b>
113*53ee8cc1Swenshuai.xi 
114*53ee8cc1Swenshuai.xi     - Support 8VSB and J83B standard.
115*53ee8cc1Swenshuai.xi     - Pass A74 SPEC.
116*53ee8cc1Swenshuai.xi     - Pass the field stream.
117*53ee8cc1Swenshuai.xi 
118*53ee8cc1Swenshuai.xi     <b> ATSC Block Diagram: </b> \n
119*53ee8cc1Swenshuai.xi     \image html drvDMD_ATSC_pic01.png
120*53ee8cc1Swenshuai.xi 
121*53ee8cc1Swenshuai.xi     <b> Operation Code Flow: </b> \n
122*53ee8cc1Swenshuai.xi     -# Initialize ATSC parameters and load DEMOD FW
123*53ee8cc1Swenshuai.xi     -# Enable DEMOD state machine
124*53ee8cc1Swenshuai.xi     -# Monitor lock status
125*53ee8cc1Swenshuai.xi 
126*53ee8cc1Swenshuai.xi  *! \defgroup ATSC_BASIC ATSC basic control
127*53ee8cc1Swenshuai.xi  *  \ingroup ATSC
128*53ee8cc1Swenshuai.xi 
129*53ee8cc1Swenshuai.xi  *! \defgroup ATSC_INFO ATSC information
130*53ee8cc1Swenshuai.xi  *  \ingroup ATSC
131*53ee8cc1Swenshuai.xi 
132*53ee8cc1Swenshuai.xi  *! \defgroup ATSC_STR ATSC STR
133*53ee8cc1Swenshuai.xi  *  \ingroup ATSC
134*53ee8cc1Swenshuai.xi 
135*53ee8cc1Swenshuai.xi  *! \defgroup ATSC_ToBeRemoved ATSC API to be removed
136*53ee8cc1Swenshuai.xi  *  \ingroup ATSC
137*53ee8cc1Swenshuai.xi  */
138*53ee8cc1Swenshuai.xi 
139*53ee8cc1Swenshuai.xi #ifndef _DRV_ATSC_H_
140*53ee8cc1Swenshuai.xi #define _DRV_ATSC_H_
141*53ee8cc1Swenshuai.xi 
142*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
143*53ee8cc1Swenshuai.xi //  Driver Compiler Options
144*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
145*53ee8cc1Swenshuai.xi 
146*53ee8cc1Swenshuai.xi #define DMD_ATSC_UTOPIA_EN                  1
147*53ee8cc1Swenshuai.xi #define DMD_ATSC_UTOPIA2_EN                 0
148*53ee8cc1Swenshuai.xi 
149*53ee8cc1Swenshuai.xi #define DMD_ATSC_STR_EN                     1
150*53ee8cc1Swenshuai.xi #define DMD_ATSC_MULTI_THREAD_SAFE          0
151*53ee8cc1Swenshuai.xi #define DMD_ATSC_MULTI_DMD_EN               1
152*53ee8cc1Swenshuai.xi 
153*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
154*53ee8cc1Swenshuai.xi //  Include Files
155*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
156*53ee8cc1Swenshuai.xi 
157*53ee8cc1Swenshuai.xi #include "MsTypes.h"
158*53ee8cc1Swenshuai.xi #if DMD_ATSC_UTOPIA_EN || DMD_ATSC_UTOPIA2_EN
159*53ee8cc1Swenshuai.xi #include "MsVersion.h"
160*53ee8cc1Swenshuai.xi #include "MsCommon.h"
161*53ee8cc1Swenshuai.xi #endif
162*53ee8cc1Swenshuai.xi #if DMD_ATSC_UTOPIA2_EN || DMD_ATSC_STR_EN
163*53ee8cc1Swenshuai.xi #include "utopia.h"
164*53ee8cc1Swenshuai.xi #endif
165*53ee8cc1Swenshuai.xi 
166*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
167*53ee8cc1Swenshuai.xi //  Driver Capability
168*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
169*53ee8cc1Swenshuai.xi 
170*53ee8cc1Swenshuai.xi 
171*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
172*53ee8cc1Swenshuai.xi //  Macro and Define
173*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
174*53ee8cc1Swenshuai.xi 
175*53ee8cc1Swenshuai.xi #ifndef DLL_PUBLIC
176*53ee8cc1Swenshuai.xi #define DLL_PUBLIC
177*53ee8cc1Swenshuai.xi #endif
178*53ee8cc1Swenshuai.xi 
179*53ee8cc1Swenshuai.xi #if DMD_ATSC_MULTI_DMD_EN
180*53ee8cc1Swenshuai.xi #define DMD_ATSC_MAX_DEMOD_NUM          2
181*53ee8cc1Swenshuai.xi #else
182*53ee8cc1Swenshuai.xi #define DMD_ATSC_MAX_DEMOD_NUM          1
183*53ee8cc1Swenshuai.xi #endif
184*53ee8cc1Swenshuai.xi 
185*53ee8cc1Swenshuai.xi #if DMD_ATSC_UTOPIA_EN || DMD_ATSC_UTOPIA2_EN
186*53ee8cc1Swenshuai.xi #define MSIF_DMD_ATSC_LIB_CODE          {'D','M','D','_','A','T', 'S','C','_'} //Lib code
187*53ee8cc1Swenshuai.xi #define MSIF_DMD_ATSC_LIBVER            {'0','0'}                              //LIB version
188*53ee8cc1Swenshuai.xi #define MSIF_DMD_ATSC_BUILDNUM          {'0','0' }                             //Build Number
189*53ee8cc1Swenshuai.xi #define MSIF_DMD_ATSC_CHANGELIST        {'0','0','0','0','0','0','0','0'}      //P4 ChangeList Number
190*53ee8cc1Swenshuai.xi 
191*53ee8cc1Swenshuai.xi #define DMD_ATSC_VER                    /* Character String for DRV/API version             */  \
192*53ee8cc1Swenshuai.xi     MSIF_TAG,                           /* 'MSIF'                                           */  \
193*53ee8cc1Swenshuai.xi     MSIF_CLASS,                         /* '00'                                             */  \
194*53ee8cc1Swenshuai.xi     MSIF_CUS,                           /* 0x0000                                           */  \
195*53ee8cc1Swenshuai.xi     MSIF_MOD,                           /* 0x0000                                           */  \
196*53ee8cc1Swenshuai.xi     MSIF_CHIP,                                                                                  \
197*53ee8cc1Swenshuai.xi     MSIF_CPU,                                                                                   \
198*53ee8cc1Swenshuai.xi     MSIF_DMD_ATSC_LIB_CODE,             /* IP__                                             */  \
199*53ee8cc1Swenshuai.xi     MSIF_DMD_ATSC_LIBVER,               /* 0.0 ~ Z.Z                                        */  \
200*53ee8cc1Swenshuai.xi     MSIF_DMD_ATSC_BUILDNUM,             /* 00 ~ 99                                          */  \
201*53ee8cc1Swenshuai.xi     MSIF_DMD_ATSC_CHANGELIST,           /* CL#                                              */  \
202*53ee8cc1Swenshuai.xi     MSIF_OS
203*53ee8cc1Swenshuai.xi #endif // #if DMD_ATSC_UTOPIA_EN || DMD_ATSC_UTOPIA2_EN
204*53ee8cc1Swenshuai.xi 
205*53ee8cc1Swenshuai.xi #ifndef BIT_
206*53ee8cc1Swenshuai.xi #define BIT_(n)                                 (1 << (n))
207*53ee8cc1Swenshuai.xi #endif
208*53ee8cc1Swenshuai.xi 
209*53ee8cc1Swenshuai.xi #define DMD_ATSC_LOCK_VSB_PRE_LOCK              BIT_(0)
210*53ee8cc1Swenshuai.xi #define DMD_ATSC_LOCK_VSB_FSYNC_LOCK            BIT_(1)
211*53ee8cc1Swenshuai.xi #define DMD_ATSC_LOCK_VSB_CE_LOCK               BIT_(2)
212*53ee8cc1Swenshuai.xi #define DMD_ATSC_LOCK_VSB_FEC_LOCK              BIT_(3)
213*53ee8cc1Swenshuai.xi 
214*53ee8cc1Swenshuai.xi #define DMD_ATSC_LOCK_QAM_AGC_LOCK              BIT_(8)
215*53ee8cc1Swenshuai.xi #define DMD_ATSC_LOCK_QAM_PRE_LOCK              BIT_(9)
216*53ee8cc1Swenshuai.xi #define DMD_ATSC_LOCK_QAM_MAIN_LOCK             BIT_(10)
217*53ee8cc1Swenshuai.xi 
218*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
219*53ee8cc1Swenshuai.xi //  Type and Structure
220*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
221*53ee8cc1Swenshuai.xi 
222*53ee8cc1Swenshuai.xi typedef enum
223*53ee8cc1Swenshuai.xi {
224*53ee8cc1Swenshuai.xi     DMD_ATSC_HAL_CMD_Exit = 0,
225*53ee8cc1Swenshuai.xi     DMD_ATSC_HAL_CMD_InitClk,
226*53ee8cc1Swenshuai.xi     DMD_ATSC_HAL_CMD_Download,
227*53ee8cc1Swenshuai.xi     DMD_ATSC_HAL_CMD_FWVERSION,
228*53ee8cc1Swenshuai.xi     DMD_ATSC_HAL_CMD_SoftReset,
229*53ee8cc1Swenshuai.xi     DMD_ATSC_HAL_CMD_SetVsbMode,
230*53ee8cc1Swenshuai.xi     DMD_ATSC_HAL_CMD_Set64QamMode,
231*53ee8cc1Swenshuai.xi     DMD_ATSC_HAL_CMD_Set256QamMode,
232*53ee8cc1Swenshuai.xi     DMD_ATSC_HAL_CMD_SetModeClean,
233*53ee8cc1Swenshuai.xi     DMD_ATSC_HAL_CMD_Set_QAM_SR,
234*53ee8cc1Swenshuai.xi     DMD_ATSC_HAL_CMD_Active,
235*53ee8cc1Swenshuai.xi     DMD_ATSC_HAL_CMD_Check8VSB64_256QAM,
236*53ee8cc1Swenshuai.xi     DMD_ATSC_HAL_CMD_AGCLock,
237*53ee8cc1Swenshuai.xi     DMD_ATSC_HAL_CMD_Vsb_PreLock,
238*53ee8cc1Swenshuai.xi     DMD_ATSC_HAL_CMD_Vsb_FSync_Lock,
239*53ee8cc1Swenshuai.xi     DMD_ATSC_HAL_CMD_Vsb_CE_Lock,
240*53ee8cc1Swenshuai.xi     DMD_ATSC_HAL_CMD_Vsb_FEC_Lock,
241*53ee8cc1Swenshuai.xi     DMD_ATSC_HAL_CMD_QAM_PreLock,
242*53ee8cc1Swenshuai.xi     DMD_ATSC_HAL_CMD_QAM_Main_Lock,
243*53ee8cc1Swenshuai.xi     DMD_ATSC_HAL_CMD_ReadIFAGC,
244*53ee8cc1Swenshuai.xi     DMD_ATSC_HAL_CMD_CheckSignalCondition,
245*53ee8cc1Swenshuai.xi     DMD_ATSC_HAL_CMD_ReadSNRPercentage,
246*53ee8cc1Swenshuai.xi     DMD_ATSC_HAL_CMD_ReadPKTERR,
247*53ee8cc1Swenshuai.xi     DMD_ATSC_HAL_CMD_GetPreViterbiBer,
248*53ee8cc1Swenshuai.xi     DMD_ATSC_HAL_CMD_GetPostViterbiBer,
249*53ee8cc1Swenshuai.xi     DMD_ATSC_HAL_CMD_ReadFrequencyOffset,
250*53ee8cc1Swenshuai.xi     DMD_ATSC_HAL_CMD_TS_INTERFACE_CONFIG,
251*53ee8cc1Swenshuai.xi     DMD_ATSC_HAL_CMD_IIC_Bypass_Mode,
252*53ee8cc1Swenshuai.xi     DMD_ATSC_HAL_CMD_SSPI_TO_GPIO,
253*53ee8cc1Swenshuai.xi     DMD_ATSC_HAL_CMD_GPIO_GET_LEVEL,
254*53ee8cc1Swenshuai.xi     DMD_ATSC_HAL_CMD_GPIO_SET_LEVEL,
255*53ee8cc1Swenshuai.xi     DMD_ATSC_HAL_CMD_GPIO_OUT_ENABLE,
256*53ee8cc1Swenshuai.xi     DMD_ATSC_HAL_CMD_GET_REG,
257*53ee8cc1Swenshuai.xi     DMD_ATSC_HAL_CMD_SET_REG,
258*53ee8cc1Swenshuai.xi     CMD_ATSC_HAL_CMD_GET_QAM_SNR
259*53ee8cc1Swenshuai.xi } DMD_ATSC_HAL_COMMAND;
260*53ee8cc1Swenshuai.xi 
261*53ee8cc1Swenshuai.xi typedef struct
262*53ee8cc1Swenshuai.xi {
263*53ee8cc1Swenshuai.xi     MS_U8 u8Pin;
264*53ee8cc1Swenshuai.xi     union
265*53ee8cc1Swenshuai.xi     {
266*53ee8cc1Swenshuai.xi         MS_BOOL bLevel;
267*53ee8cc1Swenshuai.xi         MS_BOOL bIsOut;
268*53ee8cc1Swenshuai.xi     };
269*53ee8cc1Swenshuai.xi } DMD_ATSC_GPIO_PIN_DATA;
270*53ee8cc1Swenshuai.xi 
271*53ee8cc1Swenshuai.xi typedef struct
272*53ee8cc1Swenshuai.xi {
273*53ee8cc1Swenshuai.xi     MS_U16 u16Addr;
274*53ee8cc1Swenshuai.xi     MS_U8  u8Data;
275*53ee8cc1Swenshuai.xi } DMD_ATSC_REG_DATA;
276*53ee8cc1Swenshuai.xi 
277*53ee8cc1Swenshuai.xi typedef enum
278*53ee8cc1Swenshuai.xi {
279*53ee8cc1Swenshuai.xi     DMD_ATSC_DBGLV_NONE,    // disable all the debug message
280*53ee8cc1Swenshuai.xi     DMD_ATSC_DBGLV_INFO,    // information
281*53ee8cc1Swenshuai.xi     DMD_ATSC_DBGLV_NOTICE,  // normal but significant condition
282*53ee8cc1Swenshuai.xi     DMD_ATSC_DBGLV_WARNING, // warning conditions
283*53ee8cc1Swenshuai.xi     DMD_ATSC_DBGLV_ERR,     // error conditions
284*53ee8cc1Swenshuai.xi     DMD_ATSC_DBGLV_CRIT,    // critical conditions
285*53ee8cc1Swenshuai.xi     DMD_ATSC_DBGLV_ALERT,   // action must be taken immediately
286*53ee8cc1Swenshuai.xi     DMD_ATSC_DBGLV_EMERG,   // system is unusable
287*53ee8cc1Swenshuai.xi     DMD_ATSC_DBGLV_DEBUG    // debug-level messages
288*53ee8cc1Swenshuai.xi } DMD_ATSC_DbgLv;
289*53ee8cc1Swenshuai.xi 
290*53ee8cc1Swenshuai.xi typedef enum
291*53ee8cc1Swenshuai.xi {
292*53ee8cc1Swenshuai.xi     DMD_ATSC_DEMOD_ATSC_VSB,
293*53ee8cc1Swenshuai.xi     DMD_ATSC_DEMOD_ATSC_64QAM,
294*53ee8cc1Swenshuai.xi     DMD_ATSC_DEMOD_ATSC_256QAM,
295*53ee8cc1Swenshuai.xi     DMD_ATSC_DEMOD_ATSC_16QAM,
296*53ee8cc1Swenshuai.xi     DMD_ATSC_DEMOD_ATSC_32QAM,
297*53ee8cc1Swenshuai.xi     DMD_ATSC_DEMOD_ATSC_128QAM,
298*53ee8cc1Swenshuai.xi     DMD_ATSC_DEMOD_MAX,
299*53ee8cc1Swenshuai.xi     DMD_ATSC_DEMOD_NULL = DMD_ATSC_DEMOD_MAX
300*53ee8cc1Swenshuai.xi } DMD_ATSC_DEMOD_TYPE;
301*53ee8cc1Swenshuai.xi 
302*53ee8cc1Swenshuai.xi typedef enum
303*53ee8cc1Swenshuai.xi {
304*53ee8cc1Swenshuai.xi     DMD_ATSC_SIGNAL_NO                   = 0,    /* little or no input power detected    */
305*53ee8cc1Swenshuai.xi     DMD_ATSC_SIGNAL_WEAK                 = 1,    /* some power detected.                 */
306*53ee8cc1Swenshuai.xi     DMD_ATSC_SIGNAL_MODERATE             = 2,
307*53ee8cc1Swenshuai.xi     DMD_ATSC_SIGNAL_STRONG               = 4,
308*53ee8cc1Swenshuai.xi     DMD_ATSC_SIGNAL_VERY_STRONG          = 8
309*53ee8cc1Swenshuai.xi } DMD_ATSC_SIGNAL_CONDITION;
310*53ee8cc1Swenshuai.xi 
311*53ee8cc1Swenshuai.xi typedef enum
312*53ee8cc1Swenshuai.xi {
313*53ee8cc1Swenshuai.xi     DMD_ATSC_GETLOCK,
314*53ee8cc1Swenshuai.xi     DMD_ATSC_GETLOCK_VSB_AGCLOCK,
315*53ee8cc1Swenshuai.xi     DMD_ATSC_GETLOCK_VSB_PRELOCK, // pilot lock
316*53ee8cc1Swenshuai.xi     DMD_ATSC_GETLOCK_VSB_FSYNCLOCK,
317*53ee8cc1Swenshuai.xi     DMD_ATSC_GETLOCK_VSB_CELOCK,
318*53ee8cc1Swenshuai.xi     DMD_ATSC_GETLOCK_VSB_FECLOCK,
319*53ee8cc1Swenshuai.xi     DMD_ATSC_GETLOCK_QAM_AGCLOCK,
320*53ee8cc1Swenshuai.xi     DMD_ATSC_GETLOCK_QAM_PRELOCK, // TR lock
321*53ee8cc1Swenshuai.xi     DMD_ATSC_GETLOCK_QAM_MAINLOCK
322*53ee8cc1Swenshuai.xi } DMD_ATSC_GETLOCK_TYPE;
323*53ee8cc1Swenshuai.xi 
324*53ee8cc1Swenshuai.xi typedef enum
325*53ee8cc1Swenshuai.xi {
326*53ee8cc1Swenshuai.xi     DMD_ATSC_LOCK,
327*53ee8cc1Swenshuai.xi     DMD_ATSC_CHECKING,
328*53ee8cc1Swenshuai.xi     DMD_ATSC_CHECKEND,
329*53ee8cc1Swenshuai.xi     DMD_ATSC_UNLOCK,
330*53ee8cc1Swenshuai.xi     DMD_ATSC_NULL
331*53ee8cc1Swenshuai.xi } DMD_ATSC_LOCK_STATUS;
332*53ee8cc1Swenshuai.xi 
333*53ee8cc1Swenshuai.xi typedef enum
334*53ee8cc1Swenshuai.xi {
335*53ee8cc1Swenshuai.xi     I_PAD,
336*53ee8cc1Swenshuai.xi     Q_PAD,
337*53ee8cc1Swenshuai.xi } DMD_ATSC_SEL_IQPAD;
338*53ee8cc1Swenshuai.xi 
339*53ee8cc1Swenshuai.xi typedef enum
340*53ee8cc1Swenshuai.xi {
341*53ee8cc1Swenshuai.xi     QAM_64,
342*53ee8cc1Swenshuai.xi     QAM_256,
343*53ee8cc1Swenshuai.xi } DMD_ATSC_QAM_TYPE;
344*53ee8cc1Swenshuai.xi 
345*53ee8cc1Swenshuai.xi typedef struct
346*53ee8cc1Swenshuai.xi {
347*53ee8cc1Swenshuai.xi     MS_U8   QAM_type;
348*53ee8cc1Swenshuai.xi     MS_U16  symbol_rate;
349*53ee8cc1Swenshuai.xi }DMD_J83B_Info;
350*53ee8cc1Swenshuai.xi 
351*53ee8cc1Swenshuai.xi typedef enum _eDMD_SEL
352*53ee8cc1Swenshuai.xi {
353*53ee8cc1Swenshuai.xi     DMD0 = 0,
354*53ee8cc1Swenshuai.xi     DMD1,
355*53ee8cc1Swenshuai.xi     HK,
356*53ee8cc1Swenshuai.xi }eDMD_SEL;
357*53ee8cc1Swenshuai.xi 
358*53ee8cc1Swenshuai.xi /// For demod init
359*53ee8cc1Swenshuai.xi typedef struct
360*53ee8cc1Swenshuai.xi {
361*53ee8cc1Swenshuai.xi     // Timeout time
362*53ee8cc1Swenshuai.xi     MS_U16 u16VSBAGCLockCheckTime;//50
363*53ee8cc1Swenshuai.xi     MS_U16 u16VSBPreLockCheckTime;//300
364*53ee8cc1Swenshuai.xi     MS_U16 u16VSBFSyncLockCheckTime;//1200
365*53ee8cc1Swenshuai.xi     MS_U16 u16VSBFECLockCheckTime;//5000
366*53ee8cc1Swenshuai.xi 
367*53ee8cc1Swenshuai.xi     MS_U16 u16QAMAGCLockCheckTime;//50
368*53ee8cc1Swenshuai.xi     MS_U16 u16QAMPreLockCheckTime;//1000
369*53ee8cc1Swenshuai.xi     MS_U16 u16QAMMainLockCheckTime;//3000
370*53ee8cc1Swenshuai.xi 
371*53ee8cc1Swenshuai.xi     // register init
372*53ee8cc1Swenshuai.xi     MS_U8 *u8DMD_ATSC_DSPRegInitExt; // TODO use system variable type
373*53ee8cc1Swenshuai.xi     MS_U8 u8DMD_ATSC_DSPRegInitSize;
374*53ee8cc1Swenshuai.xi     MS_U8 *u8DMD_ATSC_InitExt; // TODO use system variable type
375*53ee8cc1Swenshuai.xi 
376*53ee8cc1Swenshuai.xi     //By Tuners:
377*53ee8cc1Swenshuai.xi     MS_U16  u16IF_KHZ;//By Tuners
378*53ee8cc1Swenshuai.xi     MS_BOOL bIQSwap;//0
379*53ee8cc1Swenshuai.xi     MS_U16  u16AGC_REFERENCE;//0
380*53ee8cc1Swenshuai.xi     MS_BOOL bTunerGainInvert;//0
381*53ee8cc1Swenshuai.xi     MS_BOOL bIsQPad;//0
382*53ee8cc1Swenshuai.xi 
383*53ee8cc1Swenshuai.xi     //By IC:
384*53ee8cc1Swenshuai.xi     MS_U8   u8IS_DUAL;//0
385*53ee8cc1Swenshuai.xi     MS_BOOL bIsExtDemod;//0
386*53ee8cc1Swenshuai.xi 
387*53ee8cc1Swenshuai.xi     //By TS (Only for MCP or ext demod):
388*53ee8cc1Swenshuai.xi     MS_U8 u1TsConfigByte_SerialMode : 1;
389*53ee8cc1Swenshuai.xi     MS_U8 u1TsConfigByte_DataSwap   : 1;
390*53ee8cc1Swenshuai.xi     MS_U8 u1TsConfigByte_ClockInv   : 1;
391*53ee8cc1Swenshuai.xi     MS_U8 u5TsConfigByte_DivNum     : 5;
392*53ee8cc1Swenshuai.xi 
393*53ee8cc1Swenshuai.xi     //By SYS I2C (Only for MCP or ext demod):
394*53ee8cc1Swenshuai.xi     MS_U8 u8I2CSlaveAddr;
395*53ee8cc1Swenshuai.xi     MS_U8 u8I2CSlaveBus;
396*53ee8cc1Swenshuai.xi     MS_BOOL (*I2C_WriteBytes)(MS_U16 u16BusNumSlaveID, MS_U8 u8addrcount, MS_U8* pu8addr, MS_U16 u16size, MS_U8* pu8data);
397*53ee8cc1Swenshuai.xi     MS_BOOL (*I2C_ReadBytes)(MS_U16 u16BusNumSlaveID, MS_U8 u8AddrNum, MS_U8* paddr, MS_U16 u16size, MS_U8* pu8data);
398*53ee8cc1Swenshuai.xi 
399*53ee8cc1Swenshuai.xi     //By SYS MSPI (Only for MCP or ext demod):
400*53ee8cc1Swenshuai.xi     MS_BOOL bIsUseSspiLoadCode;
401*53ee8cc1Swenshuai.xi     MS_BOOL bIsSspiUseTsPin;
402*53ee8cc1Swenshuai.xi 
403*53ee8cc1Swenshuai.xi     #if !DMD_ATSC_UTOPIA_EN && !DMD_ATSC_UTOPIA2_EN
404*53ee8cc1Swenshuai.xi     MS_U32  (*GetSystemTimeMS)(void);      // Get sys time (unit: ms)
405*53ee8cc1Swenshuai.xi     void    (*DelayMS)(MS_U32 ms);         // Delay time (unit: ms)
406*53ee8cc1Swenshuai.xi     MS_BOOL (*CreateMutex)(MS_BOOL enable); // Create&Delete mutex
407*53ee8cc1Swenshuai.xi     void    (*LockDMD)(MS_BOOL enable);    // Enter&Leave mutex
408*53ee8cc1Swenshuai.xi     #endif
409*53ee8cc1Swenshuai.xi } DMD_ATSC_InitData;
410*53ee8cc1Swenshuai.xi 
411*53ee8cc1Swenshuai.xi typedef struct
412*53ee8cc1Swenshuai.xi {
413*53ee8cc1Swenshuai.xi     MS_BOOL bInit;
414*53ee8cc1Swenshuai.xi     MS_BOOL bDownloaded;
415*53ee8cc1Swenshuai.xi 
416*53ee8cc1Swenshuai.xi     #if DMD_ATSC_STR_EN
417*53ee8cc1Swenshuai.xi     MS_BOOL             bIsDTV;
418*53ee8cc1Swenshuai.xi     EN_POWER_MODE       eLastState;
419*53ee8cc1Swenshuai.xi     #endif
420*53ee8cc1Swenshuai.xi     DMD_ATSC_DEMOD_TYPE eLastType;
421*53ee8cc1Swenshuai.xi     MS_U16              u16SymRate;
422*53ee8cc1Swenshuai.xi 
423*53ee8cc1Swenshuai.xi     MS_BOOL (*HAL_DMD_ATSC_IOCTL_CMD)(DMD_ATSC_HAL_COMMAND eCmd, void *pPara);
424*53ee8cc1Swenshuai.xi } DMD_ATSC_PriData;
425*53ee8cc1Swenshuai.xi 
426*53ee8cc1Swenshuai.xi typedef struct
427*53ee8cc1Swenshuai.xi {
428*53ee8cc1Swenshuai.xi     MS_U8  u8Version;
429*53ee8cc1Swenshuai.xi     MS_U32 u32ATSCScanTimeStart;
430*53ee8cc1Swenshuai.xi     MS_U32 u32ATSCFECLockTime;
431*53ee8cc1Swenshuai.xi     MS_U32 u32ATSCLockStatus;
432*53ee8cc1Swenshuai.xi } DMD_ATSC_Info;
433*53ee8cc1Swenshuai.xi 
434*53ee8cc1Swenshuai.xi typedef struct
435*53ee8cc1Swenshuai.xi {
436*53ee8cc1Swenshuai.xi     DMD_ATSC_InitData  sDMD_ATSC_InitData;
437*53ee8cc1Swenshuai.xi     DMD_ATSC_PriData   sDMD_ATSC_PriData;
438*53ee8cc1Swenshuai.xi     DMD_ATSC_Info      sDMD_ATSC_Info;
439*53ee8cc1Swenshuai.xi } DMD_ATSC_ResData;
440*53ee8cc1Swenshuai.xi 
441*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
442*53ee8cc1Swenshuai.xi //  Function and Variable
443*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
444*53ee8cc1Swenshuai.xi 
445*53ee8cc1Swenshuai.xi #ifdef __cplusplus
446*53ee8cc1Swenshuai.xi extern "C"
447*53ee8cc1Swenshuai.xi {
448*53ee8cc1Swenshuai.xi #endif
449*53ee8cc1Swenshuai.xi 
450*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
451*53ee8cc1Swenshuai.xi /// Set detailed level of ATSC driver debug message
452*53ee8cc1Swenshuai.xi /// @ingroup ATSC_BASIC
453*53ee8cc1Swenshuai.xi /// @param u8DbgLevel    \b IN: debug level for Parallel Flash driver
454*53ee8cc1Swenshuai.xi /// @return TRUE : succeed
455*53ee8cc1Swenshuai.xi /// @return FALSE : fail
456*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
457*53ee8cc1Swenshuai.xi // DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_SetDbgLevel(DMD_ATSC_DbgLv u8DbgLevel);
458*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
459*53ee8cc1Swenshuai.xi /// Get the information of ATSC driver
460*53ee8cc1Swenshuai.xi /// @ingroup ATSC_INFO
461*53ee8cc1Swenshuai.xi /// @return : the pointer to the driver information
462*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
463*53ee8cc1Swenshuai.xi // DLL_PUBLIC extern DMD_ATSC_Info* MDrv_DMD_ATSC_GetInfo(void);
464*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
465*53ee8cc1Swenshuai.xi /// Get ATSC driver version
466*53ee8cc1Swenshuai.xi /// @ingroup ATSC_INFO
467*53ee8cc1Swenshuai.xi /// @param ppVersion    \b OUT: the pointer to the driver version
468*53ee8cc1Swenshuai.xi /// @return TRUE : succeed
469*53ee8cc1Swenshuai.xi /// @return FALSE : fail
470*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
471*53ee8cc1Swenshuai.xi // DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_GetLibVer(const MSIF_Version **ppVersion);
472*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
473*53ee8cc1Swenshuai.xi /// Initialize HAL interface
474*53ee8cc1Swenshuai.xi /// @ingroup ATSC_BASIC
475*53ee8cc1Swenshuai.xi /// @return TRUE : succeed
476*53ee8cc1Swenshuai.xi /// @return FALSE : fail
477*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
478*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_Initial_Hal_Interface(void);
479*53ee8cc1Swenshuai.xi 
480*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
481*53ee8cc1Swenshuai.xi ///                            SINGLE DEMOD API                              ///
482*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
483*53ee8cc1Swenshuai.xi 
484*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
485*53ee8cc1Swenshuai.xi /// Initialize ATSC Demod
486*53ee8cc1Swenshuai.xi /// @ingroup ATSC_BASIC
487*53ee8cc1Swenshuai.xi /// @param pDMD_ATSC_InitData    \b IN: ATSC initial parameters
488*53ee8cc1Swenshuai.xi /// @param u32InitDataLen        \b IN: size of ATSC initial parameters
489*53ee8cc1Swenshuai.xi /// @return TRUE : succeed
490*53ee8cc1Swenshuai.xi /// @return FALSE : fail
491*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
492*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_Init(DMD_ATSC_InitData *pDMD_ATSC_InitData, MS_U32 u32InitDataLen);
493*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
494*53ee8cc1Swenshuai.xi /// Exit ATSC DTV mode
495*53ee8cc1Swenshuai.xi /// @ingroup ATSC_STR
496*53ee8cc1Swenshuai.xi /// @return TRUE : succeed
497*53ee8cc1Swenshuai.xi /// @return FALSE : fail
498*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
499*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_Exit(void);
500*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
501*53ee8cc1Swenshuai.xi /// Set Demod mode and restart Demod
502*53ee8cc1Swenshuai.xi /// @ingroup ATSC_BASIC
503*53ee8cc1Swenshuai.xi /// @param eType    \b IN: Select ATSC modulation type
504*53ee8cc1Swenshuai.xi /// @param bEnable  \b IN: Enable SetConfig function
505*53ee8cc1Swenshuai.xi /// @return TRUE : succeed
506*53ee8cc1Swenshuai.xi /// @return FALSE : fail
507*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
508*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_SetConfig(DMD_ATSC_DEMOD_TYPE eType, MS_BOOL bEnable);
509*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
510*53ee8cc1Swenshuai.xi /// Reset FW state machine
511*53ee8cc1Swenshuai.xi /// @ingroup ATSC_ToBeRemoved
512*53ee8cc1Swenshuai.xi /// @return TRUE : succeed
513*53ee8cc1Swenshuai.xi /// @return FALSE : fail
514*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
515*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_SetReset(void);
516*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
517*53ee8cc1Swenshuai.xi /// Select Demod number
518*53ee8cc1Swenshuai.xi /// @ingroup ATSC_ToBeRemoved
519*53ee8cc1Swenshuai.xi /// @param eDMD_NUM    \b IN: Select Demod number
520*53ee8cc1Swenshuai.xi /// @return TRUE : succeed
521*53ee8cc1Swenshuai.xi /// @return FALSE : fail
522*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
523*53ee8cc1Swenshuai.xi // DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_SEL_DMD(eDMD_SEL eDMD_NUM);
524*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
525*53ee8cc1Swenshuai.xi /// Load Demod FW
526*53ee8cc1Swenshuai.xi /// @ingroup ATSC_ToBeRemoved
527*53ee8cc1Swenshuai.xi /// @param DMD_NUM    \b IN: Select Demod number
528*53ee8cc1Swenshuai.xi /// @return TRUE : succeed
529*53ee8cc1Swenshuai.xi /// @return FALSE : fail
530*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
531*53ee8cc1Swenshuai.xi // DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_LoadFW(eDMD_SEL DMD_NUM);
532*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
533*53ee8cc1Swenshuai.xi /// Enable VSB mode
534*53ee8cc1Swenshuai.xi /// @ingroup ATSC_BASIC
535*53ee8cc1Swenshuai.xi /// @return TRUE : succeed
536*53ee8cc1Swenshuai.xi /// @return FALSE : fail
537*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
538*53ee8cc1Swenshuai.xi // DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_SetVsbMode(void);
539*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
540*53ee8cc1Swenshuai.xi /// Enable QAM256 mode
541*53ee8cc1Swenshuai.xi /// @ingroup ATSC_BASIC
542*53ee8cc1Swenshuai.xi /// @return TRUE : succeed
543*53ee8cc1Swenshuai.xi /// @return FALSE : fail
544*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
545*53ee8cc1Swenshuai.xi // DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_Set256QamMode(void);
546*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
547*53ee8cc1Swenshuai.xi /// Enable QAM64 mode
548*53ee8cc1Swenshuai.xi /// @ingroup ATSC_BASIC
549*53ee8cc1Swenshuai.xi /// @return TRUE : succeed
550*53ee8cc1Swenshuai.xi /// @return FALSE : fail
551*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
552*53ee8cc1Swenshuai.xi // DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_Set64QamMode(void);
553*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
554*53ee8cc1Swenshuai.xi /// Set QAM Type and symbol rate
555*53ee8cc1Swenshuai.xi /// @ingroup ATSC_ToBeRemoved
556*53ee8cc1Swenshuai.xi /// @param eType    \b IN: QAM type
557*53ee8cc1Swenshuai.xi /// @param symbol_rate    \b IN: symbol rate
558*53ee8cc1Swenshuai.xi /// @return TRUE : succeed
559*53ee8cc1Swenshuai.xi /// @return FALSE : fail
560*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
561*53ee8cc1Swenshuai.xi // DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_Set_QAM_SR(DMD_ATSC_DEMOD_TYPE eType, MS_U16 symbol_rate);
562*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
563*53ee8cc1Swenshuai.xi /// Active Demod
564*53ee8cc1Swenshuai.xi /// @ingroup ATSC_ToBeRemoved
565*53ee8cc1Swenshuai.xi /// @param bEnable    \b IN: Active Demod if TRUE
566*53ee8cc1Swenshuai.xi /// @return TRUE : succeed
567*53ee8cc1Swenshuai.xi /// @return FALSE : fail
568*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
569*53ee8cc1Swenshuai.xi // DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_SetActive(MS_BOOL bEnable);
570*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
571*53ee8cc1Swenshuai.xi /// Support ATSC STR function
572*53ee8cc1Swenshuai.xi /// @ingroup ATSC_STR
573*53ee8cc1Swenshuai.xi /// @param u16PowerState    \b IN: Set STR status
574*53ee8cc1Swenshuai.xi /// @return : STR status
575*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
576*53ee8cc1Swenshuai.xi #if DMD_ATSC_STR_EN
577*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_U32 MDrv_DMD_ATSC_SetPowerState(EN_POWER_MODE u16PowerState);
578*53ee8cc1Swenshuai.xi #endif
579*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
580*53ee8cc1Swenshuai.xi /// Get lock status
581*53ee8cc1Swenshuai.xi /// @ingroup ATSC_INFO
582*53ee8cc1Swenshuai.xi /// @param eType    \b IN: select lock type
583*53ee8cc1Swenshuai.xi /// @return : lock status
584*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
585*53ee8cc1Swenshuai.xi DLL_PUBLIC extern DMD_ATSC_LOCK_STATUS MDrv_DMD_ATSC_GetLock(DMD_ATSC_GETLOCK_TYPE eType);
586*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
587*53ee8cc1Swenshuai.xi /// Get modulation mode
588*53ee8cc1Swenshuai.xi /// @ingroup ATSC_INFO
589*53ee8cc1Swenshuai.xi /// @return : modulation mode
590*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
591*53ee8cc1Swenshuai.xi DLL_PUBLIC extern DMD_ATSC_DEMOD_TYPE MDrv_DMD_ATSC_GetModulationMode(void);
592*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
593*53ee8cc1Swenshuai.xi /// Get Demod signal strength (IF AGC gain)
594*53ee8cc1Swenshuai.xi /// @ingroup ATSC_INFO
595*53ee8cc1Swenshuai.xi /// @param u16Strength    \b OUT: the pointer to signal strength
596*53ee8cc1Swenshuai.xi /// @return TRUE : succeed
597*53ee8cc1Swenshuai.xi /// @return FALSE : fail
598*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
599*53ee8cc1Swenshuai.xi // DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_GetSignalStrength(MS_U16 *u16Strength);
600*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
601*53ee8cc1Swenshuai.xi /// Get Demod signal quality (NO SIGNAL, WEAK, MODERATE, STRONG and VERY_STRONG)
602*53ee8cc1Swenshuai.xi /// @ingroup ATSC_INFO
603*53ee8cc1Swenshuai.xi /// @return : signal quality
604*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
605*53ee8cc1Swenshuai.xi DLL_PUBLIC extern DMD_ATSC_SIGNAL_CONDITION MDrv_DMD_ATSC_GetSignalQuality(void);
606*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
607*53ee8cc1Swenshuai.xi /// Get SNR percentage
608*53ee8cc1Swenshuai.xi /// @ingroup ATSC_INFO
609*53ee8cc1Swenshuai.xi /// @return : SNR percentage
610*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
611*53ee8cc1Swenshuai.xi // DLL_PUBLIC extern MS_U8 MDrv_DMD_ATSC_GetSNRPercentage(void);
612*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
613*53ee8cc1Swenshuai.xi /// Get QAM SNR
614*53ee8cc1Swenshuai.xi /// @ingroup ATSC_INFO
615*53ee8cc1Swenshuai.xi /// @param f_snr    \b OUT: the pointer to SNR
616*53ee8cc1Swenshuai.xi /// @return TRUE : succeed
617*53ee8cc1Swenshuai.xi /// @return FALSE : fail
618*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
619*53ee8cc1Swenshuai.xi // DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_GET_QAM_SNR(float *f_snr);
620*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
621*53ee8cc1Swenshuai.xi /// Get Demod packet error number
622*53ee8cc1Swenshuai.xi /// @ingroup ATSC_INFO
623*53ee8cc1Swenshuai.xi /// @param u16PacketErr    \b OUT: the pointer to packet error number
624*53ee8cc1Swenshuai.xi /// @return TRUE : succeed
625*53ee8cc1Swenshuai.xi /// @return FALSE : fail
626*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
627*53ee8cc1Swenshuai.xi // DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_Read_uCPKT_ERR(MS_U16 *u16PacketErr);
628*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
629*53ee8cc1Swenshuai.xi /// Get Demod pre Viterbi number
630*53ee8cc1Swenshuai.xi /// @ingroup ATSC_ToBeRemoved
631*53ee8cc1Swenshuai.xi /// @param ber    \b OUT: the pointer to pre Viterbi BER
632*53ee8cc1Swenshuai.xi /// @return TRUE : succeed
633*53ee8cc1Swenshuai.xi /// @return FALSE : fail
634*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
635*53ee8cc1Swenshuai.xi // DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_GetPreViterbiBer(float *ber);
636*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
637*53ee8cc1Swenshuai.xi /// Get Demod post Viterbi number
638*53ee8cc1Swenshuai.xi /// @ingroup ATSC_INFO
639*53ee8cc1Swenshuai.xi /// @param ber    \b OUT: the pointer to post Viterbi BER
640*53ee8cc1Swenshuai.xi /// @return TRUE : succeed
641*53ee8cc1Swenshuai.xi /// @return FALSE : fail
642*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
643*53ee8cc1Swenshuai.xi // DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_GetPostViterbiBer(float *ber);
644*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
645*53ee8cc1Swenshuai.xi /// Get Demod frequency offset
646*53ee8cc1Swenshuai.xi /// @ingroup ATSC_INFO
647*53ee8cc1Swenshuai.xi /// @param cfo    \b OUT: the pointer to CFO
648*53ee8cc1Swenshuai.xi /// @return TRUE : succeed
649*53ee8cc1Swenshuai.xi /// @return FALSE : fail
650*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
651*53ee8cc1Swenshuai.xi // DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_ReadFrequencyOffset(MS_S16 *cfo);
652*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
653*53ee8cc1Swenshuai.xi /// Set TS output mode
654*53ee8cc1Swenshuai.xi /// @ingroup ATSC_BASIC
655*53ee8cc1Swenshuai.xi /// @param u8TsConfigData    \b IN: TS configuration
656*53ee8cc1Swenshuai.xi /// @return TRUE : succeed
657*53ee8cc1Swenshuai.xi /// @return FALSE : fail
658*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
659*53ee8cc1Swenshuai.xi // DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_SetSerialControl(MS_U8 u8TsConfigData);
660*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
661*53ee8cc1Swenshuai.xi /// Enable I2C bypass mode
662*53ee8cc1Swenshuai.xi /// @ingroup ATSC_BASIC
663*53ee8cc1Swenshuai.xi /// @param bEnable    \b IN: Enable bypass mode
664*53ee8cc1Swenshuai.xi /// @return TRUE : succeed
665*53ee8cc1Swenshuai.xi /// @return FALSE : fail
666*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
667*53ee8cc1Swenshuai.xi // DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_IIC_BYPASS_MODE(MS_BOOL bEnable);
668*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
669*53ee8cc1Swenshuai.xi /// Set SSPI pin as GPIO function
670*53ee8cc1Swenshuai.xi /// @ingroup ATSC_BASIC
671*53ee8cc1Swenshuai.xi /// @param bEnable    \b IN: Switch to GPIO if TRUE, otherwise SSPI
672*53ee8cc1Swenshuai.xi /// @return TRUE : succeed
673*53ee8cc1Swenshuai.xi /// @return FALSE : fail
674*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
675*53ee8cc1Swenshuai.xi // DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_SWITCH_SSPI_GPIO(MS_BOOL bEnable);
676*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
677*53ee8cc1Swenshuai.xi /// Get GPIO level
678*53ee8cc1Swenshuai.xi /// @ingroup ATSC_BASIC
679*53ee8cc1Swenshuai.xi /// @param u8Pin    \b IN: Select pin number
680*53ee8cc1Swenshuai.xi /// @param bLevel    \b OUT: the pointer to GPIO level
681*53ee8cc1Swenshuai.xi /// @return TRUE : succeed
682*53ee8cc1Swenshuai.xi /// @return FALSE : fail
683*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
684*53ee8cc1Swenshuai.xi // DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_GPIO_GET_LEVEL(MS_U8 u8Pin, MS_BOOL *bLevel);
685*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
686*53ee8cc1Swenshuai.xi /// Set GPIO level
687*53ee8cc1Swenshuai.xi /// @ingroup ATSC_BASIC
688*53ee8cc1Swenshuai.xi /// @param u8Pin    \b IN: Select pin number
689*53ee8cc1Swenshuai.xi /// @param bLevel    \b IN: Set GPIO level
690*53ee8cc1Swenshuai.xi /// @return TRUE : succeed
691*53ee8cc1Swenshuai.xi /// @return FALSE : fail
692*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
693*53ee8cc1Swenshuai.xi // DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_GPIO_SET_LEVEL(MS_U8 u8Pin, MS_BOOL bLevel);
694*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
695*53ee8cc1Swenshuai.xi /// Set GPIO as output or input
696*53ee8cc1Swenshuai.xi /// @ingroup ATSC_BASIC
697*53ee8cc1Swenshuai.xi /// @param u8Pin    \b IN: Select pin number
698*53ee8cc1Swenshuai.xi /// @param bEnableOut    \b IN: output if TRUE, otherwise input
699*53ee8cc1Swenshuai.xi /// @return TRUE : succeed
700*53ee8cc1Swenshuai.xi /// @return FALSE : fail
701*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
702*53ee8cc1Swenshuai.xi // DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_GPIO_OUT_ENABLE(MS_U8 u8Pin, MS_BOOL bEnableOut);
703*53ee8cc1Swenshuai.xi 
704*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
705*53ee8cc1Swenshuai.xi /// Get Demod register value
706*53ee8cc1Swenshuai.xi /// @ingroup ATSC_BASIC
707*53ee8cc1Swenshuai.xi /// @param u16Addr    \b IN: register address
708*53ee8cc1Swenshuai.xi /// @param pu8Data    \b OUT: the pointer to register data
709*53ee8cc1Swenshuai.xi /// @return TRUE : succeed
710*53ee8cc1Swenshuai.xi /// @return FALSE : fail
711*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
712*53ee8cc1Swenshuai.xi // DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_GetReg(MS_U16 u16Addr, MS_U8 *pu8Data);
713*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
714*53ee8cc1Swenshuai.xi /// Set Demod register value
715*53ee8cc1Swenshuai.xi /// @ingroup ATSC_BASIC
716*53ee8cc1Swenshuai.xi /// @param u16Addr    \b IN: register address
717*53ee8cc1Swenshuai.xi /// @param u8Data    \b IN: register data
718*53ee8cc1Swenshuai.xi /// @return TRUE : succeed
719*53ee8cc1Swenshuai.xi /// @return FALSE : fail
720*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
721*53ee8cc1Swenshuai.xi // DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_SetReg(MS_U16 u16Addr, MS_U8 u8Data);
722*53ee8cc1Swenshuai.xi 
723*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
724*53ee8cc1Swenshuai.xi ///                            MULTI DEMOD API                               ///
725*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
726*53ee8cc1Swenshuai.xi 
727*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
728*53ee8cc1Swenshuai.xi /// Initialize multiple ATSC Demod
729*53ee8cc1Swenshuai.xi /// @ingroup ATSC_BASIC
730*53ee8cc1Swenshuai.xi /// @param id                    \b IN: Select Demod number
731*53ee8cc1Swenshuai.xi /// @param pDMD_ATSC_InitData    \b IN: ATSC initial parameters
732*53ee8cc1Swenshuai.xi /// @param u32InitDataLen        \b IN: size of ATSC initial parameters
733*53ee8cc1Swenshuai.xi /// @return TRUE : succeed
734*53ee8cc1Swenshuai.xi /// @return FALSE : fail
735*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
736*53ee8cc1Swenshuai.xi // DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_MD_Init(MS_U8 id, DMD_ATSC_InitData *pDMD_ATSC_InitData, MS_U32 u32InitDataLen);
737*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
738*53ee8cc1Swenshuai.xi /// Support multiple Demod of exiting ATSC DTV mode
739*53ee8cc1Swenshuai.xi /// @ingroup ATSC_STR
740*53ee8cc1Swenshuai.xi /// @param id    \b IN: Select Demod number
741*53ee8cc1Swenshuai.xi /// @return TRUE : succeed
742*53ee8cc1Swenshuai.xi /// @return FALSE : fail
743*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
744*53ee8cc1Swenshuai.xi // DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_MD_Exit(MS_U8 id);
745*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
746*53ee8cc1Swenshuai.xi /// Support multiple Demod of setting and restarting Demod
747*53ee8cc1Swenshuai.xi /// @ingroup ATSC_BASIC
748*53ee8cc1Swenshuai.xi /// @param id    \b IN: Select Demod number
749*53ee8cc1Swenshuai.xi /// @param eType    \b IN: Select ATSC modulation type
750*53ee8cc1Swenshuai.xi /// @param bEnable  \b IN: Enable SetConfig function
751*53ee8cc1Swenshuai.xi /// @return TRUE : succeed
752*53ee8cc1Swenshuai.xi /// @return FALSE : fail
753*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
754*53ee8cc1Swenshuai.xi // DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_MD_SetConfig(MS_U8 id, DMD_ATSC_DEMOD_TYPE eType, MS_BOOL bEnable);
755*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
756*53ee8cc1Swenshuai.xi /// Reset FW state machine
757*53ee8cc1Swenshuai.xi /// @ingroup ATSC_ToBeRemoved
758*53ee8cc1Swenshuai.xi /// @return TRUE : succeed
759*53ee8cc1Swenshuai.xi /// @return FALSE : fail
760*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
761*53ee8cc1Swenshuai.xi // DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_MD_SetReset(void);
762*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
763*53ee8cc1Swenshuai.xi /// Support multiple Demod of setting QAM Type and symbol rate
764*53ee8cc1Swenshuai.xi /// @ingroup ATSC_ToBeRemoved
765*53ee8cc1Swenshuai.xi /// @param id    \b IN: Select Demod number
766*53ee8cc1Swenshuai.xi /// @param eType    \b IN: QAM type
767*53ee8cc1Swenshuai.xi /// @param symbol_rate    \b IN: symbol rate
768*53ee8cc1Swenshuai.xi /// @return TRUE : succeed
769*53ee8cc1Swenshuai.xi /// @return FALSE : fail
770*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
771*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);
772*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
773*53ee8cc1Swenshuai.xi /// Support multiple Demod of active Demod
774*53ee8cc1Swenshuai.xi /// @ingroup ATSC_ToBeRemoved
775*53ee8cc1Swenshuai.xi /// @param id    \b IN: Select Demod number
776*53ee8cc1Swenshuai.xi /// @param bEnable    \b IN: Active Demod if TRUE
777*53ee8cc1Swenshuai.xi /// @return TRUE : succeed
778*53ee8cc1Swenshuai.xi /// @return FALSE : fail
779*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
780*53ee8cc1Swenshuai.xi // DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_MD_SetActive(MS_U8 id, MS_BOOL bEnable);
781*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
782*53ee8cc1Swenshuai.xi /// Support multiple Demod of ATSC STR function
783*53ee8cc1Swenshuai.xi /// @ingroup ATSC_STR
784*53ee8cc1Swenshuai.xi /// @param id    \b IN: Select Demod number
785*53ee8cc1Swenshuai.xi /// @param u16PowerState    \b IN: Set STR status
786*53ee8cc1Swenshuai.xi /// @return : STR status
787*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
788*53ee8cc1Swenshuai.xi #if DMD_ATSC_STR_EN
789*53ee8cc1Swenshuai.xi // DLL_PUBLIC extern MS_U32 MDrv_DMD_ATSC_MD_SetPowerState(MS_U8 id, EN_POWER_MODE u16PowerState);
790*53ee8cc1Swenshuai.xi #endif
791*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
792*53ee8cc1Swenshuai.xi /// Support multiple Demod of getting lock status
793*53ee8cc1Swenshuai.xi /// @ingroup ATSC_INFO
794*53ee8cc1Swenshuai.xi /// @param id    \b IN: Select Demod number
795*53ee8cc1Swenshuai.xi /// @param eType    \b IN: select lock type
796*53ee8cc1Swenshuai.xi /// @return : lock status
797*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
798*53ee8cc1Swenshuai.xi // DLL_PUBLIC extern DMD_ATSC_LOCK_STATUS MDrv_DMD_ATSC_MD_GetLock(MS_U8 id, DMD_ATSC_GETLOCK_TYPE eType);
799*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
800*53ee8cc1Swenshuai.xi /// Support multiple Demod of getting modulation mode
801*53ee8cc1Swenshuai.xi /// @ingroup ATSC_INFO
802*53ee8cc1Swenshuai.xi /// @param id    \b IN: Select Demod number
803*53ee8cc1Swenshuai.xi /// @return : modulation mode
804*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
805*53ee8cc1Swenshuai.xi // DLL_PUBLIC extern DMD_ATSC_DEMOD_TYPE MDrv_DMD_ATSC_MD_GetModulationMode(MS_U8 id);
806*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
807*53ee8cc1Swenshuai.xi /// Support multiple Demod of getting Demod signal strength (IF AGC gain)
808*53ee8cc1Swenshuai.xi /// @ingroup ATSC_INFO
809*53ee8cc1Swenshuai.xi /// @param id    \b IN: Select Demod number
810*53ee8cc1Swenshuai.xi /// @param u16Strength    \b OUT: the pointer to signal strength
811*53ee8cc1Swenshuai.xi /// @return TRUE : succeed
812*53ee8cc1Swenshuai.xi /// @return FALSE : fail
813*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
814*53ee8cc1Swenshuai.xi // DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_MD_GetSignalStrength(MS_U8 id, MS_U16 *u16Strength);
815*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
816*53ee8cc1Swenshuai.xi /// Support multiple Demod of getting Demod signal quality (NO SIGNAL, WEAK, MODERATE, STRONG and VERY_STRONG)
817*53ee8cc1Swenshuai.xi /// @ingroup ATSC_INFO
818*53ee8cc1Swenshuai.xi /// @param id    \b IN: Select Demod number
819*53ee8cc1Swenshuai.xi /// @return : signal quality
820*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
821*53ee8cc1Swenshuai.xi // DLL_PUBLIC extern DMD_ATSC_SIGNAL_CONDITION MDrv_DMD_ATSC_MD_GetSignalQuality(MS_U8 id);
822*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
823*53ee8cc1Swenshuai.xi /// Support multiple Demod of getting SNR percentage
824*53ee8cc1Swenshuai.xi /// @ingroup ATSC_INFO
825*53ee8cc1Swenshuai.xi /// @param id    \b IN: Select Demod number
826*53ee8cc1Swenshuai.xi /// @return : SNR percentage
827*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
828*53ee8cc1Swenshuai.xi // DLL_PUBLIC extern MS_U8 MDrv_DMD_ATSC_MD_GetSNRPercentage(MS_U8 id);
829*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
830*53ee8cc1Swenshuai.xi /// Support multiple Demod of getting QAM SNR
831*53ee8cc1Swenshuai.xi /// @ingroup ATSC_INFO
832*53ee8cc1Swenshuai.xi /// @param id    \b IN: Select Demod number
833*53ee8cc1Swenshuai.xi /// @param f_snr    \b OUT: the pointer to SNR
834*53ee8cc1Swenshuai.xi /// @return TRUE : succeed
835*53ee8cc1Swenshuai.xi /// @return FALSE : fail
836*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
837*53ee8cc1Swenshuai.xi // DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_MD_GET_QAM_SNR(MS_U8 id, float *f_snr);
838*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
839*53ee8cc1Swenshuai.xi /// Support multiple Demod of getting Demod packet error number
840*53ee8cc1Swenshuai.xi /// @ingroup ATSC_INFO
841*53ee8cc1Swenshuai.xi /// @param id    \b IN: Select Demod number
842*53ee8cc1Swenshuai.xi /// @param u16PacketErr    \b OUT: the pointer to packet error number
843*53ee8cc1Swenshuai.xi /// @return TRUE : succeed
844*53ee8cc1Swenshuai.xi /// @return FALSE : fail
845*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
846*53ee8cc1Swenshuai.xi // DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_MD_Read_uCPKT_ERR(MS_U8 id, MS_U16 *u16PacketErr);
847*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
848*53ee8cc1Swenshuai.xi /// Support multiple Demod of getting Demod pre Viterbi number
849*53ee8cc1Swenshuai.xi /// @ingroup ATSC_ToBeRemoved
850*53ee8cc1Swenshuai.xi /// @param id    \b IN: Select Demod number
851*53ee8cc1Swenshuai.xi /// @param ber    \b OUT: the pointer to BER
852*53ee8cc1Swenshuai.xi /// @return TRUE : succeed
853*53ee8cc1Swenshuai.xi /// @return FALSE : fail
854*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
855*53ee8cc1Swenshuai.xi // DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_MD_GetPreViterbiBer(MS_U8 id, float *ber);
856*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
857*53ee8cc1Swenshuai.xi /// Support multiple Demod of getting Demod post Viterbi number
858*53ee8cc1Swenshuai.xi /// @ingroup ATSC_INFO
859*53ee8cc1Swenshuai.xi /// @param id    \b IN: Select Demod number
860*53ee8cc1Swenshuai.xi /// @param ber    \b OUT: the pointer to BER
861*53ee8cc1Swenshuai.xi /// @return TRUE : succeed
862*53ee8cc1Swenshuai.xi /// @return FALSE : fail
863*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
864*53ee8cc1Swenshuai.xi // DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_MD_GetPostViterbiBer(MS_U8 id, float *ber);
865*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
866*53ee8cc1Swenshuai.xi /// Support multiple Demod of getting Demod fequency offset
867*53ee8cc1Swenshuai.xi /// @ingroup ATSC_INFO
868*53ee8cc1Swenshuai.xi /// @param id    \b IN: Select Demod number
869*53ee8cc1Swenshuai.xi /// @param cfo    \b OUT: the pointer to CFO
870*53ee8cc1Swenshuai.xi /// @return TRUE : succeed
871*53ee8cc1Swenshuai.xi /// @return FALSE : fail
872*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
873*53ee8cc1Swenshuai.xi // DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_MD_ReadFrequencyOffset(MS_U8 id, MS_S16 *cfo);
874*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
875*53ee8cc1Swenshuai.xi /// Support multiple Demod of setting TS output mode
876*53ee8cc1Swenshuai.xi /// @ingroup ATSC_BASIC
877*53ee8cc1Swenshuai.xi /// @param id    \b IN: Select Demod number
878*53ee8cc1Swenshuai.xi /// @param u8TsConfigData    \b IN: TS configuration
879*53ee8cc1Swenshuai.xi /// @return TRUE : succeed
880*53ee8cc1Swenshuai.xi /// @return FALSE : fail
881*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
882*53ee8cc1Swenshuai.xi // DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_MD_SetSerialControl(MS_U8 id, MS_U8 u8TsConfigData);
883*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
884*53ee8cc1Swenshuai.xi /// Support multiple Demod of enabling I2C bypass mode
885*53ee8cc1Swenshuai.xi /// @ingroup ATSC_BASIC
886*53ee8cc1Swenshuai.xi /// @param id    \b IN: Select Demod number
887*53ee8cc1Swenshuai.xi /// @param bEnable    \b IN: Enable bypass mode
888*53ee8cc1Swenshuai.xi /// @return TRUE : succeed
889*53ee8cc1Swenshuai.xi /// @return FALSE : fail
890*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
891*53ee8cc1Swenshuai.xi // DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_MD_IIC_BYPASS_MODE(MS_U8 id, MS_BOOL bEnable);
892*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
893*53ee8cc1Swenshuai.xi /// Support multiple Demod of setting SSPI pin as GPIO function
894*53ee8cc1Swenshuai.xi /// @ingroup ATSC_BASIC
895*53ee8cc1Swenshuai.xi /// @param id    \b IN: Select Demod number
896*53ee8cc1Swenshuai.xi /// @param bEnable    \b IN: Switch to GPIO if TRUE, otherwise SSPI
897*53ee8cc1Swenshuai.xi /// @return TRUE : succeed
898*53ee8cc1Swenshuai.xi /// @return FALSE : fail
899*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
900*53ee8cc1Swenshuai.xi // DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_MD_SWITCH_SSPI_GPIO(MS_U8 id, MS_BOOL bEnable);
901*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
902*53ee8cc1Swenshuai.xi /// Support multiple Demod of getting GPIO level
903*53ee8cc1Swenshuai.xi /// @ingroup ATSC_BASIC
904*53ee8cc1Swenshuai.xi /// @param id    \b IN: Select Demod number
905*53ee8cc1Swenshuai.xi /// @param u8Pin    \b IN: Select pin number
906*53ee8cc1Swenshuai.xi /// @param bLevel    \b OUT: the pointer to GPIO level
907*53ee8cc1Swenshuai.xi /// @return TRUE : succeed
908*53ee8cc1Swenshuai.xi /// @return FALSE : fail
909*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
910*53ee8cc1Swenshuai.xi // DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_MD_GPIO_GET_LEVEL(MS_U8 id, MS_U8 u8Pin, MS_BOOL *bLevel);
911*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
912*53ee8cc1Swenshuai.xi /// Support multiple Demod of setting GPIO level
913*53ee8cc1Swenshuai.xi /// @ingroup ATSC_BASIC
914*53ee8cc1Swenshuai.xi /// @param id    \b IN: Select Demod number
915*53ee8cc1Swenshuai.xi /// @param u8Pin    \b IN: Select pin number
916*53ee8cc1Swenshuai.xi /// @param bLevel    \b IN: Set GPIO level
917*53ee8cc1Swenshuai.xi /// @return TRUE : succeed
918*53ee8cc1Swenshuai.xi /// @return FALSE : fail
919*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
920*53ee8cc1Swenshuai.xi // DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_MD_GPIO_SET_LEVEL(MS_U8 id, MS_U8 u8Pin, MS_BOOL bLevel);
921*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
922*53ee8cc1Swenshuai.xi /// Support multiple Demod of setting GPIO as output or input
923*53ee8cc1Swenshuai.xi /// @ingroup ATSC_BASIC
924*53ee8cc1Swenshuai.xi /// @param id    \b IN: Select Demod number
925*53ee8cc1Swenshuai.xi /// @param u8Pin    \b IN: Select pin number
926*53ee8cc1Swenshuai.xi /// @param bEnableOut    \b IN: output if TRUE, otherwise input
927*53ee8cc1Swenshuai.xi /// @return TRUE : succeed
928*53ee8cc1Swenshuai.xi /// @return FALSE : fail
929*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
930*53ee8cc1Swenshuai.xi // DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_MD_GPIO_OUT_ENABLE(MS_U8 id, MS_U8 u8Pin, MS_BOOL bEnableOut);
931*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
932*53ee8cc1Swenshuai.xi /// Support multiple Demod of getting Demod register value
933*53ee8cc1Swenshuai.xi /// @ingroup ATSC_BASIC
934*53ee8cc1Swenshuai.xi /// @param id    \b IN: Select Demod number
935*53ee8cc1Swenshuai.xi /// @param u16Addr    \b IN: register address
936*53ee8cc1Swenshuai.xi /// @param pu8Data    \b OUT: the pointer to get register data
937*53ee8cc1Swenshuai.xi /// @return TRUE : succeed
938*53ee8cc1Swenshuai.xi /// @return FALSE : fail
939*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
940*53ee8cc1Swenshuai.xi // DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_MD_GetReg(MS_U8 id, MS_U16 u16Addr, MS_U8 *pu8Data);
941*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
942*53ee8cc1Swenshuai.xi /// Support multiple Demod of setting Demod register value
943*53ee8cc1Swenshuai.xi /// @ingroup ATSC_BASIC
944*53ee8cc1Swenshuai.xi /// @param id    \b IN: Select Demod number
945*53ee8cc1Swenshuai.xi /// @param u16Addr    \b IN: register address
946*53ee8cc1Swenshuai.xi /// @param u8Data    \b IN: register data
947*53ee8cc1Swenshuai.xi /// @return TRUE : succeed
948*53ee8cc1Swenshuai.xi /// @return FALSE : fail
949*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
950*53ee8cc1Swenshuai.xi // DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_MD_SetReg(MS_U8 id, MS_U16 u16Addr, MS_U8 u8Data);
951*53ee8cc1Swenshuai.xi 
952*53ee8cc1Swenshuai.xi #ifdef __cplusplus
953*53ee8cc1Swenshuai.xi }
954*53ee8cc1Swenshuai.xi #endif
955*53ee8cc1Swenshuai.xi 
956*53ee8cc1Swenshuai.xi #endif // _DRV_ATSC_H_
957*53ee8cc1Swenshuai.xi 
958