xref: /utopia/UTPA2-700.0.x/mxlib/include/drvDMD_INTERN_DVBT2.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_DVBT2_INTERN.h
98*53ee8cc1Swenshuai.xi /// @brief  DVBT Driver Interface
99*53ee8cc1Swenshuai.xi /// @author MStar Semiconductor Inc.
100*53ee8cc1Swenshuai.xi ///////////////////////////////////////////////////////////////////////////////////////////////////
101*53ee8cc1Swenshuai.xi 
102*53ee8cc1Swenshuai.xi #ifndef _DRV_DVBT2_H_
103*53ee8cc1Swenshuai.xi #define _DRV_DVBT2_H_
104*53ee8cc1Swenshuai.xi 
105*53ee8cc1Swenshuai.xi #include "MsTypes.h"
106*53ee8cc1Swenshuai.xi 
107*53ee8cc1Swenshuai.xi #include "MsCommon.h"
108*53ee8cc1Swenshuai.xi #include "drvDMD_common.h"
109*53ee8cc1Swenshuai.xi #ifdef __cplusplus
110*53ee8cc1Swenshuai.xi extern "C"
111*53ee8cc1Swenshuai.xi {
112*53ee8cc1Swenshuai.xi #endif
113*53ee8cc1Swenshuai.xi 
114*53ee8cc1Swenshuai.xi 
115*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
116*53ee8cc1Swenshuai.xi //  Driver Capability
117*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
118*53ee8cc1Swenshuai.xi 
119*53ee8cc1Swenshuai.xi 
120*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
121*53ee8cc1Swenshuai.xi //  Macro and Define
122*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
123*53ee8cc1Swenshuai.xi #define MSIF_DMD_DVBT2_INTERN_LIB_CODE           {'D','V', 'B','T'} //Lib code
124*53ee8cc1Swenshuai.xi #define MSIF_DMD_DVBT2_INTERN_LIBVER             {'0','1'}      //LIB version
125*53ee8cc1Swenshuai.xi #define MSIF_DMD_DVBT2_INTERN_BUILDNUM           {'2','1' }    //Build Number
126*53ee8cc1Swenshuai.xi #define MSIF_DMD_DVBT2_INTERN_CHANGELIST         {'0','0','0','0','0','0','0','0'} //P4 ChangeList Number
127*53ee8cc1Swenshuai.xi 
128*53ee8cc1Swenshuai.xi #define DMD_DVBT2_INTERN_VER                 /* Character String for DRV/API version             */  \
129*53ee8cc1Swenshuai.xi     MSIF_TAG,                           /* 'MSIF'                                           */  \
130*53ee8cc1Swenshuai.xi     MSIF_CLASS,                         /* '00'                                             */  \
131*53ee8cc1Swenshuai.xi     MSIF_CUS,                           /* 0x0000                                           */  \
132*53ee8cc1Swenshuai.xi     MSIF_MOD,                           /* 0x0000                                           */  \
133*53ee8cc1Swenshuai.xi     MSIF_CHIP,                                                                                  \
134*53ee8cc1Swenshuai.xi     MSIF_CPU,                                                                                   \
135*53ee8cc1Swenshuai.xi     MSIF_DMD_DVBT2_INTERN_LIB_CODE,      /* IP__                                             */  \
136*53ee8cc1Swenshuai.xi     MSIF_DMD_DVBT2_INTERN_LIBVER,        /* 0.0 ~ Z.Z                                        */  \
137*53ee8cc1Swenshuai.xi     MSIF_DMD_DVBT2_INTERN_BUILDNUM,      /* 00 ~ 99                                          */  \
138*53ee8cc1Swenshuai.xi     MSIF_DMD_DVBT2_INTERN_CHANGELIST,    /* CL#                                              */  \
139*53ee8cc1Swenshuai.xi     MSIF_OS
140*53ee8cc1Swenshuai.xi 
141*53ee8cc1Swenshuai.xi #define IS_BITS_SET(val, bits)                  (((val)&(bits)) == (bits))
142*53ee8cc1Swenshuai.xi 
143*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
144*53ee8cc1Swenshuai.xi //  Type and Structure
145*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
146*53ee8cc1Swenshuai.xi typedef enum
147*53ee8cc1Swenshuai.xi {
148*53ee8cc1Swenshuai.xi     DMD_T2_DBGLV_NONE,    // disable all the debug message
149*53ee8cc1Swenshuai.xi     DMD_T2_DBGLV_INFO,    // information
150*53ee8cc1Swenshuai.xi     DMD_T2_DBGLV_NOTICE,  // normal but significant condition
151*53ee8cc1Swenshuai.xi     DMD_T2_DBGLV_WARNING, // warning conditions
152*53ee8cc1Swenshuai.xi     DMD_T2_DBGLV_ERR,     // error conditions
153*53ee8cc1Swenshuai.xi     DMD_T2_DBGLV_CRIT,    // critical conditions
154*53ee8cc1Swenshuai.xi     DMD_T2_DBGLV_ALERT,   // action must be taken immediately
155*53ee8cc1Swenshuai.xi     DMD_T2_DBGLV_EMERG,   // system is unusable
156*53ee8cc1Swenshuai.xi     DMD_T2_DBGLV_DEBUG,   // debug-level messages
157*53ee8cc1Swenshuai.xi } DMD_T2_DbgLv;
158*53ee8cc1Swenshuai.xi 
159*53ee8cc1Swenshuai.xi typedef enum
160*53ee8cc1Swenshuai.xi {
161*53ee8cc1Swenshuai.xi     E_DMD_T2_LOCK,
162*53ee8cc1Swenshuai.xi     E_DMD_T2_CHECKING,
163*53ee8cc1Swenshuai.xi     E_DMD_T2_CHECKEND,
164*53ee8cc1Swenshuai.xi     E_DMD_T2_UNLOCK,
165*53ee8cc1Swenshuai.xi     E_DMD_T2_NULL,
166*53ee8cc1Swenshuai.xi } DMD_T2_LOCK_STATUS;
167*53ee8cc1Swenshuai.xi 
168*53ee8cc1Swenshuai.xi typedef enum
169*53ee8cc1Swenshuai.xi {
170*53ee8cc1Swenshuai.xi     E_DMD_DVBT2_GETLOCK,
171*53ee8cc1Swenshuai.xi     E_DMD_DVBT2_FEC_LOCK,
172*53ee8cc1Swenshuai.xi     E_DMD_DVBT2_P1_LOCK,
173*53ee8cc1Swenshuai.xi     E_DMD_DVBT2_DCR_LOCK,
174*53ee8cc1Swenshuai.xi     E_DMD_DVBT2_AGC_LOCK,
175*53ee8cc1Swenshuai.xi     E_DMD_DVBT2_MODE_DET,
176*53ee8cc1Swenshuai.xi     E_DMD_DVBT2_P1_EVER_LOCK,
177*53ee8cc1Swenshuai.xi     E_DMD_DVBT2_L1_CRC_LOCK,
178*53ee8cc1Swenshuai.xi     E_DMD_DVBT2_NO_CHANNEL,
179*53ee8cc1Swenshuai.xi     E_DMD_DVBT2_NO_CHANNEL_IFAGC,
180*53ee8cc1Swenshuai.xi     E_DMD_DVBT2_ATV_DETECT,
181*53ee8cc1Swenshuai.xi     E_DMD_DVBT2_BER_LOCK,
182*53ee8cc1Swenshuai.xi     E_DMD_DVBT2_SNR_LOCK,
183*53ee8cc1Swenshuai.xi } DMD_DVBT2_GETLOCK_TYPE;
184*53ee8cc1Swenshuai.xi 
185*53ee8cc1Swenshuai.xi typedef enum
186*53ee8cc1Swenshuai.xi {
187*53ee8cc1Swenshuai.xi     E_DMD_T2_RF_BAND_5MHz = 0x01,
188*53ee8cc1Swenshuai.xi     E_DMD_T2_RF_BAND_1p7MHz = 0x00,
189*53ee8cc1Swenshuai.xi     E_DMD_T2_RF_BAND_6MHz = 0x02,
190*53ee8cc1Swenshuai.xi     E_DMD_T2_RF_BAND_7MHz = 0x03,
191*53ee8cc1Swenshuai.xi     E_DMD_T2_RF_BAND_8MHz = 0x04,
192*53ee8cc1Swenshuai.xi     E_DMD_T2_RF_BAND_10MHz = 0x05,
193*53ee8cc1Swenshuai.xi     E_DMD_T2_RF_BAND_INVALID
194*53ee8cc1Swenshuai.xi } DMD_DVBT2_RF_CHANNEL_BANDWIDTH;
195*53ee8cc1Swenshuai.xi 
196*53ee8cc1Swenshuai.xi typedef enum
197*53ee8cc1Swenshuai.xi {
198*53ee8cc1Swenshuai.xi     // fw version, check sum
199*53ee8cc1Swenshuai.xi     E_DMD_T2_CHECK_SUM_L      = 0x00,
200*53ee8cc1Swenshuai.xi     E_DMD_T2_CHECK_SUM_H,
201*53ee8cc1Swenshuai.xi     E_DMD_T2_FW_VER_0,
202*53ee8cc1Swenshuai.xi     E_DMD_T2_FW_VER_1,
203*53ee8cc1Swenshuai.xi     E_DMD_T2_FW_VER_2,
204*53ee8cc1Swenshuai.xi 
205*53ee8cc1Swenshuai.xi     // operation mode
206*53ee8cc1Swenshuai.xi     E_DMD_T2_ZIF_EN           = 0x20,
207*53ee8cc1Swenshuai.xi     E_DMD_T2_RF_AGC_EN,
208*53ee8cc1Swenshuai.xi     E_DMD_T2_HUM_DET_EN,
209*53ee8cc1Swenshuai.xi     E_DMD_T2_DCR_EN,
210*53ee8cc1Swenshuai.xi     E_DMD_T2_IQB_EN,
211*53ee8cc1Swenshuai.xi     E_DMD_T2_IIS_EN,
212*53ee8cc1Swenshuai.xi     E_DMD_T2_CCI_EN,
213*53ee8cc1Swenshuai.xi     E_DMD_T2_LOW_PWR_DET_EN,
214*53ee8cc1Swenshuai.xi     E_DMD_T2_ACI_DET_EN,
215*53ee8cc1Swenshuai.xi     E_DMD_T2_TD_MOTION_EN,
216*53ee8cc1Swenshuai.xi     E_DMD_T2_FD_MOTION_EN,
217*53ee8cc1Swenshuai.xi 
218*53ee8cc1Swenshuai.xi     // channel tuning param
219*53ee8cc1Swenshuai.xi     E_DMD_T2_BW               = 0x40,
220*53ee8cc1Swenshuai.xi     E_DMD_T2_FC_L             = 0x41,
221*53ee8cc1Swenshuai.xi     E_DMD_T2_FC_H             = 0x42,
222*53ee8cc1Swenshuai.xi     E_DMD_T2_FS_L,
223*53ee8cc1Swenshuai.xi     E_DMD_T2_FS_H,
224*53ee8cc1Swenshuai.xi     E_DMD_T2_ZIF,
225*53ee8cc1Swenshuai.xi     E_DMD_T2_GI,
226*53ee8cc1Swenshuai.xi     E_DMD_T2_ACI_DET_TYPE,
227*53ee8cc1Swenshuai.xi     E_DMD_T2_AGC_REF,         //0x48
228*53ee8cc1Swenshuai.xi     E_DMD_T2_RSSI_REF,
229*53ee8cc1Swenshuai.xi     E_DMD_T2_SNR_TIME_L,
230*53ee8cc1Swenshuai.xi     E_DMD_T2_SNR_TIME_H,
231*53ee8cc1Swenshuai.xi     E_DMD_T2_BER_CMP_TIME_L,
232*53ee8cc1Swenshuai.xi     E_DMD_T2_BER_CMP_TIME_H,
233*53ee8cc1Swenshuai.xi     E_DMD_T2_SFO_CFO_NUM,
234*53ee8cc1Swenshuai.xi     E_DMD_T2_CCI,
235*53ee8cc1Swenshuai.xi     E_DMD_T2_ACI_DET_TH_L,    //0x50
236*53ee8cc1Swenshuai.xi     E_DMD_T2_ACI_DET_TH_H,
237*53ee8cc1Swenshuai.xi     E_DMD_T2_TS_SERIAL     = 0x52,
238*53ee8cc1Swenshuai.xi     E_DMD_T2_TS_CLK_RATE   = 0x53,
239*53ee8cc1Swenshuai.xi     E_DMD_T2_TS_OUT_INV    = 0x54,
240*53ee8cc1Swenshuai.xi     E_DMD_T2_TS_DATA_SWAP  = 0x55,
241*53ee8cc1Swenshuai.xi     E_DMD_T2_TDP_CCI_KP,
242*53ee8cc1Swenshuai.xi     E_DMD_T2_CCI_FSWEEP,      //0x57
243*53ee8cc1Swenshuai.xi     E_DMD_T2_TS_ERR_POL,      //0x58
244*53ee8cc1Swenshuai.xi     E_DMD_T2_IF_AGC_INV_PWM_EN, // 0x59
245*53ee8cc1Swenshuai.xi     E_DMD_T2_CCI_TYPE,		       //0x5A
246*53ee8cc1Swenshuai.xi     E_DMD_T2_LITE,                       //0x5B
247*53ee8cc1Swenshuai.xi 
248*53ee8cc1Swenshuai.xi     E_DMD_T2_TOTAL_CFO_0      = 0x85,
249*53ee8cc1Swenshuai.xi     E_DMD_T2_TOTAL_CFO_1,
250*53ee8cc1Swenshuai.xi 
251*53ee8cc1Swenshuai.xi     // EQ of SDRAM arrangement
252*53ee8cc1Swenshuai.xi     E_T2EQ_START_ADDR_0 = 0x90,
253*53ee8cc1Swenshuai.xi     E_T2EQ_START_ADDR_1,
254*53ee8cc1Swenshuai.xi     E_T2EQ_START_ADDR_2,
255*53ee8cc1Swenshuai.xi     E_T2EQ_START_ADDR_3,
256*53ee8cc1Swenshuai.xi 
257*53ee8cc1Swenshuai.xi     // TDI of SDRAM arrangement
258*53ee8cc1Swenshuai.xi     E_T2TDI_START_ADDR_0,
259*53ee8cc1Swenshuai.xi     E_T2TDI_START_ADDR_1,
260*53ee8cc1Swenshuai.xi     E_T2TDI_START_ADDR_2,
261*53ee8cc1Swenshuai.xi     E_T2TDI_START_ADDR_3,
262*53ee8cc1Swenshuai.xi 
263*53ee8cc1Swenshuai.xi     // DJB of SDRAM arrangement
264*53ee8cc1Swenshuai.xi     E_T2DJB_START_ADDR_0,
265*53ee8cc1Swenshuai.xi     E_T2DJB_START_ADDR_1,
266*53ee8cc1Swenshuai.xi     E_T2DJB_START_ADDR_2,
267*53ee8cc1Swenshuai.xi     E_T2DJB_START_ADDR_3,
268*53ee8cc1Swenshuai.xi 
269*53ee8cc1Swenshuai.xi     // DJB of SDRAM arrangement
270*53ee8cc1Swenshuai.xi     E_T2FW_START_ADDR_0,
271*53ee8cc1Swenshuai.xi     E_T2FW_START_ADDR_1,
272*53ee8cc1Swenshuai.xi     E_T2FW_START_ADDR_2,
273*53ee8cc1Swenshuai.xi     E_T2FW_START_ADDR_3,
274*53ee8cc1Swenshuai.xi 
275*53ee8cc1Swenshuai.xi     // dvbt2 lock history
276*53ee8cc1Swenshuai.xi     E_DMD_T2_DVBT2_LOCK_HIS   = 0xF0,
277*53ee8cc1Swenshuai.xi     E_DMD_T2_FEF_DET_IND,
278*53ee8cc1Swenshuai.xi     E_DMD_T2_MPLP_NO_COMMON_IND,
279*53ee8cc1Swenshuai.xi     E_DMD_T2_SNR_L,             // 0xf3
280*53ee8cc1Swenshuai.xi     E_DMD_T2_SNR_H,             // 0xf4
281*53ee8cc1Swenshuai.xi     E_DMD_T2_DOPPLER_DET_FLAG,  // 0xf5
282*53ee8cc1Swenshuai.xi     E_DMD_T2_DOPPLER_DET_TH_L,  // 0xf6
283*53ee8cc1Swenshuai.xi     E_DMD_T2_DOPPLER_DET_TH_H,  // 0xf7
284*53ee8cc1Swenshuai.xi 
285*53ee8cc1Swenshuai.xi     // splp, mplp releted
286*53ee8cc1Swenshuai.xi     E_DMD_T2_PLP_ID_ARR       = 0x100,
287*53ee8cc1Swenshuai.xi     E_DMD_T2_L1_FLAG          = 0x120,
288*53ee8cc1Swenshuai.xi     E_DMD_T2_PLP_ID,
289*53ee8cc1Swenshuai.xi     E_DMD_T2_GROUP_ID,
290*53ee8cc1Swenshuai.xi 
291*53ee8cc1Swenshuai.xi     //dvbt2 auto ts data rate
292*53ee8cc1Swenshuai.xi     E_DMD_T2_TS_DATA_RATE_0       = 0x130,
293*53ee8cc1Swenshuai.xi     E_DMD_T2_TS_DATA_RATE_1       = 0x131,
294*53ee8cc1Swenshuai.xi     E_DMD_T2_TS_DATA_RATE_2       = 0x132,
295*53ee8cc1Swenshuai.xi     E_DMD_T2_TS_DATA_RATE_3       = 0x133,
296*53ee8cc1Swenshuai.xi     E_DMD_T2_TS_DATA_RATE_CHANGE_IND       = 0x134,
297*53ee8cc1Swenshuai.xi     E_DMD_T2_TS_DIV_172           = 0x135,
298*53ee8cc1Swenshuai.xi     E_DMD_T2_TS_DIV_288           = 0x136,
299*53ee8cc1Swenshuai.xi     E_DMD_T2_TS_DIV_432           = 0x137,
300*53ee8cc1Swenshuai.xi     E_DMD_T2_PARAM_NUM,
301*53ee8cc1Swenshuai.xi } DVBT2_PARAM;
302*53ee8cc1Swenshuai.xi 
303*53ee8cc1Swenshuai.xi typedef enum
304*53ee8cc1Swenshuai.xi {
305*53ee8cc1Swenshuai.xi     _T2_QPSK    = 0x0,
306*53ee8cc1Swenshuai.xi     _T2_16QAM   = 0x1,
307*53ee8cc1Swenshuai.xi     _T2_64QAM   = 0x2,
308*53ee8cc1Swenshuai.xi     _T2_256QAM    = 0x3,
309*53ee8cc1Swenshuai.xi     _T2_QAM_UNKNOWN     = 0xFF,
310*53ee8cc1Swenshuai.xi } DMD_T2_CONSTEL;
311*53ee8cc1Swenshuai.xi 
312*53ee8cc1Swenshuai.xi typedef enum
313*53ee8cc1Swenshuai.xi {
314*53ee8cc1Swenshuai.xi     _T2_CR1Y2   = 0x0,
315*53ee8cc1Swenshuai.xi     _T2_CR3Y5   = 0x1,
316*53ee8cc1Swenshuai.xi     _T2_CR2Y3   = 0x2,
317*53ee8cc1Swenshuai.xi     _T2_CR3Y4   = 0x3,
318*53ee8cc1Swenshuai.xi     _T2_CR4Y5   = 0x4,
319*53ee8cc1Swenshuai.xi     _T2_CR5Y6   = 0x5,
320*53ee8cc1Swenshuai.xi     _T2_CR_UNKNOWN     = 0xFF,
321*53ee8cc1Swenshuai.xi } DMD_T2_CODERATE;
322*53ee8cc1Swenshuai.xi 
323*53ee8cc1Swenshuai.xi typedef struct
324*53ee8cc1Swenshuai.xi {
325*53ee8cc1Swenshuai.xi     DMD_T2_CONSTEL         constel;
326*53ee8cc1Swenshuai.xi     DMD_T2_CODERATE        code_rate;
327*53ee8cc1Swenshuai.xi     float               p_ref;
328*53ee8cc1Swenshuai.xi }DMD_T2_SSI_DBM_NORDIGP1;
329*53ee8cc1Swenshuai.xi 
330*53ee8cc1Swenshuai.xi typedef struct
331*53ee8cc1Swenshuai.xi {
332*53ee8cc1Swenshuai.xi     DMD_T2_CONSTEL   constel;
333*53ee8cc1Swenshuai.xi     DMD_T2_CODERATE   code_rate;
334*53ee8cc1Swenshuai.xi     float   cn_ref;
335*53ee8cc1Swenshuai.xi }DMD_T2_SQI_CN_NORDIGP1;
336*53ee8cc1Swenshuai.xi 
337*53ee8cc1Swenshuai.xi 
338*53ee8cc1Swenshuai.xi // For Interrupt mode
339*53ee8cc1Swenshuai.xi typedef enum
340*53ee8cc1Swenshuai.xi {
341*53ee8cc1Swenshuai.xi     E_DMD_DVBT2_INT_UNKNOWN=0,
342*53ee8cc1Swenshuai.xi     E_DMD_DVBT2_INT_LOCK,
343*53ee8cc1Swenshuai.xi     E_DMD_DVBT2_INT_UNLOCK
344*53ee8cc1Swenshuai.xi } DMD_DVBT2_INT_TYPE;
345*53ee8cc1Swenshuai.xi 
346*53ee8cc1Swenshuai.xi #ifdef UFO_DEMOD_DVBT2_SUPPORT_DMD_INT
347*53ee8cc1Swenshuai.xi typedef void (*fpIntCallBack)(MS_U8 u8arg);
348*53ee8cc1Swenshuai.xi #endif
349*53ee8cc1Swenshuai.xi 
350*53ee8cc1Swenshuai.xi 
351*53ee8cc1Swenshuai.xi /// For demod init
352*53ee8cc1Swenshuai.xi typedef struct
353*53ee8cc1Swenshuai.xi {
354*53ee8cc1Swenshuai.xi     // tuner parameter
355*53ee8cc1Swenshuai.xi     MS_U8 u8SarChannel;
356*53ee8cc1Swenshuai.xi     DMD_RFAGC_SSI *pTuner_RfagcSsi;
357*53ee8cc1Swenshuai.xi     MS_U16 u16Tuner_RfagcSsi_Size;
358*53ee8cc1Swenshuai.xi     DMD_IFAGC_SSI *pTuner_IfagcSsi_LoRef;
359*53ee8cc1Swenshuai.xi     MS_U16 u16Tuner_IfagcSsi_LoRef_Size;
360*53ee8cc1Swenshuai.xi     DMD_IFAGC_SSI *pTuner_IfagcSsi_HiRef;
361*53ee8cc1Swenshuai.xi     MS_U16 u16Tuner_IfagcSsi_HiRef_Size;
362*53ee8cc1Swenshuai.xi     DMD_IFAGC_ERR *pTuner_IfagcErr_LoRef;
363*53ee8cc1Swenshuai.xi     MS_U16 u16Tuner_IfagcErr_LoRef_Size;
364*53ee8cc1Swenshuai.xi     DMD_IFAGC_ERR *pTuner_IfagcErr_HiRef;
365*53ee8cc1Swenshuai.xi     MS_U16 u16Tuner_IfagcErr_HiRef_Size;
366*53ee8cc1Swenshuai.xi     DMD_T2_SQI_CN_NORDIGP1 *pSqiCnNordigP1;
367*53ee8cc1Swenshuai.xi     MS_U16 u16SqiCnNordigP1_Size;
368*53ee8cc1Swenshuai.xi 
369*53ee8cc1Swenshuai.xi     // register init
370*53ee8cc1Swenshuai.xi     MS_U8 *u8DMD_DVBT2_DSPRegInitExt; // TODO use system variable type
371*53ee8cc1Swenshuai.xi     MS_U8 u8DMD_DVBT2_DSPRegInitSize;
372*53ee8cc1Swenshuai.xi     MS_U8 *u8DMD_DVBT2_InitExt; // TODO use system variable type
373*53ee8cc1Swenshuai.xi     MS_U32  u32EqStartAddr;
374*53ee8cc1Swenshuai.xi     MS_U32  u32TdiStartAddr;
375*53ee8cc1Swenshuai.xi     MS_U32  u32DjbStartAddr;
376*53ee8cc1Swenshuai.xi     MS_U32  u32FwStartAddr;
377*53ee8cc1Swenshuai.xi } DMD_DVBT2_InitData;
378*53ee8cc1Swenshuai.xi 
379*53ee8cc1Swenshuai.xi typedef enum
380*53ee8cc1Swenshuai.xi {
381*53ee8cc1Swenshuai.xi     E_DMD_DVBT2_FAIL=0,
382*53ee8cc1Swenshuai.xi     E_DMD_DVBT2_OK=1
383*53ee8cc1Swenshuai.xi } DMD_DVBT2_Result;
384*53ee8cc1Swenshuai.xi 
385*53ee8cc1Swenshuai.xi 
386*53ee8cc1Swenshuai.xi typedef enum
387*53ee8cc1Swenshuai.xi {
388*53ee8cc1Swenshuai.xi     E_DMD_DVBT2_MODULATION_INFO,
389*53ee8cc1Swenshuai.xi     E_DMD_DVBT2_DEMOD_INFO,
390*53ee8cc1Swenshuai.xi     E_DMD_DVBT2_LOCK_INFO,
391*53ee8cc1Swenshuai.xi     E_DMD_DVBT2_PRESFO_INFO,
392*53ee8cc1Swenshuai.xi     E_DMD_DVBT2_LOCK_TIME_INFO,
393*53ee8cc1Swenshuai.xi     E_DMD_DVBT2_BER_INFO,
394*53ee8cc1Swenshuai.xi     E_DMD_DVBT2_AGC_INFO,
395*53ee8cc1Swenshuai.xi } DMD_DVBT2_INFO_TYPE;
396*53ee8cc1Swenshuai.xi 
397*53ee8cc1Swenshuai.xi typedef struct
398*53ee8cc1Swenshuai.xi {
399*53ee8cc1Swenshuai.xi     MS_U16 u16Version;
400*53ee8cc1Swenshuai.xi     MS_U8 u16DemodState;	//
401*53ee8cc1Swenshuai.xi 	float SfoValue; //
402*53ee8cc1Swenshuai.xi 	float TotalCfo; //
403*53ee8cc1Swenshuai.xi     MS_U16 u16ChannelLength; //
404*53ee8cc1Swenshuai.xi 	MS_U8 u8Fft; //
405*53ee8cc1Swenshuai.xi 	MS_U8 u8Constel; //
406*53ee8cc1Swenshuai.xi 	MS_U8 u8Gi; //
407*53ee8cc1Swenshuai.xi 	MS_U8 u8HpCr; //
408*53ee8cc1Swenshuai.xi 	MS_U8 u8LpCr; //
409*53ee8cc1Swenshuai.xi 	MS_U8 u8Hiearchy; //
410*53ee8cc1Swenshuai.xi 	MS_U8 u8Fd; //
411*53ee8cc1Swenshuai.xi 	MS_U8 u8ChLen; //
412*53ee8cc1Swenshuai.xi 	MS_U8 u8SnrSel;	//
413*53ee8cc1Swenshuai.xi 	MS_U8 u8PertoneNum; //
414*53ee8cc1Swenshuai.xi 	MS_U8 u8DigAci; //
415*53ee8cc1Swenshuai.xi 	MS_U8 u8FlagCi;	//
416*53ee8cc1Swenshuai.xi 	MS_U8 u8TdCoef;	//
417*53ee8cc1Swenshuai.xi } DMD_DVBT2_Info;
418*53ee8cc1Swenshuai.xi 
419*53ee8cc1Swenshuai.xi /********************************************************
420*53ee8cc1Swenshuai.xi *Constellation (b2 ~ b0)  : 0~3 => QPSK, 16QAM, 64QAM, 256QAM
421*53ee8cc1Swenshuai.xi *Code Rate (b5 ~ b3)   : 0~5 => 1/2, 3/5, 2/3, 3/4, 4/5, 5/6
422*53ee8cc1Swenshuai.xi *GI (b8 ~ b6)           : 0~6 => 1/32, 1/16, 1/8, 1/4, 1/128, 19/128, 19/256
423*53ee8cc1Swenshuai.xi *FFT (b11 ~ b9)        : 0~7 => 2K, 8K, 4K, 1K, 16K, 32K, 8KE, 32KE
424*53ee8cc1Swenshuai.xi *Preamble(b12)      : 0~1 => mixed, not_mixed
425*53ee8cc1Swenshuai.xi *S1_Signaling(b14~b13)   : 0~3 => t2_siso, t2_miso, "non_t2, reserved
426*53ee8cc1Swenshuai.xi *pilot_pattern(b18~b15)    : 0~8 => PP1, PP2, PP3, PP4, PP5, PP6, PP7, PP8
427*53ee8cc1Swenshuai.xi *BW_Extend(b19)             : 0~1 => normal, extension
428*53ee8cc1Swenshuai.xi *PAPR(b22~b20)              : 0~4 => none, ace, tr, tr_and_ace, reserved
429*53ee8cc1Swenshuai.xi *OFDM_SYMBOLS_PER_FRAME	: 4~2098
430*53ee8cc1Swenshuai.xi *PLP_ROTATION	: 0/1 => none, rotated constellation
431*53ee8cc1Swenshuai.xi *PLP_FEC_TYPE	: 0/1 => LDPC_16K, LDPC_64K
432*53ee8cc1Swenshuai.xi *NUM_PLP	: 1~255
433*53ee8cc1Swenshuai.xi *PLP_TYPE	: 0~2 => common, Type 1, Type 2
434*53ee8cc1Swenshuai.xi *PLP_TIME_IL_TYPE	: 0/1
435*53ee8cc1Swenshuai.xi *PLP_TIME_IL_LENGTH	: 0~3
436*53ee8cc1Swenshuai.xi *DAT_ISSY	: 0/1
437*53ee8cc1Swenshuai.xi *T2_PLP_MODE	: 0/1: Normal mode /High Efficiency Mode
438*53ee8cc1Swenshuai.xi *L1_MODULATION	: 0~3 => BPSK, QPSK, 16QAM, 64QAM
439*53ee8cc1Swenshuai.xi *T2_NUM_T2_FRAMES	: 2 ~ 255
440*53ee8cc1Swenshuai.xi *T2_PLP_NUM_BLOCKS_MAX :
441*53ee8cc1Swenshuai.xi *FEF_ENABLE	: 0/1
442*53ee8cc1Swenshuai.xi  ********************************/
443*53ee8cc1Swenshuai.xi typedef enum
444*53ee8cc1Swenshuai.xi {
445*53ee8cc1Swenshuai.xi     T2_MODUL_MODE,
446*53ee8cc1Swenshuai.xi     T2_FFT_VALUE,
447*53ee8cc1Swenshuai.xi     T2_GUARD_INTERVAL,
448*53ee8cc1Swenshuai.xi     T2_CODE_RATE,
449*53ee8cc1Swenshuai.xi     T2_PREAMBLE,
450*53ee8cc1Swenshuai.xi     T2_S1_SIGNALLING,
451*53ee8cc1Swenshuai.xi     T2_PILOT_PATTERN,
452*53ee8cc1Swenshuai.xi     T2_BW_EXT,
453*53ee8cc1Swenshuai.xi     T2_PAPR_REDUCTION,
454*53ee8cc1Swenshuai.xi     T2_OFDM_SYMBOLS_PER_FRAME,
455*53ee8cc1Swenshuai.xi     T2_PLP_ROTATION,
456*53ee8cc1Swenshuai.xi     T2_PLP_FEC_TYPE,
457*53ee8cc1Swenshuai.xi     T2_NUM_PLP,
458*53ee8cc1Swenshuai.xi 	T2_PLP_TYPE,
459*53ee8cc1Swenshuai.xi 	T2_PLP_TIME_IL_TYPE,
460*53ee8cc1Swenshuai.xi 	T2_PLP_TIME_IL_LENGTH,
461*53ee8cc1Swenshuai.xi 	T2_DAT_ISSY,
462*53ee8cc1Swenshuai.xi 	T2_PLP_MODE,
463*53ee8cc1Swenshuai.xi 	T2_L1_MODULATION,
464*53ee8cc1Swenshuai.xi 	T2_NUM_T2_FRAMES,
465*53ee8cc1Swenshuai.xi 	T2_PLP_NUM_BLOCKS_MAX,
466*53ee8cc1Swenshuai.xi 	T2_FEF_ENABLE,
467*53ee8cc1Swenshuai.xi     T2_PARAM_MAX_NUM,
468*53ee8cc1Swenshuai.xi } DMD_DVBT2_SIGNAL_INFO;
469*53ee8cc1Swenshuai.xi 
470*53ee8cc1Swenshuai.xi //typedef void(*P_DMD_ISR_Proc)(MS_U8 u8DMDID);
471*53ee8cc1Swenshuai.xi 
472*53ee8cc1Swenshuai.xi 
473*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
474*53ee8cc1Swenshuai.xi //  Function and Variable
475*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
476*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
477*53ee8cc1Swenshuai.xi /// MDrv_DMD_DVBT2_Init
478*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
479*53ee8cc1Swenshuai.xi extern DLL_PUBLIC MS_BOOL MDrv_DMD_DVBT2_Init(DMD_DVBT2_InitData *pDMD_DVBT2_InitData, MS_U32 u32InitDataLen);
480*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
481*53ee8cc1Swenshuai.xi /// Should be called when exit VD input source
482*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
483*53ee8cc1Swenshuai.xi extern DLL_PUBLIC MS_BOOL MDrv_DMD_DVBT2_Exit(void);
484*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
485*53ee8cc1Swenshuai.xi /// Set detailed level of DVBT2 driver debug message
486*53ee8cc1Swenshuai.xi /// u8DbgLevel : debug level for Parallel Flash driver\n
487*53ee8cc1Swenshuai.xi /// AVD_DBGLV_NONE,    ///< disable all the debug message\n
488*53ee8cc1Swenshuai.xi /// AVD_DBGLV_INFO,    ///< information\n
489*53ee8cc1Swenshuai.xi /// AVD_DBGLV_NOTICE,  ///< normal but significant condition\n
490*53ee8cc1Swenshuai.xi /// AVD_DBGLV_WARNING, ///< warning conditions\n
491*53ee8cc1Swenshuai.xi /// AVD_DBGLV_ERR,     ///< error conditions\n
492*53ee8cc1Swenshuai.xi /// AVD_DBGLV_CRIT,    ///< critical conditions\n
493*53ee8cc1Swenshuai.xi /// AVD_DBGLV_ALERT,   ///< action must be taken immediately\n
494*53ee8cc1Swenshuai.xi /// AVD_DBGLV_EMERG,   ///< system is unusable\n
495*53ee8cc1Swenshuai.xi /// AVD_DBGLV_DEBUG,   ///< debug-level messages\n
496*53ee8cc1Swenshuai.xi /// @return TRUE : succeed
497*53ee8cc1Swenshuai.xi /// @return FALSE : failed to set the debug level
498*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
499*53ee8cc1Swenshuai.xi extern DLL_PUBLIC MS_BOOL MDrv_DMD_DVBT2_SetDbgLevel(DMD_T2_DbgLv u8DbgLevel);
500*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
501*53ee8cc1Swenshuai.xi /// Get the information of DVBT2 driver\n
502*53ee8cc1Swenshuai.xi /// @return the pointer to the driver information
503*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
504*53ee8cc1Swenshuai.xi extern DLL_PUBLIC DMD_DVBT2_Info* MDrv_DMD_DVBT2_GetInfo(DMD_DVBT2_INFO_TYPE eInfoType);
505*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
506*53ee8cc1Swenshuai.xi /// Get DVBT2 driver version
507*53ee8cc1Swenshuai.xi /// when get ok, return the pointer to the driver version
508*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
509*53ee8cc1Swenshuai.xi extern DLL_PUBLIC MS_BOOL MDrv_DMD_DVBT2_GetLibVer(const MSIF_Version **ppVersion);
510*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
511*53ee8cc1Swenshuai.xi /// To get DVBT2's register  value, only for special purpose.\n
512*53ee8cc1Swenshuai.xi /// u16Addr       : the address of DVBT2's register\n
513*53ee8cc1Swenshuai.xi /// return the value of AFEC's register\n
514*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
515*53ee8cc1Swenshuai.xi extern DLL_PUBLIC MS_BOOL MDrv_DMD_DVBT2_GetReg(MS_U16 u16Addr, MS_U8 *pu8Data);
516*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
517*53ee8cc1Swenshuai.xi /// To set DVBT2's register value, only for special purpose.\n
518*53ee8cc1Swenshuai.xi /// u16Addr       : the address of DVBT2's register\n
519*53ee8cc1Swenshuai.xi /// u8Value        : the value to be set\n
520*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
521*53ee8cc1Swenshuai.xi extern DLL_PUBLIC MS_BOOL MDrv_DMD_DVBT2_SetReg(MS_U16 u16Addr, MS_U8 u8Data);
522*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
523*53ee8cc1Swenshuai.xi /// Get DVBT2 FW version
524*53ee8cc1Swenshuai.xi /// u16Addr       : the address of DVBT's register\n
525*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
526*53ee8cc1Swenshuai.xi extern DLL_PUBLIC MS_BOOL MDrv_DMD_DVBT2_GetFWVer(MS_U16 *ver);
527*53ee8cc1Swenshuai.xi 
528*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
529*53ee8cc1Swenshuai.xi /// MDrv_DMD_DVBT2_SetSerialControl
530*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
531*53ee8cc1Swenshuai.xi extern DLL_PUBLIC MS_BOOL MDrv_DMD_DVBT2_SetSerialControl(MS_BOOL bEnable);
532*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
533*53ee8cc1Swenshuai.xi /// MDrv_DMD_DVBT2_SetReset
534*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
535*53ee8cc1Swenshuai.xi extern DLL_PUBLIC MS_BOOL MDrv_DMD_DVBT2_SetReset(void);
536*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
537*53ee8cc1Swenshuai.xi /// MDrv_DMD_DVBT2_SetConfig
538*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
539*53ee8cc1Swenshuai.xi extern DLL_PUBLIC MS_BOOL MDrv_DMD_DVBT2_SetConfig(DMD_DVBT2_RF_CHANNEL_BANDWIDTH BW, MS_BOOL bSerialTS, MS_U8 u8PlpID);
540*53ee8cc1Swenshuai.xi ///////////////////////////////////////////////////////////////////////////////
541*53ee8cc1Swenshuai.xi /// MDrv_DMD_DVBT2_SetActive
542*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
543*53ee8cc1Swenshuai.xi extern DLL_PUBLIC MS_BOOL MDrv_DMD_DVBT2_SetActive(MS_BOOL bEnable);
544*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
545*53ee8cc1Swenshuai.xi /// MDrv_DMD_DVBT2_Get_Lock
546*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
547*53ee8cc1Swenshuai.xi extern DLL_PUBLIC MS_BOOL MDrv_DMD_DVBT2_GetLock(DMD_DVBT2_GETLOCK_TYPE eType, DMD_T2_LOCK_STATUS *eLockStatus);
548*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
549*53ee8cc1Swenshuai.xi /// MDrv_DMD_DVBT2_GetSignalStrength
550*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
551*53ee8cc1Swenshuai.xi extern DLL_PUBLIC MS_BOOL MDrv_DMD_DVBT2_GetSignalStrength(MS_U16 *u16Strength);
552*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
553*53ee8cc1Swenshuai.xi /// MDrv_DMD_DVBT2_GetSignalStrengthWithRFPower
554*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
555*53ee8cc1Swenshuai.xi extern DLL_PUBLIC MS_BOOL MDrv_DMD_DVBT2_GetSignalStrengthWithRFPower(MS_U16 *u16Strength, float fRFPowerDbm);
556*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
557*53ee8cc1Swenshuai.xi /// MDrv_DMD_DVBT2_GetSignalQuality
558*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
559*53ee8cc1Swenshuai.xi extern DLL_PUBLIC MS_BOOL MDrv_DMD_DVBT2_GetSignalQuality(MS_U16 *u16Quality);
560*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
561*53ee8cc1Swenshuai.xi /// MDrv_DMD_DVBT2_GetSignalQualityWithRFPower
562*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
563*53ee8cc1Swenshuai.xi extern DLL_PUBLIC MS_BOOL MDrv_DMD_DVBT2_GetSignalQualityWithRFPower(MS_U16 *u16Quality, float fRFPowerDbm);
564*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
565*53ee8cc1Swenshuai.xi /// MDrv_DMD_DVBT2_GetSNR
566*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
567*53ee8cc1Swenshuai.xi extern DLL_PUBLIC MS_BOOL MDrv_DMD_DVBT2_GetSNR(float *fSNR);
568*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
569*53ee8cc1Swenshuai.xi /// MDrv_DMD_DVBT2_GetPostLDPCBer
570*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
571*53ee8cc1Swenshuai.xi extern DLL_PUBLIC MS_BOOL MDrv_DMD_DVBT2_GetPostLdpcBer(float *ber);
572*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
573*53ee8cc1Swenshuai.xi /// MDrv_DMD_DVBT2_GetPreLDPCBer
574*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
575*53ee8cc1Swenshuai.xi extern DLL_PUBLIC MS_BOOL MDrv_DMD_DVBT2_GetPreLdpcBer(float *ber);
576*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
577*53ee8cc1Swenshuai.xi /// MDrv_DMD_DVBT2_GetPacketErr
578*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
579*53ee8cc1Swenshuai.xi extern DLL_PUBLIC MS_BOOL MDrv_DMD_DVBT2_GetPacketErr(MS_U16 *pktErr);
580*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
581*53ee8cc1Swenshuai.xi /// MDrv_DMD_DVBT2_GetL1Info
582*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
583*53ee8cc1Swenshuai.xi extern DLL_PUBLIC MS_BOOL MDrv_DMD_DVBT2_GetL1Info(MS_U16 *u16Info, DMD_DVBT2_SIGNAL_INFO eSignalType);
584*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
585*53ee8cc1Swenshuai.xi /// MDrv_DMD_DVBT2_GetFreqOffset
586*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
587*53ee8cc1Swenshuai.xi extern DLL_PUBLIC MS_BOOL MDrv_DMD_DVBT2_GetFreqOffset(float *pFreqOff);
588*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
589*53ee8cc1Swenshuai.xi /// MDrv_DMD_DVBT2_NORDIG_SSI_Table_Write
590*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
591*53ee8cc1Swenshuai.xi extern DLL_PUBLIC MS_BOOL MDrv_DMD_DVBT2_NORDIG_SSI_Table_Write(DMD_T2_CONSTEL constel, DMD_T2_CODERATE code_rate, float write_value);
592*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
593*53ee8cc1Swenshuai.xi /// MDrv_DMD_DVBT2_NORDIG_SSI_Table_Read
594*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
595*53ee8cc1Swenshuai.xi extern DLL_PUBLIC MS_BOOL MDrv_DMD_DVBT2_NORDIG_SSI_Table_Read(DMD_T2_CONSTEL constel, DMD_T2_CODERATE code_rate, float *read_value);
596*53ee8cc1Swenshuai.xi 
597*53ee8cc1Swenshuai.xi extern DLL_PUBLIC MS_U32 MDrv_DMD_DVBT2_SetPowerState(EN_POWER_MODE u16PowerState);
598*53ee8cc1Swenshuai.xi 
599*53ee8cc1Swenshuai.xi extern DLL_PUBLIC MS_BOOL MDrv_DMD_DVBT2_GetPlpBitMap(MS_U8* u8PlpBitMap);
600*53ee8cc1Swenshuai.xi 
601*53ee8cc1Swenshuai.xi extern DLL_PUBLIC MS_BOOL MDrv_DMD_DVBT2_GetPlpGroupID(MS_U8 u8PlpID, MS_U8* u8GroupID);
602*53ee8cc1Swenshuai.xi 
603*53ee8cc1Swenshuai.xi extern DLL_PUBLIC MS_BOOL MDrv_DMD_DVBT2_SetPlpID(MS_U8 u8PlpID, MS_U8 u8GroupID);
604*53ee8cc1Swenshuai.xi 
605*53ee8cc1Swenshuai.xi #ifdef UFO_DEMOD_DVBT2_SUPPORT_DMD_INT
606*53ee8cc1Swenshuai.xi MS_BOOL MDrv_DMD_DVBT2_Reg_INT_CB(fpIntCallBack fpCBReg);
607*53ee8cc1Swenshuai.xi #endif
608*53ee8cc1Swenshuai.xi 
609*53ee8cc1Swenshuai.xi #ifdef __cplusplus
610*53ee8cc1Swenshuai.xi }
611*53ee8cc1Swenshuai.xi #endif
612*53ee8cc1Swenshuai.xi 
613*53ee8cc1Swenshuai.xi 
614*53ee8cc1Swenshuai.xi #endif // _DRV_DVBT_H_
615*53ee8cc1Swenshuai.xi 
616