xref: /utopia/UTPA2-700.0.x/mxlib/include/drvDMD_ISDBT.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_ISDBT.h
98*53ee8cc1Swenshuai.xi /// @brief  ISDBT Driver Interface
99*53ee8cc1Swenshuai.xi /// @author MStar Semiconductor Inc.
100*53ee8cc1Swenshuai.xi ///////////////////////////////////////////////////////////////////////////////////////////////////
101*53ee8cc1Swenshuai.xi 
102*53ee8cc1Swenshuai.xi #ifndef _DRV_ISDBT_H_
103*53ee8cc1Swenshuai.xi #define _DRV_ISDBT_H_
104*53ee8cc1Swenshuai.xi 
105*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
106*53ee8cc1Swenshuai.xi //  Driver Capability
107*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
108*53ee8cc1Swenshuai.xi 
109*53ee8cc1Swenshuai.xi #if !defined UTPA2
110*53ee8cc1Swenshuai.xi #define DMD_ISDBT_UTOPIA_EN                  1
111*53ee8cc1Swenshuai.xi #define DMD_ISDBT_UTOPIA2_EN                 0
112*53ee8cc1Swenshuai.xi #else
113*53ee8cc1Swenshuai.xi #define DMD_ISDBT_UTOPIA_EN                  0
114*53ee8cc1Swenshuai.xi #define DMD_ISDBT_UTOPIA2_EN                 1
115*53ee8cc1Swenshuai.xi #endif
116*53ee8cc1Swenshuai.xi 
117*53ee8cc1Swenshuai.xi #define DMD_ISDBT_STR_EN                     1
118*53ee8cc1Swenshuai.xi #define DMD_ISDBT_MULTI_THREAD_SAFE          0
119*53ee8cc1Swenshuai.xi #define DMD_ISDBT_MULTI_DMD_EN               1
120*53ee8cc1Swenshuai.xi #define DMD_ISDBT_EXTDMD_EN                  1
121*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
122*53ee8cc1Swenshuai.xi //  Include Files
123*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
124*53ee8cc1Swenshuai.xi 
125*53ee8cc1Swenshuai.xi #include "MsTypes.h"
126*53ee8cc1Swenshuai.xi #if DMD_ISDBT_UTOPIA_EN || DMD_ISDBT_UTOPIA2_EN
127*53ee8cc1Swenshuai.xi #ifndef MSIF_TAG
128*53ee8cc1Swenshuai.xi #include "MsVersion.h"
129*53ee8cc1Swenshuai.xi #endif
130*53ee8cc1Swenshuai.xi #include "MsCommon.h"
131*53ee8cc1Swenshuai.xi #endif
132*53ee8cc1Swenshuai.xi #if DMD_ISDBT_UTOPIA2_EN || DMD_ISDBT_STR_EN
133*53ee8cc1Swenshuai.xi #include "utopia.h"
134*53ee8cc1Swenshuai.xi #endif
135*53ee8cc1Swenshuai.xi 
136*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
137*53ee8cc1Swenshuai.xi //  Driver Capability
138*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
139*53ee8cc1Swenshuai.xi 
140*53ee8cc1Swenshuai.xi 
141*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
142*53ee8cc1Swenshuai.xi //  Macro and Define
143*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
144*53ee8cc1Swenshuai.xi 
145*53ee8cc1Swenshuai.xi #ifndef DLL_PUBLIC
146*53ee8cc1Swenshuai.xi #define DLL_PUBLIC
147*53ee8cc1Swenshuai.xi #endif
148*53ee8cc1Swenshuai.xi 
149*53ee8cc1Swenshuai.xi #if DMD_ISDBT_MULTI_DMD_EN
150*53ee8cc1Swenshuai.xi #define DMD_ISDBT_MAX_DEMOD_NUM          2
151*53ee8cc1Swenshuai.xi #else
152*53ee8cc1Swenshuai.xi #define DMD_ISDBT_MAX_DEMOD_NUM          1
153*53ee8cc1Swenshuai.xi #endif
154*53ee8cc1Swenshuai.xi 
155*53ee8cc1Swenshuai.xi #if DMD_ISDBT_UTOPIA_EN || DMD_ISDBT_UTOPIA2_EN
156*53ee8cc1Swenshuai.xi #define MSIF_DMD_ISDBT_LIB_CODE          {'D','M','D','_','I','S','D','B','T','_'} //Lib code
157*53ee8cc1Swenshuai.xi #define MSIF_DMD_ISDBT_LIBVER            {'0','0'}                                 //LIB version
158*53ee8cc1Swenshuai.xi #define MSIF_DMD_ISDBT_BUILDNUM          {'0','0'}                                 //Build Number
159*53ee8cc1Swenshuai.xi #define MSIF_DMD_ISDBT_CHANGELIST        {'0','0','0','0','0','0','0','0'}         //P4 ChangeList Number
160*53ee8cc1Swenshuai.xi 
161*53ee8cc1Swenshuai.xi #define DMD_ISDBT_VER                    /* Character String for DRV/API version             */  \
162*53ee8cc1Swenshuai.xi     MSIF_TAG,                            /* 'MSIF'                                           */  \
163*53ee8cc1Swenshuai.xi     MSIF_CLASS,                          /* '00'                                             */  \
164*53ee8cc1Swenshuai.xi     MSIF_CUS,                            /* 0x0000                                           */  \
165*53ee8cc1Swenshuai.xi     MSIF_MOD,                            /* 0x0000                                           */  \
166*53ee8cc1Swenshuai.xi     MSIF_CHIP,                                                                                   \
167*53ee8cc1Swenshuai.xi     MSIF_CPU,                                                                                    \
168*53ee8cc1Swenshuai.xi     MSIF_DMD_ISDBT_LIB_CODE,             /* IP__                                             */  \
169*53ee8cc1Swenshuai.xi     MSIF_DMD_ISDBT_LIBVER,               /* 0.0 ~ Z.Z                                        */  \
170*53ee8cc1Swenshuai.xi     MSIF_DMD_ISDBT_BUILDNUM,             /* 00 ~ 99                                          */  \
171*53ee8cc1Swenshuai.xi     MSIF_DMD_ISDBT_CHANGELIST,           /* CL#                                              */  \
172*53ee8cc1Swenshuai.xi     MSIF_OS
173*53ee8cc1Swenshuai.xi #endif // #if DMD_ISDBT_UTOPIA_EN || DMD_ISDBT_UTOPIA2_EN
174*53ee8cc1Swenshuai.xi 
175*53ee8cc1Swenshuai.xi #ifndef BIT_
176*53ee8cc1Swenshuai.xi #define BIT_(n)                             (1 << (n))
177*53ee8cc1Swenshuai.xi #endif
178*53ee8cc1Swenshuai.xi 
179*53ee8cc1Swenshuai.xi #define DMD_ISDBT_LOCK_FSA_TRACK_LOCK       BIT_(0)
180*53ee8cc1Swenshuai.xi #define DMD_ISDBT_LOCK_PSYNC_LOCK           BIT_(1)
181*53ee8cc1Swenshuai.xi #define DMD_ISDBT_LOCK_ICFO_CH_EXIST_LOCK   BIT_(2)
182*53ee8cc1Swenshuai.xi #define DMD_ISDBT_LOCK_FEC_LOCK             BIT_(3)
183*53ee8cc1Swenshuai.xi 
184*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
185*53ee8cc1Swenshuai.xi //  Type and Structure
186*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
187*53ee8cc1Swenshuai.xi 
188*53ee8cc1Swenshuai.xi typedef enum
189*53ee8cc1Swenshuai.xi {
190*53ee8cc1Swenshuai.xi     DMD_ISDBT_HAL_CMD_Exit = 0,
191*53ee8cc1Swenshuai.xi     DMD_ISDBT_HAL_CMD_InitClk,
192*53ee8cc1Swenshuai.xi     DMD_ISDBT_HAL_CMD_Download,
193*53ee8cc1Swenshuai.xi     DMD_ISDBT_HAL_CMD_FWVERSION,
194*53ee8cc1Swenshuai.xi     DMD_ISDBT_HAL_CMD_SoftReset,
195*53ee8cc1Swenshuai.xi     DMD_ISDBT_HAL_CMD_SetACICoef,
196*53ee8cc1Swenshuai.xi     DMD_ISDBT_HAL_CMD_SetISDBTMode,
197*53ee8cc1Swenshuai.xi     DMD_ISDBT_HAL_CMD_SetModeClean,
198*53ee8cc1Swenshuai.xi     DMD_ISDBT_HAL_CMD_Active,
199*53ee8cc1Swenshuai.xi     DMD_ISDBT_HAL_CMD_Check_FEC_Lock,
200*53ee8cc1Swenshuai.xi     DMD_ISDBT_HAL_CMD_Check_FSA_TRACK_Lock,
201*53ee8cc1Swenshuai.xi     DMD_ISDBT_HAL_CMD_Check_PSYNC_Lock,
202*53ee8cc1Swenshuai.xi     DMD_ISDBT_HAL_CMD_Check_ICFO_CH_EXIST_Lock,
203*53ee8cc1Swenshuai.xi     DMD_ISDBT_HAL_CMD_GetSignalCodeRate,
204*53ee8cc1Swenshuai.xi     DMD_ISDBT_HAL_CMD_GetSignalGuardInterval,
205*53ee8cc1Swenshuai.xi     DMD_ISDBT_HAL_CMD_GetSignalTimeInterleaving,
206*53ee8cc1Swenshuai.xi     DMD_ISDBT_HAL_CMD_GetSignalFFTValue,
207*53ee8cc1Swenshuai.xi     DMD_ISDBT_HAL_CMD_GetSignalModulation,
208*53ee8cc1Swenshuai.xi     DMD_ISDBT_HAL_CMD_ReadIFAGC,
209*53ee8cc1Swenshuai.xi     DMD_ISDBT_HAL_CMD_GetFreqOffset,
210*53ee8cc1Swenshuai.xi     DMD_ISDBT_HAL_CMD_GetSignalQuality,
211*53ee8cc1Swenshuai.xi     DMD_ISDBT_HAL_CMD_GetSignalQualityOfLayerA,
212*53ee8cc1Swenshuai.xi     DMD_ISDBT_HAL_CMD_GetSignalQualityOfLayerB,
213*53ee8cc1Swenshuai.xi     DMD_ISDBT_HAL_CMD_GetSignalQualityOfLayerC,
214*53ee8cc1Swenshuai.xi     DMD_ISDBT_HAL_CMD_GetSignalQualityCombine,
215*53ee8cc1Swenshuai.xi     DMD_ISDBT_HAL_CMD_GetSNR,
216*53ee8cc1Swenshuai.xi     DMD_ISDBT_HAL_CMD_GetPreViterbiBer,
217*53ee8cc1Swenshuai.xi     DMD_ISDBT_HAL_CMD_GetPostViterbiBer,
218*53ee8cc1Swenshuai.xi     DMD_ISDBT_HAL_CMD_Read_PKT_ERR,
219*53ee8cc1Swenshuai.xi     DMD_ISDBT_HAL_CMD_TS_INTERFACE_CONFIG,
220*53ee8cc1Swenshuai.xi     DMD_ISDBT_HAL_CMD_IIC_Bypass_Mode,
221*53ee8cc1Swenshuai.xi     DMD_ISDBT_HAL_CMD_SSPI_TO_GPIO,
222*53ee8cc1Swenshuai.xi     DMD_ISDBT_HAL_CMD_GPIO_GET_LEVEL,
223*53ee8cc1Swenshuai.xi     DMD_ISDBT_HAL_CMD_GPIO_SET_LEVEL,
224*53ee8cc1Swenshuai.xi     DMD_ISDBT_HAL_CMD_GPIO_OUT_ENABLE,
225*53ee8cc1Swenshuai.xi     DMD_ISDBT_HAL_CMD_DoIQSwap,
226*53ee8cc1Swenshuai.xi     DMD_ISDBT_HAL_CMD_GET_REG,
227*53ee8cc1Swenshuai.xi     DMD_ISDBT_HAL_CMD_SET_REG
228*53ee8cc1Swenshuai.xi } DMD_ISDBT_HAL_COMMAND;
229*53ee8cc1Swenshuai.xi 
230*53ee8cc1Swenshuai.xi typedef enum
231*53ee8cc1Swenshuai.xi {
232*53ee8cc1Swenshuai.xi     E_ISDBT_Layer_A = 0x00,
233*53ee8cc1Swenshuai.xi     E_ISDBT_Layer_B = 0x01,
234*53ee8cc1Swenshuai.xi     E_ISDBT_Layer_C = 0x02,
235*53ee8cc1Swenshuai.xi     E_ISDBT_Layer_INVALID,
236*53ee8cc1Swenshuai.xi } EN_ISDBT_Layer;
237*53ee8cc1Swenshuai.xi 
238*53ee8cc1Swenshuai.xi typedef enum
239*53ee8cc1Swenshuai.xi {
240*53ee8cc1Swenshuai.xi     E_ISDBT_FFT_2K = 0x00,  /// 2K
241*53ee8cc1Swenshuai.xi     E_ISDBT_FFT_4K = 0x01,  /// 4k
242*53ee8cc1Swenshuai.xi     E_ISDBT_FFT_8K = 0x02,  /// 8k
243*53ee8cc1Swenshuai.xi     E_ISDBT_FFT_INVALID,    /// invalid indicator
244*53ee8cc1Swenshuai.xi } EN_ISDBT_FFT_VAL;
245*53ee8cc1Swenshuai.xi 
246*53ee8cc1Swenshuai.xi typedef enum
247*53ee8cc1Swenshuai.xi {
248*53ee8cc1Swenshuai.xi     E_ISDBT_DQPSK   = 0,   /// DQPSK
249*53ee8cc1Swenshuai.xi     E_ISDBT_QPSK    = 1,   /// QPSK
250*53ee8cc1Swenshuai.xi     E_ISDBT_16QAM   = 2,   /// 16QAM
251*53ee8cc1Swenshuai.xi     E_ISDBT_64QAM   = 3,   /// 64QAM
252*53ee8cc1Swenshuai.xi     E_ISDBT_QAM_INVALID,   /// invalid indicator
253*53ee8cc1Swenshuai.xi } EN_ISDBT_CONSTEL_TYPE;
254*53ee8cc1Swenshuai.xi 
255*53ee8cc1Swenshuai.xi typedef enum
256*53ee8cc1Swenshuai.xi {
257*53ee8cc1Swenshuai.xi     E_ISDBT_CODERATE_1_2 = 0,   /// 1/2
258*53ee8cc1Swenshuai.xi     E_ISDBT_CODERATE_2_3 = 1,   /// 2/3
259*53ee8cc1Swenshuai.xi     E_ISDBT_CODERATE_3_4 = 2,   /// 3/4
260*53ee8cc1Swenshuai.xi     E_ISDBT_CODERATE_5_6 = 3,   /// 5/6
261*53ee8cc1Swenshuai.xi     E_ISDBT_CODERATE_7_8 = 4,   /// 7/8
262*53ee8cc1Swenshuai.xi     E_ISDBT_CODERATE_INVALID,   /// invalid indicator
263*53ee8cc1Swenshuai.xi } EN_ISDBT_CODE_RATE;
264*53ee8cc1Swenshuai.xi 
265*53ee8cc1Swenshuai.xi typedef enum
266*53ee8cc1Swenshuai.xi {
267*53ee8cc1Swenshuai.xi     E_ISDBT_GUARD_INTERVAL_1_4  = 0,   /// 1/4
268*53ee8cc1Swenshuai.xi     E_ISDBT_GUARD_INTERVAL_1_8  = 1,   /// 1/8
269*53ee8cc1Swenshuai.xi     E_ISDBT_GUARD_INTERVAL_1_16 = 2,   /// 1/16
270*53ee8cc1Swenshuai.xi     E_ISDBT_GUARD_INTERVAL_1_32 = 3,   /// 1/32
271*53ee8cc1Swenshuai.xi     E_ISDBT_GUARD_INTERVAL_INVALID,    /// invalid indicator
272*53ee8cc1Swenshuai.xi } EN_ISDBT_GUARD_INTERVAL;
273*53ee8cc1Swenshuai.xi 
274*53ee8cc1Swenshuai.xi typedef enum
275*53ee8cc1Swenshuai.xi {
276*53ee8cc1Swenshuai.xi     // 2K mode
277*53ee8cc1Swenshuai.xi     E_ISDBT_2K_TDI_0 = 0,   /// Tdi = 0
278*53ee8cc1Swenshuai.xi     E_ISDBT_2K_TDI_4 = 1,   /// Tdi = 4
279*53ee8cc1Swenshuai.xi     E_ISDBT_2K_TDI_8 = 2,   /// Tdi = 8
280*53ee8cc1Swenshuai.xi     E_ISDBT_2K_TDI_16 = 3,  /// Tdi = 16
281*53ee8cc1Swenshuai.xi     // 4K mode
282*53ee8cc1Swenshuai.xi     E_ISDBT_4K_TDI_0 = 4,   /// Tdi = 0
283*53ee8cc1Swenshuai.xi     E_ISDBT_4K_TDI_2 = 5,   /// Tdi = 2
284*53ee8cc1Swenshuai.xi     E_ISDBT_4K_TDI_4 = 6,   /// Tdi = 4
285*53ee8cc1Swenshuai.xi     E_ISDBT_4K_TDI_8 = 7,   /// Tdi = 8
286*53ee8cc1Swenshuai.xi     // 8K mode
287*53ee8cc1Swenshuai.xi     E_ISDBT_8K_TDI_0 = 8,   /// Tdi = 0
288*53ee8cc1Swenshuai.xi     E_ISDBT_8K_TDI_1 = 9,   /// Tdi = 1
289*53ee8cc1Swenshuai.xi     E_ISDBT_8K_TDI_2 = 10,  /// Tdi = 2
290*53ee8cc1Swenshuai.xi     E_ISDBT_8K_TDI_4 = 11,  /// Tdi = 4
291*53ee8cc1Swenshuai.xi     E_ISDBT_TDI_INVALID,    /// invalid indicator
292*53ee8cc1Swenshuai.xi } EN_ISDBT_TIME_INTERLEAVING;
293*53ee8cc1Swenshuai.xi 
294*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED _ISDBT_MODULATION_MODE
295*53ee8cc1Swenshuai.xi {
296*53ee8cc1Swenshuai.xi     EN_ISDBT_CODE_RATE         eIsdbtCodeRate;
297*53ee8cc1Swenshuai.xi     EN_ISDBT_GUARD_INTERVAL    eIsdbtGI;
298*53ee8cc1Swenshuai.xi     EN_ISDBT_TIME_INTERLEAVING eIsdbtTDI;
299*53ee8cc1Swenshuai.xi     EN_ISDBT_FFT_VAL           eIsdbtFFT;
300*53ee8cc1Swenshuai.xi     EN_ISDBT_CONSTEL_TYPE      eIsdbtConstellation;
301*53ee8cc1Swenshuai.xi } sISDBT_MODULATION_MODE;
302*53ee8cc1Swenshuai.xi 
303*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED _DMD_ISDBT_GET_MODULATION
304*53ee8cc1Swenshuai.xi {
305*53ee8cc1Swenshuai.xi     EN_ISDBT_Layer        eIsdbtLayer;
306*53ee8cc1Swenshuai.xi     EN_ISDBT_CONSTEL_TYPE eConstellation;
307*53ee8cc1Swenshuai.xi } DMD_ISDBT_GET_MODULATION;
308*53ee8cc1Swenshuai.xi 
309*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED _DMD_ISDBT_GET_CodeRate
310*53ee8cc1Swenshuai.xi {
311*53ee8cc1Swenshuai.xi     EN_ISDBT_Layer     eIsdbtLayer;
312*53ee8cc1Swenshuai.xi     EN_ISDBT_CODE_RATE eCodeRate;
313*53ee8cc1Swenshuai.xi } DMD_ISDBT_GET_CodeRate;
314*53ee8cc1Swenshuai.xi 
315*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED _DMD_ISDBT_GET_TimeInterleaving
316*53ee8cc1Swenshuai.xi {
317*53ee8cc1Swenshuai.xi     EN_ISDBT_Layer             eIsdbtLayer;
318*53ee8cc1Swenshuai.xi     EN_ISDBT_TIME_INTERLEAVING eTimeInterleaving;
319*53ee8cc1Swenshuai.xi } DMD_ISDBT_GET_TimeInterleaving;
320*53ee8cc1Swenshuai.xi 
321*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED _DMD_ISDBT_GET_BER_VALUE
322*53ee8cc1Swenshuai.xi {
323*53ee8cc1Swenshuai.xi     EN_ISDBT_Layer eIsdbtLayer;
324*53ee8cc1Swenshuai.xi     #ifdef UTPA2
325*53ee8cc1Swenshuai.xi     MS_U32 BerValue;
326*53ee8cc1Swenshuai.xi     MS_U16 BerPeriod;
327*53ee8cc1Swenshuai.xi     #else
328*53ee8cc1Swenshuai.xi     float  fBerValue;
329*53ee8cc1Swenshuai.xi     #endif
330*53ee8cc1Swenshuai.xi } DMD_ISDBT_GET_BER_VALUE;
331*53ee8cc1Swenshuai.xi 
332*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED _DMD_ISDBT_GET_PKT_ERR
333*53ee8cc1Swenshuai.xi {
334*53ee8cc1Swenshuai.xi     EN_ISDBT_Layer eIsdbtLayer;
335*53ee8cc1Swenshuai.xi     MS_U16         u16PacketErr;
336*53ee8cc1Swenshuai.xi } DMD_ISDBT_GET_PKT_ERR;
337*53ee8cc1Swenshuai.xi 
338*53ee8cc1Swenshuai.xi #ifdef UTPA2
339*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED
340*53ee8cc1Swenshuai.xi {
341*53ee8cc1Swenshuai.xi     MS_U8  FFT_Mode;
342*53ee8cc1Swenshuai.xi     MS_S32 TdCfoRegValue;
343*53ee8cc1Swenshuai.xi     MS_S32 FdCfoRegValue;
344*53ee8cc1Swenshuai.xi     MS_S16 IcfoRegValue;
345*53ee8cc1Swenshuai.xi } DMD_ISDBT_CFO_DATA;
346*53ee8cc1Swenshuai.xi 
347*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED
348*53ee8cc1Swenshuai.xi {
349*53ee8cc1Swenshuai.xi     MS_U32 RegSNR;
350*53ee8cc1Swenshuai.xi     MS_U16 RegSnrObsNum;
351*53ee8cc1Swenshuai.xi } DMD_ISDBT_SNR_DATA;
352*53ee8cc1Swenshuai.xi #endif
353*53ee8cc1Swenshuai.xi 
354*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED
355*53ee8cc1Swenshuai.xi {
356*53ee8cc1Swenshuai.xi     MS_U8 u8Pin;
357*53ee8cc1Swenshuai.xi     union
358*53ee8cc1Swenshuai.xi     {
359*53ee8cc1Swenshuai.xi         MS_BOOL bLevel;
360*53ee8cc1Swenshuai.xi         MS_BOOL bIsOut;
361*53ee8cc1Swenshuai.xi     };
362*53ee8cc1Swenshuai.xi } DMD_ISDBT_GPIO_PIN_DATA;
363*53ee8cc1Swenshuai.xi 
364*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED
365*53ee8cc1Swenshuai.xi {
366*53ee8cc1Swenshuai.xi     MS_U16 u16Addr;
367*53ee8cc1Swenshuai.xi     MS_U8  u8Data;
368*53ee8cc1Swenshuai.xi } DMD_ISDBT_REG_DATA;
369*53ee8cc1Swenshuai.xi 
370*53ee8cc1Swenshuai.xi typedef enum
371*53ee8cc1Swenshuai.xi {
372*53ee8cc1Swenshuai.xi     DMD_ISDBT_DBGLV_NONE,    // disable all the debug message
373*53ee8cc1Swenshuai.xi     DMD_ISDBT_DBGLV_INFO,    // information
374*53ee8cc1Swenshuai.xi     DMD_ISDBT_DBGLV_NOTICE,  // normal but significant condition
375*53ee8cc1Swenshuai.xi     DMD_ISDBT_DBGLV_WARNING, // warning conditions
376*53ee8cc1Swenshuai.xi     DMD_ISDBT_DBGLV_ERR,     // error conditions
377*53ee8cc1Swenshuai.xi     DMD_ISDBT_DBGLV_CRIT,    // critical conditions
378*53ee8cc1Swenshuai.xi     DMD_ISDBT_DBGLV_ALERT,   // action must be taken immediately
379*53ee8cc1Swenshuai.xi     DMD_ISDBT_DBGLV_EMERG,   // system is unusable
380*53ee8cc1Swenshuai.xi     DMD_ISDBT_DBGLV_DEBUG,   // debug-level messages
381*53ee8cc1Swenshuai.xi } DMD_ISDBT_DbgLv;
382*53ee8cc1Swenshuai.xi 
383*53ee8cc1Swenshuai.xi typedef enum
384*53ee8cc1Swenshuai.xi {   DMD_ISDBT_DEMOD,
385*53ee8cc1Swenshuai.xi     DMD_ISDBT_DEMOD_6M = DMD_ISDBT_DEMOD,
386*53ee8cc1Swenshuai.xi     DMD_ISDBT_DEMOD_7M,
387*53ee8cc1Swenshuai.xi     DMD_ISDBT_DEMOD_8M,
388*53ee8cc1Swenshuai.xi     DMD_ISDBT_DEMOD_MAX,
389*53ee8cc1Swenshuai.xi     DMD_ISDBT_DEMOD_NULL = DMD_ISDBT_DEMOD_MAX,
390*53ee8cc1Swenshuai.xi } DMD_ISDBT_DEMOD_TYPE;
391*53ee8cc1Swenshuai.xi 
392*53ee8cc1Swenshuai.xi typedef enum
393*53ee8cc1Swenshuai.xi {
394*53ee8cc1Swenshuai.xi     DMD_ISDBT_GETLOCK,
395*53ee8cc1Swenshuai.xi     DMD_ISDBT_GETLOCK_FSA_TRACK_LOCK,
396*53ee8cc1Swenshuai.xi     DMD_ISDBT_GETLOCK_PSYNC_LOCK,
397*53ee8cc1Swenshuai.xi     DMD_ISDBT_GETLOCK_ICFO_CH_EXIST_LOCK,
398*53ee8cc1Swenshuai.xi     DMD_ISDBT_GETLOCK_FEC_LOCK
399*53ee8cc1Swenshuai.xi } DMD_ISDBT_GETLOCK_TYPE;
400*53ee8cc1Swenshuai.xi 
401*53ee8cc1Swenshuai.xi typedef enum
402*53ee8cc1Swenshuai.xi {
403*53ee8cc1Swenshuai.xi     DMD_ISDBT_LOCK,
404*53ee8cc1Swenshuai.xi     DMD_ISDBT_CHECKING,
405*53ee8cc1Swenshuai.xi     DMD_ISDBT_CHECKEND,
406*53ee8cc1Swenshuai.xi     DMD_ISDBT_UNLOCK,
407*53ee8cc1Swenshuai.xi     DMD_ISDBT_NULL,
408*53ee8cc1Swenshuai.xi } DMD_ISDBT_LOCK_STATUS;
409*53ee8cc1Swenshuai.xi 
410*53ee8cc1Swenshuai.xi /// For demod init
411*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED
412*53ee8cc1Swenshuai.xi {
413*53ee8cc1Swenshuai.xi     // init
414*53ee8cc1Swenshuai.xi     MS_U16 u16ISDBTIcfoChExistCheckTime;
415*53ee8cc1Swenshuai.xi     MS_U16 u16ISDBTFECLockCheckTime;
416*53ee8cc1Swenshuai.xi 
417*53ee8cc1Swenshuai.xi     // register init
418*53ee8cc1Swenshuai.xi     MS_U8 *u8DMD_ISDBT_DSPRegInitExt; // TODO use system variable type
419*53ee8cc1Swenshuai.xi     MS_U8 u8DMD_ISDBT_DSPRegInitSize;
420*53ee8cc1Swenshuai.xi     MS_U8 *u8DMD_ISDBT_InitExt; // TODO use system variable type
421*53ee8cc1Swenshuai.xi 
422*53ee8cc1Swenshuai.xi     //By Tuners:
423*53ee8cc1Swenshuai.xi     MS_U16  u16IF_KHZ;//By Tuners
424*53ee8cc1Swenshuai.xi     MS_BOOL bIQSwap;//0
425*53ee8cc1Swenshuai.xi     MS_U16  u16AgcReferenceValue;//0
426*53ee8cc1Swenshuai.xi     MS_BOOL bTunerGainInvert;//0
427*53ee8cc1Swenshuai.xi 
428*53ee8cc1Swenshuai.xi     //By IC:
429*53ee8cc1Swenshuai.xi     MS_BOOL bIsExtDemod;//0
430*53ee8cc1Swenshuai.xi 
431*53ee8cc1Swenshuai.xi     //By TS (Only for MCP or ext demod):
432*53ee8cc1Swenshuai.xi     MS_U8 u1TsConfigByte_SerialMode : 1;
433*53ee8cc1Swenshuai.xi     MS_U8 u1TsConfigByte_DataSwap   : 1;
434*53ee8cc1Swenshuai.xi     MS_U8 u1TsConfigByte_ClockInv   : 1;
435*53ee8cc1Swenshuai.xi     MS_U8 u5TsConfigByte_DivNum     : 5;
436*53ee8cc1Swenshuai.xi 
437*53ee8cc1Swenshuai.xi     //By SYS I2C (Only for MCP or ext demod):
438*53ee8cc1Swenshuai.xi     MS_U8 u8I2CSlaveAddr;
439*53ee8cc1Swenshuai.xi     MS_U8 u8I2CSlaveBus;
440*53ee8cc1Swenshuai.xi     MS_BOOL (*I2C_WriteBytes)(MS_U16 u16BusNumSlaveID, MS_U8 u8addrcount, MS_U8* pu8addr, MS_U16 u16size, MS_U8* pu8data);
441*53ee8cc1Swenshuai.xi     MS_BOOL (*I2C_ReadBytes)(MS_U16 u16BusNumSlaveID, MS_U8 u8AddrNum, MS_U8* paddr, MS_U16 u16size, MS_U8* pu8data);
442*53ee8cc1Swenshuai.xi 
443*53ee8cc1Swenshuai.xi     //By SYS MSPI (Only for MCP or ext demod):
444*53ee8cc1Swenshuai.xi     MS_BOOL bIsUseSspiLoadCode;
445*53ee8cc1Swenshuai.xi     MS_BOOL bIsSspiUseTsPin;
446*53ee8cc1Swenshuai.xi 
447*53ee8cc1Swenshuai.xi     //By SYS memory mapping (Only for int demod):
448*53ee8cc1Swenshuai.xi     MS_U32 u32TdiStartAddr;
449*53ee8cc1Swenshuai.xi 
450*53ee8cc1Swenshuai.xi     #if !DMD_ISDBT_UTOPIA_EN && !DMD_ISDBT_UTOPIA2_EN
451*53ee8cc1Swenshuai.xi     MS_U32  (*GetSystemTimeMS)(void);      // Get sys time (unit: ms)
452*53ee8cc1Swenshuai.xi     void    (*DelayMS)(MS_U32 ms);         // Delay time (unit: ms)
453*53ee8cc1Swenshuai.xi     MS_BOOL (*CreateMutex)(MS_BOOL enable); // Create&Delete mutex
454*53ee8cc1Swenshuai.xi     void    (*LockDMD)(MS_BOOL enable);    // Enter&Leave mutex
455*53ee8cc1Swenshuai.xi     #endif
456*53ee8cc1Swenshuai.xi } DMD_ISDBT_InitData;
457*53ee8cc1Swenshuai.xi 
458*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED
459*53ee8cc1Swenshuai.xi {
460*53ee8cc1Swenshuai.xi     MS_VIRT virtDMDBaseAddr;
461*53ee8cc1Swenshuai.xi 
462*53ee8cc1Swenshuai.xi     MS_BOOL bInit;
463*53ee8cc1Swenshuai.xi     MS_BOOL bDownloaded;
464*53ee8cc1Swenshuai.xi 
465*53ee8cc1Swenshuai.xi     #if DMD_ISDBT_STR_EN
466*53ee8cc1Swenshuai.xi     MS_BOOL              bIsDTV;
467*53ee8cc1Swenshuai.xi     EN_POWER_MODE        eLastState;
468*53ee8cc1Swenshuai.xi     #endif
469*53ee8cc1Swenshuai.xi     DMD_ISDBT_DEMOD_TYPE eLastType;
470*53ee8cc1Swenshuai.xi 
471*53ee8cc1Swenshuai.xi     MS_BOOL bIsQPad;
472*53ee8cc1Swenshuai.xi 
473*53ee8cc1Swenshuai.xi     MS_BOOL (*HAL_DMD_ISDBT_IOCTL_CMD)(DMD_ISDBT_HAL_COMMAND eCmd, void *pPara);
474*53ee8cc1Swenshuai.xi } DMD_ISDBT_PriData;
475*53ee8cc1Swenshuai.xi 
476*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED
477*53ee8cc1Swenshuai.xi {
478*53ee8cc1Swenshuai.xi     MS_U8  u8Version;
479*53ee8cc1Swenshuai.xi     MS_U32 u32ISDBTScanTimeStart;
480*53ee8cc1Swenshuai.xi     MS_U32 u32ISDBTFECLockTime;
481*53ee8cc1Swenshuai.xi     MS_U32 u32ISDBTLockStatus;
482*53ee8cc1Swenshuai.xi } DMD_ISDBT_Info;
483*53ee8cc1Swenshuai.xi 
484*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED
485*53ee8cc1Swenshuai.xi {
486*53ee8cc1Swenshuai.xi     DMD_ISDBT_InitData  sDMD_ISDBT_InitData;
487*53ee8cc1Swenshuai.xi     DMD_ISDBT_PriData   sDMD_ISDBT_PriData;
488*53ee8cc1Swenshuai.xi     DMD_ISDBT_Info      sDMD_ISDBT_Info;
489*53ee8cc1Swenshuai.xi } DMD_ISDBT_ResData;
490*53ee8cc1Swenshuai.xi 
491*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
492*53ee8cc1Swenshuai.xi //  Function and Variable
493*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
494*53ee8cc1Swenshuai.xi 
495*53ee8cc1Swenshuai.xi #ifdef __cplusplus
496*53ee8cc1Swenshuai.xi extern "C"
497*53ee8cc1Swenshuai.xi {
498*53ee8cc1Swenshuai.xi #endif
499*53ee8cc1Swenshuai.xi 
500*53ee8cc1Swenshuai.xi #ifndef MSOS_TYPE_LINUX_KERNEL
501*53ee8cc1Swenshuai.xi 
502*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
503*53ee8cc1Swenshuai.xi /// Set detailed level of ISDBT driver debug message
504*53ee8cc1Swenshuai.xi /// u8DbgLevel : debug level for Parallel Flash driver\n
505*53ee8cc1Swenshuai.xi /// AVD_DBGLV_NONE,    ///< disable all the debug message\n
506*53ee8cc1Swenshuai.xi /// AVD_DBGLV_INFO,    ///< information\n
507*53ee8cc1Swenshuai.xi /// AVD_DBGLV_NOTICE,  ///< normal but significant condition\n
508*53ee8cc1Swenshuai.xi /// AVD_DBGLV_WARNING, ///< warning conditions\n
509*53ee8cc1Swenshuai.xi /// AVD_DBGLV_ERR,     ///< error conditions\n
510*53ee8cc1Swenshuai.xi /// AVD_DBGLV_CRIT,    ///< critical conditions\n
511*53ee8cc1Swenshuai.xi /// AVD_DBGLV_ALERT,   ///< action must be taken immediately\n
512*53ee8cc1Swenshuai.xi /// AVD_DBGLV_EMERG,   ///< system is unusable\n
513*53ee8cc1Swenshuai.xi /// AVD_DBGLV_DEBUG,   ///< debug-level messages\n
514*53ee8cc1Swenshuai.xi /// @return TRUE : succeed
515*53ee8cc1Swenshuai.xi /// @return FALSE : failed to set the debug level
516*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------
517*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL MDrv_DMD_ISDBT_SetDbgLevel(DMD_ISDBT_DbgLv u8DbgLevel);
518*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
519*53ee8cc1Swenshuai.xi /// Get the information of ISDBT driver\n
520*53ee8cc1Swenshuai.xi /// @return the pointer to the driver information
521*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
522*53ee8cc1Swenshuai.xi DLL_PUBLIC extern DMD_ISDBT_Info* MDrv_DMD_ISDBT_GetInfo(void);
523*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
524*53ee8cc1Swenshuai.xi /// Get ISDBT driver version
525*53ee8cc1Swenshuai.xi /// when get ok, return the pointer to the driver version
526*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
527*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL MDrv_DMD_ISDBT_GetLibVer(const MSIF_Version **ppVersion);
528*53ee8cc1Swenshuai.xi 
529*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
530*53ee8cc1Swenshuai.xi /// Should be called once when power on init
531*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
532*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL MDrv_DMD_ISDBT_Initial_Hal_Interface(void);
533*53ee8cc1Swenshuai.xi 
534*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
535*53ee8cc1Swenshuai.xi ///                            SINGLE DEMOD API                              ///
536*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
537*53ee8cc1Swenshuai.xi 
538*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
539*53ee8cc1Swenshuai.xi /// Should be called every time when enter DTV input source
540*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
541*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL MDrv_DMD_ISDBT_Init(DMD_ISDBT_InitData *pDMD_ISDBT_InitData, MS_U32 u32InitDataLen);
542*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
543*53ee8cc1Swenshuai.xi /// Should be called every time when exit DTV input source
544*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
545*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL MDrv_DMD_ISDBT_Exit(void);
546*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
547*53ee8cc1Swenshuai.xi /// Get Initial Data
548*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
549*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_U32 MDrv_DMD_ISDBT_GetConfig(DMD_ISDBT_InitData *psDMD_ISDBT_InitData);
550*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
551*53ee8cc1Swenshuai.xi /// Get demod FW version (no use)
552*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
553*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL MDrv_DMD_ISDBT_GetFwVer(MS_U16 *pu16FwVer);
554*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
555*53ee8cc1Swenshuai.xi /// Reset demod (no use)
556*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
557*53ee8cc1Swenshuai.xi DLL_PUBLIC extern void MDrv_DMD_ISDBT_SetReset(void);
558*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
559*53ee8cc1Swenshuai.xi /// Set demod mode and enable demod
560*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
561*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL MDrv_DMD_ISDBT_AdvSetConfig(DMD_ISDBT_DEMOD_TYPE eType, MS_BOOL bEnable);
562*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
563*53ee8cc1Swenshuai.xi /// Set demod mode and enable demod
564*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
565*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL MDrv_DMD_ISDBT_SetConfig(MS_BOOL bEnable);
566*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
567*53ee8cc1Swenshuai.xi /// Active demod (not used)
568*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
569*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL MDrv_DMD_ISDBT_SetActive(MS_BOOL bEnable);
570*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
571*53ee8cc1Swenshuai.xi /// Set demod power state for STR
572*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
573*53ee8cc1Swenshuai.xi #if DMD_ISDBT_STR_EN
574*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_U32 MDrv_DMD_ISDBT_SetPowerState(EN_POWER_MODE u16PowerState);
575*53ee8cc1Swenshuai.xi #endif
576*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
577*53ee8cc1Swenshuai.xi /// Get demod lock status
578*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
579*53ee8cc1Swenshuai.xi DLL_PUBLIC extern DMD_ISDBT_LOCK_STATUS MDrv_DMD_ISDBT_GetLock(DMD_ISDBT_GETLOCK_TYPE eType);
580*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
581*53ee8cc1Swenshuai.xi /// Get demod modulation mode
582*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
583*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL MDrv_DMD_ISDBT_GetModulationMode(EN_ISDBT_Layer eLayerIndex, sISDBT_MODULATION_MODE *sIsdbtModulationMode);
584*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
585*53ee8cc1Swenshuai.xi /// Get demod signal strength (IF AGC gain)
586*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
587*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL MDrv_DMD_ISDBT_GetSignalStrength(MS_U16 *u16Strength);
588*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
589*53ee8cc1Swenshuai.xi /// Get demod frequency offset
590*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
591*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL MDrv_DMD_ISDBT_GetFreqOffset(float *pFreqOff);
592*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
593*53ee8cc1Swenshuai.xi /// Get demod signal quality (post Viterbi BER)
594*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
595*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_U16 MDrv_DMD_ISDBT_GetSignalQuality(void);
596*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_U16 MDrv_DMD_ISDBT_GetSignalQualityOfLayerA(void);
597*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_U16 MDrv_DMD_ISDBT_GetSignalQualityOfLayerB(void);
598*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_U16 MDrv_DMD_ISDBT_GetSignalQualityOfLayerC(void);
599*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_U16 MDrv_DMD_ISDBT_GetSignalQualityCombine(void);
600*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
601*53ee8cc1Swenshuai.xi /// Get demod SNR
602*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
603*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL MDrv_DMD_ISDBT_GetSNR(float *f_snr);
604*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
605*53ee8cc1Swenshuai.xi /// Get demod pre Viterbi BER
606*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
607*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL MDrv_DMD_ISDBT_GetPreViterbiBer(EN_ISDBT_Layer eLayerIndex, float *fber);
608*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
609*53ee8cc1Swenshuai.xi /// Get demod post Viterbi BER
610*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
611*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL MDrv_DMD_ISDBT_GetPostViterbiBer(EN_ISDBT_Layer eLayerIndex, float *fber);
612*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
613*53ee8cc1Swenshuai.xi /// Get demod packet error
614*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
615*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL MDrv_DMD_ISDBT_Read_PKT_ERR(EN_ISDBT_Layer eLayerIndex, MS_U16 *u16PacketErr);
616*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
617*53ee8cc1Swenshuai.xi /// Set TS output mode (only for external demod)
618*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
619*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL MDrv_DMD_ISDBT_SetSerialControl(MS_U8 u8TsConfigData);
620*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
621*53ee8cc1Swenshuai.xi /// Enable I2C bypass mode (only for external demod)
622*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
623*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL MDrv_DMD_ISDBT_IIC_BYPASS_MODE(MS_BOOL bEnable);
624*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
625*53ee8cc1Swenshuai.xi /// Switch pin to SSPI or GPIO (only for external demod)
626*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
627*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL MDrv_DMD_ISDBT_SWITCH_SSPI_GPIO(MS_BOOL bEnable);
628*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
629*53ee8cc1Swenshuai.xi /// Get GPIO pin high or low (only for external demod)
630*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
631*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL MDrv_DMD_ISDBT_GPIO_GET_LEVEL(MS_U8 u8Pin, MS_BOOL *bLevel);
632*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
633*53ee8cc1Swenshuai.xi /// Set GPIO pin high or low (only for external demod)
634*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
635*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL MDrv_DMD_ISDBT_GPIO_SET_LEVEL(MS_U8 u8Pin, MS_BOOL bLevel);
636*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
637*53ee8cc1Swenshuai.xi /// Set GPIO pin output or input (only for external demod)
638*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
639*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL MDrv_DMD_ISDBT_GPIO_OUT_ENABLE(MS_U8 u8Pin, MS_BOOL bEnableOut);
640*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
641*53ee8cc1Swenshuai.xi /// Swap ADC input (usually for external demod)
642*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
643*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL MDrv_DMD_ISDBT_DoIQSwap(MS_BOOL bIsQPad);
644*53ee8cc1Swenshuai.xi 
645*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
646*53ee8cc1Swenshuai.xi /// To get ISDBT's register  value, only for special purpose.\n
647*53ee8cc1Swenshuai.xi /// u16Addr       : the address of ISDBT's register\n
648*53ee8cc1Swenshuai.xi /// return the value of AFEC's register\n
649*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
650*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL MDrv_DMD_ISDBT_GetReg(MS_U16 u16Addr, MS_U8 *pu8Data);
651*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
652*53ee8cc1Swenshuai.xi /// To set ISDBT's register value, only for special purpose.\n
653*53ee8cc1Swenshuai.xi /// u16Addr       : the address of ISDBT's register\n
654*53ee8cc1Swenshuai.xi /// u8Value       : the value to be set\n
655*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
656*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL MDrv_DMD_ISDBT_SetReg(MS_U16 u16Addr, MS_U8 u8Data);
657*53ee8cc1Swenshuai.xi 
658*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
659*53ee8cc1Swenshuai.xi ///                            MULTI DEMOD API                              ///
660*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
661*53ee8cc1Swenshuai.xi 
662*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
663*53ee8cc1Swenshuai.xi /// Should be called every time when enter DTV input source
664*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
665*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL MDrv_DMD_ISDBT_MD_Init(MS_U8 id, DMD_ISDBT_InitData *pDMD_ISDBT_InitData, MS_U32 u32InitDataLen);
666*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
667*53ee8cc1Swenshuai.xi /// Should be called every time when exit DTV input source
668*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
669*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL MDrv_DMD_ISDBT_MD_Exit(MS_U8 id);
670*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
671*53ee8cc1Swenshuai.xi /// Get Initial Data
672*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
673*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_U32 MDrv_DMD_ISDBT_MD_GetConfig(MS_U8 id, DMD_ISDBT_InitData *psDMD_ISDBT_InitData);
674*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
675*53ee8cc1Swenshuai.xi /// Get demod FW version (no use)
676*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
677*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL MDrv_DMD_ISDBT_MD_GetFwVer(MS_U8 id, MS_U16 *pu16FwVer);
678*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
679*53ee8cc1Swenshuai.xi /// Reset demod (no use)
680*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
681*53ee8cc1Swenshuai.xi DLL_PUBLIC extern void MDrv_DMD_ISDBT_MD_SetReset(MS_U8 id);
682*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
683*53ee8cc1Swenshuai.xi /// Set demod mode and enable demod
684*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
685*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL MDrv_DMD_ISDBT_MD_AdvSetConfig(MS_U8 id, DMD_ISDBT_DEMOD_TYPE eType, MS_BOOL bEnable);
686*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
687*53ee8cc1Swenshuai.xi /// Set demod mode and enable demod
688*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
689*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL MDrv_DMD_ISDBT_MD_SetConfig(MS_U8 id, MS_BOOL bEnable);
690*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
691*53ee8cc1Swenshuai.xi /// Active demod (not used)
692*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
693*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL MDrv_DMD_ISDBT_MD_SetActive(MS_U8 id, MS_BOOL bEnable);
694*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
695*53ee8cc1Swenshuai.xi /// Set demod power state for STR
696*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
697*53ee8cc1Swenshuai.xi #if DMD_ISDBT_STR_EN
698*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_U32 MDrv_DMD_ISDBT_MD_SetPowerState(MS_U8 id, EN_POWER_MODE u16PowerState);
699*53ee8cc1Swenshuai.xi #endif
700*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
701*53ee8cc1Swenshuai.xi /// Get demod lock status
702*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
703*53ee8cc1Swenshuai.xi DLL_PUBLIC extern DMD_ISDBT_LOCK_STATUS MDrv_DMD_ISDBT_MD_GetLock(MS_U8 id, DMD_ISDBT_GETLOCK_TYPE eType);
704*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
705*53ee8cc1Swenshuai.xi /// Get demod modulation mode
706*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
707*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL MDrv_DMD_ISDBT_MD_GetModulationMode(MS_U8 id, EN_ISDBT_Layer eLayerIndex, sISDBT_MODULATION_MODE *sIsdbtModulationMode);
708*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
709*53ee8cc1Swenshuai.xi /// Get demod signal strength (IF AGC gain)
710*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
711*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL MDrv_DMD_ISDBT_MD_GetSignalStrength(MS_U8 id, MS_U16 *u16Strength);
712*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
713*53ee8cc1Swenshuai.xi /// Get demod frequency offset
714*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
715*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL MDrv_DMD_ISDBT_MD_GetFreqOffset(MS_U8 id, float *pFreqOff);
716*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
717*53ee8cc1Swenshuai.xi /// Get signal quality (post Viterbi BER)
718*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
719*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_U16 MDrv_DMD_ISDBT_MD_GetSignalQuality(MS_U8 id);
720*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_U16 MDrv_DMD_ISDBT_MD_GetSignalQualityOfLayerA(MS_U8 id);
721*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_U16 MDrv_DMD_ISDBT_MD_GetSignalQualityOfLayerB(MS_U8 id);
722*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_U16 MDrv_DMD_ISDBT_MD_GetSignalQualityOfLayerC(MS_U8 id);
723*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_U16 MDrv_DMD_ISDBT_MD_GetSignalQualityCombine(MS_U8 id);
724*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
725*53ee8cc1Swenshuai.xi /// Get demod SNR
726*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
727*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL MDrv_DMD_ISDBT_MD_GetSNR(MS_U8 id, float *f_snr);
728*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
729*53ee8cc1Swenshuai.xi /// Get demod pre Viterbi BER
730*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
731*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL MDrv_DMD_ISDBT_MD_GetPreViterbiBer(MS_U8 id, EN_ISDBT_Layer eLayerIndex, float *fber);
732*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
733*53ee8cc1Swenshuai.xi /// Get demod post Viterbi BER
734*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
735*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL MDrv_DMD_ISDBT_MD_GetPostViterbiBer(MS_U8 id, EN_ISDBT_Layer eLayerIndex, float *fber);
736*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
737*53ee8cc1Swenshuai.xi /// Get demod packet error
738*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
739*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL MDrv_DMD_ISDBT_MD_Read_PKT_ERR(MS_U8 id, EN_ISDBT_Layer eLayerIndex, MS_U16 *u16PacketErr);
740*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
741*53ee8cc1Swenshuai.xi /// Set TS output mode (only for external demod)
742*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
743*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL MDrv_DMD_ISDBT_MD_SetSerialControl(MS_U8 id, MS_U8 u8TsConfigData);
744*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
745*53ee8cc1Swenshuai.xi /// Enable I2C bypass mode (only for external demod)
746*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
747*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL MDrv_DMD_ISDBT_MD_IIC_BYPASS_MODE(MS_U8 id, MS_BOOL bEnable);
748*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
749*53ee8cc1Swenshuai.xi /// Switch pin to SSPI or GPIO (only for external demod)
750*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
751*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL MDrv_DMD_ISDBT_MD_SWITCH_SSPI_GPIO(MS_U8 id, MS_BOOL bEnable);
752*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
753*53ee8cc1Swenshuai.xi /// Get GPIO pin high or low (only for external demod)
754*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
755*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL MDrv_DMD_ISDBT_MD_GPIO_GET_LEVEL(MS_U8 id, MS_U8 u8Pin, MS_BOOL *bLevel);
756*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
757*53ee8cc1Swenshuai.xi /// Set GPIO pin high or low (only for external demod)
758*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
759*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL MDrv_DMD_ISDBT_MD_GPIO_SET_LEVEL(MS_U8 id, MS_U8 u8Pin, MS_BOOL bLevel);
760*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
761*53ee8cc1Swenshuai.xi /// Set GPIO pin output or input (only for external demod)
762*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
763*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL MDrv_DMD_ISDBT_MD_GPIO_OUT_ENABLE(MS_U8 id, MS_U8 u8Pin, MS_BOOL bEnableOut);
764*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
765*53ee8cc1Swenshuai.xi /// Swap ADC input (usually for external demod)
766*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
767*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL MDrv_DMD_ISDBT_MD_DoIQSwap(MS_U8 id, MS_BOOL bIsQPad);
768*53ee8cc1Swenshuai.xi 
769*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
770*53ee8cc1Swenshuai.xi /// To get ISDBT's register  value, only for special purpose.\n
771*53ee8cc1Swenshuai.xi /// u16Addr       : the address of ISDBT's register\n
772*53ee8cc1Swenshuai.xi /// return the value of AFEC's register\n
773*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
774*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL MDrv_DMD_ISDBT_MD_GetReg(MS_U8 id, MS_U16 u16Addr, MS_U8 *pu8Data);
775*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
776*53ee8cc1Swenshuai.xi /// To set ISDBT's register value, only for special purpose.\n
777*53ee8cc1Swenshuai.xi /// u16Addr       : the address of ISDBT's register\n
778*53ee8cc1Swenshuai.xi /// u8Value       : the value to be set\n
779*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
780*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL MDrv_DMD_ISDBT_MD_SetReg(MS_U8 id, MS_U16 u16Addr, MS_U8 u8Data);
781*53ee8cc1Swenshuai.xi 
782*53ee8cc1Swenshuai.xi #endif // #ifndef MSOS_TYPE_LINUX_KERNEL
783*53ee8cc1Swenshuai.xi 
784*53ee8cc1Swenshuai.xi #ifdef UTPA2
785*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL _MDrv_DMD_ISDBT_SetDbgLevel(DMD_ISDBT_DbgLv u8DbgLevel);
786*53ee8cc1Swenshuai.xi DLL_PUBLIC extern DMD_ISDBT_Info* _MDrv_DMD_ISDBT_GetInfo(void);
787*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL _MDrv_DMD_ISDBT_GetLibVer(const MSIF_Version **ppVersion);
788*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL _MDrv_DMD_ISDBT_MD_Init(MS_U8 id, DMD_ISDBT_InitData *pDMD_ISDBT_InitData, MS_U32 u32InitDataLen);
789*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL _MDrv_DMD_ISDBT_MD_Exit(MS_U8 id);
790*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_U32 _MDrv_DMD_ISDBT_MD_GetConfig(MS_U8 id, DMD_ISDBT_InitData *psDMD_ISDBT_InitData);
791*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL _MDrv_DMD_ISDBT_MD_AdvSetConfig(MS_U8 id, DMD_ISDBT_DEMOD_TYPE eType, MS_BOOL bEnable);
792*53ee8cc1Swenshuai.xi #if DMD_ISDBT_STR_EN
793*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_U32 _MDrv_DMD_ISDBT_MD_SetPowerState(MS_U8 id, EN_POWER_MODE u16PowerState);
794*53ee8cc1Swenshuai.xi #endif
795*53ee8cc1Swenshuai.xi DLL_PUBLIC extern DMD_ISDBT_LOCK_STATUS _MDrv_DMD_ISDBT_MD_GetLock(MS_U8 id, DMD_ISDBT_GETLOCK_TYPE eType);
796*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL _MDrv_DMD_ISDBT_MD_GetModulationMode(MS_U8 id, EN_ISDBT_Layer eLayerIndex, sISDBT_MODULATION_MODE *sIsdbtModulationMode);
797*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL _MDrv_DMD_ISDBT_MD_GetSignalStrength(MS_U8 id, MS_U16 *u16Strength);
798*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL _MDrv_DMD_ISDBT_MD_GetFreqOffset(MS_U8 id, DMD_ISDBT_CFO_DATA *cfo);
799*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_U16 _MDrv_DMD_ISDBT_MD_GetSignalQuality(MS_U8 id);
800*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_U16 _MDrv_DMD_ISDBT_MD_GetSignalQualityOfLayerA(MS_U8 id);
801*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_U16 _MDrv_DMD_ISDBT_MD_GetSignalQualityOfLayerB(MS_U8 id);
802*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_U16 _MDrv_DMD_ISDBT_MD_GetSignalQualityOfLayerC(MS_U8 id);
803*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_U16 _MDrv_DMD_ISDBT_MD_GetSignalQualityCombine(MS_U8 id);
804*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL _MDrv_DMD_ISDBT_MD_GetSNR(MS_U8 id, DMD_ISDBT_SNR_DATA *f_snr);
805*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL _MDrv_DMD_ISDBT_MD_GetPreViterbiBer(MS_U8 id, DMD_ISDBT_GET_BER_VALUE *ber);
806*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL _MDrv_DMD_ISDBT_MD_GetPostViterbiBer(MS_U8 id, DMD_ISDBT_GET_BER_VALUE *ber);
807*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL _MDrv_DMD_ISDBT_MD_Read_PKT_ERR(MS_U8 id, EN_ISDBT_Layer eLayerIndex, MS_U16 *u16PacketErr);
808*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL _MDrv_DMD_ISDBT_MD_SetSerialControl(MS_U8 id, MS_U8 u8TsConfigData);
809*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL _MDrv_DMD_ISDBT_MD_IIC_BYPASS_MODE(MS_U8 id, MS_BOOL bEnable);
810*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL _MDrv_DMD_ISDBT_MD_SWITCH_SSPI_GPIO(MS_U8 id, MS_BOOL bEnable);
811*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL _MDrv_DMD_ISDBT_MD_GPIO_GET_LEVEL(MS_U8 id, MS_U8 u8Pin, MS_BOOL *bLevel);
812*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL _MDrv_DMD_ISDBT_MD_GPIO_SET_LEVEL(MS_U8 id, MS_U8 u8Pin, MS_BOOL bLevel);
813*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL _MDrv_DMD_ISDBT_MD_GPIO_OUT_ENABLE(MS_U8 id, MS_U8 u8Pin, MS_BOOL bEnableOut);
814*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL _MDrv_DMD_ISDBT_MD_DoIQSwap(MS_U8 id, MS_BOOL bIsQPad);
815*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL _MDrv_DMD_ISDBT_MD_GetReg(MS_U8 id, MS_U16 u16Addr, MS_U8 *pu8Data);
816*53ee8cc1Swenshuai.xi DLL_PUBLIC extern MS_BOOL _MDrv_DMD_ISDBT_MD_SetReg(MS_U8 id, MS_U16 u16Addr, MS_U8 u8Data);
817*53ee8cc1Swenshuai.xi #endif
818*53ee8cc1Swenshuai.xi 
819*53ee8cc1Swenshuai.xi #ifdef __cplusplus
820*53ee8cc1Swenshuai.xi }
821*53ee8cc1Swenshuai.xi #endif
822*53ee8cc1Swenshuai.xi 
823*53ee8cc1Swenshuai.xi #endif // _DRV_ISDBT_H_
824