xref: /utopia/UTPA2-700.0.x/modules/dmx/drv/tsp/drvTSP.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    drvTSP.h
98*53ee8cc1Swenshuai.xi /// @brief  Transport Stream Processer (TSP) Driver Interface
99*53ee8cc1Swenshuai.xi /// @author MStar Semiconductor,Inc.
100*53ee8cc1Swenshuai.xi /// @attention
101*53ee8cc1Swenshuai.xi /// All TSP DDI are not allowed to use in any interrupt context other than TSP ISR and Callback
102*53ee8cc1Swenshuai.xi ///////////////////////////////////////////////////////////////////////////////////////////////////
103*53ee8cc1Swenshuai.xi 
104*53ee8cc1Swenshuai.xi #ifndef _DRV_TSP_H_
105*53ee8cc1Swenshuai.xi #define _DRV_TSP_H_
106*53ee8cc1Swenshuai.xi 
107*53ee8cc1Swenshuai.xi #include "MsTypes.h"
108*53ee8cc1Swenshuai.xi 
109*53ee8cc1Swenshuai.xi #ifdef __cplusplus
110*53ee8cc1Swenshuai.xi extern "C"
111*53ee8cc1Swenshuai.xi {
112*53ee8cc1Swenshuai.xi #endif
113*53ee8cc1Swenshuai.xi 
114*53ee8cc1Swenshuai.xi 
115*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
116*53ee8cc1Swenshuai.xi //  Driver Capability
117*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
118*53ee8cc1Swenshuai.xi 
119*53ee8cc1Swenshuai.xi #define DRVTSP_FILTER_DEPTH         16                                                              // TSP_FILTER_DEPTH
120*53ee8cc1Swenshuai.xi 
121*53ee8cc1Swenshuai.xi /// TSP byte address alignment unit
122*53ee8cc1Swenshuai.xi #define DRVTSP_ALIGN_UNIT           8
123*53ee8cc1Swenshuai.xi 
124*53ee8cc1Swenshuai.xi /// TSP byte address alignment macro
125*53ee8cc1Swenshuai.xi #define DRVTSP_ALIGN(_x)            ALIGN_8((MS_U32)_x)
126*53ee8cc1Swenshuai.xi 
127*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
128*53ee8cc1Swenshuai.xi //  Macro and Define
129*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
130*53ee8cc1Swenshuai.xi /// Transport stream null PID
131*53ee8cc1Swenshuai.xi #define DRVTSP_PID_NULL             0x1FFF
132*53ee8cc1Swenshuai.xi #define MSIF_TSP_LIB_CODE           {'T','S','P','_'}                                               // Lib code
133*53ee8cc1Swenshuai.xi #define MSIF_TSP_LIBVER             {'1','3'}                                                       // LIB version
134*53ee8cc1Swenshuai.xi #define MSIF_TSP_BUILDNUM           {'0','1'}                                                       // Build Number
135*53ee8cc1Swenshuai.xi #define MSIF_TSP_CHANGELIST         {'0','0','6','1','7','4','7','0'}                               // P4 ChangeList Number
136*53ee8cc1Swenshuai.xi 
137*53ee8cc1Swenshuai.xi #define TSP_DRV_VERSION             /* Character String for DRV/API version             */  \
138*53ee8cc1Swenshuai.xi     MSIF_TAG,                       /* 'MSIF'                                           */  \
139*53ee8cc1Swenshuai.xi     MSIF_CLASS,                     /* '00'                                             */  \
140*53ee8cc1Swenshuai.xi     MSIF_CUS,                       /* 0x0000                                           */  \
141*53ee8cc1Swenshuai.xi     MSIF_MOD,                       /* 0x0000                                           */  \
142*53ee8cc1Swenshuai.xi     MSIF_CHIP,                                                                              \
143*53ee8cc1Swenshuai.xi     MSIF_CPU,                                                                               \
144*53ee8cc1Swenshuai.xi     MSIF_TSP_LIB_CODE,              /* IP__                                             */  \
145*53ee8cc1Swenshuai.xi     MSIF_TSP_LIBVER,                /* 0.0 ~ Z.Z                                        */  \
146*53ee8cc1Swenshuai.xi     MSIF_TSP_BUILDNUM,              /* 00 ~ 99                                          */  \
147*53ee8cc1Swenshuai.xi     MSIF_TSP_CHANGELIST,            /* CL#                                              */  \
148*53ee8cc1Swenshuai.xi     MSIF_OS
149*53ee8cc1Swenshuai.xi 
150*53ee8cc1Swenshuai.xi 
151*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
152*53ee8cc1Swenshuai.xi //  Type and Structure
153*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
154*53ee8cc1Swenshuai.xi /// TSP DDI return value
155*53ee8cc1Swenshuai.xi 
156*53ee8cc1Swenshuai.xi /// @name TSP_Result
157*53ee8cc1Swenshuai.xi /// @ref TSP_Result
158*53ee8cc1Swenshuai.xi /// return value
159*53ee8cc1Swenshuai.xi /// @{
160*53ee8cc1Swenshuai.xi typedef enum
161*53ee8cc1Swenshuai.xi {
162*53ee8cc1Swenshuai.xi     DRVTSP_FAIL                     = 0,
163*53ee8cc1Swenshuai.xi     DRVTSP_OK,
164*53ee8cc1Swenshuai.xi     DRVTSP_INVALID_PARAM,
165*53ee8cc1Swenshuai.xi     DRVTSP_FUNC_ERROR,
166*53ee8cc1Swenshuai.xi     DRVTSP_INVALID_SECFLT,
167*53ee8cc1Swenshuai.xi     DRVTSP_NOT_SUPPORTED,
168*53ee8cc1Swenshuai.xi } TSP_Result;
169*53ee8cc1Swenshuai.xi 
170*53ee8cc1Swenshuai.xi /// @}
171*53ee8cc1Swenshuai.xi 
172*53ee8cc1Swenshuai.xi #define DOUBLE_BUFFER_ENABLE        TRUE
173*53ee8cc1Swenshuai.xi #define DOUBLE_BUFFER_SWITCH        FALSE
174*53ee8cc1Swenshuai.xi 
175*53ee8cc1Swenshuai.xi #if 0
176*53ee8cc1Swenshuai.xi /// TSP channel Type
177*53ee8cc1Swenshuai.xi typedef enum //_DrvTSP_FltType
178*53ee8cc1Swenshuai.xi {
179*53ee8cc1Swenshuai.xi     // get TS from Live stream
180*53ee8cc1Swenshuai.xi     E_DRVTSP_FLT_TYPE_VIDEO         = 0x00000000,                                                   ///<\n
181*53ee8cc1Swenshuai.xi     E_DRVTSP_FLT_TYPE_AUDIO         ,                                                               ///<\n
182*53ee8cc1Swenshuai.xi     E_DRVTSP_FLT_TYPE_AUDIO2        ,                                                               ///<\n
183*53ee8cc1Swenshuai.xi     E_DRVTSP_FLT_TYPE_PVR           ,                                                               ///<\n
184*53ee8cc1Swenshuai.xi 
185*53ee8cc1Swenshuai.xi     // Section Filter Group
186*53ee8cc1Swenshuai.xi     E_DRVTSP_FLT_TYPE_SECTION_MASK  = 0x20000000,                                                   ///<\n
187*53ee8cc1Swenshuai.xi     E_DRVTSP_FLT_TYPE_SECTION       ,                                                               ///<\n
188*53ee8cc1Swenshuai.xi     E_DRVTSP_FLT_TYPE_PCR           ,                                                               ///<\n
189*53ee8cc1Swenshuai.xi     E_DRVTSP_FLT_TYPE_PES           ,                                                               ///<\n
190*53ee8cc1Swenshuai.xi     E_DRVTSP_FLT_TYPE_PACKET        ,                                                               //[Reserved]
191*53ee8cc1Swenshuai.xi     E_DRVTSP_FLT_TYPE_TELETEXT      ,
192*53ee8cc1Swenshuai.xi     E_DRVTSP_FLT_TYPE_EMM           ,                                                               //[Reserved]
193*53ee8cc1Swenshuai.xi     E_DRVTSP_FLT_TYPE_ECM           ,                                                               //[Reserved]
194*53ee8cc1Swenshuai.xi 
195*53ee8cc1Swenshuai.xi 
196*53ee8cc1Swenshuai.xi     E_DRVTSP_FLT_SOURCE_TYPE_MASK   =  0xC0000000,
197*53ee8cc1Swenshuai.xi     E_DRVTSP_FLT_SOURCE_TYPE_LIVE   =  0x80000000,
198*53ee8cc1Swenshuai.xi     E_DRVTSP_FLT_SOURCE_TYPE_FILE   =  0x40000000,
199*53ee8cc1Swenshuai.xi 
200*53ee8cc1Swenshuai.xi     E_DRVTSP_FLT_TYPE_LAST_ENUM
201*53ee8cc1Swenshuai.xi 
202*53ee8cc1Swenshuai.xi } DrvTSP_FltType;
203*53ee8cc1Swenshuai.xi #endif
204*53ee8cc1Swenshuai.xi 
205*53ee8cc1Swenshuai.xi 
206*53ee8cc1Swenshuai.xi //TSP IF Source Enum
207*53ee8cc1Swenshuai.xi #define TSP_SRC_FROM_TSIF0_LIVE             0x00000001
208*53ee8cc1Swenshuai.xi #define TSP_SRC_FROM_TSIF0_FILE             0x00000002
209*53ee8cc1Swenshuai.xi #define TSP_SRC_FROM_TSIF1                  0x00000003
210*53ee8cc1Swenshuai.xi #define TSP_SRC_FROM_TSIF2                  0x00000004
211*53ee8cc1Swenshuai.xi #define TSP_SRC_FROM_MMFI0                  0x00000006
212*53ee8cc1Swenshuai.xi #define TSP_SRC_FROM_MMFI1                  0x00000007
213*53ee8cc1Swenshuai.xi 
214*53ee8cc1Swenshuai.xi 
215*53ee8cc1Swenshuai.xi #define DrvTSP_FltType                  MS_U32
216*53ee8cc1Swenshuai.xi // get TS from Live stream
217*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_TYPE_VIDEO         0x00000000                                                  ///<\n
218*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_TYPE_AUDIO         0x00000001                                                  ///<\n
219*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_TYPE_AUDIO2        0x00000002                                                  ///<\n
220*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_TYPE_PVR           0x00000003                                                  ///<\n
221*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_TYPE_VIDEO3D       0x00000008
222*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_TYPE_CB            0x00000009
223*53ee8cc1Swenshuai.xi 
224*53ee8cc1Swenshuai.xi // Section Filter Group
225*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_TYPE_SECTION_MASK              0x01000000                                                  ///<\n
226*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_TYPE_SECTION                   0x01000001                                                  ///<\n
227*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_TYPE_PCR                       0x01000002                                                  ///<\n
228*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_TYPE_PES                       0x01000003                                                  ///<\n
229*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_TYPE_PACKET                    0x01000004                                                  //[Reserved]
230*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_TYPE_TELETEXT                  0x01000005
231*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_TYPE_EMM                       0x01000006                                                  //[Reserved]
232*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_TYPE_ECM                       0x01000007                                                  //[Reserved]
233*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_TYPE_SECTION_VER               0x01000008
234*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_TYPE_SECTION_NO_PUSI           0x01000009
235*53ee8cc1Swenshuai.xi 
236*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_TYPE_LAST_ENUM     0x0100000A
237*53ee8cc1Swenshuai.xi 
238*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_MASK               0xF0800000
239*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_SOURCE_TYPE_MASK   0xC0800000
240*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_SOURCE_TYPE_LIVE   0x80000000
241*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_SOURCE_TYPE_FILE   0x40000000
242*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_SOURCE_TYPE_LIVEB  E_DRVTSP_FLT_SOURCE_TYPE_FILE                               // Input from TS1 to File PID filter
243*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_SOURCE_TYPE_TS1    0xC0000000
244*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_SOURCE_TYPE_TS2    0x00800000
245*53ee8cc1Swenshuai.xi 
246*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_SCMB_MASK          0x20000000
247*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_TYPE_SCMB          0x20000000
248*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_TYPE_SCMB_SHAREKEY 0x10000000
249*53ee8cc1Swenshuai.xi 
250*53ee8cc1Swenshuai.xi #define DrvTSP_FltMode MS_U32
251*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_MODE_CONTI         0x00000000
252*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_MODE_ONESHOT       0x00000001
253*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_MODE_PESSCMCHK     0x00000003                 //Only for PES type checking SCMB status
254*53ee8cc1Swenshuai.xi 
255*53ee8cc1Swenshuai.xi // optional
256*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_MODE_CRCCHK        0x00000002
257*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_MODE_AUTO_ADDR     0x00000004 // auto move read point mode
258*53ee8cc1Swenshuai.xi 
259*53ee8cc1Swenshuai.xi //--------------------------------------------------
260*53ee8cc1Swenshuai.xi // Debug table
261*53ee8cc1Swenshuai.xi typedef enum
262*53ee8cc1Swenshuai.xi {
263*53ee8cc1Swenshuai.xi     E_DRVTSP_DEBUG_CMD_NONE,
264*53ee8cc1Swenshuai.xi     E_DRVTSP_DEBUG_CMD_CLEAR,
265*53ee8cc1Swenshuai.xi     E_DRVTSP_DEBUG_CMD_ENABLE,
266*53ee8cc1Swenshuai.xi     E_DRVTSP_DEBUG_CMD_DISABLE,
267*53ee8cc1Swenshuai.xi } DrvTSP_Debug_Cmd;
268*53ee8cc1Swenshuai.xi 
269*53ee8cc1Swenshuai.xi typedef enum
270*53ee8cc1Swenshuai.xi {
271*53ee8cc1Swenshuai.xi     E_DRVTSP_DEBUG_SRC_TS0,
272*53ee8cc1Swenshuai.xi     E_DRVTSP_DEBUG_SRC_TS1,
273*53ee8cc1Swenshuai.xi     E_DRVTSP_DEBUG_SRC_TS2,
274*53ee8cc1Swenshuai.xi     E_DRVTSP_DEBUG_SRC_FILE,
275*53ee8cc1Swenshuai.xi } DrvTSP_Debug_Src;
276*53ee8cc1Swenshuai.xi 
277*53ee8cc1Swenshuai.xi typedef enum
278*53ee8cc1Swenshuai.xi {
279*53ee8cc1Swenshuai.xi     E_DRVTSP_DEBUG_TSIF_TS0,
280*53ee8cc1Swenshuai.xi     E_DRVTSP_DEBUG_TSIF_TS1,
281*53ee8cc1Swenshuai.xi     E_DRVTSP_DEBUG_TSIF_TSCB,
282*53ee8cc1Swenshuai.xi } DrvTSP_Debug_Tsif;
283*53ee8cc1Swenshuai.xi 
284*53ee8cc1Swenshuai.xi typedef enum
285*53ee8cc1Swenshuai.xi {
286*53ee8cc1Swenshuai.xi     E_DRVTSP_DEBUG_FIFO_VIDEO,
287*53ee8cc1Swenshuai.xi     E_DRVTSP_DEBUG_FIFO_AUDIO,
288*53ee8cc1Swenshuai.xi     E_DRVTSP_DEBUG_FIFO_VIDEO3D,
289*53ee8cc1Swenshuai.xi     E_DRVTSP_DEBUG_FIFO_AUDIOB,
290*53ee8cc1Swenshuai.xi } DrvTSP_Debug_Fifo;
291*53ee8cc1Swenshuai.xi 
292*53ee8cc1Swenshuai.xi typedef enum
293*53ee8cc1Swenshuai.xi {
294*53ee8cc1Swenshuai.xi     E_DRVTSP_DEBUG_PKT_DEMUX_0,
295*53ee8cc1Swenshuai.xi     E_DRVTSP_DEBUG_PKT_DEMUX_0_FILE,
296*53ee8cc1Swenshuai.xi     E_DRVTSP_DEBUG_PKT_DEMUX_1,
297*53ee8cc1Swenshuai.xi     E_DRVTSP_DEBUG_PKT_DEMUX_2,
298*53ee8cc1Swenshuai.xi     E_DRVTSP_DEBUG_MMFI0,
299*53ee8cc1Swenshuai.xi     E_DRVTSP_DEBUG_MMFI1,
300*53ee8cc1Swenshuai.xi } DrvTSP_Debug_Fifo_Src;
301*53ee8cc1Swenshuai.xi 
302*53ee8cc1Swenshuai.xi /// TSP channel state bit flags
303*53ee8cc1Swenshuai.xi typedef enum //_DrvTSP_FltState
304*53ee8cc1Swenshuai.xi {
305*53ee8cc1Swenshuai.xi     E_DRVTSP_FLT_STATE_FREE           = 0x00000000,                                                 ///<\n
306*53ee8cc1Swenshuai.xi     E_DRVTSP_FLT_STATE_ALLOC          = 0x00000001,                                                 ///<\n
307*53ee8cc1Swenshuai.xi     E_DRVTSP_FLT_STATE_ENABLE         = 0x00000002,                                                 ///<\n
308*53ee8cc1Swenshuai.xi     E_DRVTSP_FLT_STATE_SCRAMBLED      = 0x00000004,                                                 //[TODO]
309*53ee8cc1Swenshuai.xi     E_DRVTSP_FLT_STATE_STREAM_AVAIL   = 0x00000008,                                                 //[TODO]
310*53ee8cc1Swenshuai.xi     E_DRVTSP_FLT_STATE_SCRAMBLED_ORG  = 0x00000010,
311*53ee8cc1Swenshuai.xi     E_DRVTSP_FLT_STATE_OVERFLOW       = 0x00010000,                                                 //[Reserved]
312*53ee8cc1Swenshuai.xi     E_DRVTSP_FLT_STATE_CBRUN          = 0x40000000,                                                 // Callback processing
313*53ee8cc1Swenshuai.xi     E_DRVTSP_FLT_STATE_FREEING        = 0x80000000,                                                 // Free filter is  running
314*53ee8cc1Swenshuai.xi     E_DRVTSP_FLT_STATE_NA             = 0xFFFFFFFF,
315*53ee8cc1Swenshuai.xi } DrvTSP_FltState;
316*53ee8cc1Swenshuai.xi 
317*53ee8cc1Swenshuai.xi 
318*53ee8cc1Swenshuai.xi /// TSP record mode
319*53ee8cc1Swenshuai.xi typedef enum //_DrvTSP_RecMode
320*53ee8cc1Swenshuai.xi {
321*53ee8cc1Swenshuai.xi     //[TODO] rename REC_MODE to PVR_MODE
322*53ee8cc1Swenshuai.xi 
323*53ee8cc1Swenshuai.xi     /// Record ENG0 by @ref E_DRVTSP_FLT_TYPE_PVR
324*53ee8cc1Swenshuai.xi     E_DRVTSP_REC_MODE_ENG0_FLTTYPE    = 0x00000000,                                                 // TSP_PVR_CTRL_ENG(0)
325*53ee8cc1Swenshuai.xi     /// Record ENG1 by @ref E_DRVTSP_FLT_TYPE_PVR
326*53ee8cc1Swenshuai.xi     E_DRVTSP_REC_MODE_ENG1_FLTTYPE    = 0x00000001,                                                 // TSP_PVR_CTRL_ENG(1)
327*53ee8cc1Swenshuai.xi     /// Record ENG0 bypass PID fliter
328*53ee8cc1Swenshuai.xi     E_DRVTSP_REC_MODE_ENG0_BYPASS     = 0x00000002,                                                 // TSP_PVR_CTRL_ENG(0) + TSP_PVR_CTRL_BYPASS
329*53ee8cc1Swenshuai.xi     /// Record ENG1 bypass PID fliter
330*53ee8cc1Swenshuai.xi     E_DRVTSP_REC_MODE_ENG1_BYPASS     = 0x00000003,                                                 // TSP_PVR_CTRL_ENG(1) + TSP_PVR_CTRL_BYPASS
331*53ee8cc1Swenshuai.xi 
332*53ee8cc1Swenshuai.xi     E_DRVTSP_REC_MODE_ENG0_FLT1CA     = 0x00000004,
333*53ee8cc1Swenshuai.xi 
334*53ee8cc1Swenshuai.xi     E_DRVTSP_REC_MODE_ENG0_FI_FLTTYPE = 0x00000008,                                                 //File-in record pid
335*53ee8cc1Swenshuai.xi 
336*53ee8cc1Swenshuai.xi     E_DRVTSP_REC_MODE_ENG0_FI_BYPASS  = 0x00000010,                                                 //File-in record all
337*53ee8cc1Swenshuai.xi 
338*53ee8cc1Swenshuai.xi } DrvTSP_RecMode;
339*53ee8cc1Swenshuai.xi 
340*53ee8cc1Swenshuai.xi /// TSP Control Mode
341*53ee8cc1Swenshuai.xi typedef enum //_DrvTSP_CtrlMode
342*53ee8cc1Swenshuai.xi {
343*53ee8cc1Swenshuai.xi     /// Input From Stream Source 0
344*53ee8cc1Swenshuai.xi     E_DRVTSP_CTRL_MODE_TS0,
345*53ee8cc1Swenshuai.xi     /// Input From Stream Source 1
346*53ee8cc1Swenshuai.xi     E_DRVTSP_CTRL_MODE_TS1,
347*53ee8cc1Swenshuai.xi     /// Input From Memory
348*53ee8cc1Swenshuai.xi     E_DRVTSP_CTRL_MODE_MEM,
349*53ee8cc1Swenshuai.xi     /// Input From Memory
350*53ee8cc1Swenshuai.xi     E_DRVTSP_CTRL_MODE_MEM_PVR,
351*53ee8cc1Swenshuai.xi     /// Input From Stream Source 0, enable output to MAD
352*53ee8cc1Swenshuai.xi     E_DRVTSP_CTRL_MODE_TS0_AUD,
353*53ee8cc1Swenshuai.xi     /// Input From Stream Source 1, enable output to MAD
354*53ee8cc1Swenshuai.xi     E_DRVTSP_CTRL_MODE_TS1_AUD,
355*53ee8cc1Swenshuai.xi     /// Input From Memory, enable output to MAD
356*53ee8cc1Swenshuai.xi     E_DRVTSP_CTRL_MODE_MEM_AUD,
357*53ee8cc1Swenshuai.xi     /// Enable bounding option for PVR descrambled stream
358*53ee8cc1Swenshuai.xi     E_DRVTSP_CTRL_MODE_PVR_TS0,
359*53ee8cc1Swenshuai.xi     /// Enable Video PS enable for h264 play file
360*53ee8cc1Swenshuai.xi     E_DRVTSP_CTRL_MODE_VID,
361*53ee8cc1Swenshuai.xi     /// Enable bounding option for PVR descrambled stream, from TS1
362*53ee8cc1Swenshuai.xi     E_DRVTSP_CTRL_MODE_PVR_CA,
363*53ee8cc1Swenshuai.xi     /// Input From Stream Source 2
364*53ee8cc1Swenshuai.xi     E_DRVTSP_CTRL_MODE_TS2,
365*53ee8cc1Swenshuai.xi     /// Input From Stream Source 2, enable output to MAD
366*53ee8cc1Swenshuai.xi     E_DRVTSP_CTRL_MODE_TS2_AUD,
367*53ee8cc1Swenshuai.xi     /// Input From Stream Source 1, and output to File PID filter
368*53ee8cc1Swenshuai.xi     E_DRVTSP_CTRL_MODE_TS1_FILEFLT,
369*53ee8cc1Swenshuai.xi     /// Enable bounding option for PVR descrambled stream
370*53ee8cc1Swenshuai.xi     E_DRVTSP_CTRL_MODE_PVR_TS0_CA,
371*53ee8cc1Swenshuai.xi     /// Input From Memory, but not pass through CA
372*53ee8cc1Swenshuai.xi     E_DRVTSP_CTRL_MODE_MEM_NOCA,
373*53ee8cc1Swenshuai.xi     /// Enable bounding option for PVR1 descrambled stream
374*53ee8cc1Swenshuai.xi     E_DRVTSP_CTRL_MODE_PVR1_CA,
375*53ee8cc1Swenshuai.xi     /// Enable bounding option for PVR descrambled stream, from TS1, output to TS2
376*53ee8cc1Swenshuai.xi     E_DRVTSP_CTRL_MODE_PVR_TS2_CA,
377*53ee8cc1Swenshuai.xi     /// Input From Stream Source 0, but not pass through CA
378*53ee8cc1Swenshuai.xi     E_DRVTSP_CTRL_MODE_TS0_NOCA,
379*53ee8cc1Swenshuai.xi     /// Input From Stream Source 1, CA output to Live0
380*53ee8cc1Swenshuai.xi     E_DRVTSP_CTRL_MODE_TS1_OUT_LIVE0,
381*53ee8cc1Swenshuai.xi 
382*53ee8cc1Swenshuai.xi } DrvTSP_CtrlMode;
383*53ee8cc1Swenshuai.xi 
384*53ee8cc1Swenshuai.xi /// TSP input pad selection
385*53ee8cc1Swenshuai.xi typedef enum
386*53ee8cc1Swenshuai.xi {
387*53ee8cc1Swenshuai.xi     E_DRVTSP_PAD_DEMOD                = 0x0,
388*53ee8cc1Swenshuai.xi     E_DRVTSP_PAD_EXT_INPUT0           = 0x1,
389*53ee8cc1Swenshuai.xi     E_DRVTSP_PAD_EXT_INPUT1           = 0x2,
390*53ee8cc1Swenshuai.xi     E_DRVTSP_PAD_EXT_INPUT2           = 0x4,
391*53ee8cc1Swenshuai.xi     E_DRVTSP_PAD_TSO                  = 0x8,
392*53ee8cc1Swenshuai.xi } DrvTSP_PadIn;
393*53ee8cc1Swenshuai.xi 
394*53ee8cc1Swenshuai.xi /// TSP interface
395*53ee8cc1Swenshuai.xi typedef enum
396*53ee8cc1Swenshuai.xi {
397*53ee8cc1Swenshuai.xi     E_DRVTSP_IF_PLAYBACK              = 0x0,                                                        // TS interface 0
398*53ee8cc1Swenshuai.xi     E_DRVTSP_IF_PVR0                  = 0x1,
399*53ee8cc1Swenshuai.xi     E_DRVTSP_IF_PVR1                  = 0x2,
400*53ee8cc1Swenshuai.xi     E_DRVTSP_IF_NUM,
401*53ee8cc1Swenshuai.xi 
402*53ee8cc1Swenshuai.xi } DrvTSP_If;
403*53ee8cc1Swenshuai.xi 
404*53ee8cc1Swenshuai.xi typedef struct
405*53ee8cc1Swenshuai.xi {
406*53ee8cc1Swenshuai.xi     DrvTSP_PadIn        ePad;
407*53ee8cc1Swenshuai.xi     MS_BOOL             bClkInv;
408*53ee8cc1Swenshuai.xi     MS_BOOL             bExtSync;
409*53ee8cc1Swenshuai.xi     MS_BOOL             bParallel;
410*53ee8cc1Swenshuai.xi } DrvTSP_If_Set;
411*53ee8cc1Swenshuai.xi 
412*53ee8cc1Swenshuai.xi //----------------------------------
413*53ee8cc1Swenshuai.xi /// DMX debug table information structure
414*53ee8cc1Swenshuai.xi //----------------------------------
415*53ee8cc1Swenshuai.xi typedef struct
416*53ee8cc1Swenshuai.xi {
417*53ee8cc1Swenshuai.xi     DrvTSP_Debug_Cmd            TspCmd;
418*53ee8cc1Swenshuai.xi     DrvTSP_Debug_Src            TspSrc;
419*53ee8cc1Swenshuai.xi     DrvTSP_Debug_Fifo           TspFifo;
420*53ee8cc1Swenshuai.xi } DrvTSP_DisContiCnt_info, DrvTSP_DropPktCnt_info;
421*53ee8cc1Swenshuai.xi 
422*53ee8cc1Swenshuai.xi typedef struct
423*53ee8cc1Swenshuai.xi {
424*53ee8cc1Swenshuai.xi     DrvTSP_Debug_Cmd            TspCmd;
425*53ee8cc1Swenshuai.xi     DrvTSP_Debug_Tsif           TspTsif;
426*53ee8cc1Swenshuai.xi } DrvTSP_LockPktCnt_info;
427*53ee8cc1Swenshuai.xi 
428*53ee8cc1Swenshuai.xi typedef struct
429*53ee8cc1Swenshuai.xi {
430*53ee8cc1Swenshuai.xi     DrvTSP_Debug_Cmd            TspCmd;
431*53ee8cc1Swenshuai.xi     DrvTSP_Debug_Fifo           TspFifo;
432*53ee8cc1Swenshuai.xi     DrvTSP_Debug_Fifo_Src       TspFifoSrc;
433*53ee8cc1Swenshuai.xi } DrvTSP_AVPktCnt_info;
434*53ee8cc1Swenshuai.xi 
435*53ee8cc1Swenshuai.xi typedef enum
436*53ee8cc1Swenshuai.xi {
437*53ee8cc1Swenshuai.xi     /// TSP Engine 0 Transport Stream
438*53ee8cc1Swenshuai.xi     E_DRVTSP_FILEIN_MODE_ENG0_TS      = 0x00000000,                                                 //TSP_TSDMA_CTRL_ENG0
439*53ee8cc1Swenshuai.xi     /// TSP Engine 0 Video PES Only
440*53ee8cc1Swenshuai.xi     E_DRVTSP_FILEIN_MODE_ENG0_VPES    = 0x00000004,                                                 //TSP_TSDMA_CTRL_VPES0
441*53ee8cc1Swenshuai.xi     /// TSP Engine 0 Audio PES Only
442*53ee8cc1Swenshuai.xi     E_DRVTSP_FILEIN_MODE_ENG0_APES    = 0x00000008,                                                 //TSP_TSDMA_CTRL_APES0
443*53ee8cc1Swenshuai.xi     /// TSP Engine 0 Audio2 PES Only
444*53ee8cc1Swenshuai.xi     E_DRVTSP_FILEIN_MODE_ENG0_A2PES   = 0x00000010,                                                 //TSP_TSDMA_CTRL_A2PES0
445*53ee8cc1Swenshuai.xi     /// TSP Engine 0 Video3D PES Only
446*53ee8cc1Swenshuai.xi     E_DRVTSP_FILEIN_MODE_ENG0_V3DPES  = 0x00000020,                                                 //TSP_TSDMA_CTRL_V3DPES0
447*53ee8cc1Swenshuai.xi } DrvTSP_FileinMode;
448*53ee8cc1Swenshuai.xi 
449*53ee8cc1Swenshuai.xi 
450*53ee8cc1Swenshuai.xi typedef enum
451*53ee8cc1Swenshuai.xi {
452*53ee8cc1Swenshuai.xi     /// Command Queue is Idle
453*53ee8cc1Swenshuai.xi     E_DRVTSP_FILEIN_STATE_IDLE        = 0000000000,
454*53ee8cc1Swenshuai.xi     /// Command Queue is Busy
455*53ee8cc1Swenshuai.xi     E_DRVTSP_FILEIN_STATE_BUSY        = 0x00000001,
456*53ee8cc1Swenshuai.xi     /// Command Queue is Paused.
457*53ee8cc1Swenshuai.xi     E_DRVTSP_FILEIN_STATE_PAUSE       = 0x00000002,
458*53ee8cc1Swenshuai.xi } DrvTSP_FileinState;
459*53ee8cc1Swenshuai.xi 
460*53ee8cc1Swenshuai.xi #if 0
461*53ee8cc1Swenshuai.xi /// TSP notification event
462*53ee8cc1Swenshuai.xi typedef enum //_DrvTSP_Event
463*53ee8cc1Swenshuai.xi {
464*53ee8cc1Swenshuai.xi     E_DRVTSP_EVENT_DATA_INIT          = 0x00000000,
465*53ee8cc1Swenshuai.xi     /// Section Data Ready
466*53ee8cc1Swenshuai.xi     E_DRVTSP_EVENT_DATA_READY         = 0x00000001,
467*53ee8cc1Swenshuai.xi     /// Section Buffer Overflow
468*53ee8cc1Swenshuai.xi     E_DRVTSP_EVENT_BUF_OVERFLOW       = 0x00000002,
469*53ee8cc1Swenshuai.xi     /// PVR Buffer is Full
470*53ee8cc1Swenshuai.xi     E_DRVTSP_EVENT_PVRBUF_FULL        = 0x00000010,
471*53ee8cc1Swenshuai.xi     /// PVR Double Buffer Overflow
472*53ee8cc1Swenshuai.xi     E_DRVTSP_EVENT_PVRBUF_OVERFLOW    = 0x00000020,
473*53ee8cc1Swenshuai.xi 
474*53ee8cc1Swenshuai.xi 
475*53ee8cc1Swenshuai.xi     /// TSP self task callback // optional --> default is CB by poll
476*53ee8cc1Swenshuai.xi     E_DRVTSP_EVENT_CB_MASK            = 0x80000000,
477*53ee8cc1Swenshuai.xi     E_DRVTSP_EVENT_CB_POLL            = 0x00000000,
478*53ee8cc1Swenshuai.xi     E_DRVTSP_EVENT_CB_SELF            = 0x80000000,
479*53ee8cc1Swenshuai.xi } DrvTSP_Event;
480*53ee8cc1Swenshuai.xi #endif
481*53ee8cc1Swenshuai.xi 
482*53ee8cc1Swenshuai.xi #define DrvTSP_Event                    MS_U32
483*53ee8cc1Swenshuai.xi #define E_DRVTSP_EVENT_DATA_INIT        0x00000000
484*53ee8cc1Swenshuai.xi /// Section Data Ready
485*53ee8cc1Swenshuai.xi #define E_DRVTSP_EVENT_DATA_READY       0x00000001
486*53ee8cc1Swenshuai.xi /// Section Buffer Overflow
487*53ee8cc1Swenshuai.xi #define E_DRVTSP_EVENT_BUF_OVERFLOW     0x00000002
488*53ee8cc1Swenshuai.xi /// Section Buffer CRC error
489*53ee8cc1Swenshuai.xi #define E_DRVTSP_EVENT_SEC_CRCERR       0x00000004
490*53ee8cc1Swenshuai.xi /// PVR Buffer is Full
491*53ee8cc1Swenshuai.xi #define E_DRVTSP_EVENT_PVRBUF_FULL      0x00000010
492*53ee8cc1Swenshuai.xi /// PVR Double Buffer Overflow
493*53ee8cc1Swenshuai.xi #define E_DRVTSP_EVENT_PVRBUF_OVERFLOW  0x00000020
494*53ee8cc1Swenshuai.xi /// Channel Browser Buffer is Full
495*53ee8cc1Swenshuai.xi #define E_DRVTSP_EVENT_CBBUF_FULL       0x00000040
496*53ee8cc1Swenshuai.xi #define E_DRVTSP_EVENT_CBBUF_OVERFLOW   0x00000080
497*53ee8cc1Swenshuai.xi 
498*53ee8cc1Swenshuai.xi 
499*53ee8cc1Swenshuai.xi /// TSP self task callback // optional --> default is CB by poll
500*53ee8cc1Swenshuai.xi #define E_DRVTSP_EVENT_CB_MASK          0x80000000
501*53ee8cc1Swenshuai.xi #define E_DRVTSP_EVENT_CB_POLL          0x00000000
502*53ee8cc1Swenshuai.xi #define E_DRVTSP_EVENT_CB_SELF          0x80000000
503*53ee8cc1Swenshuai.xi 
504*53ee8cc1Swenshuai.xi #define DrvTSP_PKTDMXSrcType            MS_U32
505*53ee8cc1Swenshuai.xi #define E_DRVTSP_PKTSRC_DEMUX0          0x00000001
506*53ee8cc1Swenshuai.xi #define E_DRVTSP_PKTSRC_DEMUXFILE       0x00000002
507*53ee8cc1Swenshuai.xi #define E_DRVTSP_PKTSRC_DEMUX1          0x00000003
508*53ee8cc1Swenshuai.xi #define E_DRVTSP_PKTSRC_DEMUX2          0x00000004
509*53ee8cc1Swenshuai.xi #define E_DRVTSP_PKTSRC_DEMUXMMFI0      0x00000006
510*53ee8cc1Swenshuai.xi #define E_DRVTSP_PKTSRC_DEMUXMMFI1      0x00000007
511*53ee8cc1Swenshuai.xi 
512*53ee8cc1Swenshuai.xi //Ca control path
513*53ee8cc1Swenshuai.xi #define DrvTSP_DscmbCtrl                MS_U32
514*53ee8cc1Swenshuai.xi #define E_DRVTSP_CA_INPUT_LIVE0         0x00000001
515*53ee8cc1Swenshuai.xi #define E_DRVTSP_CA_INPUT_FILE0         0x00000002
516*53ee8cc1Swenshuai.xi #define E_DRVTSP_CA_INPUT_TSIF1         0x00000004
517*53ee8cc1Swenshuai.xi #define E_DRVTSP_CA_INPUT_TSIF2         0x00000800
518*53ee8cc1Swenshuai.xi #define E_DRVTSP_CA_OUTPUT_LIVE0        0x00000010
519*53ee8cc1Swenshuai.xi #define E_DRVTSP_CA_OUTPUT_FILE0        0x00000020
520*53ee8cc1Swenshuai.xi #define E_DRVTSP_CA_OUTPUT_REC0         0x00000040
521*53ee8cc1Swenshuai.xi #define E_DRVTSP_CA_OUTPUT_TSIF2        0x00000400
522*53ee8cc1Swenshuai.xi 
523*53ee8cc1Swenshuai.xi /// TSP file in Packet mode
524*53ee8cc1Swenshuai.xi typedef enum //_DrvTSP_PacketMode
525*53ee8cc1Swenshuai.xi {
526*53ee8cc1Swenshuai.xi     E_DRVTSP_PKTMODE_188              = 0x00000000,
527*53ee8cc1Swenshuai.xi     E_DRVTSP_PKTMODE_192              = 0x00000001,
528*53ee8cc1Swenshuai.xi     E_DRVTSP_PKTMODE_204              = 0x00000002,
529*53ee8cc1Swenshuai.xi     E_DRVTSP_PKTMODE_130              = 0x00000003,    // RVU
530*53ee8cc1Swenshuai.xi     E_DRVTSP_PKTMODE_134              = 0x00000004,    // RVU with timestamp
531*53ee8cc1Swenshuai.xi     E_DRVTSP_PKTMODE_200              = 0x00000005,       // packet size with 200 (Open cable Single stream)
532*53ee8cc1Swenshuai.xi 
533*53ee8cc1Swenshuai.xi     E_DRVTSP_PKTMODE_MERG188          = 0x00000006,       // packet size with 188 (Merge stream)
534*53ee8cc1Swenshuai.xi     E_DRVTSP_PKTMODE_MERG192          = 0x00000007,       // packet size with 192 (Merge stream)
535*53ee8cc1Swenshuai.xi     E_DRVTSP_PKTMODE_MERG200          = 0x00000008,       //packet size with 200 (Open cable Merge stream)
536*53ee8cc1Swenshuai.xi 
537*53ee8cc1Swenshuai.xi } DrvTSP_PacketMode;
538*53ee8cc1Swenshuai.xi 
539*53ee8cc1Swenshuai.xi /// TSP notification event message
540*53ee8cc1Swenshuai.xi typedef struct //_DrvTSP_Msg
541*53ee8cc1Swenshuai.xi {
542*53ee8cc1Swenshuai.xi     /// Union data type of message
543*53ee8cc1Swenshuai.xi     union
544*53ee8cc1Swenshuai.xi     {
545*53ee8cc1Swenshuai.xi         /// FltInfo message
546*53ee8cc1Swenshuai.xi         ///   - Byte[0] : Section filter id
547*53ee8cc1Swenshuai.xi         ///   - Byte[1] : TSP id
548*53ee8cc1Swenshuai.xi         MS_U32                          FltInfo;
549*53ee8cc1Swenshuai.xi         /// PvrBufId
550*53ee8cc1Swenshuai.xi         ///   - Byte[0] : PVR buffer id
551*53ee8cc1Swenshuai.xi         MS_U32                          PvrBufId;
552*53ee8cc1Swenshuai.xi 
553*53ee8cc1Swenshuai.xi         /// Pvr1BufId;
554*53ee8cc1Swenshuai.xi         ///   - Byte[0] : CB buffer id
555*53ee8cc1Swenshuai.xi         MS_U32                          Pvr1BufId;
556*53ee8cc1Swenshuai.xi 
557*53ee8cc1Swenshuai.xi     };
558*53ee8cc1Swenshuai.xi 
559*53ee8cc1Swenshuai.xi } DrvTSP_Msg;
560*53ee8cc1Swenshuai.xi 
561*53ee8cc1Swenshuai.xi typedef enum //_DrvTSP_DbgLevel
562*53ee8cc1Swenshuai.xi {
563*53ee8cc1Swenshuai.xi     E_DRVTSP_DBG_Release = 0,
564*53ee8cc1Swenshuai.xi     E_DRVTSP_DBG_L1, // display error msg
565*53ee8cc1Swenshuai.xi     E_DRVTSP_DBG_L2, // display error msg and enter while(1)
566*53ee8cc1Swenshuai.xi } DrvTSP_DbgLevel;
567*53ee8cc1Swenshuai.xi 
568*53ee8cc1Swenshuai.xi // legacy
569*53ee8cc1Swenshuai.xi typedef enum{
570*53ee8cc1Swenshuai.xi     E_DRVTSP_SCMB_NONE                = 0x00000000,
571*53ee8cc1Swenshuai.xi     E_DRVTSP_SCMB_TS                  = 0x00000001,
572*53ee8cc1Swenshuai.xi     E_DRVTSP_SCMB_PES                 = 0x00000002,
573*53ee8cc1Swenshuai.xi     E_DRVTSP_SCMB_TS_PES              = (E_DRVTSP_SCMB_TS| E_DRVTSP_SCMB_PES),
574*53ee8cc1Swenshuai.xi } DrvTSP_Scmb_Level;
575*53ee8cc1Swenshuai.xi 
576*53ee8cc1Swenshuai.xi /// @name DrvTSP_Msg
577*53ee8cc1Swenshuai.xi /// Macro definitions for manipulating DrvTSP_Msg
578*53ee8cc1Swenshuai.xi /// @{
579*53ee8cc1Swenshuai.xi #define MSG_FLTINFO_SEC_ID_MASK         0x000000FF
580*53ee8cc1Swenshuai.xi #define MSG_FLTINFO_SEC_ID_SHFT         0
581*53ee8cc1Swenshuai.xi #define MSG_FLTINFO_ENG_ID_MASK         0x0000FF00
582*53ee8cc1Swenshuai.xi #define MSG_FLTINFO_ENG_ID_SHFT         8
583*53ee8cc1Swenshuai.xi #define MSG_PVRBUF_ID_MASK              0x000000FF
584*53ee8cc1Swenshuai.xi #define MSG_PVRBUF_ID_SHFT              0
585*53ee8cc1Swenshuai.xi #define MSG_PVRBUF_ID_NULL              0xFF
586*53ee8cc1Swenshuai.xi #define MSG_CBBUF_ID_MASK               0x000000FF
587*53ee8cc1Swenshuai.xi #define MSG_CBBUF_ID_SHFT               0
588*53ee8cc1Swenshuai.xi #define MSG_CBBUF_ID_NULL               0xFF
589*53ee8cc1Swenshuai.xi 
590*53ee8cc1Swenshuai.xi /// @}
591*53ee8cc1Swenshuai.xi 
592*53ee8cc1Swenshuai.xi #define TSP_MAX_SIGFLAG_NUM             10
593*53ee8cc1Swenshuai.xi #define TSP_MAX_PVRSIGFLAG_NUM          6
594*53ee8cc1Swenshuai.xi typedef struct
595*53ee8cc1Swenshuai.xi {
596*53ee8cc1Swenshuai.xi     MS_U32                 u32Eng;
597*53ee8cc1Swenshuai.xi     MS_U32                 u32EvtWaitOpt;
598*53ee8cc1Swenshuai.xi     MS_U32                 u32DmxEvt;
599*53ee8cc1Swenshuai.xi     MS_U32                 u32TspEvt;
600*53ee8cc1Swenshuai.xi 
601*53ee8cc1Swenshuai.xi     MS_U32                 u32PvrBufFullFlag[TSP_MAX_PVRSIGFLAG_NUM];
602*53ee8cc1Swenshuai.xi 
603*53ee8cc1Swenshuai.xi     MS_U32                 u32SecRdyFlag[TSP_MAX_SIGFLAG_NUM];
604*53ee8cc1Swenshuai.xi     MS_U32                 u32SecOvfFlag[TSP_MAX_SIGFLAG_NUM];
605*53ee8cc1Swenshuai.xi }DrvTSP_IoSignal;
606*53ee8cc1Swenshuai.xi 
607*53ee8cc1Swenshuai.xi typedef enum
608*53ee8cc1Swenshuai.xi {
609*53ee8cc1Swenshuai.xi     E_DRVTSP_CAP_PID_FILTER_NUM             = 0,        // Get filter number
610*53ee8cc1Swenshuai.xi     E_DRVTSP_CAP_SEC_FILTER_NUM             = 1,
611*53ee8cc1Swenshuai.xi     E_DRVTSP_CAP_SEC_BUF_NUM                = 2,
612*53ee8cc1Swenshuai.xi 
613*53ee8cc1Swenshuai.xi     E_DRVTSP_CAP_PVR_ENG_NUM                = 3,
614*53ee8cc1Swenshuai.xi     E_DRVTSP_CAP_PVR_FILTER_NUM             = 4,        // Get pvr filter number
615*53ee8cc1Swenshuai.xi     E_DRVTSP_CAP_PVR1_FILTER_NUM            = 5,        // Get pvr1 filter number
616*53ee8cc1Swenshuai.xi 
617*53ee8cc1Swenshuai.xi     E_DRVTSP_CAP_MMFI_AUDIO_FILTER_NUM      = 6,        // Get MM file in audio path filter number
618*53ee8cc1Swenshuai.xi     E_DRVTSP_CAP_MMFI_V3D_FILTER_NUM        = 7,        // Get MM file in video 3D path filter number
619*53ee8cc1Swenshuai.xi 
620*53ee8cc1Swenshuai.xi     E_DRVTSP_CAP_TSIF_NUM                   = 8,
621*53ee8cc1Swenshuai.xi     E_DRVTSP_CAP_DEMOD_NUM                  = 9,
622*53ee8cc1Swenshuai.xi     E_DRVTSP_CAP_TS_PAD_NUM                 = 10,
623*53ee8cc1Swenshuai.xi     E_DRVTSP_CAP_VQ_NUM                     = 11,
624*53ee8cc1Swenshuai.xi 
625*53ee8cc1Swenshuai.xi     E_DRVTSP_CAP_CA_FLT_NUM                 = 12,            // Get dscmb filter number
626*53ee8cc1Swenshuai.xi     E_DRVTSP_CAP_CA_KEY_NUM                 = 13,
627*53ee8cc1Swenshuai.xi 
628*53ee8cc1Swenshuai.xi     E_DRVTSP_CAP_FW_ALIGN                   = 14,
629*53ee8cc1Swenshuai.xi     E_DRVTSP_CAP_VQ_ALIGN                   = 15,
630*53ee8cc1Swenshuai.xi     E_DRVTSP_CAP_VQ_PITCH                   = 16,
631*53ee8cc1Swenshuai.xi     E_DRVTSP_CAP_SEC_BUF_ALIGN              = 17,
632*53ee8cc1Swenshuai.xi 
633*53ee8cc1Swenshuai.xi     E_DRVTSP_CAP_PVR_ALIGN                  = 18,
634*53ee8cc1Swenshuai.xi     E_DRVTSP_CAP_PVRCA_PATH_NUM             = 19,
635*53ee8cc1Swenshuai.xi     E_DRVTSP_CAP_SHAREKEY_FLT_RANGE         = 20,
636*53ee8cc1Swenshuai.xi     E_DRVTSP_CAP_PVRCA0_FLT_RANGE           = 21,
637*53ee8cc1Swenshuai.xi     E_DRVTSP_CAP_PVRCA1_FLT_RANGE           = 22,
638*53ee8cc1Swenshuai.xi     E_DRVTSP_CAP_PVRCA2_FLT_RANGE           = 23,
639*53ee8cc1Swenshuai.xi     E_DRVTSP_CAP_SHAREKEY_FLT1_RANGE        = 24,
640*53ee8cc1Swenshuai.xi     E_DRVTSP_CAP_SHAREKEY_FLT2_RANGE        = 25,
641*53ee8cc1Swenshuai.xi 
642*53ee8cc1Swenshuai.xi     E_DRVTSP_CAP_HW_TYPE                    = 26,
643*53ee8cc1Swenshuai.xi 
644*53ee8cc1Swenshuai.xi     E_DRVTSP_CAP_RESOURCE_SIZE              = 27,       // Get the data structure size of private resource (share resource)
645*53ee8cc1Swenshuai.xi 
646*53ee8cc1Swenshuai.xi     E_DRVTSP_CAP_VFIFO_NUM                  = 28,       // Get VFIFO support number
647*53ee8cc1Swenshuai.xi     E_DRVTSP_CAP_AFIFO_NUM                  = 29,       // Get AFIFO support number
648*53ee8cc1Swenshuai.xi 
649*53ee8cc1Swenshuai.xi     E_DRVTSP_CAP_HWPCR_SUPPORT              = 30,       // Get HWPCR support status
650*53ee8cc1Swenshuai.xi 	E_DRVTSP_CAP_PCRFLT_START_IDX        	= 31,       // Get PCR start index
651*53ee8cc1Swenshuai.xi 
652*53ee8cc1Swenshuai.xi 	E_DRVTSP_CAP_HWWP_SET_NUM				= 32,		// Get TSP write protect set numbers
653*53ee8cc1Swenshuai.xi 
654*53ee8cc1Swenshuai.xi     E_DRVTSP_CAP_DSCMB_ENG_NUM              = 33,       // Get DSCMB engine numbers
655*53ee8cc1Swenshuai.xi 
656*53ee8cc1Swenshuai.xi     E_DRVTSP_CAP_MAX_MERGESTR_NUM           = 34,       // Get Maxumum merge stream number
657*53ee8cc1Swenshuai.xi     E_DRVTSP_CAP_MAX_SEC_FLT_DEPTH          = 35,
658*53ee8cc1Swenshuai.xi     E_DRVTSP_CAP_FW_BUF_SIZE                = 36,
659*53ee8cc1Swenshuai.xi     E_DRVTSP_CAP_FW_BUF_RANGE               = 37,
660*53ee8cc1Swenshuai.xi     E_DRVTSP_CAP_VQ_BUF_RANGE               = 38,
661*53ee8cc1Swenshuai.xi     E_DRVTSP_CAP_SEC_BUF_RANGE              = 39,
662*53ee8cc1Swenshuai.xi     E_DRVTSP_CAP_FIQ_NUM                    = 40,
663*53ee8cc1Swenshuai.xi 
664*53ee8cc1Swenshuai.xi     E_DRVTSP_CAP_NULL,
665*53ee8cc1Swenshuai.xi } DrvTSP_Cap;
666*53ee8cc1Swenshuai.xi 
667*53ee8cc1Swenshuai.xi typedef enum
668*53ee8cc1Swenshuai.xi {
669*53ee8cc1Swenshuai.xi     E_DRVTSP_HW_STATUS = 0,
670*53ee8cc1Swenshuai.xi     E_DRVTSP_HW_INIT,
671*53ee8cc1Swenshuai.xi     E_DRVTSP_HW_ALIVE,
672*53ee8cc1Swenshuai.xi     E_DRVTSP_HW_DEALIVE,
673*53ee8cc1Swenshuai.xi } DrvTSP_HW_Status;
674*53ee8cc1Swenshuai.xi 
675*53ee8cc1Swenshuai.xi typedef enum
676*53ee8cc1Swenshuai.xi {
677*53ee8cc1Swenshuai.xi     E_DRVTSP_SW_INIT = 0,
678*53ee8cc1Swenshuai.xi     E_DRVTSP_SW_INIT_FAIL,
679*53ee8cc1Swenshuai.xi     E_DRVTSP_SW_SUSPEND,
680*53ee8cc1Swenshuai.xi     E_DRVTSP_SW_RESUME,
681*53ee8cc1Swenshuai.xi     E_DRVTSP_SW_POWEROFF,
682*53ee8cc1Swenshuai.xi     E_DRVTSP_SW_CLOSE,
683*53ee8cc1Swenshuai.xi     E_DRVTSP_SW_EXIT,
684*53ee8cc1Swenshuai.xi } DrvTSP_SW_Status;
685*53ee8cc1Swenshuai.xi 
686*53ee8cc1Swenshuai.xi // TSP event define
687*53ee8cc1Swenshuai.xi #define TSP_TASK_EVENT_SECTION_SELF     0x00000001
688*53ee8cc1Swenshuai.xi #define TSP_TASK_EVENT_SECTION_POLL     0x00000002
689*53ee8cc1Swenshuai.xi #define TSP_TASK_EVENT_PVR0_RDY_SELF    0x00000004
690*53ee8cc1Swenshuai.xi #define TSP_TASK_EVENT_PVR1_RDY_SELF    0x00000008
691*53ee8cc1Swenshuai.xi #define TSP_TASK_EVENT_PVR0_RDY_POLL    0x00000010
692*53ee8cc1Swenshuai.xi #define TSP_TASK_EVENT_PVR1_RDY_POLL    0x00000020
693*53ee8cc1Swenshuai.xi #define TSP_TASK_EVENT_FLT_FREE         0x00000040
694*53ee8cc1Swenshuai.xi #define TSP_TASK_EVENT_CBPVR0_RDY_SELF  0x00000080
695*53ee8cc1Swenshuai.xi #define TSP_TASK_EVENT_CBPVR0_RDY_POLL  0x00000100
696*53ee8cc1Swenshuai.xi #define TSP_TASK_EVENT_FWMSG            0x00000200
697*53ee8cc1Swenshuai.xi #define TSP_TASK_EVENT_GROUP_SELF       (   TSP_TASK_EVENT_SECTION_SELF     |   \
698*53ee8cc1Swenshuai.xi                                             TSP_TASK_EVENT_PVR0_RDY_SELF    |   \
699*53ee8cc1Swenshuai.xi                                             TSP_TASK_EVENT_PVR1_RDY_SELF    )
700*53ee8cc1Swenshuai.xi 
701*53ee8cc1Swenshuai.xi #define TSP_TASK_EVENT_GROUP_POLL       (   TSP_TASK_EVENT_SECTION_POLL     |   \
702*53ee8cc1Swenshuai.xi                                             TSP_TASK_EVENT_PVR0_RDY_POLL    |   \
703*53ee8cc1Swenshuai.xi                                             TSP_TASK_EVENT_PVR1_RDY_POLL    )
704*53ee8cc1Swenshuai.xi 
705*53ee8cc1Swenshuai.xi /// TSP notification function
706*53ee8cc1Swenshuai.xi typedef void (*P_DrvTSP_EvtCallback)(DrvTSP_Event eEvent, DrvTSP_Msg *pMsg);
707*53ee8cc1Swenshuai.xi 
708*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
709*53ee8cc1Swenshuai.xi //  Function and Variable
710*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
711*53ee8cc1Swenshuai.xi 
712*53ee8cc1Swenshuai.xi // General API
713*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_InitLibResource(void *pu32ResMemAddr);
714*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Init(MS_PHY u32FWAddr, MS_U32 u32FWSize);                                       // Set FW address and size
715*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Reinit(MS_BOOL bHK); //for utopia 2.0
716*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PowerOff(void);
717*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Exit(void);
718*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Suspend(void);
719*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Resume(MS_PHY u32FWAddr, MS_U32 u32FWSize);
720*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Alive(MS_U32 u32EngId);
721*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Reset(void);
722*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_HW_Lock_Release(void);
723*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_RemoveDupAVPkt(MS_BOOL bEnable);
724*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_RemoveDupAVFifoPkt(DrvTSP_FltType flttype, MS_BOOL bEnable);
725*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_FLT_LiveSrcSwitch(DrvTSP_FltType eFltSrcType);
726*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_AU_BD_Mode_Enable(MS_BOOL bEnable);
727*53ee8cc1Swenshuai.xi 
728*53ee8cc1Swenshuai.xi // Misc API
729*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_SetFwDBGParam(MS_PHY phyAddr, MS_U32 u32Size, MS_U32 u32DbgWord);           // for TSP f/w debug
730*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_SetOperateMode(MS_U32 u32EngId, DrvTSP_CtrlMode eCtrlMode);                     // Set TSP internal operate
731*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_SelPad(MS_U32 u32EngId, DrvTSP_If eIf, DrvTSP_If_Set* pIfSet);                  // Set TSP input pad and ts0/ts1
732*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_AVFifo_Reset(DrvTSP_FltType eFilterType, MS_BOOL bFlush);
733*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_AVFifo_Status(DrvTSP_FltType eFilterType, MS_U32 *u32FifoLevel);
734*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Parl_BitOrderSwap(MS_U32 u32EngId, DrvTSP_If eIf, MS_BOOL bInvert);
735*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Get_FW_VER(MS_U32* u32FWVer);
736*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Get_Intr_Count(MS_U32* pu32Count);
737*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Scmb_Status(MS_U32 u32EngId, DrvTSP_Scmb_Level* pScmbLevel);
738*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Dscmb_Path(MS_U32 u32EngId, DrvTSP_DscmbCtrl *pScmbPath, MS_BOOL bSet);
739*53ee8cc1Swenshuai.xi 
740*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_GetLastErr(void);
741*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Proc(MS_U32 u32EngId, MS_U32 u32FltId, TSP_Result* pRet, DrvTSP_Event* pEvt);   // for non-OS TSP scheduling
742*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_GetSTC(MS_U32 u32EngId, MS_U32 *pu32STC_32, MS_U32 *pu32STC);
743*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_SetSTC(MS_U32 u32EngId, MS_U32 u32STC_32, MS_U32 u32STC);
744*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_SetSTCOffset(MS_U32 u32EngId, MS_U32 u32Offset, MS_BOOL bAdd);
745*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_GetPCR(MS_U32 u32EngId, MS_U32 *pu32Pcr_32, MS_U32 *pu32Pcr);
746*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Flt_GetState(MS_U32 u32EngId, MS_U32 u32FltId, DrvTSP_FltState *peState);       // Get PIDFlt and SecFlt state
747*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_SetPacketMode(MS_U32 u32TSIf, DrvTSP_PacketMode eDrvPktMode);
748*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_SetMergeStrSyncByte(MS_U32 u32SrcID, MS_U8 u8SyncByte);
749*53ee8cc1Swenshuai.xi 
750*53ee8cc1Swenshuai.xi #ifdef STC64_SUPPORT
751*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_STC64_Mode_Enable(MS_BOOL bEnable);
752*53ee8cc1Swenshuai.xi #endif
753*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_STCClk_Adjust(MS_U32 u32EngId, MS_BOOL bUpClk, MS_U32 u32Percentage);
754*53ee8cc1Swenshuai.xi 
755*53ee8cc1Swenshuai.xi 
756*53ee8cc1Swenshuai.xi // NDS --> ECM
757*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_SecFlt_SetEcmIdx(MS_U32 u32EngId, MS_U32 u32SecFltId, MS_U32 u32EcmIdx);
758*53ee8cc1Swenshuai.xi 
759*53ee8cc1Swenshuai.xi // PIDFlt API
760*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PidFlt_Alloc(MS_U32 u32EngId, DrvTSP_FltType eFilterType, MS_U32 *pu32PidFltId);
761*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PidFlt_Free(MS_U32 u32EngId, MS_U32 u32PidFltId);
762*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PidFlt_SetPid(MS_U32 u32EngId, MS_U32 u32PidFltId, MS_U32 u32PID);
763*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PidFlt_GetPid(MS_U32 u32EngId, MS_U32 u32PidFltId, MS_U32* pu32PID);
764*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PidFlt_SelSecFlt(MS_U32 u32EngId, MS_U32 u32PidFltId, MS_U32 u32SecFltId);
765*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PidFlt_Enable(MS_U32 u32EngId, MS_U32 u32PidFltId, MS_BOOL bEnable);
766*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PidFlt_GetState(MS_U32 u32EngId, MS_U32 u32PidFltId, DrvTSP_FltState *peState);
767*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PidFlt_PVREnable(MS_U32 u32EngId, MS_U32 u32PidFltId); //only for debug
768*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PidFlt_ChangeSource(MS_U32 u32EngId, MS_U32 u32PidFltId, DrvTSP_FltType eFilterType);
769*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PidFlt_GetScmbSts(DrvTSP_FltType FltSrc, MS_U32 u32FltGroupId, MS_U32 PidFltId, MS_U32 *pu32ScmbSts);
770*53ee8cc1Swenshuai.xi 
771*53ee8cc1Swenshuai.xi 
772*53ee8cc1Swenshuai.xi // SecFlt API
773*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_SecFlt_Alloc(MS_U32 u32EngId, MS_U32 *pu32SecFltId);
774*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_SecFlt_Free(MS_U32 u32EngId, MS_U32 u32SecFltId);
775*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_SecFlt_SetMode(MS_U32 u32EngId, MS_U32 u32SecFltId, DrvTSP_FltMode eSecFltMode);
776*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_SecFlt_SetPattern(MS_U32 u32EngId, MS_U32 u32SecFltId, MS_U8 *pu8Match, MS_U8 *pu8Mask, MS_U8 *pu8NotMask);
777*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_SecFlt_ResetBuffer(MS_U32 u32EngId, MS_U32 u32SecFltId);
778*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_SecFlt_SetBuffer(MS_U32 u32EngId, MS_U32 u32SecFltId, MS_PHY u32StartAddr, MS_U32 u32BufSize);
779*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_SecFlt_SetReqCount(MS_U32 u32EngId, MS_U32 u32SecFltId, MS_U32 u32ReqCount);
780*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_SecFlt_GetBufStart(MS_U32 u32EngId, MS_U32 u32SecFltId, MS_PHY *pu32BufStart);
781*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_SecFlt_GetBufSize(MS_U32 u32EngId, MS_U32 u32SecFltId, MS_U32 *pu32BufSize);
782*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_SecFlt_GetReadAddr(MS_U32 u32EngId, MS_U32 u32SecFltId, MS_PHY *pu32ReadAddr);
783*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_SecFlt_GetWriteAddr(MS_U32 u32EngId, MS_U32 u32SecFltId, MS_PHY *pu32WriteAddr);
784*53ee8cc1Swenshuai.xi 
785*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_SecFlt_SetReadAddr(MS_U32 u32EngId, MS_U32 u32SecFltId, MS_PHY u32ReadAddr);
786*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_SecFlt_Notify(MS_U32 u32EngId, MS_U32 u32SecFltId, DrvTSP_Event eEvents, P_DrvTSP_EvtCallback pfCallback);
787*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_SecFlt_GetState(MS_U32 u32EngId, MS_U32 u32SecFltId, DrvTSP_FltState *peState);
788*53ee8cc1Swenshuai.xi 
789*53ee8cc1Swenshuai.xi // PVR API
790*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PVR_SetBuffer(MS_PHY u32BufStart0, MS_PHY u32BufStart1, MS_U32 u32BufSize0, MS_U32 u32BufSize1);
791*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PVR_Start(DrvTSP_RecMode eRecMode, MS_BOOL bStart);
792*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PVR_GetWriteAddr(MS_PHY *pu32WriteAddr);
793*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PVR_Notify(DrvTSP_Event eEvents, P_DrvTSP_EvtCallback pfCallback);
794*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PVR_SetPacketMode(MS_BOOL bSet);
795*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PVR_TimeStampSetRecordStamp(MS_U32 u32Stamp);
796*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PVR_TimeStampGetRecordStamp(MS_U32* u32Stamp);
797*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PVR_TimeStampSetPlaybackStamp(MS_U32 u32Stamp);
798*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PVR_TimeStampGetPlaybackStamp(MS_U32* u32Stamp);
799*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PVR_TimeStamp(MS_BOOL bEnable);
800*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PVR_Filein_Enable(MS_BOOL bBypassHD, MS_BOOL bEnable); //only for debug
801*53ee8cc1Swenshuai.xi 
802*53ee8cc1Swenshuai.xi //PVRCA API
803*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PVR_PidFlt_Reserved(MS_U32 Pid, MS_U8* pu8DmxId, MS_BOOL bReserved);
804*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PVR_FLT1_StartRec(MS_BOOL bEnable);
805*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PVRCA_Close(MS_U8 u8PVRId);
806*53ee8cc1Swenshuai.xi 
807*53ee8cc1Swenshuai.xi 
808*53ee8cc1Swenshuai.xi // PVR engine API
809*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PVR_Eng_SetBuffer(MS_U8 u8PVRId, MS_PHY u32BufStart0, MS_PHY u32BufStart1, MS_U32 u32BufSize0, MS_U32 u32BufSize1);
810*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PVR_Eng_Start(MS_U8 u8PVRId, DrvTSP_RecMode eRecMode, MS_BOOL bStart);
811*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PVR_Eng_GetWriteAddr(MS_U8 u8PVRId, MS_PHY *pu32WriteAddr);
812*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PVR_Eng_Notify(MS_U8 u8PVRId, DrvTSP_Event eEvents, P_DrvTSP_EvtCallback pfCallback);
813*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PVR_Eng_SetPacketMode(MS_U8 u8PVRId, MS_BOOL bSet);
814*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PVR_Eng_TimeStampSetRecordStamp(MS_U8 u8PVRId, MS_U32 u32Stamp);
815*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PVR_Eng_TimeStampGetRecordStamp(MS_U8 u8PVRId,MS_U32* u32Stamp);
816*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PVR_Eng_SetPlaybackStampClk(MS_U32 u32EngId, MS_U32 u32Clk);
817*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PVR_Eng_SetRecordStampClk(MS_U32 u32PvrId, MS_U32 u32Clk);
818*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PVR_Eng_IsStart(MS_U32 u32PvrId, MS_BOOL *pbIsStart);
819*53ee8cc1Swenshuai.xi 
820*53ee8cc1Swenshuai.xi // File API
821*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_File_SetAddr(MS_PHY u32StreamAddr);
822*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_File_SetSize(MS_U32 u32StreamSize);
823*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_File_Start(DrvTSP_FileinMode eFileinMode);
824*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_File_Stop(void);
825*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_File_Pause(void);
826*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_File_Resume(void);
827*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_File_GetState(DrvTSP_FileinState *peFileinState);
828*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_File_SetRate(MS_U32 u32Div2);
829*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_File_SetPacketMode(DrvTSP_PacketMode PKT_Mode);
830*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_File_CMDQ_GetSlot(MS_U32 *pu32EmptySlot);
831*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_File_CMDQ_Reset(void);
832*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_CmdQFifo_Status(MS_U8 *pu8FifoLevel);
833*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_File_192BlockScheme_En(MS_BOOL bEnable);
834*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_File_PS_Path_Enable(DrvTSP_FileinMode eFileinMode);
835*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_File_GetReadAddr(MS_PHY *pu32ReadAddr);
836*53ee8cc1Swenshuai.xi 
837*53ee8cc1Swenshuai.xi // Capacity query
838*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_GetCap(DrvTSP_Cap eCap, void* pOutput);
839*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_GetStatus(DrvTSP_HW_Status *HW_Status, DrvTSP_SW_Status *SW_Status);
840*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_GetLibVer(const MSIF_Version **ppVersion);
841*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_SetDbgLevel(DrvTSP_DbgLevel DbgLevel);
842*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_GetTSIFStatus(DrvTSP_If eIf, DrvTSP_If_Set* pIfSet, MS_U16 u16Clock);
843*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_GetPesScmbSts(MS_U8 u8FltId, MS_U8 *pu8status);
844*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_GetTsScmbSts(MS_U8 u8FltId, MS_U8 *pu8status);
845*53ee8cc1Swenshuai.xi 
846*53ee8cc1Swenshuai.xi 
847*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
848*53ee8cc1Swenshuai.xi //  OBSOLETE
849*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
850*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Flt_SetOwner(MS_U32 u32EngId, MS_U32 u32FltIdStart, MS_U32 u32FltIdEnd, MS_BOOL bOwner); // Set/Get the ranges of filters used, which is for AEON/MHEG5 share TSP filters resource.
851*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PidFlt_ChkOwner(MS_U32 u32EngId, MS_U32 u32PidFltId);
852*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_SetHK(MS_BOOL bIsHK);
853*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_IsAccess(MS_U32 u32Try);
854*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_UnlockAccess(void);
855*53ee8cc1Swenshuai.xi 
856*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_TTX_SecFlt_GetWriteAddr(MS_U32 u32EngId, MS_U32 u32SecFltId, MS_PHY *pu32WriteAddr); // special case for TTX
857*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_GetDbgPortInfo(MS_U32 u32DbgSel,MS_U32* u32DbgInfo);
858*53ee8cc1Swenshuai.xi 
859*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_BurstLen(MS_U32 u32Len);
860*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_GetFileInTimeStamp(MS_U32* u32TSLen);
861*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_SetAVPause(MS_BOOL bSet);
862*53ee8cc1Swenshuai.xi #if 0
863*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_ResetFileinTimestamp(void);
864*53ee8cc1Swenshuai.xi #endif
865*53ee8cc1Swenshuai.xi 
866*53ee8cc1Swenshuai.xi //--VQ , MOBF --------------
867*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_SetVQueBuf(MS_PHY u32VQBaseAddr, MS_U32 u32VQBufLen);
868*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_VQueEnable(MS_BOOL bEnable);
869*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_VQueReset(void);
870*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_VQueue_OverflowInt_En(MS_BOOL bEnable);
871*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Set_VQ_Threshold(MS_U8 u8req_len);
872*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Get_VQStatus(MS_U32* pu32Status);
873*53ee8cc1Swenshuai.xi 
874*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Set_MOBF_PVRKey(MS_U32 u32Key0, MS_U32 u32Key1);
875*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Set_MOBF_PVR1Key(MS_U32 u32Key0, MS_U32 u32Key1);
876*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Set_MOBF_FileinKey(MS_U32 u32Key);
877*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_MOBF_PVR_Enable(MS_BOOL benable);
878*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_MOBF_FileIn_Enable(MS_BOOL benable);
879*53ee8cc1Swenshuai.xi 
880*53ee8cc1Swenshuai.xi void       MDrv_TSP_WriteProtect_Enable(MS_BOOL bEnable, MS_PHY* pu32StartAddr, MS_PHY* pu32EndAddr);
881*53ee8cc1Swenshuai.xi void       MDrv_TSP_OrzWriteProtect_Enable(MS_BOOL bEnable, MS_PHY u32StartAddr, MS_PHY u32EndAddr);
882*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_TSIF_Enable(DrvTSP_If tsif, MS_BOOL bEnable);
883*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_ReadDropPktCnt(MS_U16* pu16ADropCnt, MS_U16* pu16VDropCnt);
884*53ee8cc1Swenshuai.xi 
885*53ee8cc1Swenshuai.xi //---  Common Interface for TSP config and Api commands ------------//
886*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_CMD_Run(MS_U32 u32Cmd, MS_U32 u32Config0, MS_U32 u32Config1 ,void *pData);
887*53ee8cc1Swenshuai.xi 
888*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_SetFwDataAddr(MS_PHY u32DataAddr, MS_U32 u32Size);
889*53ee8cc1Swenshuai.xi 
890*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_STC_UpdateCtrl(MS_U8 u8Eng, MS_U8 u8Opt);
891*53ee8cc1Swenshuai.xi 
892*53ee8cc1Swenshuai.xi // --Debug table --------------
893*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Get_DisContiCnt(DrvTSP_DisContiCnt_info* tspInfo, MS_U32* pu32Cnt);
894*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Get_DropPktCnt(DrvTSP_DropPktCnt_info* tspInfo, MS_U32* pu32Cnt);
895*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Get_LockPktCnt(DrvTSP_LockPktCnt_info* tspInfo, MS_U32* pu32Cnt);
896*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Get_AVPktCnt(DrvTSP_AVPktCnt_info* tspInfo, MS_U32* pu32Cnt);
897*53ee8cc1Swenshuai.xi 
898*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Get_SecTEI_PktCount(DrvTSP_FltType FltSrc, MS_U32* pu32PktCnt);
899*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Reset_SecTEI_PktCount(DrvTSP_FltType FltSrc);
900*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Get_SecDisCont_PktCount(MS_U32 u32FltID, MS_U32* pu32PktCnt);
901*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Reset_SecDisCont_PktCount(MS_U32 u32FltID);
902*53ee8cc1Swenshuai.xi 
903*53ee8cc1Swenshuai.xi //for 2K
904*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Wait_IoSignal(DrvTSP_IoSignal *pstIoSignal);
905*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Proc_IoSignal(DrvTSP_IoSignal *pstIoSignal);
906*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Get_SecEvents(MS_U32 u32Group, DrvTSP_IoSignal *pstIoSignal);
907*53ee8cc1Swenshuai.xi 
908*53ee8cc1Swenshuai.xi 
909*53ee8cc1Swenshuai.xi #ifdef __cplusplus
910*53ee8cc1Swenshuai.xi } // closing brace for extern "C"
911*53ee8cc1Swenshuai.xi #endif
912*53ee8cc1Swenshuai.xi 
913*53ee8cc1Swenshuai.xi 
914*53ee8cc1Swenshuai.xi #endif // _DRV_TSP_H_
915