xref: /utopia/UTPA2-700.0.x/projects/tmplib/include/drvDMD_ATSC.h (revision 53ee8cc121a030b8d368113ac3e966b4705770ef)
1 //<MStar Software>
2 //******************************************************************************
3 // MStar Software
4 // Copyright (c) 2010 - 2012 MStar Semiconductor, Inc. All rights reserved.
5 // All software, firmware and related documentation herein ("MStar Software") are
6 // intellectual property of MStar Semiconductor, Inc. ("MStar") and protected by
7 // law, including, but not limited to, copyright law and international treaties.
8 // Any use, modification, reproduction, retransmission, or republication of all
9 // or part of MStar Software is expressly prohibited, unless prior written
10 // permission has been granted by MStar.
11 //
12 // By accessing, browsing and/or using MStar Software, you acknowledge that you
13 // have read, understood, and agree, to be bound by below terms ("Terms") and to
14 // comply with all applicable laws and regulations:
15 //
16 // 1. MStar shall retain any and all right, ownership and interest to MStar
17 //    Software and any modification/derivatives thereof.
18 //    No right, ownership, or interest to MStar Software and any
19 //    modification/derivatives thereof is transferred to you under Terms.
20 //
21 // 2. You understand that MStar Software might include, incorporate or be
22 //    supplied together with third party`s software and the use of MStar
23 //    Software may require additional licenses from third parties.
24 //    Therefore, you hereby agree it is your sole responsibility to separately
25 //    obtain any and all third party right and license necessary for your use of
26 //    such third party`s software.
27 //
28 // 3. MStar Software and any modification/derivatives thereof shall be deemed as
29 //    MStar`s confidential information and you agree to keep MStar`s
30 //    confidential information in strictest confidence and not disclose to any
31 //    third party.
32 //
33 // 4. MStar Software is provided on an "AS IS" basis without warranties of any
34 //    kind. Any warranties are hereby expressly disclaimed by MStar, including
35 //    without limitation, any warranties of merchantability, non-infringement of
36 //    intellectual property rights, fitness for a particular purpose, error free
37 //    and in conformity with any international standard.  You agree to waive any
38 //    claim against MStar for any loss, damage, cost or expense that you may
39 //    incur related to your use of MStar Software.
40 //    In no event shall MStar be liable for any direct, indirect, incidental or
41 //    consequential damages, including without limitation, lost of profit or
42 //    revenues, lost or damage of data, and unauthorized system use.
43 //    You agree that this Section 4 shall still apply without being affected
44 //    even if MStar Software has been modified by MStar in accordance with your
45 //    request or instruction for your use, except otherwise agreed by both
46 //    parties in writing.
47 //
48 // 5. If requested, MStar may from time to time provide technical supports or
49 //    services in relation with MStar Software to you for your use of
50 //    MStar Software in conjunction with your or your customer`s product
51 //    ("Services").
52 //    You understand and agree that, except otherwise agreed by both parties in
53 //    writing, Services are provided on an "AS IS" basis and the warranty
54 //    disclaimer set forth in Section 4 above shall apply.
55 //
56 // 6. Nothing contained herein shall be construed as by implication, estoppels
57 //    or otherwise:
58 //    (a) conferring any license or right to use MStar name, trademark, service
59 //        mark, symbol or any other identification;
60 //    (b) obligating MStar or any of its affiliates to furnish any person,
61 //        including without limitation, you and your customers, any assistance
62 //        of any kind whatsoever, or any information; or
63 //    (c) conferring any license or right under any intellectual property right.
64 //
65 // 7. These terms shall be governed by and construed in accordance with the laws
66 //    of Taiwan, R.O.C., excluding its conflict of law rules.
67 //    Any and all dispute arising out hereof or related hereto shall be finally
68 //    settled by arbitration referred to the Chinese Arbitration Association,
69 //    Taipei in accordance with the ROC Arbitration Law and the Arbitration
70 //    Rules of the Association by three (3) arbitrators appointed in accordance
71 //    with the said Rules.
72 //    The place of arbitration shall be in Taipei, Taiwan and the language shall
73 //    be English.
74 //    The arbitration award shall be final and binding to both parties.
75 //
76 //******************************************************************************
77 //<MStar Software>
78 ////////////////////////////////////////////////////////////////////////////////
79 //
80 // Copyright (c) 2008-2009 MStar Semiconductor, Inc.
81 // All rights reserved.
82 //
83 // Unless otherwise stipulated in writing, any and all information contained
84 // herein regardless in any format shall remain the sole proprietary of
85 // MStar Semiconductor Inc. and be kept in strict confidence
86 // ("MStar Confidential Information") by the recipient.
87 // Any unauthorized act including without limitation unauthorized disclosure,
88 // copying, use, reproduction, sale, distribution, modification, disassembling,
89 // reverse engineering and compiling of the contents of MStar Confidential
90 // Information is unlawful and strictly prohibited. MStar hereby reserves the
91 // rights to any and all damages, losses, costs and expenses resulting therefrom.
92 //
93 ////////////////////////////////////////////////////////////////////////////////
94 
95 ///////////////////////////////////////////////////////////////////////////////////////////////////
96 ///
97 /// @file   drvDMD_ATSC.h
98 /// @brief  ATSC Driver Interface
99 /// @author MStar Semiconductor Inc.
100 ///////////////////////////////////////////////////////////////////////////////////////////////////
101 
102 /*! \defgroup Demod Demod interface
103 
104  *! \defgroup ATSC ATSC interface (drvDMD_ATSC.h)
105  *  \ingroup Demod
106 
107     \brief
108 
109     ATSC is the demodulator of supporting 8VSB and J83B standard.
110     Receive RF signal from Tuner and transmit demodulated data to TS module.
111 
112     <b>Features</b>
113 
114     - Support 8VSB and J83B standard.
115     - Pass A74 SPEC.
116     - Pass the field stream.
117 
118     <b> ATSC Block Diagram: </b> \n
119     \image html drvDMD_ATSC_pic01.png
120 
121     <b> Operation Code Flow: </b> \n
122     -# Initialize ATSC parameters and load DEMOD FW
123     -# Enable DEMOD state machine
124     -# Monitor lock status
125 
126  *! \defgroup ATSC_BASIC ATSC basic control
127  *  \ingroup ATSC
128 
129  *! \defgroup ATSC_INFO ATSC information
130  *  \ingroup ATSC
131 
132  *! \defgroup ATSC_STR ATSC STR
133  *  \ingroup ATSC
134 
135  *! \defgroup ATSC_ToBeRemoved ATSC API to be removed
136  *  \ingroup ATSC
137  */
138 
139 #ifndef _DRV_ATSC_H_
140 #define _DRV_ATSC_H_
141 
142 //-------------------------------------------------------------------------------------------------
143 //  Driver Compiler Options
144 //-------------------------------------------------------------------------------------------------
145 
146 #define DMD_ATSC_UTOPIA_EN                  1
147 #define DMD_ATSC_UTOPIA2_EN                 0
148 
149 #define DMD_ATSC_STR_EN                     1
150 #define DMD_ATSC_MULTI_THREAD_SAFE          0
151 #define DMD_ATSC_MULTI_DMD_EN               1
152 
153 //-------------------------------------------------------------------------------------------------
154 //  Include Files
155 //-------------------------------------------------------------------------------------------------
156 
157 #include "MsTypes.h"
158 #if DMD_ATSC_UTOPIA_EN || DMD_ATSC_UTOPIA2_EN
159 #include "MsVersion.h"
160 #include "MsCommon.h"
161 #endif
162 #if DMD_ATSC_UTOPIA2_EN || DMD_ATSC_STR_EN
163 #include "utopia.h"
164 #endif
165 
166 //-------------------------------------------------------------------------------------------------
167 //  Driver Capability
168 //-------------------------------------------------------------------------------------------------
169 
170 
171 //-------------------------------------------------------------------------------------------------
172 //  Macro and Define
173 //-------------------------------------------------------------------------------------------------
174 
175 #ifndef DLL_PUBLIC
176 #define DLL_PUBLIC
177 #endif
178 
179 #if DMD_ATSC_MULTI_DMD_EN
180 #define DMD_ATSC_MAX_DEMOD_NUM          2
181 #else
182 #define DMD_ATSC_MAX_DEMOD_NUM          1
183 #endif
184 
185 #if DMD_ATSC_UTOPIA_EN || DMD_ATSC_UTOPIA2_EN
186 #define MSIF_DMD_ATSC_LIB_CODE          {'D','M','D','_','A','T', 'S','C','_'} //Lib code
187 #define MSIF_DMD_ATSC_LIBVER            {'0','0'}                              //LIB version
188 #define MSIF_DMD_ATSC_BUILDNUM          {'0','0' }                             //Build Number
189 #define MSIF_DMD_ATSC_CHANGELIST        {'0','0','0','0','0','0','0','0'}      //P4 ChangeList Number
190 
191 #define DMD_ATSC_VER                    /* Character String for DRV/API version             */  \
192     MSIF_TAG,                           /* 'MSIF'                                           */  \
193     MSIF_CLASS,                         /* '00'                                             */  \
194     MSIF_CUS,                           /* 0x0000                                           */  \
195     MSIF_MOD,                           /* 0x0000                                           */  \
196     MSIF_CHIP,                                                                                  \
197     MSIF_CPU,                                                                                   \
198     MSIF_DMD_ATSC_LIB_CODE,             /* IP__                                             */  \
199     MSIF_DMD_ATSC_LIBVER,               /* 0.0 ~ Z.Z                                        */  \
200     MSIF_DMD_ATSC_BUILDNUM,             /* 00 ~ 99                                          */  \
201     MSIF_DMD_ATSC_CHANGELIST,           /* CL#                                              */  \
202     MSIF_OS
203 #endif // #if DMD_ATSC_UTOPIA_EN || DMD_ATSC_UTOPIA2_EN
204 
205 #ifndef BIT_
206 #define BIT_(n)                                 (1 << (n))
207 #endif
208 
209 #define DMD_ATSC_LOCK_VSB_PRE_LOCK              BIT_(0)
210 #define DMD_ATSC_LOCK_VSB_FSYNC_LOCK            BIT_(1)
211 #define DMD_ATSC_LOCK_VSB_CE_LOCK               BIT_(2)
212 #define DMD_ATSC_LOCK_VSB_FEC_LOCK              BIT_(3)
213 
214 #define DMD_ATSC_LOCK_QAM_AGC_LOCK              BIT_(8)
215 #define DMD_ATSC_LOCK_QAM_PRE_LOCK              BIT_(9)
216 #define DMD_ATSC_LOCK_QAM_MAIN_LOCK             BIT_(10)
217 
218 //-------------------------------------------------------------------------------------------------
219 //  Type and Structure
220 //-------------------------------------------------------------------------------------------------
221 
222 typedef enum
223 {
224     DMD_ATSC_HAL_CMD_Exit = 0,
225     DMD_ATSC_HAL_CMD_InitClk,
226     DMD_ATSC_HAL_CMD_Download,
227     DMD_ATSC_HAL_CMD_FWVERSION,
228     DMD_ATSC_HAL_CMD_SoftReset,
229     DMD_ATSC_HAL_CMD_SetVsbMode,
230     DMD_ATSC_HAL_CMD_Set64QamMode,
231     DMD_ATSC_HAL_CMD_Set256QamMode,
232     DMD_ATSC_HAL_CMD_SetModeClean,
233     DMD_ATSC_HAL_CMD_Set_QAM_SR,
234     DMD_ATSC_HAL_CMD_Active,
235     DMD_ATSC_HAL_CMD_Check8VSB64_256QAM,
236     DMD_ATSC_HAL_CMD_AGCLock,
237     DMD_ATSC_HAL_CMD_Vsb_PreLock,
238     DMD_ATSC_HAL_CMD_Vsb_FSync_Lock,
239     DMD_ATSC_HAL_CMD_Vsb_CE_Lock,
240     DMD_ATSC_HAL_CMD_Vsb_FEC_Lock,
241     DMD_ATSC_HAL_CMD_QAM_PreLock,
242     DMD_ATSC_HAL_CMD_QAM_Main_Lock,
243     DMD_ATSC_HAL_CMD_ReadIFAGC,
244     DMD_ATSC_HAL_CMD_CheckSignalCondition,
245     DMD_ATSC_HAL_CMD_ReadSNRPercentage,
246     DMD_ATSC_HAL_CMD_ReadPKTERR,
247     DMD_ATSC_HAL_CMD_GetPreViterbiBer,
248     DMD_ATSC_HAL_CMD_GetPostViterbiBer,
249     DMD_ATSC_HAL_CMD_ReadFrequencyOffset,
250     DMD_ATSC_HAL_CMD_TS_INTERFACE_CONFIG,
251     DMD_ATSC_HAL_CMD_IIC_Bypass_Mode,
252     DMD_ATSC_HAL_CMD_SSPI_TO_GPIO,
253     DMD_ATSC_HAL_CMD_GPIO_GET_LEVEL,
254     DMD_ATSC_HAL_CMD_GPIO_SET_LEVEL,
255     DMD_ATSC_HAL_CMD_GPIO_OUT_ENABLE,
256     DMD_ATSC_HAL_CMD_GET_REG,
257     DMD_ATSC_HAL_CMD_SET_REG,
258     CMD_ATSC_HAL_CMD_GET_QAM_SNR
259 } DMD_ATSC_HAL_COMMAND;
260 
261 typedef struct
262 {
263     MS_U8 u8Pin;
264     union
265     {
266         MS_BOOL bLevel;
267         MS_BOOL bIsOut;
268     };
269 } DMD_ATSC_GPIO_PIN_DATA;
270 
271 typedef struct
272 {
273     MS_U16 u16Addr;
274     MS_U8  u8Data;
275 } DMD_ATSC_REG_DATA;
276 
277 typedef enum
278 {
279     DMD_ATSC_DBGLV_NONE,    // disable all the debug message
280     DMD_ATSC_DBGLV_INFO,    // information
281     DMD_ATSC_DBGLV_NOTICE,  // normal but significant condition
282     DMD_ATSC_DBGLV_WARNING, // warning conditions
283     DMD_ATSC_DBGLV_ERR,     // error conditions
284     DMD_ATSC_DBGLV_CRIT,    // critical conditions
285     DMD_ATSC_DBGLV_ALERT,   // action must be taken immediately
286     DMD_ATSC_DBGLV_EMERG,   // system is unusable
287     DMD_ATSC_DBGLV_DEBUG    // debug-level messages
288 } DMD_ATSC_DbgLv;
289 
290 typedef enum
291 {
292     DMD_ATSC_DEMOD_ATSC_VSB,
293     DMD_ATSC_DEMOD_ATSC_64QAM,
294     DMD_ATSC_DEMOD_ATSC_256QAM,
295     DMD_ATSC_DEMOD_ATSC_16QAM,
296     DMD_ATSC_DEMOD_ATSC_32QAM,
297     DMD_ATSC_DEMOD_ATSC_128QAM,
298     DMD_ATSC_DEMOD_MAX,
299     DMD_ATSC_DEMOD_NULL = DMD_ATSC_DEMOD_MAX
300 } DMD_ATSC_DEMOD_TYPE;
301 
302 typedef enum
303 {
304     DMD_ATSC_SIGNAL_NO                   = 0,    /* little or no input power detected    */
305     DMD_ATSC_SIGNAL_WEAK                 = 1,    /* some power detected.                 */
306     DMD_ATSC_SIGNAL_MODERATE             = 2,
307     DMD_ATSC_SIGNAL_STRONG               = 4,
308     DMD_ATSC_SIGNAL_VERY_STRONG          = 8
309 } DMD_ATSC_SIGNAL_CONDITION;
310 
311 typedef enum
312 {
313     DMD_ATSC_GETLOCK,
314     DMD_ATSC_GETLOCK_VSB_AGCLOCK,
315     DMD_ATSC_GETLOCK_VSB_PRELOCK, // pilot lock
316     DMD_ATSC_GETLOCK_VSB_FSYNCLOCK,
317     DMD_ATSC_GETLOCK_VSB_CELOCK,
318     DMD_ATSC_GETLOCK_VSB_FECLOCK,
319     DMD_ATSC_GETLOCK_QAM_AGCLOCK,
320     DMD_ATSC_GETLOCK_QAM_PRELOCK, // TR lock
321     DMD_ATSC_GETLOCK_QAM_MAINLOCK
322 } DMD_ATSC_GETLOCK_TYPE;
323 
324 typedef enum
325 {
326     DMD_ATSC_LOCK,
327     DMD_ATSC_CHECKING,
328     DMD_ATSC_CHECKEND,
329     DMD_ATSC_UNLOCK,
330     DMD_ATSC_NULL
331 } DMD_ATSC_LOCK_STATUS;
332 
333 typedef enum
334 {
335     I_PAD,
336     Q_PAD,
337 } DMD_ATSC_SEL_IQPAD;
338 
339 typedef enum
340 {
341     QAM_64,
342     QAM_256,
343 } DMD_ATSC_QAM_TYPE;
344 
345 typedef struct
346 {
347     MS_U8   QAM_type;
348     MS_U16  symbol_rate;
349 }DMD_J83B_Info;
350 
351 typedef enum _eDMD_SEL
352 {
353     DMD0 = 0,
354     DMD1,
355     HK,
356 }eDMD_SEL;
357 
358 /// For demod init
359 typedef struct
360 {
361     // Timeout time
362     MS_U16 u16VSBAGCLockCheckTime;//50
363     MS_U16 u16VSBPreLockCheckTime;//300
364     MS_U16 u16VSBFSyncLockCheckTime;//1200
365     MS_U16 u16VSBFECLockCheckTime;//5000
366 
367     MS_U16 u16QAMAGCLockCheckTime;//50
368     MS_U16 u16QAMPreLockCheckTime;//1000
369     MS_U16 u16QAMMainLockCheckTime;//3000
370 
371     // register init
372     MS_U8 *u8DMD_ATSC_DSPRegInitExt; // TODO use system variable type
373     MS_U8 u8DMD_ATSC_DSPRegInitSize;
374     MS_U8 *u8DMD_ATSC_InitExt; // TODO use system variable type
375 
376     //By Tuners:
377     MS_U16  u16IF_KHZ;//By Tuners
378     MS_BOOL bIQSwap;//0
379     MS_U16  u16AGC_REFERENCE;//0
380     MS_BOOL bTunerGainInvert;//0
381     MS_BOOL bIsQPad;//0
382 
383     //By IC:
384     MS_U8   u8IS_DUAL;//0
385     MS_BOOL bIsExtDemod;//0
386 
387     //By TS (Only for MCP or ext demod):
388     MS_U8 u1TsConfigByte_SerialMode : 1;
389     MS_U8 u1TsConfigByte_DataSwap   : 1;
390     MS_U8 u1TsConfigByte_ClockInv   : 1;
391     MS_U8 u5TsConfigByte_DivNum     : 5;
392 
393     //By SYS I2C (Only for MCP or ext demod):
394     MS_U8 u8I2CSlaveAddr;
395     MS_U8 u8I2CSlaveBus;
396     MS_BOOL (*I2C_WriteBytes)(MS_U16 u16BusNumSlaveID, MS_U8 u8addrcount, MS_U8* pu8addr, MS_U16 u16size, MS_U8* pu8data);
397     MS_BOOL (*I2C_ReadBytes)(MS_U16 u16BusNumSlaveID, MS_U8 u8AddrNum, MS_U8* paddr, MS_U16 u16size, MS_U8* pu8data);
398 
399     //By SYS MSPI (Only for MCP or ext demod):
400     MS_BOOL bIsUseSspiLoadCode;
401     MS_BOOL bIsSspiUseTsPin;
402 
403     #if !DMD_ATSC_UTOPIA_EN && !DMD_ATSC_UTOPIA2_EN
404     MS_U32  (*GetSystemTimeMS)(void);      // Get sys time (unit: ms)
405     void    (*DelayMS)(MS_U32 ms);         // Delay time (unit: ms)
406     MS_BOOL (*CreateMutex)(MS_BOOL enable); // Create&Delete mutex
407     void    (*LockDMD)(MS_BOOL enable);    // Enter&Leave mutex
408     #endif
409 } DMD_ATSC_InitData;
410 
411 typedef struct
412 {
413     MS_BOOL bInit;
414     MS_BOOL bDownloaded;
415 
416     #if DMD_ATSC_STR_EN
417     MS_BOOL             bIsDTV;
418     EN_POWER_MODE       eLastState;
419     #endif
420     DMD_ATSC_DEMOD_TYPE eLastType;
421     MS_U16              u16SymRate;
422 
423     MS_BOOL (*HAL_DMD_ATSC_IOCTL_CMD)(DMD_ATSC_HAL_COMMAND eCmd, void *pPara);
424 } DMD_ATSC_PriData;
425 
426 typedef struct
427 {
428     MS_U8  u8Version;
429     MS_U32 u32ATSCScanTimeStart;
430     MS_U32 u32ATSCFECLockTime;
431     MS_U32 u32ATSCLockStatus;
432 } DMD_ATSC_Info;
433 
434 typedef struct
435 {
436     DMD_ATSC_InitData  sDMD_ATSC_InitData;
437     DMD_ATSC_PriData   sDMD_ATSC_PriData;
438     DMD_ATSC_Info      sDMD_ATSC_Info;
439 } DMD_ATSC_ResData;
440 
441 //-------------------------------------------------------------------------------------------------
442 //  Function and Variable
443 //-------------------------------------------------------------------------------------------------
444 
445 #ifdef __cplusplus
446 extern "C"
447 {
448 #endif
449 
450 //-------------------------------------------------------------------------------------------------
451 /// Set detailed level of ATSC driver debug message
452 /// @ingroup ATSC_BASIC
453 /// @param u8DbgLevel    \b IN: debug level for Parallel Flash driver
454 /// @return TRUE : succeed
455 /// @return FALSE : fail
456 //-------------------------------------------------------------------------------------------------
457 // DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_SetDbgLevel(DMD_ATSC_DbgLv u8DbgLevel);
458 //-------------------------------------------------------------------------------------------------
459 /// Get the information of ATSC driver
460 /// @ingroup ATSC_INFO
461 /// @return : the pointer to the driver information
462 //-------------------------------------------------------------------------------------------------
463 // DLL_PUBLIC extern DMD_ATSC_Info* MDrv_DMD_ATSC_GetInfo(void);
464 //-------------------------------------------------------------------------------------------------
465 /// Get ATSC driver version
466 /// @ingroup ATSC_INFO
467 /// @param ppVersion    \b OUT: the pointer to the driver version
468 /// @return TRUE : succeed
469 /// @return FALSE : fail
470 //-------------------------------------------------------------------------------------------------
471 // DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_GetLibVer(const MSIF_Version **ppVersion);
472 //-------------------------------------------------------------------------------------------------
473 /// Initialize HAL interface
474 /// @ingroup ATSC_BASIC
475 /// @return TRUE : succeed
476 /// @return FALSE : fail
477 //-------------------------------------------------------------------------------------------------
478 DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_Initial_Hal_Interface(void);
479 
480 ////////////////////////////////////////////////////////////////////////////////
481 ///                            SINGLE DEMOD API                              ///
482 ////////////////////////////////////////////////////////////////////////////////
483 
484 //-------------------------------------------------------------------------------------------------
485 /// Initialize ATSC Demod
486 /// @ingroup ATSC_BASIC
487 /// @param pDMD_ATSC_InitData    \b IN: ATSC initial parameters
488 /// @param u32InitDataLen        \b IN: size of ATSC initial parameters
489 /// @return TRUE : succeed
490 /// @return FALSE : fail
491 //-------------------------------------------------------------------------------------------------
492 DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_Init(DMD_ATSC_InitData *pDMD_ATSC_InitData, MS_U32 u32InitDataLen);
493 //-------------------------------------------------------------------------------------------------
494 /// Exit ATSC DTV mode
495 /// @ingroup ATSC_STR
496 /// @return TRUE : succeed
497 /// @return FALSE : fail
498 //-------------------------------------------------------------------------------------------------
499 DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_Exit(void);
500 //-------------------------------------------------------------------------------------------------
501 /// Set Demod mode and restart Demod
502 /// @ingroup ATSC_BASIC
503 /// @param eType    \b IN: Select ATSC modulation type
504 /// @param bEnable  \b IN: Enable SetConfig function
505 /// @return TRUE : succeed
506 /// @return FALSE : fail
507 //-------------------------------------------------------------------------------------------------
508 DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_SetConfig(DMD_ATSC_DEMOD_TYPE eType, MS_BOOL bEnable);
509 //-------------------------------------------------------------------------------------------------
510 /// Reset FW state machine
511 /// @ingroup ATSC_ToBeRemoved
512 /// @return TRUE : succeed
513 /// @return FALSE : fail
514 //-------------------------------------------------------------------------------------------------
515 DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_SetReset(void);
516 //-------------------------------------------------------------------------------------------------
517 /// Select Demod number
518 /// @ingroup ATSC_ToBeRemoved
519 /// @param eDMD_NUM    \b IN: Select Demod number
520 /// @return TRUE : succeed
521 /// @return FALSE : fail
522 //-------------------------------------------------------------------------------------------------
523 // DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_SEL_DMD(eDMD_SEL eDMD_NUM);
524 //-------------------------------------------------------------------------------------------------
525 /// Load Demod FW
526 /// @ingroup ATSC_ToBeRemoved
527 /// @param DMD_NUM    \b IN: Select Demod number
528 /// @return TRUE : succeed
529 /// @return FALSE : fail
530 //-------------------------------------------------------------------------------------------------
531 // DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_LoadFW(eDMD_SEL DMD_NUM);
532 //-------------------------------------------------------------------------------------------------
533 /// Enable VSB mode
534 /// @ingroup ATSC_BASIC
535 /// @return TRUE : succeed
536 /// @return FALSE : fail
537 //-------------------------------------------------------------------------------------------------
538 // DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_SetVsbMode(void);
539 //-------------------------------------------------------------------------------------------------
540 /// Enable QAM256 mode
541 /// @ingroup ATSC_BASIC
542 /// @return TRUE : succeed
543 /// @return FALSE : fail
544 //-------------------------------------------------------------------------------------------------
545 // DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_Set256QamMode(void);
546 //-------------------------------------------------------------------------------------------------
547 /// Enable QAM64 mode
548 /// @ingroup ATSC_BASIC
549 /// @return TRUE : succeed
550 /// @return FALSE : fail
551 //-------------------------------------------------------------------------------------------------
552 // DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_Set64QamMode(void);
553 //-------------------------------------------------------------------------------------------------
554 /// Set QAM Type and symbol rate
555 /// @ingroup ATSC_ToBeRemoved
556 /// @param eType    \b IN: QAM type
557 /// @param symbol_rate    \b IN: symbol rate
558 /// @return TRUE : succeed
559 /// @return FALSE : fail
560 //-------------------------------------------------------------------------------------------------
561 // DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_Set_QAM_SR(DMD_ATSC_DEMOD_TYPE eType, MS_U16 symbol_rate);
562 //-------------------------------------------------------------------------------------------------
563 /// Active Demod
564 /// @ingroup ATSC_ToBeRemoved
565 /// @param bEnable    \b IN: Active Demod if TRUE
566 /// @return TRUE : succeed
567 /// @return FALSE : fail
568 //-------------------------------------------------------------------------------------------------
569 // DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_SetActive(MS_BOOL bEnable);
570 //-------------------------------------------------------------------------------------------------
571 /// Support ATSC STR function
572 /// @ingroup ATSC_STR
573 /// @param u16PowerState    \b IN: Set STR status
574 /// @return : STR status
575 //-------------------------------------------------------------------------------------------------
576 #if DMD_ATSC_STR_EN
577 DLL_PUBLIC extern MS_U32 MDrv_DMD_ATSC_SetPowerState(EN_POWER_MODE u16PowerState);
578 #endif
579 //-------------------------------------------------------------------------------------------------
580 /// Get lock status
581 /// @ingroup ATSC_INFO
582 /// @param eType    \b IN: select lock type
583 /// @return : lock status
584 //-------------------------------------------------------------------------------------------------
585 DLL_PUBLIC extern DMD_ATSC_LOCK_STATUS MDrv_DMD_ATSC_GetLock(DMD_ATSC_GETLOCK_TYPE eType);
586 //-------------------------------------------------------------------------------------------------
587 /// Get modulation mode
588 /// @ingroup ATSC_INFO
589 /// @return : modulation mode
590 //-------------------------------------------------------------------------------------------------
591 DLL_PUBLIC extern DMD_ATSC_DEMOD_TYPE MDrv_DMD_ATSC_GetModulationMode(void);
592 //-------------------------------------------------------------------------------------------------
593 /// Get Demod signal strength (IF AGC gain)
594 /// @ingroup ATSC_INFO
595 /// @param u16Strength    \b OUT: the pointer to signal strength
596 /// @return TRUE : succeed
597 /// @return FALSE : fail
598 //-------------------------------------------------------------------------------------------------
599 // DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_GetSignalStrength(MS_U16 *u16Strength);
600 //-------------------------------------------------------------------------------------------------
601 /// Get Demod signal quality (NO SIGNAL, WEAK, MODERATE, STRONG and VERY_STRONG)
602 /// @ingroup ATSC_INFO
603 /// @return : signal quality
604 //-------------------------------------------------------------------------------------------------
605 DLL_PUBLIC extern DMD_ATSC_SIGNAL_CONDITION MDrv_DMD_ATSC_GetSignalQuality(void);
606 //-------------------------------------------------------------------------------------------------
607 /// Get SNR percentage
608 /// @ingroup ATSC_INFO
609 /// @return : SNR percentage
610 //-------------------------------------------------------------------------------------------------
611 // DLL_PUBLIC extern MS_U8 MDrv_DMD_ATSC_GetSNRPercentage(void);
612 //-------------------------------------------------------------------------------------------------
613 /// Get QAM SNR
614 /// @ingroup ATSC_INFO
615 /// @param f_snr    \b OUT: the pointer to SNR
616 /// @return TRUE : succeed
617 /// @return FALSE : fail
618 //-------------------------------------------------------------------------------------------------
619 // DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_GET_QAM_SNR(float *f_snr);
620 //-------------------------------------------------------------------------------------------------
621 /// Get Demod packet error number
622 /// @ingroup ATSC_INFO
623 /// @param u16PacketErr    \b OUT: the pointer to packet error number
624 /// @return TRUE : succeed
625 /// @return FALSE : fail
626 //-------------------------------------------------------------------------------------------------
627 // DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_Read_uCPKT_ERR(MS_U16 *u16PacketErr);
628 //-------------------------------------------------------------------------------------------------
629 /// Get Demod pre Viterbi number
630 /// @ingroup ATSC_ToBeRemoved
631 /// @param ber    \b OUT: the pointer to pre Viterbi BER
632 /// @return TRUE : succeed
633 /// @return FALSE : fail
634 //-------------------------------------------------------------------------------------------------
635 // DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_GetPreViterbiBer(float *ber);
636 //-------------------------------------------------------------------------------------------------
637 /// Get Demod post Viterbi number
638 /// @ingroup ATSC_INFO
639 /// @param ber    \b OUT: the pointer to post Viterbi BER
640 /// @return TRUE : succeed
641 /// @return FALSE : fail
642 //-------------------------------------------------------------------------------------------------
643 // DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_GetPostViterbiBer(float *ber);
644 //-------------------------------------------------------------------------------------------------
645 /// Get Demod frequency offset
646 /// @ingroup ATSC_INFO
647 /// @param cfo    \b OUT: the pointer to CFO
648 /// @return TRUE : succeed
649 /// @return FALSE : fail
650 //-------------------------------------------------------------------------------------------------
651 // DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_ReadFrequencyOffset(MS_S16 *cfo);
652 //-------------------------------------------------------------------------------------------------
653 /// Set TS output mode
654 /// @ingroup ATSC_BASIC
655 /// @param u8TsConfigData    \b IN: TS configuration
656 /// @return TRUE : succeed
657 /// @return FALSE : fail
658 //-------------------------------------------------------------------------------------------------
659 // DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_SetSerialControl(MS_U8 u8TsConfigData);
660 //-------------------------------------------------------------------------------------------------
661 /// Enable I2C bypass mode
662 /// @ingroup ATSC_BASIC
663 /// @param bEnable    \b IN: Enable bypass mode
664 /// @return TRUE : succeed
665 /// @return FALSE : fail
666 //-------------------------------------------------------------------------------------------------
667 // DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_IIC_BYPASS_MODE(MS_BOOL bEnable);
668 //-------------------------------------------------------------------------------------------------
669 /// Set SSPI pin as GPIO function
670 /// @ingroup ATSC_BASIC
671 /// @param bEnable    \b IN: Switch to GPIO if TRUE, otherwise SSPI
672 /// @return TRUE : succeed
673 /// @return FALSE : fail
674 //-------------------------------------------------------------------------------------------------
675 // DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_SWITCH_SSPI_GPIO(MS_BOOL bEnable);
676 //-------------------------------------------------------------------------------------------------
677 /// Get GPIO level
678 /// @ingroup ATSC_BASIC
679 /// @param u8Pin    \b IN: Select pin number
680 /// @param bLevel    \b OUT: the pointer to GPIO level
681 /// @return TRUE : succeed
682 /// @return FALSE : fail
683 //-------------------------------------------------------------------------------------------------
684 // DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_GPIO_GET_LEVEL(MS_U8 u8Pin, MS_BOOL *bLevel);
685 //-------------------------------------------------------------------------------------------------
686 /// Set GPIO level
687 /// @ingroup ATSC_BASIC
688 /// @param u8Pin    \b IN: Select pin number
689 /// @param bLevel    \b IN: Set GPIO level
690 /// @return TRUE : succeed
691 /// @return FALSE : fail
692 //-------------------------------------------------------------------------------------------------
693 // DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_GPIO_SET_LEVEL(MS_U8 u8Pin, MS_BOOL bLevel);
694 //-------------------------------------------------------------------------------------------------
695 /// Set GPIO as output or input
696 /// @ingroup ATSC_BASIC
697 /// @param u8Pin    \b IN: Select pin number
698 /// @param bEnableOut    \b IN: output if TRUE, otherwise input
699 /// @return TRUE : succeed
700 /// @return FALSE : fail
701 //-------------------------------------------------------------------------------------------------
702 // DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_GPIO_OUT_ENABLE(MS_U8 u8Pin, MS_BOOL bEnableOut);
703 
704 //-------------------------------------------------------------------------------------------------
705 /// Get Demod register value
706 /// @ingroup ATSC_BASIC
707 /// @param u16Addr    \b IN: register address
708 /// @param pu8Data    \b OUT: the pointer to register data
709 /// @return TRUE : succeed
710 /// @return FALSE : fail
711 //-------------------------------------------------------------------------------------------------
712 // DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_GetReg(MS_U16 u16Addr, MS_U8 *pu8Data);
713 //-------------------------------------------------------------------------------------------------
714 /// Set Demod register value
715 /// @ingroup ATSC_BASIC
716 /// @param u16Addr    \b IN: register address
717 /// @param u8Data    \b IN: register data
718 /// @return TRUE : succeed
719 /// @return FALSE : fail
720 //-------------------------------------------------------------------------------------------------
721 // DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_SetReg(MS_U16 u16Addr, MS_U8 u8Data);
722 
723 ////////////////////////////////////////////////////////////////////////////////
724 ///                            MULTI DEMOD API                               ///
725 ////////////////////////////////////////////////////////////////////////////////
726 
727 //-------------------------------------------------------------------------------------------------
728 /// Initialize multiple ATSC Demod
729 /// @ingroup ATSC_BASIC
730 /// @param id                    \b IN: Select Demod number
731 /// @param pDMD_ATSC_InitData    \b IN: ATSC initial parameters
732 /// @param u32InitDataLen        \b IN: size of ATSC initial parameters
733 /// @return TRUE : succeed
734 /// @return FALSE : fail
735 //-------------------------------------------------------------------------------------------------
736 // DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_MD_Init(MS_U8 id, DMD_ATSC_InitData *pDMD_ATSC_InitData, MS_U32 u32InitDataLen);
737 //-------------------------------------------------------------------------------------------------
738 /// Support multiple Demod of exiting ATSC DTV mode
739 /// @ingroup ATSC_STR
740 /// @param id    \b IN: Select Demod number
741 /// @return TRUE : succeed
742 /// @return FALSE : fail
743 //-------------------------------------------------------------------------------------------------
744 // DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_MD_Exit(MS_U8 id);
745 //-------------------------------------------------------------------------------------------------
746 /// Support multiple Demod of setting and restarting Demod
747 /// @ingroup ATSC_BASIC
748 /// @param id    \b IN: Select Demod number
749 /// @param eType    \b IN: Select ATSC modulation type
750 /// @param bEnable  \b IN: Enable SetConfig function
751 /// @return TRUE : succeed
752 /// @return FALSE : fail
753 //-------------------------------------------------------------------------------------------------
754 // DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_MD_SetConfig(MS_U8 id, DMD_ATSC_DEMOD_TYPE eType, MS_BOOL bEnable);
755 //-------------------------------------------------------------------------------------------------
756 /// Reset FW state machine
757 /// @ingroup ATSC_ToBeRemoved
758 /// @return TRUE : succeed
759 /// @return FALSE : fail
760 //-------------------------------------------------------------------------------------------------
761 // DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_MD_SetReset(void);
762 //-------------------------------------------------------------------------------------------------
763 /// Support multiple Demod of setting QAM Type and symbol rate
764 /// @ingroup ATSC_ToBeRemoved
765 /// @param id    \b IN: Select Demod number
766 /// @param eType    \b IN: QAM type
767 /// @param symbol_rate    \b IN: symbol rate
768 /// @return TRUE : succeed
769 /// @return FALSE : fail
770 //-------------------------------------------------------------------------------------------------
771 // DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_MD_Set_QAM_SR(MS_U8 id, DMD_ATSC_DEMOD_TYPE eType, MS_U16 symbol_rate);
772 //-------------------------------------------------------------------------------------------------
773 /// Support multiple Demod of active Demod
774 /// @ingroup ATSC_ToBeRemoved
775 /// @param id    \b IN: Select Demod number
776 /// @param bEnable    \b IN: Active Demod if TRUE
777 /// @return TRUE : succeed
778 /// @return FALSE : fail
779 //-------------------------------------------------------------------------------------------------
780 // DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_MD_SetActive(MS_U8 id, MS_BOOL bEnable);
781 //-------------------------------------------------------------------------------------------------
782 /// Support multiple Demod of ATSC STR function
783 /// @ingroup ATSC_STR
784 /// @param id    \b IN: Select Demod number
785 /// @param u16PowerState    \b IN: Set STR status
786 /// @return : STR status
787 //-------------------------------------------------------------------------------------------------
788 #if DMD_ATSC_STR_EN
789 // DLL_PUBLIC extern MS_U32 MDrv_DMD_ATSC_MD_SetPowerState(MS_U8 id, EN_POWER_MODE u16PowerState);
790 #endif
791 //-------------------------------------------------------------------------------------------------
792 /// Support multiple Demod of getting lock status
793 /// @ingroup ATSC_INFO
794 /// @param id    \b IN: Select Demod number
795 /// @param eType    \b IN: select lock type
796 /// @return : lock status
797 //-------------------------------------------------------------------------------------------------
798 // DLL_PUBLIC extern DMD_ATSC_LOCK_STATUS MDrv_DMD_ATSC_MD_GetLock(MS_U8 id, DMD_ATSC_GETLOCK_TYPE eType);
799 //-------------------------------------------------------------------------------------------------
800 /// Support multiple Demod of getting modulation mode
801 /// @ingroup ATSC_INFO
802 /// @param id    \b IN: Select Demod number
803 /// @return : modulation mode
804 //-------------------------------------------------------------------------------------------------
805 // DLL_PUBLIC extern DMD_ATSC_DEMOD_TYPE MDrv_DMD_ATSC_MD_GetModulationMode(MS_U8 id);
806 //-------------------------------------------------------------------------------------------------
807 /// Support multiple Demod of getting Demod signal strength (IF AGC gain)
808 /// @ingroup ATSC_INFO
809 /// @param id    \b IN: Select Demod number
810 /// @param u16Strength    \b OUT: the pointer to signal strength
811 /// @return TRUE : succeed
812 /// @return FALSE : fail
813 //-------------------------------------------------------------------------------------------------
814 // DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_MD_GetSignalStrength(MS_U8 id, MS_U16 *u16Strength);
815 //-------------------------------------------------------------------------------------------------
816 /// Support multiple Demod of getting Demod signal quality (NO SIGNAL, WEAK, MODERATE, STRONG and VERY_STRONG)
817 /// @ingroup ATSC_INFO
818 /// @param id    \b IN: Select Demod number
819 /// @return : signal quality
820 //-------------------------------------------------------------------------------------------------
821 // DLL_PUBLIC extern DMD_ATSC_SIGNAL_CONDITION MDrv_DMD_ATSC_MD_GetSignalQuality(MS_U8 id);
822 //-------------------------------------------------------------------------------------------------
823 /// Support multiple Demod of getting SNR percentage
824 /// @ingroup ATSC_INFO
825 /// @param id    \b IN: Select Demod number
826 /// @return : SNR percentage
827 //-------------------------------------------------------------------------------------------------
828 // DLL_PUBLIC extern MS_U8 MDrv_DMD_ATSC_MD_GetSNRPercentage(MS_U8 id);
829 //-------------------------------------------------------------------------------------------------
830 /// Support multiple Demod of getting QAM SNR
831 /// @ingroup ATSC_INFO
832 /// @param id    \b IN: Select Demod number
833 /// @param f_snr    \b OUT: the pointer to SNR
834 /// @return TRUE : succeed
835 /// @return FALSE : fail
836 //-------------------------------------------------------------------------------------------------
837 // DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_MD_GET_QAM_SNR(MS_U8 id, float *f_snr);
838 //-------------------------------------------------------------------------------------------------
839 /// Support multiple Demod of getting Demod packet error number
840 /// @ingroup ATSC_INFO
841 /// @param id    \b IN: Select Demod number
842 /// @param u16PacketErr    \b OUT: the pointer to packet error number
843 /// @return TRUE : succeed
844 /// @return FALSE : fail
845 //-------------------------------------------------------------------------------------------------
846 // DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_MD_Read_uCPKT_ERR(MS_U8 id, MS_U16 *u16PacketErr);
847 //-------------------------------------------------------------------------------------------------
848 /// Support multiple Demod of getting Demod pre Viterbi number
849 /// @ingroup ATSC_ToBeRemoved
850 /// @param id    \b IN: Select Demod number
851 /// @param ber    \b OUT: the pointer to BER
852 /// @return TRUE : succeed
853 /// @return FALSE : fail
854 //-------------------------------------------------------------------------------------------------
855 // DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_MD_GetPreViterbiBer(MS_U8 id, float *ber);
856 //-------------------------------------------------------------------------------------------------
857 /// Support multiple Demod of getting Demod post Viterbi number
858 /// @ingroup ATSC_INFO
859 /// @param id    \b IN: Select Demod number
860 /// @param ber    \b OUT: the pointer to BER
861 /// @return TRUE : succeed
862 /// @return FALSE : fail
863 //-------------------------------------------------------------------------------------------------
864 // DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_MD_GetPostViterbiBer(MS_U8 id, float *ber);
865 //-------------------------------------------------------------------------------------------------
866 /// Support multiple Demod of getting Demod fequency offset
867 /// @ingroup ATSC_INFO
868 /// @param id    \b IN: Select Demod number
869 /// @param cfo    \b OUT: the pointer to CFO
870 /// @return TRUE : succeed
871 /// @return FALSE : fail
872 //-------------------------------------------------------------------------------------------------
873 // DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_MD_ReadFrequencyOffset(MS_U8 id, MS_S16 *cfo);
874 //-------------------------------------------------------------------------------------------------
875 /// Support multiple Demod of setting TS output mode
876 /// @ingroup ATSC_BASIC
877 /// @param id    \b IN: Select Demod number
878 /// @param u8TsConfigData    \b IN: TS configuration
879 /// @return TRUE : succeed
880 /// @return FALSE : fail
881 //-------------------------------------------------------------------------------------------------
882 // DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_MD_SetSerialControl(MS_U8 id, MS_U8 u8TsConfigData);
883 //-------------------------------------------------------------------------------------------------
884 /// Support multiple Demod of enabling I2C bypass mode
885 /// @ingroup ATSC_BASIC
886 /// @param id    \b IN: Select Demod number
887 /// @param bEnable    \b IN: Enable bypass mode
888 /// @return TRUE : succeed
889 /// @return FALSE : fail
890 //-------------------------------------------------------------------------------------------------
891 // DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_MD_IIC_BYPASS_MODE(MS_U8 id, MS_BOOL bEnable);
892 //-------------------------------------------------------------------------------------------------
893 /// Support multiple Demod of setting SSPI pin as GPIO function
894 /// @ingroup ATSC_BASIC
895 /// @param id    \b IN: Select Demod number
896 /// @param bEnable    \b IN: Switch to GPIO if TRUE, otherwise SSPI
897 /// @return TRUE : succeed
898 /// @return FALSE : fail
899 //-------------------------------------------------------------------------------------------------
900 // DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_MD_SWITCH_SSPI_GPIO(MS_U8 id, MS_BOOL bEnable);
901 //-------------------------------------------------------------------------------------------------
902 /// Support multiple Demod of getting GPIO level
903 /// @ingroup ATSC_BASIC
904 /// @param id    \b IN: Select Demod number
905 /// @param u8Pin    \b IN: Select pin number
906 /// @param bLevel    \b OUT: the pointer to GPIO level
907 /// @return TRUE : succeed
908 /// @return FALSE : fail
909 //-------------------------------------------------------------------------------------------------
910 // DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_MD_GPIO_GET_LEVEL(MS_U8 id, MS_U8 u8Pin, MS_BOOL *bLevel);
911 //-------------------------------------------------------------------------------------------------
912 /// Support multiple Demod of setting GPIO level
913 /// @ingroup ATSC_BASIC
914 /// @param id    \b IN: Select Demod number
915 /// @param u8Pin    \b IN: Select pin number
916 /// @param bLevel    \b IN: Set GPIO level
917 /// @return TRUE : succeed
918 /// @return FALSE : fail
919 //-------------------------------------------------------------------------------------------------
920 // DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_MD_GPIO_SET_LEVEL(MS_U8 id, MS_U8 u8Pin, MS_BOOL bLevel);
921 //-------------------------------------------------------------------------------------------------
922 /// Support multiple Demod of setting GPIO as output or input
923 /// @ingroup ATSC_BASIC
924 /// @param id    \b IN: Select Demod number
925 /// @param u8Pin    \b IN: Select pin number
926 /// @param bEnableOut    \b IN: output if TRUE, otherwise input
927 /// @return TRUE : succeed
928 /// @return FALSE : fail
929 //-------------------------------------------------------------------------------------------------
930 // DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_MD_GPIO_OUT_ENABLE(MS_U8 id, MS_U8 u8Pin, MS_BOOL bEnableOut);
931 //-------------------------------------------------------------------------------------------------
932 /// Support multiple Demod of getting Demod register value
933 /// @ingroup ATSC_BASIC
934 /// @param id    \b IN: Select Demod number
935 /// @param u16Addr    \b IN: register address
936 /// @param pu8Data    \b OUT: the pointer to get register data
937 /// @return TRUE : succeed
938 /// @return FALSE : fail
939 //-------------------------------------------------------------------------------------------------
940 // DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_MD_GetReg(MS_U8 id, MS_U16 u16Addr, MS_U8 *pu8Data);
941 //-------------------------------------------------------------------------------------------------
942 /// Support multiple Demod of setting Demod register value
943 /// @ingroup ATSC_BASIC
944 /// @param id    \b IN: Select Demod number
945 /// @param u16Addr    \b IN: register address
946 /// @param u8Data    \b IN: register data
947 /// @return TRUE : succeed
948 /// @return FALSE : fail
949 //-------------------------------------------------------------------------------------------------
950 // DLL_PUBLIC extern MS_BOOL MDrv_DMD_ATSC_MD_SetReg(MS_U8 id, MS_U16 u16Addr, MS_U8 u8Data);
951 
952 #ifdef __cplusplus
953 }
954 #endif
955 
956 #endif // _DRV_ATSC_H_
957 
958