xref: /utopia/UTPA2-700.0.x/modules/dmx/drv/tsp3/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 
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 #define TSP_VER_1_0                     0x0100UL
115*53ee8cc1Swenshuai.xi #define TSP_VER_2_0                     0x0200UL
116*53ee8cc1Swenshuai.xi #define TSP_VER_3_0                     0x0300UL
117*53ee8cc1Swenshuai.xi #define TSP_VER_4_0                     0x0400UL
118*53ee8cc1Swenshuai.xi 
119*53ee8cc1Swenshuai.xi #define TSP_VERSION                     TSP_VER_3_0
120*53ee8cc1Swenshuai.xi 
121*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
122*53ee8cc1Swenshuai.xi //  Driver Capability
123*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
124*53ee8cc1Swenshuai.xi 
125*53ee8cc1Swenshuai.xi #define DRVTSP_FILTER_DEPTH         16UL                                                              // TSP_FILTER_DEPTH
126*53ee8cc1Swenshuai.xi 
127*53ee8cc1Swenshuai.xi /// TSP byte address alignment unit
128*53ee8cc1Swenshuai.xi #define DRVTSP_ALIGN_UNIT           8UL
129*53ee8cc1Swenshuai.xi 
130*53ee8cc1Swenshuai.xi /// TSP byte address alignment macro
131*53ee8cc1Swenshuai.xi #define DRVTSP_ALIGN(_x)            ALIGN_8((MS_U32)_x)
132*53ee8cc1Swenshuai.xi 
133*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
134*53ee8cc1Swenshuai.xi //  Macro and Define
135*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
136*53ee8cc1Swenshuai.xi /// Transport stream null PID
137*53ee8cc1Swenshuai.xi #define DRVTSP_PID_NULL             0x1FFFUL
138*53ee8cc1Swenshuai.xi #define MSIF_TSP_LIB_CODE           {'T','S','P','3'}                                               // Lib code
139*53ee8cc1Swenshuai.xi #define MSIF_TSP_LIBVER             {'1','3'}                                                       // LIB version
140*53ee8cc1Swenshuai.xi #define MSIF_TSP_BUILDNUM           {'0','3'}                                                       // Build Number
141*53ee8cc1Swenshuai.xi #define MSIF_TSP_CHANGELIST         {'0','0','6','0','7','2','6','6'}                               // P4 ChangeList Number
142*53ee8cc1Swenshuai.xi 
143*53ee8cc1Swenshuai.xi #define TSP_DRV_VERSION             /* Character String for DRV/API version             */  \
144*53ee8cc1Swenshuai.xi     MSIF_TAG,                       /* 'MSIF'                                           */  \
145*53ee8cc1Swenshuai.xi     MSIF_CLASS,                     /* '00'                                             */  \
146*53ee8cc1Swenshuai.xi     MSIF_CUS,                       /* 0x0000                                           */  \
147*53ee8cc1Swenshuai.xi     MSIF_MOD,                       /* 0x0000                                           */  \
148*53ee8cc1Swenshuai.xi     MSIF_CHIP,                                                                              \
149*53ee8cc1Swenshuai.xi     MSIF_CPU,                                                                               \
150*53ee8cc1Swenshuai.xi     MSIF_TSP_LIB_CODE,              /* IP__                                             */  \
151*53ee8cc1Swenshuai.xi     MSIF_TSP_LIBVER,                /* 0.0 ~ Z.Z                                        */  \
152*53ee8cc1Swenshuai.xi     MSIF_TSP_BUILDNUM,              /* 00 ~ 99                                          */  \
153*53ee8cc1Swenshuai.xi     MSIF_TSP_CHANGELIST,            /* CL#                                              */  \
154*53ee8cc1Swenshuai.xi     MSIF_OS
155*53ee8cc1Swenshuai.xi 
156*53ee8cc1Swenshuai.xi 
157*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
158*53ee8cc1Swenshuai.xi //  Type and Structure
159*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
160*53ee8cc1Swenshuai.xi /// TSP DDI return value
161*53ee8cc1Swenshuai.xi 
162*53ee8cc1Swenshuai.xi /// @name TSP_Result
163*53ee8cc1Swenshuai.xi /// @ref TSP_Result
164*53ee8cc1Swenshuai.xi /// return value
165*53ee8cc1Swenshuai.xi /// @{
166*53ee8cc1Swenshuai.xi typedef enum
167*53ee8cc1Swenshuai.xi {
168*53ee8cc1Swenshuai.xi     DRVTSP_FAIL                     = 0,
169*53ee8cc1Swenshuai.xi     DRVTSP_OK,
170*53ee8cc1Swenshuai.xi     DRVTSP_INVALID_PARAM,
171*53ee8cc1Swenshuai.xi     DRVTSP_FUNC_ERROR,
172*53ee8cc1Swenshuai.xi     DRVTSP_INVALID_SECFLT,
173*53ee8cc1Swenshuai.xi     DRVTSP_NOT_SUPPORTED,
174*53ee8cc1Swenshuai.xi } TSP_Result;
175*53ee8cc1Swenshuai.xi 
176*53ee8cc1Swenshuai.xi /// @}
177*53ee8cc1Swenshuai.xi 
178*53ee8cc1Swenshuai.xi #define DOUBLE_BUFFER_ENABLE        TRUE
179*53ee8cc1Swenshuai.xi #define DOUBLE_BUFFER_SWITCH        FALSE
180*53ee8cc1Swenshuai.xi 
181*53ee8cc1Swenshuai.xi #if 0
182*53ee8cc1Swenshuai.xi /// TSP channel Type
183*53ee8cc1Swenshuai.xi typedef enum //_DrvTSP_FltType
184*53ee8cc1Swenshuai.xi {
185*53ee8cc1Swenshuai.xi     // get TS from Live stream
186*53ee8cc1Swenshuai.xi     E_DRVTSP_FLT_TYPE_VIDEO         = 0x00000000,                                                   ///<\n
187*53ee8cc1Swenshuai.xi     E_DRVTSP_FLT_TYPE_AUDIO         ,                                                               ///<\n
188*53ee8cc1Swenshuai.xi     E_DRVTSP_FLT_TYPE_AUDIO2        ,                                                               ///<\n
189*53ee8cc1Swenshuai.xi     E_DRVTSP_FLT_TYPE_PVR           ,                                                               ///<\n
190*53ee8cc1Swenshuai.xi 
191*53ee8cc1Swenshuai.xi     // Section Filter Group
192*53ee8cc1Swenshuai.xi     E_DRVTSP_FLT_TYPE_SECTION_MASK  = 0x20000000,                                                   ///<\n
193*53ee8cc1Swenshuai.xi     E_DRVTSP_FLT_TYPE_SECTION       ,                                                               ///<\n
194*53ee8cc1Swenshuai.xi     E_DRVTSP_FLT_TYPE_PCR           ,                                                               ///<\n
195*53ee8cc1Swenshuai.xi     E_DRVTSP_FLT_TYPE_PES           ,                                                               ///<\n
196*53ee8cc1Swenshuai.xi     E_DRVTSP_FLT_TYPE_PACKET        ,                                                               //[Reserved]
197*53ee8cc1Swenshuai.xi     E_DRVTSP_FLT_TYPE_TELETEXT      ,
198*53ee8cc1Swenshuai.xi     E_DRVTSP_FLT_TYPE_EMM           ,                                                               //[Reserved]
199*53ee8cc1Swenshuai.xi     E_DRVTSP_FLT_TYPE_ECM           ,                                                               //[Reserved]
200*53ee8cc1Swenshuai.xi 
201*53ee8cc1Swenshuai.xi 
202*53ee8cc1Swenshuai.xi     E_DRVTSP_FLT_SOURCE_TYPE_MASK   =  0xC0000000,
203*53ee8cc1Swenshuai.xi     E_DRVTSP_FLT_SOURCE_TYPE_LIVE   =  0x80000000,
204*53ee8cc1Swenshuai.xi     E_DRVTSP_FLT_SOURCE_TYPE_FILE   =  0x40000000,
205*53ee8cc1Swenshuai.xi 
206*53ee8cc1Swenshuai.xi     E_DRVTSP_FLT_TYPE_LAST_ENUM
207*53ee8cc1Swenshuai.xi 
208*53ee8cc1Swenshuai.xi } DrvTSP_FltType;
209*53ee8cc1Swenshuai.xi #endif
210*53ee8cc1Swenshuai.xi 
211*53ee8cc1Swenshuai.xi #define DrvTSP_FltType                  MS_U32
212*53ee8cc1Swenshuai.xi // get TS from Live stream
213*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_TYPE_VIDEO                     0x00000000UL                                                  ///<\n
214*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_TYPE_AUDIO                     0x00000001UL                                                  ///<\n
215*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_TYPE_AUDIO2                    0x00000002UL                                                  ///<\n
216*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_TYPE_PVR                       0x00000003UL                                                  ///<\n
217*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_TYPE_PVR1                      0x00000004UL
218*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_TYPE_VIDEO3D                   0x00000008UL
219*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_TYPE_CB                        0x00000009UL
220*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_TYPE_AUDIO3                    0x0000000AUL
221*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_TYPE_AUDIO4                    0x0000000BUL
222*53ee8cc1Swenshuai.xi 
223*53ee8cc1Swenshuai.xi // Section Filter Group
224*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_TYPE_SECTION_MASK              0x01000000UL                                                  ///<\n
225*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_TYPE_SECTION                   0x01000001UL                                                  ///<\n
226*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_TYPE_PCR                       0x01000002UL                                                  ///<\n
227*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_TYPE_PES                       0x01000003UL                                                  ///<\n
228*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_TYPE_PACKET                    0x01000004UL                                                  //[Reserved]
229*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_TYPE_TELETEXT                  0x01000005UL
230*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_TYPE_EMM                       0x01000006UL                                                  //[Reserved]
231*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_TYPE_ECM                       0x01000007UL                                                  //[Reserved]
232*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_TYPE_SECTION_VER               0x01000008UL
233*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_TYPE_SECTION_NO_PUSI           0x01000009UL
234*53ee8cc1Swenshuai.xi 
235*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_TYPE_LAST_ENUM                 0x0100000AUL
236*53ee8cc1Swenshuai.xi 
237*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_MASK                           0xF2FC0F00UL
238*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_SOURCE_TYPE_MASK               0xC0FC0000UL
239*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_SOURCE_TYPE_LIVE               0x80000000UL
240*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_SOURCE_TYPE_FILE               0x40000000UL
241*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_SOURCE_TYPE_TS1                0x00800000UL
242*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_SOURCE_TYPE_TS2                0x00400000UL
243*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_SOURCE_TYPE_TSCB               0x00200000UL
244*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_SOURCE_TYPE_FILE1              0x00100000UL                                                // file1 fource from TS1
245*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_SOURCE_TYPE_FILE2              0x00080000UL                                                // file2 fource from TS2
246*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_SOURCE_TYPE_LIVEB              E_DRVTSP_FLT_SOURCE_TYPE_FILE
247*53ee8cc1Swenshuai.xi 
248*53ee8cc1Swenshuai.xi // Source ID define.  For merge stream
249*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_SOURCEID_SHIFT                 8UL
250*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_SOURCEID_MASK                  0x00000F00UL
251*53ee8cc1Swenshuai.xi 
252*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_TYPE_DUPSEC                    0x02000000UL                   // Only for section filter duplicate patch
253*53ee8cc1Swenshuai.xi 
254*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_SCMB_MASK                      0x30000000UL
255*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_TYPE_SCMB                      0x20000000UL
256*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_TYPE_SCMB_SHAREKEY             0x10000000UL
257*53ee8cc1Swenshuai.xi 
258*53ee8cc1Swenshuai.xi #define DrvTSP_FltMode MS_U32
259*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_MODE_CONTI                     0x00000000UL
260*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_MODE_ONESHOT                   0x00000001UL
261*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_MODE_PESSCMCHK                 0x00000003UL                 //Only for PES type checking SCMB status
262*53ee8cc1Swenshuai.xi 
263*53ee8cc1Swenshuai.xi // optional
264*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_MODE_CRCCHK                    0x00000002UL
265*53ee8cc1Swenshuai.xi #define E_DRVTSP_FLT_MODE_AUTO_ADDR                 0x00000004UL // auto move read point mode
266*53ee8cc1Swenshuai.xi 
267*53ee8cc1Swenshuai.xi #define DrvTSP_PKTDMXSrcType                        MS_U32
268*53ee8cc1Swenshuai.xi #define E_DRVTSP_PKTSRC_DEMUX0                      0x00000001UL
269*53ee8cc1Swenshuai.xi #define E_DRVTSP_PKTSRC_DEMUXFILE                   0x00000002UL
270*53ee8cc1Swenshuai.xi #define E_DRVTSP_PKTSRC_DEMUX1                      0x00000003UL
271*53ee8cc1Swenshuai.xi #define E_DRVTSP_PKTSRC_DEMUX2                      0x00000004UL
272*53ee8cc1Swenshuai.xi #define E_DRVTSP_PKTSRC_DEMUXMMFI0                  0x00000006UL
273*53ee8cc1Swenshuai.xi #define E_DRVTSP_PKTSRC_DEMUXMMFI1                  0x00000007UL
274*53ee8cc1Swenshuai.xi 
275*53ee8cc1Swenshuai.xi //--------------------------------------------------
276*53ee8cc1Swenshuai.xi // Debug table
277*53ee8cc1Swenshuai.xi typedef enum
278*53ee8cc1Swenshuai.xi {
279*53ee8cc1Swenshuai.xi     E_DRVTSP_DEBUG_CMD_NONE,
280*53ee8cc1Swenshuai.xi     E_DRVTSP_DEBUG_CMD_CLEAR,
281*53ee8cc1Swenshuai.xi     E_DRVTSP_DEBUG_CMD_ENABLE,
282*53ee8cc1Swenshuai.xi     E_DRVTSP_DEBUG_CMD_DISABLE,
283*53ee8cc1Swenshuai.xi } DrvTSP_Debug_Cmd;
284*53ee8cc1Swenshuai.xi 
285*53ee8cc1Swenshuai.xi typedef enum
286*53ee8cc1Swenshuai.xi {
287*53ee8cc1Swenshuai.xi     E_DRVTSP_DEBUG_SRC_TS0,
288*53ee8cc1Swenshuai.xi     E_DRVTSP_DEBUG_SRC_TS1,
289*53ee8cc1Swenshuai.xi     E_DRVTSP_DEBUG_SRC_TS2,
290*53ee8cc1Swenshuai.xi     E_DRVTSP_DEBUG_SRC_FILE,
291*53ee8cc1Swenshuai.xi } DrvTSP_Debug_Src;
292*53ee8cc1Swenshuai.xi 
293*53ee8cc1Swenshuai.xi typedef enum
294*53ee8cc1Swenshuai.xi {
295*53ee8cc1Swenshuai.xi     E_DRVTSP_DEBUG_TSIF_TS0,
296*53ee8cc1Swenshuai.xi     E_DRVTSP_DEBUG_TSIF_TS1,
297*53ee8cc1Swenshuai.xi     E_DRVTSP_DEBUG_TSIF_TSCB,
298*53ee8cc1Swenshuai.xi } DrvTSP_Debug_Tsif;
299*53ee8cc1Swenshuai.xi 
300*53ee8cc1Swenshuai.xi typedef enum
301*53ee8cc1Swenshuai.xi {
302*53ee8cc1Swenshuai.xi     E_DRVTSP_DEBUG_FIFO_VIDEO,
303*53ee8cc1Swenshuai.xi     E_DRVTSP_DEBUG_FIFO_AUDIO,
304*53ee8cc1Swenshuai.xi     E_DRVTSP_DEBUG_FIFO_VIDEO3D,
305*53ee8cc1Swenshuai.xi     E_DRVTSP_DEBUG_FIFO_AUDIOB,
306*53ee8cc1Swenshuai.xi     E_DRVTSP_DEBUG_FIFO_AUDIOC,
307*53ee8cc1Swenshuai.xi     E_DRVTSP_DEBUG_FIFO_AUDIOD,
308*53ee8cc1Swenshuai.xi } DrvTSP_Debug_Fifo;
309*53ee8cc1Swenshuai.xi 
310*53ee8cc1Swenshuai.xi typedef enum
311*53ee8cc1Swenshuai.xi {
312*53ee8cc1Swenshuai.xi     E_DRVTSP_DEBUG_PKT_DEMUX_0,
313*53ee8cc1Swenshuai.xi     E_DRVTSP_DEBUG_PKT_DEMUX_0_FILE,
314*53ee8cc1Swenshuai.xi     E_DRVTSP_DEBUG_PKT_DEMUX_1,
315*53ee8cc1Swenshuai.xi     E_DRVTSP_DEBUG_PKT_DEMUX_2,
316*53ee8cc1Swenshuai.xi     E_DRVTSP_DEBUG_MMFI0,
317*53ee8cc1Swenshuai.xi     E_DRVTSP_DEBUG_MMFI1,
318*53ee8cc1Swenshuai.xi } DrvTSP_Debug_Fifo_Src;
319*53ee8cc1Swenshuai.xi 
320*53ee8cc1Swenshuai.xi /// TSP channel state bit flags
321*53ee8cc1Swenshuai.xi typedef enum //_DrvTSP_FltState
322*53ee8cc1Swenshuai.xi {
323*53ee8cc1Swenshuai.xi     E_DRVTSP_FLT_STATE_FREE           = 0x00000000UL,                                                 ///<\n
324*53ee8cc1Swenshuai.xi     E_DRVTSP_FLT_STATE_ALLOC          = 0x00000001UL,                                                 ///<\n
325*53ee8cc1Swenshuai.xi     E_DRVTSP_FLT_STATE_ENABLE         = 0x00000002UL,                                                 ///<\n
326*53ee8cc1Swenshuai.xi     E_DRVTSP_FLT_STATE_SCRAMBLED      = 0x00000004UL,                                                 //[TODO]
327*53ee8cc1Swenshuai.xi     E_DRVTSP_FLT_STATE_STREAM_AVAIL   = 0x00000008UL,                                                 //[TODO]
328*53ee8cc1Swenshuai.xi     E_DRVTSP_FLT_STATE_SCRAMBLED_ORG  = 0x00000010UL,
329*53ee8cc1Swenshuai.xi     E_DRVTSP_FLT_STATE_OVERFLOW       = 0x00010000UL,                                                 //[Reserved]
330*53ee8cc1Swenshuai.xi     E_DRVTSP_FLT_STATE_SUSPEND        = 0x20000000UL,
331*53ee8cc1Swenshuai.xi     E_DRVTSP_FLT_STATE_CBRUN          = 0x40000000UL,                                                 // Callback processing
332*53ee8cc1Swenshuai.xi     E_DRVTSP_FLT_STATE_FREEING        = 0x80000000UL,                                                 // Free filter is  running
333*53ee8cc1Swenshuai.xi     E_DRVTSP_FLT_STATE_NA             = 0xFFFFFFFFUL,
334*53ee8cc1Swenshuai.xi } DrvTSP_FltState;
335*53ee8cc1Swenshuai.xi 
336*53ee8cc1Swenshuai.xi 
337*53ee8cc1Swenshuai.xi /// TSP record mode
338*53ee8cc1Swenshuai.xi typedef enum //_DrvTSP_RecMode
339*53ee8cc1Swenshuai.xi {
340*53ee8cc1Swenshuai.xi     //[TODO] rename REC_MODE to PVR_MODE
341*53ee8cc1Swenshuai.xi 
342*53ee8cc1Swenshuai.xi     /// Record ENG0 by @ref E_DRVTSP_FLT_TYPE_PVR
343*53ee8cc1Swenshuai.xi     E_DRVTSP_REC_MODE_ENG0_FLTTYPE    = 0x00000000UL,                                                 // TSP_PVR_CTRL_ENG(0)
344*53ee8cc1Swenshuai.xi     /// Record ENG1 by @ref E_DRVTSP_FLT_TYPE_PVR
345*53ee8cc1Swenshuai.xi     E_DRVTSP_REC_MODE_ENG1_FLTTYPE    = 0x00010000UL,                                                 // TSP_PVR_CTRL_ENG(1)
346*53ee8cc1Swenshuai.xi     /// Record ENG0 bypass PID fliter
347*53ee8cc1Swenshuai.xi     E_DRVTSP_REC_MODE_ENG0_BYPASS     = 0x00000002UL,                                                 // TSP_PVR_CTRL_ENG(0) + TSP_PVR_CTRL_BYPASS
348*53ee8cc1Swenshuai.xi     /// Record ENG1 bypass PID fliter
349*53ee8cc1Swenshuai.xi     E_DRVTSP_REC_MODE_ENG1_BYPASS     = 0x00010002UL,                                                 // TSP_PVR_CTRL_ENG(1) + TSP_PVR_CTRL_BYPASS
350*53ee8cc1Swenshuai.xi 
351*53ee8cc1Swenshuai.xi     E_DRVTSP_REC_MODE_ENG0_FLT1CA     = 0x00000004UL,
352*53ee8cc1Swenshuai.xi } DrvTSP_RecMode;
353*53ee8cc1Swenshuai.xi 
354*53ee8cc1Swenshuai.xi /// TSP Control Mode
355*53ee8cc1Swenshuai.xi typedef enum //_DrvTSP_CtrlMode
356*53ee8cc1Swenshuai.xi {
357*53ee8cc1Swenshuai.xi     /// Input From Memory
358*53ee8cc1Swenshuai.xi     E_DRVTSP_CTRL_MODE_MEM,
359*53ee8cc1Swenshuai.xi     /// Input From Stream Source 0
360*53ee8cc1Swenshuai.xi     E_DRVTSP_CTRL_MODE_TS0,
361*53ee8cc1Swenshuai.xi     /// Input From Stream Source 1
362*53ee8cc1Swenshuai.xi     E_DRVTSP_CTRL_MODE_TS1,
363*53ee8cc1Swenshuai.xi     /// Input From Stream Source 2
364*53ee8cc1Swenshuai.xi     E_DRVTSP_CTRL_MODE_TS2,
365*53ee8cc1Swenshuai.xi     /// Input From Stream Source 3
366*53ee8cc1Swenshuai.xi     E_DRVTSP_CTRL_MODE_TS3,
367*53ee8cc1Swenshuai.xi     /// Enable bounding option for PVR descrambled stream
368*53ee8cc1Swenshuai.xi     E_DRVTSP_CTRL_MODE_PVR_CA,
369*53ee8cc1Swenshuai.xi     /// Enable bounding option for PVR1 descrambled stream
370*53ee8cc1Swenshuai.xi     E_DRVTSP_CTRL_MODE_PVR1_CA,
371*53ee8cc1Swenshuai.xi     /// Input TSFI and source is Live
372*53ee8cc1Swenshuai.xi     E_DRVTSP_CTRL_MODE_TSFI_LIVE,
373*53ee8cc1Swenshuai.xi } DrvTSP_CtrlMode;
374*53ee8cc1Swenshuai.xi 
375*53ee8cc1Swenshuai.xi /// TSP input pad selection
376*53ee8cc1Swenshuai.xi typedef enum
377*53ee8cc1Swenshuai.xi {
378*53ee8cc1Swenshuai.xi     E_DRVTSP_PAD_EXT_INPUT0           = 0x0,
379*53ee8cc1Swenshuai.xi     E_DRVTSP_PAD_EXT_INPUT1           = 0x1,
380*53ee8cc1Swenshuai.xi     E_DRVTSP_PAD_EXT_INPUT2           = 0x2,
381*53ee8cc1Swenshuai.xi     E_DRVTSP_PAD_EXT_INPUT3           = 0x3,
382*53ee8cc1Swenshuai.xi     E_DRVTSP_PAD_EXT_INPUT4           = 0x4,
383*53ee8cc1Swenshuai.xi     E_DRVTSP_PAD_EXT_INPUT5           = 0x5,
384*53ee8cc1Swenshuai.xi     E_DRVTSP_PAD_TSO                  = 0x6,
385*53ee8cc1Swenshuai.xi     E_DRVTSP_PAD_DEMOD                = 0x7,
386*53ee8cc1Swenshuai.xi     E_DRVTSP_PAD_EXT_INPUT0_3WIRE     = 0x80,
387*53ee8cc1Swenshuai.xi     E_DRVTSP_PAD_EXT_INPUT1_3WIRE     = 0x81,
388*53ee8cc1Swenshuai.xi     E_DRVTSP_PAD_EXT_INPUT2_3WIRE     = 0x82,
389*53ee8cc1Swenshuai.xi     E_DRVTSP_PAD_EXT_INPUT3_3WIRE     = 0x83,
390*53ee8cc1Swenshuai.xi     E_DRVTSP_PAD_EXT_INPUT4_3WIRE     = 0x84,
391*53ee8cc1Swenshuai.xi     E_DRVTSP_PAD_EXT_INPUT5_3WIRE     = 0x85,
392*53ee8cc1Swenshuai.xi } DrvTSP_PadIn;
393*53ee8cc1Swenshuai.xi 
394*53ee8cc1Swenshuai.xi #define DrvTSP_PadOut                   MS_U32
395*53ee8cc1Swenshuai.xi #define E_DRVTSP_OUTPAD_NONE            0x00000000UL
396*53ee8cc1Swenshuai.xi #define E_DRVTSP_OUTPAD_PAD1            0x00000001UL
397*53ee8cc1Swenshuai.xi #define E_DRVTSP_OUTPAD_PAD3            0x00000003UL
398*53ee8cc1Swenshuai.xi 
399*53ee8cc1Swenshuai.xi #define DrvTSP_PadOut_Mode              MS_U32
400*53ee8cc1Swenshuai.xi #define E_DRVTSP_OUTPAD_MODE_MASK       0x70000000UL
401*53ee8cc1Swenshuai.xi #define E_DRVTSP_OUTPAD_FROM_DMD        0x00000000UL
402*53ee8cc1Swenshuai.xi #define E_DRVTSP_OUTPAD_FROM_S2P        0x10000000UL
403*53ee8cc1Swenshuai.xi #define E_DRVTSP_OUTPAD_FROM_TSO        0x20000000UL
404*53ee8cc1Swenshuai.xi #define E_DRVTSP_OUTPAD_FROM_S2P1       0x40000000UL
405*53ee8cc1Swenshuai.xi 
406*53ee8cc1Swenshuai.xi 
407*53ee8cc1Swenshuai.xi /// TSP interface
408*53ee8cc1Swenshuai.xi typedef enum
409*53ee8cc1Swenshuai.xi {
410*53ee8cc1Swenshuai.xi     E_DRVTSP_IF_TS0                   = 0x0,        //TSIF0
411*53ee8cc1Swenshuai.xi     E_DRVTSP_IF_TS1                   = 0x1,        //TSIF1
412*53ee8cc1Swenshuai.xi     E_DRVTSP_IF_TS2                   = 0x2,        //TSIF2
413*53ee8cc1Swenshuai.xi     E_DRVTSP_IF_TS3                   = 0x3,        //TSIF3
414*53ee8cc1Swenshuai.xi     E_DRVTSP_IF_NUM                   = 4,
415*53ee8cc1Swenshuai.xi     E_DRVTSP_IF_FI                    = 0x80,       //TSFI (version 3.0 New)
416*53ee8cc1Swenshuai.xi 
417*53ee8cc1Swenshuai.xi } DrvTSP_If;
418*53ee8cc1Swenshuai.xi 
419*53ee8cc1Swenshuai.xi typedef struct
420*53ee8cc1Swenshuai.xi {
421*53ee8cc1Swenshuai.xi     DrvTSP_PadIn        ePad;
422*53ee8cc1Swenshuai.xi     MS_BOOL             bClkInv;
423*53ee8cc1Swenshuai.xi     MS_BOOL             bExtSync;
424*53ee8cc1Swenshuai.xi     MS_BOOL             bParallel;
425*53ee8cc1Swenshuai.xi } DrvTSP_If_Set;
426*53ee8cc1Swenshuai.xi 
427*53ee8cc1Swenshuai.xi /// FQ interface
428*53ee8cc1Swenshuai.xi typedef enum
429*53ee8cc1Swenshuai.xi {
430*53ee8cc1Swenshuai.xi     E_DRVFQ_SRC_TSIF0                       = 0x00,
431*53ee8cc1Swenshuai.xi     E_DRVFQ_SRC_TSIF1                       = 0x01,
432*53ee8cc1Swenshuai.xi     E_DRVFQ_SRC_TSIF2                       = 0x02,
433*53ee8cc1Swenshuai.xi     E_DRVFQ_SRC_TSIF3                       = 0x03,
434*53ee8cc1Swenshuai.xi 
435*53ee8cc1Swenshuai.xi     E_DRVFQ_SRC_TSIFFI                      = 0x07,
436*53ee8cc1Swenshuai.xi     E_DRVFQ_SRC_DEFAULT                     = 0xFF,
437*53ee8cc1Swenshuai.xi } DrvFQ_SrcIf;
438*53ee8cc1Swenshuai.xi 
439*53ee8cc1Swenshuai.xi //----------------------------------
440*53ee8cc1Swenshuai.xi /// DMX debug table information structure
441*53ee8cc1Swenshuai.xi //----------------------------------
442*53ee8cc1Swenshuai.xi typedef struct
443*53ee8cc1Swenshuai.xi {
444*53ee8cc1Swenshuai.xi     DrvTSP_Debug_Cmd            TspCmd;
445*53ee8cc1Swenshuai.xi     DrvTSP_Debug_Src            TspSrc;
446*53ee8cc1Swenshuai.xi     DrvTSP_Debug_Fifo           TspFifo;
447*53ee8cc1Swenshuai.xi } DrvTSP_DisContiCnt_info, DrvTSP_DropPktCnt_info;
448*53ee8cc1Swenshuai.xi 
449*53ee8cc1Swenshuai.xi typedef struct
450*53ee8cc1Swenshuai.xi {
451*53ee8cc1Swenshuai.xi     DrvTSP_Debug_Cmd            TspCmd;
452*53ee8cc1Swenshuai.xi     DrvTSP_Debug_Tsif           TspTsif;
453*53ee8cc1Swenshuai.xi } DrvTSP_LockPktCnt_info;
454*53ee8cc1Swenshuai.xi 
455*53ee8cc1Swenshuai.xi typedef struct
456*53ee8cc1Swenshuai.xi {
457*53ee8cc1Swenshuai.xi     DrvTSP_Debug_Cmd            TspCmd;
458*53ee8cc1Swenshuai.xi     DrvTSP_Debug_Fifo           TspFifo;
459*53ee8cc1Swenshuai.xi     DrvTSP_Debug_Fifo_Src       TspFifoSrc;
460*53ee8cc1Swenshuai.xi } DrvTSP_AVPktCnt_info;
461*53ee8cc1Swenshuai.xi 
462*53ee8cc1Swenshuai.xi // must alignment with TSP_TSDMA_CTRL_XXX in regTSP.h
463*53ee8cc1Swenshuai.xi typedef enum
464*53ee8cc1Swenshuai.xi {
465*53ee8cc1Swenshuai.xi     /// TSP Engine 0 Transport Stream
466*53ee8cc1Swenshuai.xi     E_DRVTSP_FILEIN_MODE_ENG0_TS      = 0x00000000UL,                                                 //TSP_TSDMA_CTRL_ENG0
467*53ee8cc1Swenshuai.xi     /// TSP Engine 0 Video PES Only
468*53ee8cc1Swenshuai.xi     E_DRVTSP_FILEIN_MODE_ENG0_VPES    = 0x00000004UL,                                                 //TSP_TSDMA_CTRL_VPES0
469*53ee8cc1Swenshuai.xi     /// TSP Engine 0 Audio PES Only
470*53ee8cc1Swenshuai.xi     E_DRVTSP_FILEIN_MODE_ENG0_APES    = 0x00000008UL,                                                 //TSP_TSDMA_CTRL_APES0
471*53ee8cc1Swenshuai.xi     /// TSP Engine 0 Audio2 PES Only
472*53ee8cc1Swenshuai.xi     E_DRVTSP_FILEIN_MODE_ENG0_A2PES   = 0x00000010UL,                                                 //TSP_TSDMA_CTRL_A2PES0
473*53ee8cc1Swenshuai.xi     /// TSP Engine 0 Video3D PES Only
474*53ee8cc1Swenshuai.xi     E_DRVTSP_FILEIN_MODE_ENG0_V3DPES  = 0x00000020UL,                                                 //TSP_TSDMA_CTRL_V3DPES0
475*53ee8cc1Swenshuai.xi     /// TSP Engine 0 Video3D PES Only
476*53ee8cc1Swenshuai.xi     E_DRVTSP_FILEIN_MODE_ENG0_A3PES   = 0x00000040UL,                                                 //TSP_TSDMA_CTRL_A3PES0
477*53ee8cc1Swenshuai.xi     /// TSP Engine 0 Video3D PES Only
478*53ee8cc1Swenshuai.xi     E_DRVTSP_FILEIN_MODE_ENG0_A4PES   = 0x00000080UL,                                                 //TSP_TSDMA_CTRL_A4PES0
479*53ee8cc1Swenshuai.xi 
480*53ee8cc1Swenshuai.xi } DrvTSP_FileinMode;
481*53ee8cc1Swenshuai.xi 
482*53ee8cc1Swenshuai.xi 
483*53ee8cc1Swenshuai.xi typedef enum
484*53ee8cc1Swenshuai.xi {
485*53ee8cc1Swenshuai.xi     /// Command Queue is Idle
486*53ee8cc1Swenshuai.xi     E_DRVTSP_FILEIN_STATE_IDLE        = 0000000000UL,
487*53ee8cc1Swenshuai.xi     /// Command Queue is Busy
488*53ee8cc1Swenshuai.xi     E_DRVTSP_FILEIN_STATE_BUSY        = 0x00000001UL,
489*53ee8cc1Swenshuai.xi     /// Command Queue is Paused.
490*53ee8cc1Swenshuai.xi     E_DRVTSP_FILEIN_STATE_PAUSE       = 0x00000002UL,
491*53ee8cc1Swenshuai.xi } DrvTSP_FileinState;
492*53ee8cc1Swenshuai.xi 
493*53ee8cc1Swenshuai.xi /// TSP TEI  Remove Error Packet Infomation
494*53ee8cc1Swenshuai.xi typedef enum
495*53ee8cc1Swenshuai.xi {
496*53ee8cc1Swenshuai.xi     E_TSP_DRV_TEI_REMOVE_AUDIO_PKT,          ///< DMX TEI Remoce Audio Packet
497*53ee8cc1Swenshuai.xi     E_TSP_DRV_TEI_REMOVE_VIDEO_PKT,          ///< DMX TEI Remoce Video Packet
498*53ee8cc1Swenshuai.xi 
499*53ee8cc1Swenshuai.xi     E_TSP_DRV_TEI_REMOVE_PKT0_LIVE,
500*53ee8cc1Swenshuai.xi     E_TSP_DRV_TEI_REMOVE_PKT0_FILE,
501*53ee8cc1Swenshuai.xi     E_TSP_DRV_TEI_REMOVE_PKT1,
502*53ee8cc1Swenshuai.xi     E_TSP_DRV_TEI_REMOVE_PKT2,
503*53ee8cc1Swenshuai.xi 
504*53ee8cc1Swenshuai.xi }TSP_DRV_TEI_RmPktType;
505*53ee8cc1Swenshuai.xi 
506*53ee8cc1Swenshuai.xi #if 0
507*53ee8cc1Swenshuai.xi /// TSP notification event
508*53ee8cc1Swenshuai.xi typedef enum //_DrvTSP_Event
509*53ee8cc1Swenshuai.xi {
510*53ee8cc1Swenshuai.xi     E_DRVTSP_EVENT_DATA_INIT          = 0x00000000,
511*53ee8cc1Swenshuai.xi     /// Section Data Ready
512*53ee8cc1Swenshuai.xi     E_DRVTSP_EVENT_DATA_READY         = 0x00000001,
513*53ee8cc1Swenshuai.xi     /// Section Buffer Overflow
514*53ee8cc1Swenshuai.xi     E_DRVTSP_EVENT_BUF_OVERFLOW       = 0x00000002,
515*53ee8cc1Swenshuai.xi     /// PVR Buffer is Full
516*53ee8cc1Swenshuai.xi     E_DRVTSP_EVENT_PVRBUF_FULL        = 0x00000010,
517*53ee8cc1Swenshuai.xi     /// PVR Double Buffer Overflow
518*53ee8cc1Swenshuai.xi     E_DRVTSP_EVENT_PVRBUF_OVERFLOW    = 0x00000020,
519*53ee8cc1Swenshuai.xi 
520*53ee8cc1Swenshuai.xi 
521*53ee8cc1Swenshuai.xi     /// TSP self task callback // optional --> default is CB by poll
522*53ee8cc1Swenshuai.xi     E_DRVTSP_EVENT_CB_MASK            = 0x80000000,
523*53ee8cc1Swenshuai.xi     E_DRVTSP_EVENT_CB_POLL            = 0x00000000,
524*53ee8cc1Swenshuai.xi     E_DRVTSP_EVENT_CB_SELF            = 0x80000000,
525*53ee8cc1Swenshuai.xi } DrvTSP_Event;
526*53ee8cc1Swenshuai.xi #endif
527*53ee8cc1Swenshuai.xi 
528*53ee8cc1Swenshuai.xi #define DrvTSP_Event                    MS_U32
529*53ee8cc1Swenshuai.xi #define E_DRVTSP_EVENT_DATA_INIT        0x00000000UL
530*53ee8cc1Swenshuai.xi /// Section Data Ready
531*53ee8cc1Swenshuai.xi #define E_DRVTSP_EVENT_DATA_READY       0x00000001UL
532*53ee8cc1Swenshuai.xi /// Section Buffer Overflow
533*53ee8cc1Swenshuai.xi #define E_DRVTSP_EVENT_BUF_OVERFLOW     0x00000002UL
534*53ee8cc1Swenshuai.xi /// Section Buffer CRC error
535*53ee8cc1Swenshuai.xi #define E_DRVTSP_EVENT_SEC_CRCERR       0x00000004UL
536*53ee8cc1Swenshuai.xi /// PVR Buffer is Full
537*53ee8cc1Swenshuai.xi #define E_DRVTSP_EVENT_PVRBUF_FULL      0x00000010UL
538*53ee8cc1Swenshuai.xi /// PVR Double Buffer Overflow
539*53ee8cc1Swenshuai.xi #define E_DRVTSP_EVENT_PVRBUF_OVERFLOW  0x00000020UL
540*53ee8cc1Swenshuai.xi /// Channel Browser Buffer is Full
541*53ee8cc1Swenshuai.xi #define E_DRVTSP_EVENT_CBBUF_FULL       0x00000040UL
542*53ee8cc1Swenshuai.xi #define E_DRVTSP_EVENT_CBBUF_OVERFLOW   0x00000080UL
543*53ee8cc1Swenshuai.xi ///PVR2 Buffer is Full
544*53ee8cc1Swenshuai.xi #define E_DRVTSP_EVENT_PVR2BUF_FULL     0x00000100UL
545*53ee8cc1Swenshuai.xi #define E_DRVTSP_EVENT_PVR2BUF_OVERFLOW 0x00000200UL
546*53ee8cc1Swenshuai.xi 
547*53ee8cc1Swenshuai.xi 
548*53ee8cc1Swenshuai.xi /// TSP self task callback // optional --> default is CB by poll
549*53ee8cc1Swenshuai.xi #define E_DRVTSP_EVENT_CB_MASK          0x80000000UL
550*53ee8cc1Swenshuai.xi #define E_DRVTSP_EVENT_CB_POLL          0x00000000UL
551*53ee8cc1Swenshuai.xi #define E_DRVTSP_EVENT_CB_SELF          0x80000000UL
552*53ee8cc1Swenshuai.xi 
553*53ee8cc1Swenshuai.xi /// TSP file in Packet mode
554*53ee8cc1Swenshuai.xi typedef enum //_DrvTSP_PacketMode
555*53ee8cc1Swenshuai.xi {
556*53ee8cc1Swenshuai.xi     E_DRVTSP_PKTMODE_188              = 0x00000000UL,
557*53ee8cc1Swenshuai.xi     E_DRVTSP_PKTMODE_192              = 0x00000001UL,
558*53ee8cc1Swenshuai.xi     E_DRVTSP_PKTMODE_204              = 0x00000002UL,
559*53ee8cc1Swenshuai.xi     E_DRVTSP_PKTMODE_130              = 0x00000003UL,    // RVU
560*53ee8cc1Swenshuai.xi     E_DRVTSP_PKTMODE_134              = 0x00000004UL,    // RVU with timestamp
561*53ee8cc1Swenshuai.xi } DrvTSP_PacketMode;
562*53ee8cc1Swenshuai.xi 
563*53ee8cc1Swenshuai.xi /// TSP notification event message
564*53ee8cc1Swenshuai.xi typedef struct //_DrvTSP_Msg
565*53ee8cc1Swenshuai.xi {
566*53ee8cc1Swenshuai.xi     /// Union data type of message
567*53ee8cc1Swenshuai.xi     union
568*53ee8cc1Swenshuai.xi     {
569*53ee8cc1Swenshuai.xi         /// FltInfo message
570*53ee8cc1Swenshuai.xi         ///   - Byte[0] : Section filter id
571*53ee8cc1Swenshuai.xi         ///   - Byte[1] : TSP id
572*53ee8cc1Swenshuai.xi         MS_U32                          FltInfo;
573*53ee8cc1Swenshuai.xi         /// PvrBufId
574*53ee8cc1Swenshuai.xi         ///   - Byte[0] : PVR buffer id
575*53ee8cc1Swenshuai.xi         ///   - Byte[1] : PVR engine id
576*53ee8cc1Swenshuai.xi         MS_U32                          PvrBufId;
577*53ee8cc1Swenshuai.xi     };
578*53ee8cc1Swenshuai.xi 
579*53ee8cc1Swenshuai.xi } DrvTSP_Msg;
580*53ee8cc1Swenshuai.xi 
581*53ee8cc1Swenshuai.xi typedef enum //_DrvTSP_DbgLevel
582*53ee8cc1Swenshuai.xi {
583*53ee8cc1Swenshuai.xi     E_DRVTSP_DBG_Release = 0,
584*53ee8cc1Swenshuai.xi     E_DRVTSP_DBG_L1, // display error msg
585*53ee8cc1Swenshuai.xi     E_DRVTSP_DBG_L2, // display error msg and enter while(1)
586*53ee8cc1Swenshuai.xi } DrvTSP_DbgLevel;
587*53ee8cc1Swenshuai.xi 
588*53ee8cc1Swenshuai.xi /// @name DrvTSP_Msg
589*53ee8cc1Swenshuai.xi /// Macro definitions for manipulating DrvTSP_Msg
590*53ee8cc1Swenshuai.xi /// @{
591*53ee8cc1Swenshuai.xi #define MSG_FLTINFO_SEC_ID_MASK         0x000000FFUL
592*53ee8cc1Swenshuai.xi #define MSG_FLTINFO_SEC_ID_SHFT         0UL
593*53ee8cc1Swenshuai.xi #define MSG_FLTINFO_ENG_ID_MASK         0x0000FF00UL
594*53ee8cc1Swenshuai.xi #define MSG_FLTINFO_ENG_ID_SHFT         8UL
595*53ee8cc1Swenshuai.xi #define MSG_PVRBUF_ID_MASK              0x000000FFUL
596*53ee8cc1Swenshuai.xi #define MSG_PVRBUF_ID_SHFT              0UL
597*53ee8cc1Swenshuai.xi #define MSG_PVRBUF_ID_NULL              0xFFUL
598*53ee8cc1Swenshuai.xi #define MSG_PVR_ID_MASK                 0x0000FF00UL
599*53ee8cc1Swenshuai.xi #define MSG_PVR_ID_SHFT                 8UL
600*53ee8cc1Swenshuai.xi 
601*53ee8cc1Swenshuai.xi /// @}
602*53ee8cc1Swenshuai.xi 
603*53ee8cc1Swenshuai.xi #define TSP_MAX_SIGFLAG_NUM             10UL
604*53ee8cc1Swenshuai.xi #define TSP_MAX_PVRSIGFLAG_NUM          10UL
605*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED
606*53ee8cc1Swenshuai.xi {
607*53ee8cc1Swenshuai.xi     MS_U32                 u32Eng;
608*53ee8cc1Swenshuai.xi     MS_U32                 u32EvtWaitOpt;
609*53ee8cc1Swenshuai.xi     MS_U32                 u32DmxEvt;
610*53ee8cc1Swenshuai.xi     MS_U32                 u32TspEvt;
611*53ee8cc1Swenshuai.xi 
612*53ee8cc1Swenshuai.xi     MS_U32                 u32PvrBufFullFlag[TSP_MAX_PVRSIGFLAG_NUM];
613*53ee8cc1Swenshuai.xi 
614*53ee8cc1Swenshuai.xi     MS_U32                 u32SecRdyFlag[TSP_MAX_SIGFLAG_NUM];
615*53ee8cc1Swenshuai.xi     MS_U32                 u32SecOvfFlag[TSP_MAX_SIGFLAG_NUM];
616*53ee8cc1Swenshuai.xi     MS_U32                 u32SecCrcErrFlag[TSP_MAX_SIGFLAG_NUM];
617*53ee8cc1Swenshuai.xi 
618*53ee8cc1Swenshuai.xi     MS_S32                 s32KerModeTspEvtId; //For kernel mode, every user callback process must has itself eventid in multiple process support
619*53ee8cc1Swenshuai.xi     MS_U32                 u32TblIndex;
620*53ee8cc1Swenshuai.xi }DrvTSP_IoSignal;
621*53ee8cc1Swenshuai.xi 
622*53ee8cc1Swenshuai.xi 
623*53ee8cc1Swenshuai.xi typedef enum
624*53ee8cc1Swenshuai.xi {
625*53ee8cc1Swenshuai.xi     E_DRVTSP_CAP_PID_FILTER_NUM             = 0,    // Get filter number
626*53ee8cc1Swenshuai.xi     E_DRVTSP_CAP_SEC_FILTER_NUM             = 1,
627*53ee8cc1Swenshuai.xi     E_DRVTSP_CAP_SEC_BUF_NUM                = 2,
628*53ee8cc1Swenshuai.xi 
629*53ee8cc1Swenshuai.xi     E_DRVTSP_CAP_PVR_ENG_NUM                = 3,
630*53ee8cc1Swenshuai.xi     E_DRVTSP_CAP_PVR_FILTER_NUM             = 4,   // Get pvr filter number
631*53ee8cc1Swenshuai.xi     E_DRVTSP_CAP_PVR1_FILTER_NUM            = 5,   // Get pvr1 filter number
632*53ee8cc1Swenshuai.xi 
633*53ee8cc1Swenshuai.xi     E_DRVTSP_CAP_MMFI0_FILTER_NUM           = 6,   // Get MMFI0 filter number
634*53ee8cc1Swenshuai.xi     E_DRVTSP_CAP_MMFI1_FILTER_NUM           = 7,   // Get MMFI1 filter number
635*53ee8cc1Swenshuai.xi 
636*53ee8cc1Swenshuai.xi     E_DRVTSP_CAP_TSIF_NUM                   = 8,
637*53ee8cc1Swenshuai.xi     E_DRVTSP_CAP_DEMOD_NUM                  = 9,
638*53ee8cc1Swenshuai.xi     E_DRVTSP_CAP_TS_PAD_NUM                 = 10,
639*53ee8cc1Swenshuai.xi     E_DRVTSP_CAP_VQ_NUM                     = 11,
640*53ee8cc1Swenshuai.xi 
641*53ee8cc1Swenshuai.xi     E_DRVTSP_CAP_CA_FLT_NUM                 = 12,  // Get dscmb filter number
642*53ee8cc1Swenshuai.xi     E_DRVTSP_CAP_CA_KEY_NUM                 = 13,
643*53ee8cc1Swenshuai.xi 
644*53ee8cc1Swenshuai.xi     E_DRVTSP_CAP_FW_ALIGN                   = 14,
645*53ee8cc1Swenshuai.xi     E_DRVTSP_CAP_VQ_ALIGN                   = 15,
646*53ee8cc1Swenshuai.xi     E_DRVTSP_CAP_VQ_PITCH                   = 16,
647*53ee8cc1Swenshuai.xi     E_DRVTSP_CAP_SEC_BUF_ALIGN              = 17,
648*53ee8cc1Swenshuai.xi 
649*53ee8cc1Swenshuai.xi     E_DRVTSP_CAP_PVR_ALIGN                  = 18,
650*53ee8cc1Swenshuai.xi     E_DRVTSP_CAP_PVRCA_PATH_NUM             = 19,
651*53ee8cc1Swenshuai.xi     E_DRVTSP_CAP_SHAREKEY_FLT_RANGE         = 20,
652*53ee8cc1Swenshuai.xi     E_DRVTSP_CAP_PVRCA0_FLT_RANGE           = 21,
653*53ee8cc1Swenshuai.xi     E_DRVTSP_CAP_PVRCA1_FLT_RANGE           = 22,
654*53ee8cc1Swenshuai.xi     E_DRVTSP_CAP_PVRCA2_FLT_RANGE           = 23,
655*53ee8cc1Swenshuai.xi     E_DRVTSP_CAP_SHAREKEY_FLT1_RANGE        = 24,
656*53ee8cc1Swenshuai.xi     E_DRVTSP_CAP_SHAREKEY_FLT2_RANGE        = 25,
657*53ee8cc1Swenshuai.xi 
658*53ee8cc1Swenshuai.xi     E_DRVTSP_CAP_HW_TYPE                    = 26,
659*53ee8cc1Swenshuai.xi 
660*53ee8cc1Swenshuai.xi     E_DRVTSP_CAP_RESOURCE_SIZE              = 27,       // Get the data structure size of private resource (share resource)
661*53ee8cc1Swenshuai.xi 
662*53ee8cc1Swenshuai.xi     E_DRVTSP_CAP_VFIFO_NUM                  = 28,       // Get VFIFO support number
663*53ee8cc1Swenshuai.xi     E_DRVTSP_CAP_AFIFO_NUM                  = 29,       // Get AFIFO support number
664*53ee8cc1Swenshuai.xi 
665*53ee8cc1Swenshuai.xi     E_DRVTSP_CAP_HWPCR_SUPPORT              = 30,       // Get HWPCR support status
666*53ee8cc1Swenshuai.xi     E_DRVTSP_CAP_PCRFLT_START_IDX           = 31,       // Get PCR start index
667*53ee8cc1Swenshuai.xi 
668*53ee8cc1Swenshuai.xi     E_DRVTSP_CAP_HWWP_SET_NUM               = 32,       // Get TSP write protect set numbers
669*53ee8cc1Swenshuai.xi 
670*53ee8cc1Swenshuai.xi     E_DRVTSP_CAP_DSCMB_ENG_NUM              = 33,       // Get DSCMB engine numbers
671*53ee8cc1Swenshuai.xi 
672*53ee8cc1Swenshuai.xi     E_DRVTSP_CAP_MAX_MERGESTR_NUM           = 34,       // Get Maxumum merge stream number
673*53ee8cc1Swenshuai.xi     E_DRVTSP_CAP_MAX_SEC_FLT_DEPTH          = 35,
674*53ee8cc1Swenshuai.xi     E_DRVTSP_CAP_FW_BUF_SIZE                = 36,
675*53ee8cc1Swenshuai.xi     E_DRVTSP_CAP_FW_BUF_RANGE               = 37,
676*53ee8cc1Swenshuai.xi     E_DRVTSP_CAP_VQ_BUF_RANGE               = 38,
677*53ee8cc1Swenshuai.xi     E_DRVTSP_CAP_SEC_BUF_RANGE              = 39,
678*53ee8cc1Swenshuai.xi     E_DRVTSP_CAP_FIQ_NUM                    = 40,
679*53ee8cc1Swenshuai.xi     E_DRVTSP_CAP_NULL,
680*53ee8cc1Swenshuai.xi } DrvTSP_Cap;
681*53ee8cc1Swenshuai.xi 
682*53ee8cc1Swenshuai.xi typedef enum
683*53ee8cc1Swenshuai.xi {
684*53ee8cc1Swenshuai.xi     E_DRVTSP_HW_STATUS = 0,
685*53ee8cc1Swenshuai.xi     E_DRVTSP_HW_INIT,
686*53ee8cc1Swenshuai.xi     E_DRVTSP_HW_ALIVE,
687*53ee8cc1Swenshuai.xi     E_DRVTSP_HW_DEALIVE,
688*53ee8cc1Swenshuai.xi } DrvTSP_HW_Status;
689*53ee8cc1Swenshuai.xi 
690*53ee8cc1Swenshuai.xi typedef enum
691*53ee8cc1Swenshuai.xi {
692*53ee8cc1Swenshuai.xi     E_DRVTSP_SW_INIT = 0,
693*53ee8cc1Swenshuai.xi     E_DRVTSP_SW_INIT_FAIL,
694*53ee8cc1Swenshuai.xi     E_DRVTSP_SW_SUSPEND,
695*53ee8cc1Swenshuai.xi     E_DRVTSP_SW_RESUME,
696*53ee8cc1Swenshuai.xi     E_DRVTSP_SW_POWEROFF,
697*53ee8cc1Swenshuai.xi     E_DRVTSP_SW_CLOSE,
698*53ee8cc1Swenshuai.xi     E_DRVTSP_SW_EXIT,
699*53ee8cc1Swenshuai.xi } DrvTSP_SW_Status;
700*53ee8cc1Swenshuai.xi 
701*53ee8cc1Swenshuai.xi // legacy
702*53ee8cc1Swenshuai.xi typedef enum{
703*53ee8cc1Swenshuai.xi     E_DRVTSP_SCMB_NONE                = 0x00000000UL,
704*53ee8cc1Swenshuai.xi     E_DRVTSP_SCMB_TS                  = 0x00000001UL,
705*53ee8cc1Swenshuai.xi     E_DRVTSP_SCMB_PES                 = 0x00000002UL,
706*53ee8cc1Swenshuai.xi     E_DRVTSP_SCMB_TS_PES              = (E_DRVTSP_SCMB_TS| E_DRVTSP_SCMB_PES),
707*53ee8cc1Swenshuai.xi } DrvTSP_Scmb_Level;
708*53ee8cc1Swenshuai.xi 
709*53ee8cc1Swenshuai.xi //----------------
710*53ee8cc1Swenshuai.xi //For Tee
711*53ee8cc1Swenshuai.xi //----------------
712*53ee8cc1Swenshuai.xi #ifdef SECURE_PVR_ENABLE
713*53ee8cc1Swenshuai.xi typedef enum
714*53ee8cc1Swenshuai.xi {
715*53ee8cc1Swenshuai.xi     E_DRVTSP_REE_TO_TEE_CMD_NULL,
716*53ee8cc1Swenshuai.xi     E_DRVTSP_REE_TO_TEE_CMD_FW_LoadCode,                //None parameters
717*53ee8cc1Swenshuai.xi     E_DRVTSP_REE_TO_TEE_CMD_SET_VqBuf,                  //None parameters
718*53ee8cc1Swenshuai.xi     E_DRVTSP_REE_TO_TEE_CMD_SET_PvrBuf,                 //Param1: Engine id, Param2: Option 1 is reset buffer to 0
719*53ee8cc1Swenshuai.xi     E_DRVTSP_REE_TO_TEE_CMD_SET_FileinBuf,              //Param1: Engine id, Param2: Buf address, Param3: Buf size
720*53ee8cc1Swenshuai.xi     E_DRVTSP_REE_TO_TEE_CMD_GET_PvrWPtr,                //Param1: Engine id, Param2: Return Buf address
721*53ee8cc1Swenshuai.xi     E_DRVTSP_REE_TO_TEE_CMD_SET_MMFIBuf                 //Param1: Engine id, Param2: Return Buf address
722*53ee8cc1Swenshuai.xi } TSP_REE_TO_TEE_CMD_TYPE;
723*53ee8cc1Swenshuai.xi 
724*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED
725*53ee8cc1Swenshuai.xi {
726*53ee8cc1Swenshuai.xi     MS_U32 u32BufId;
727*53ee8cc1Swenshuai.xi     MS_U32 u32BufOpt;
728*53ee8cc1Swenshuai.xi     MS_U32 u32BufSize;
729*53ee8cc1Swenshuai.xi     MS_PHY phyBufAddr;
730*53ee8cc1Swenshuai.xi }DrvTSP_SecureBuf;
731*53ee8cc1Swenshuai.xi 
732*53ee8cc1Swenshuai.xi #endif  //SECURE_PVR_ENABLE
733*53ee8cc1Swenshuai.xi 
734*53ee8cc1Swenshuai.xi // TSP event define
735*53ee8cc1Swenshuai.xi #define TSP_TASK_EVENT_SECTION_SELF         0x00000001UL
736*53ee8cc1Swenshuai.xi #define TSP_TASK_EVENT_SECTION_POLL         0x00000002UL
737*53ee8cc1Swenshuai.xi #define TSP_TASK_EVENT_PVR0_RDY_SELF        0x00000004UL //PVR1 buffer0
738*53ee8cc1Swenshuai.xi #define TSP_TASK_EVENT_PVR1_RDY_SELF        0x00000008UL //PVR1 buffer0
739*53ee8cc1Swenshuai.xi #define TSP_TASK_EVENT_PVR0_RDY_POLL        0x00000010UL //PVR1 buffer0
740*53ee8cc1Swenshuai.xi #define TSP_TASK_EVENT_PVR1_RDY_POLL        0x00000020UL //PVR1 buffer0
741*53ee8cc1Swenshuai.xi #define TSP_TASK_EVENT_FLT_FREE             0x00000040UL
742*53ee8cc1Swenshuai.xi #define TSP_TASK_EVENT_CBPVR0_RDY_SELF      0x00000080UL
743*53ee8cc1Swenshuai.xi #define TSP_TASK_EVENT_CBPVR0_RDY_POLL      0x00000100UL
744*53ee8cc1Swenshuai.xi #define TSP_TASK_EVENT_FWMSG                0x00000200UL
745*53ee8cc1Swenshuai.xi #define TSP_TASK_EVENT_PVR2PVR0_RDY_SELF    0x00000400UL //PVR2 buffer0
746*53ee8cc1Swenshuai.xi #define TSP_TASK_EVENT_PVR2PVR1_RDY_SELF    0x00000800UL //PVR2 buffer1
747*53ee8cc1Swenshuai.xi #define TSP_TASK_EVENT_PVR2PVR0_RDY_POLL    0x00001000UL //PVR2 buffer0
748*53ee8cc1Swenshuai.xi #define TSP_TASK_EVENT_PVR2PVR1_RDY_POLL    0x00002000UL //PVR2 buffer1
749*53ee8cc1Swenshuai.xi 
750*53ee8cc1Swenshuai.xi #define TSP_TASK_EVENT_PVR_SELF       (     TSP_TASK_EVENT_PVR0_RDY_SELF    |   \
751*53ee8cc1Swenshuai.xi                                             TSP_TASK_EVENT_PVR1_RDY_SELF    |   \
752*53ee8cc1Swenshuai.xi                                             TSP_TASK_EVENT_CBPVR0_RDY_SELF  |   \
753*53ee8cc1Swenshuai.xi                                             TSP_TASK_EVENT_PVR2PVR0_RDY_SELF|   \
754*53ee8cc1Swenshuai.xi                                             TSP_TASK_EVENT_PVR2PVR1_RDY_SELF)
755*53ee8cc1Swenshuai.xi #define TSP_TASK_EVENT_PVR_POLL       (     TSP_TASK_EVENT_PVR0_RDY_POLL    |   \
756*53ee8cc1Swenshuai.xi                                             TSP_TASK_EVENT_PVR1_RDY_POLL    |   \
757*53ee8cc1Swenshuai.xi                                             TSP_TASK_EVENT_CBPVR0_RDY_POLL  |   \
758*53ee8cc1Swenshuai.xi                                             TSP_TASK_EVENT_PVR2PVR0_RDY_POLL|   \
759*53ee8cc1Swenshuai.xi                                             TSP_TASK_EVENT_PVR2PVR1_RDY_POLL)
760*53ee8cc1Swenshuai.xi 
761*53ee8cc1Swenshuai.xi 
762*53ee8cc1Swenshuai.xi #define TSP_TASK_EVENT_GROUP_SELF       (   TSP_TASK_EVENT_SECTION_SELF     |   \
763*53ee8cc1Swenshuai.xi                                             TSP_TASK_EVENT_PVR0_RDY_SELF    |   \
764*53ee8cc1Swenshuai.xi                                             TSP_TASK_EVENT_PVR1_RDY_SELF    |   \
765*53ee8cc1Swenshuai.xi                                             TSP_TASK_EVENT_CBPVR0_RDY_SELF  |   \
766*53ee8cc1Swenshuai.xi                                             TSP_TASK_EVENT_PVR2PVR0_RDY_SELF|   \
767*53ee8cc1Swenshuai.xi                                             TSP_TASK_EVENT_PVR2PVR1_RDY_SELF)
768*53ee8cc1Swenshuai.xi #define TSP_TASK_EVENT_GROUP_POLL       (   TSP_TASK_EVENT_SECTION_POLL     |   \
769*53ee8cc1Swenshuai.xi                                             TSP_TASK_EVENT_PVR0_RDY_POLL    |   \
770*53ee8cc1Swenshuai.xi                                             TSP_TASK_EVENT_PVR1_RDY_POLL    |   \
771*53ee8cc1Swenshuai.xi                                             TSP_TASK_EVENT_CBPVR0_RDY_POLL  |   \
772*53ee8cc1Swenshuai.xi                                             TSP_TASK_EVENT_PVR2PVR0_RDY_POLL|   \
773*53ee8cc1Swenshuai.xi                                             TSP_TASK_EVENT_PVR2PVR1_RDY_POLL)
774*53ee8cc1Swenshuai.xi 
775*53ee8cc1Swenshuai.xi /// TSP notification function
776*53ee8cc1Swenshuai.xi typedef void (*P_DrvTSP_EvtCallback)(DrvTSP_Event eEvent, DrvTSP_Msg *pMsg);
777*53ee8cc1Swenshuai.xi 
778*53ee8cc1Swenshuai.xi 
779*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
780*53ee8cc1Swenshuai.xi //  Function and Variable
781*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
782*53ee8cc1Swenshuai.xi 
783*53ee8cc1Swenshuai.xi // General API
784*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_InitLibResource(void *pResMemAddr);
785*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Init(MS_PHY u32FWAddr, MS_U32 u32FWSize);                                       // Set FW address and size
786*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Reinit(MS_BOOL bHK);
787*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PowerOff(void);
788*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Exit(void);
789*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Suspend(void);
790*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Resume(MS_PHY phyFWAddr, MS_U32 u32FWSize);
791*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Resume_Filter(void);
792*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Alive(MS_U32 u32EngId);
793*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Reset(void);
794*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_HW_Lock_Release(void);
795*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_RemoveDupAVPkt(MS_BOOL bEnable);
796*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_RemoveDupAVFifoPkt(DrvTSP_FltType flttype, MS_BOOL bEnable);
797*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_TEI_RemoveErrorPkt(TSP_DRV_TEI_RmPktType eDrvPktType, MS_BOOL bEnable);
798*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_AU_BD_Mode_Enable(MS_BOOL bEnable);
799*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_DropScmbPkt(DrvTSP_FltType eFilterType, MS_BOOL bEnable);
800*53ee8cc1Swenshuai.xi 
801*53ee8cc1Swenshuai.xi // Misc API
802*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_SetFwDBGParam(MS_PHY phyAddr, MS_U32 u32Size, MS_U32 u32DbgWord);           // for TSP f/w debug
803*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_SetOperateMode(MS_U32 u32EngId, DrvTSP_CtrlMode eCtrlMode, MS_U8 u8DscmbEngSel); // Set TSP internal operate
804*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_SelPad(MS_U32 u32EngId, DrvTSP_If eIf, DrvTSP_If_Set* pIfSet);                  // Set TSP input pad and ts0/ts1
805*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_OutputPadCfg(DrvTSP_PadOut eOutputPad, DrvTSP_PadIn eInputPad, MS_BOOL bInParallel, MS_BOOL bEnable);
806*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_OutputClkPhase(MS_U16 u16OutPad, MS_U16 u16Val, MS_BOOL bEnable, MS_U32 u32S2pOpt);
807*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_AVFifo_Reset(DrvTSP_FltType eFilterType, MS_BOOL bFlush);
808*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_AVFifo_Status(DrvTSP_FltType eFilterType, MS_U32 *u32FifoLevel);
809*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_AVFifo_BlockEnable(DrvTSP_FltType eFilterType, MS_BOOL bEnable);
810*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_AVFifo_SourceSelect(DrvTSP_PKTDMXSrcType ePKTSrc, MS_U32 u32FifoType);
811*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Parl_BitOrderSwap(MS_U32 u32EngId, DrvTSP_If eIf, MS_BOOL bInvert);
812*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Get_FW_VER(MS_U32* u32FWVer);
813*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Get_Intr_Count(MS_U32* pu32Count);
814*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Scmb_Status(MS_U32 u32EngId, DrvTSP_Scmb_Level* pScmbLevel);
815*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_GetLastErr(void);
816*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Proc(MS_U32 u32EngId, MS_U32 u32FltId, TSP_Result* pRet, DrvTSP_Event* pEvt);   // for non-OS TSP scheduling
817*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_GetSTC(MS_U32 u32EngId, MS_U32 *pu32STC_32, MS_U32 *pu32STC);
818*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_SetSTC(MS_U32 u32EngId, MS_U32 u32STC_32, MS_U32 u32STC);
819*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_GetPCR(MS_U32 u32EngId, MS_U32 *pu32Pcr_32, MS_U32 *pu32Pcr);
820*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Flt_GetState(MS_U32 u32EngId, MS_U32 u32FltId, DrvTSP_FltState *peState);
821*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_GetDscmbFltId_Range(MS_U32 u32EngId, MS_U32 *pu32StartId, MS_U32 *pu32EndId);
822*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_GetDscmbEngIdx_BySource(DrvTSP_PKTDMXSrcType eInputSrc, MS_U32* pu32EngId);
823*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Dscmb_Source(MS_U32 u32EngId, DrvTSP_PKTDMXSrcType* peInputSrc, MS_BOOL bSet);
824*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_STC64_Mode_Enable(MS_BOOL bEnable);
825*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_STCClk_Adjust(MS_U32 u32EngId, MS_BOOL bUpClk, MS_U32 u32Percentage);
826*53ee8cc1Swenshuai.xi 
827*53ee8cc1Swenshuai.xi 
828*53ee8cc1Swenshuai.xi // NDS --> ECM
829*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_SecFlt_SetEcmIdx(MS_U32 u32EngId, MS_U32 u32SecFltId, MS_U32 u32EcmIdx);
830*53ee8cc1Swenshuai.xi 
831*53ee8cc1Swenshuai.xi // PIDFlt API
832*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PidFlt_Alloc(MS_U32 u32EngId, DrvTSP_FltType eFilterType, MS_U32 *pu32PidFltId);
833*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PidFlt_Free(MS_U32 u32EngId, MS_U32 u32PidFltId);
834*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PidFlt_SetPid(MS_U32 u32EngId, MS_U32 u32PidFltId, MS_U16 u16PID);
835*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PidFlt_GetPid(MS_U32 u32EngId, MS_U32 u32PidFltId, MS_U32* pu32PID);
836*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PidFlt_SelSecFlt(MS_U32 u32EngId, MS_U32 u32PidFltId, MS_U32 u32SecFltId);
837*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PidFlt_SetInputSrc(MS_U32 u32EngId, MS_U32 u32PidFltId, DrvTSP_FltType eFltSrc);
838*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PidFlt_Enable(MS_U32 u32EngId, MS_U32 u32PidFltId, MS_BOOL bEnable);
839*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PidFlt_GetState(MS_U32 u32EngId, MS_U32 u32PidFltId, DrvTSP_FltState *peState);
840*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PidFlt_ChangeSource(MS_U32 u32EngId, MS_U32 u32PidFltId, DrvTSP_FltType eFilterType);
841*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PidFlt_GetScmbSts(DrvTSP_FltType FltSrc, MS_U32 u32FltGroupId, MS_U32 PidFltId, MS_U32 *pu32ScmbSts);
842*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_FLT_LiveSrcSwitch(DrvTSP_FltType eFltSrcType);
843*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PidFlt_SetFltRushPass(MS_U32 u32EngId, MS_U32 u32PidFltId, MS_U8 u8Enable);
844*53ee8cc1Swenshuai.xi 
845*53ee8cc1Swenshuai.xi // SecFlt API
846*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_SecFlt_Alloc(MS_U32 u32EngId, MS_U32 *pu32SecFltId);
847*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_SecFlt_Free(MS_U32 u32EngId, MS_U32 u32SecFltId);
848*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_SecFlt_SetMode(MS_U32 u32EngId, MS_U32 u32SecFltId, DrvTSP_FltMode eSecFltMode);
849*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_SecFlt_SetPattern(MS_U32 u32EngId, MS_U32 u32SecFltId, MS_U8 *pu8Match, MS_U8 *pu8Mask, MS_U8 *pu8NotMask);
850*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_SecFlt_ResetBuffer(MS_U32 u32EngId, MS_U32 u32SecFltId);
851*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_SecFlt_SetBuffer(MS_U32 u32EngId, MS_U32 u32SecFltId, MS_PHY phyStartAddr, MS_U32 u32BufSize);
852*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_SecFlt_SetReqCount(MS_U32 u32EngId, MS_U32 u32SecFltId, MS_U32 u32ReqCount);
853*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_SecFlt_GetBufStart(MS_U32 u32EngId, MS_U32 u32SecFltId, MS_PHY *pphyBufStart);
854*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_SecFlt_GetBufSize(MS_U32 u32EngId, MS_U32 u32SecFltId, MS_U32 *pu32BufSize);
855*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_SecFlt_GetReadAddr(MS_U32 u32EngId, MS_U32 u32SecFltId, MS_PHY *pphyReadAddr);
856*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_SecFlt_GetWriteAddr(MS_U32 u32EngId, MS_U32 u32SecFltId, MS_PHY *pphyWriteAddr);
857*53ee8cc1Swenshuai.xi 
858*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_SecFlt_SetReadAddr(MS_U32 u32EngId, MS_U32 u32SecFltId, MS_PHY phyReadAddr);
859*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_SecFlt_SetDataAddr(MS_U32 u32DataAddr);
860*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_SecFlt_Notify(MS_U32 u32EngId, MS_U32 u32SecFltId, DrvTSP_Event eEvents, P_DrvTSP_EvtCallback pfCallback);
861*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_SecFlt_GetState(MS_U32 u32EngId, MS_U32 u32SecFltId, DrvTSP_FltState *peState);
862*53ee8cc1Swenshuai.xi #ifdef CONFIG_UTOPIA_PROC_DBG_SUPPORT
863*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_SecFlt_GetPattern(MS_U32 u32EngId, MS_U32 u32SecFltId, MS_U8 *pu8Match, MS_U8 *pu8Mask, MS_U8 *pu8NotMask);
864*53ee8cc1Swenshuai.xi #endif //CONFIG_UTOPIA_PROC_DBG_SUPPORT
865*53ee8cc1Swenshuai.xi 
866*53ee8cc1Swenshuai.xi // PVR API
867*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PVR_Eng_SetBuffer(MS_U8 u8PVRId, MS_PHY phyBufStart0, MS_PHY phyBufStart1, MS_U32 u32BufSize0, MS_U32 u32BufSize1);
868*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PVR_Eng_Start(MS_U8 u8PVRId, DrvTSP_RecMode eRecMode, MS_BOOL bStart);
869*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PVR_Eng_GetWriteAddr(MS_U8 u8PVRId, MS_PHY *pphy2WriteAddr);
870*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PVR_Eng_Notify(MS_U8 u8PVRId, DrvTSP_Event eEvents, P_DrvTSP_EvtCallback pfCallback);
871*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PVR_Eng_SetPacketMode(MS_U8 u8PVRId, MS_BOOL bSet);
872*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PVR_Eng_SelSrc(MS_U8 u8PVRId, DrvTSP_PKTDMXSrcType ePktSrc);
873*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PVR_BlockEnable(MS_U8 u8PVRId, MS_BOOL bEnable);
874*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PVR_Eng_TimeStampSetRecordStamp(MS_U8 u8PVRId, MS_U32 u32Stamp);
875*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PVR_Eng_TimeStampGetRecordStamp(MS_U8 u8PVRId,MS_U32* u32Stamp);
876*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PVR_TimeStampSetPlaybackStamp(MS_U32 u32Stamp);
877*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PVR_TimeStampGetPlaybackStamp(MS_U32* u32Stamp);
878*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PVR_TimeStamp(MS_BOOL bEnable);
879*53ee8cc1Swenshuai.xi 
880*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PVR_Eng_SetPlaybackStampClk(MS_U32 u32EngId, MS_U32 u32Clk);
881*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PVR_Eng_SetRecordStampClk(MS_U32 u32PvrId, MS_U32 u32Clk);
882*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PVR_Eng_IsStart(MS_U32 u32PvrId, MS_BOOL *pbIsStart);
883*53ee8cc1Swenshuai.xi 
884*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PVRCA_Close(MS_U8 u8PVRId);
885*53ee8cc1Swenshuai.xi 
886*53ee8cc1Swenshuai.xi 
887*53ee8cc1Swenshuai.xi #define MDrv_TSP_PVR_Notify(eEvents, pfCallback)    MDrv_TSP_PVR_Eng_Notify(0, eEvents, pfCallback)
888*53ee8cc1Swenshuai.xi 
889*53ee8cc1Swenshuai.xi // File API
890*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_File_SetAddr(MS_PHY phyStreamAddr);
891*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_File_SetSize(MS_U32 u32StreamSize);
892*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_File_Start(DrvTSP_FileinMode eFileinMode);
893*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_File_Stop(void);
894*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_File_Pause(void);
895*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_File_Resume(void);
896*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_File_GetState(DrvTSP_FileinState *peFileinState);
897*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_File_SetRate(MS_U32 u32Div2);
898*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_File_SetPacketMode(DrvTSP_PacketMode PKT_Mode);
899*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_File_CMDQ_GetSlot(MS_U32 *pu32EmptySlot);
900*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_File_CMDQ_Reset(void);
901*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_CmdQFifo_Status(MS_U8 *pu8FifoLevel);
902*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_ResetFileinTimestamp(void);
903*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_File_GetReadAddr(MS_PHY *pphyReadAddr);
904*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_File_192BlockScheme_En(MS_BOOL bEnable);
905*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_File_PS_Path_Enable(DrvTSP_FileinMode eFileinMode);
906*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_File_TSIFSrcSel(DrvTSP_FltType eFltSrc, MS_BOOL bFileMode);
907*53ee8cc1Swenshuai.xi 
908*53ee8cc1Swenshuai.xi // Capacity query
909*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_GetCap(DrvTSP_Cap eCap, void* pOutput);
910*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_GetStatus(DrvTSP_HW_Status *HW_Status, DrvTSP_SW_Status *SW_Status);
911*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_GetLibVer(const MSIF_Version **ppVersion);
912*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_SetDbgLevel(DrvTSP_DbgLevel DbgLevel);
913*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_GetTSIFStatus(DrvTSP_If eIf, DrvTSP_If_Set* pIfSet, MS_U16* pu16Clk);
914*53ee8cc1Swenshuai.xi 
915*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
916*53ee8cc1Swenshuai.xi //  OBSOLETE
917*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
918*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.
919*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PidFlt_ChkOwner(MS_U32 u32EngId, MS_U32 u32PidFltId);
920*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_SetHK(MS_BOOL bIsHK);
921*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_IsAccess(MS_U32 u32Try);
922*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_UnlockAccess(void);
923*53ee8cc1Swenshuai.xi 
924*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_TTX_SecFlt_GetWriteAddr(MS_U32 u32EngId, MS_U32 u32SecFltId, MS_PHY *pphyWriteAddr); // special case for TTX
925*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_GetDbgPortInfo(MS_U32 u32DbgSel,MS_U32* u32DbgInfo);
926*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_BurstLen(MS_U32 u32Len);
927*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_GetFileInTimeStamp(MS_U32* u32TSLen);
928*53ee8cc1Swenshuai.xi #if 0
929*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_ResetFileinTimestamp(void);
930*53ee8cc1Swenshuai.xi #endif
931*53ee8cc1Swenshuai.xi 
932*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_SetVQueBuf(MS_PHY phyVQBaseAddr, MS_U32 u32VQBufLen);
933*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_VQueEnable(MS_BOOL bEnable);
934*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_VQueReset(MS_U8 u8VQID);
935*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_VQueue_OverflowInt_En(MS_BOOL bEnable);
936*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Set_VQ_Threshold(MS_U8 u8req_len);
937*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Get_VQStatus(MS_U32* pu32Status);
938*53ee8cc1Swenshuai.xi 
939*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Set_MOBF_Set(MS_U8 u8Model, MS_U8 u8MobfIndex0, MS_U8 u8MobfIndex1);
940*53ee8cc1Swenshuai.xi 
941*53ee8cc1Swenshuai.xi void       MDrv_TSP_WriteProtect_Enable(MS_BOOL bEnable, MS_PHY* pphyStartAddr, MS_PHY* pphyEndAddr);
942*53ee8cc1Swenshuai.xi void       MDrv_TSP_OrzWriteProtect_Enable(MS_BOOL bEnable, MS_PHY phyStartAddr, MS_PHY phyEndAddr);
943*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_TSIF_Enable(DrvTSP_If tsif, MS_BOOL bEnable);
944*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_ReadDropPktCnt(MS_U16* pu16ADropCnt, MS_U16* pu16VDropCnt);
945*53ee8cc1Swenshuai.xi 
946*53ee8cc1Swenshuai.xi #define MDrv_TSP_PVR_SetBuffer(p1, p2...)                   MDrv_TSP_PVR_Eng_SetBuffer(0, p1, p2)
947*53ee8cc1Swenshuai.xi #define MDrv_TSP_PVR_Start(p1, p2...)                       MDrv_TSP_PVR_Eng_Start(0, p1, p2)
948*53ee8cc1Swenshuai.xi #define MDrv_TSP_PVR_GetWriteAddr(p1)                       MDrv_TSP_PVR_Eng_GetWriteAddr(0, p1)
949*53ee8cc1Swenshuai.xi #define MDrv_TSP_PVR_SetPacketMode(p1 )                     MDrv_TSP_PVR_Eng_SetPacketMode(0, p1)
950*53ee8cc1Swenshuai.xi #define MDrv_TSP_PVR_TimeStampSetRecordStamp(p1)            MDrv_TSP_PVR_Eng_TimeStampSetRecordStamp(0, p1)
951*53ee8cc1Swenshuai.xi #define MDrv_TSP_PVR_TimeStampGetRecordStamp(p1 )           MDrv_TSP_PVR_Eng_TimeStampGetRecordStamp(0, p1)
952*53ee8cc1Swenshuai.xi 
953*53ee8cc1Swenshuai.xi //---------- Common Interface for TSP config and Api commands ------------//
954*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_CMD_Run(MS_U32 u32Cmd, MS_U32 u32Config0, MS_U32 u32Config1 ,void *pData);
955*53ee8cc1Swenshuai.xi #define DRVTSP_CMD_SET_LIB_MODE           0x80000003UL  //u32Config0: 0 ->  user mode, 1 ->  Kernel mode with user cb
956*53ee8cc1Swenshuai.xi     #define DRVTSP_CMD_LIB_MODE_USER      0x00000000UL
957*53ee8cc1Swenshuai.xi     #define DRVTSP_CMD_LIB_MODE_KRN       0x00000001UL
958*53ee8cc1Swenshuai.xi #define DRVTSP_CMD_STC_ADJUST_UNIT        0x00000020UL //u32Config0: data
959*53ee8cc1Swenshuai.xi #define TSP_CMD_PVR_PES_MODE              0x00000030UL //u32Config0: PVR EngineID, u32Config1=1, *pData = 1 is enable, pData = 0 is disable
960*53ee8cc1Swenshuai.xi 
961*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_GetPesScmbSts(MS_U32 u32FltId, MS_U8 *pu8status);
962*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_GetTsScmbSts(MS_U32 u32FltId, MS_U8 *pu8status);
963*53ee8cc1Swenshuai.xi 
964*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_SetFwDataAddr(MS_PHY phyDataAddr, MS_U32 u32Size);
965*53ee8cc1Swenshuai.xi 
966*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_FQ_FltNullPkt(MS_U32 u32FQEng, MS_BOOL bFltNull);
967*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_FQ_SetMuxSwitch(MS_U32 u32FQEng, DrvFQ_SrcIf eTsSrc);
968*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_FQ_GetMuxSwitch(MS_U32 u32FQEng, DrvFQ_SrcIf* peTsSrc);
969*53ee8cc1Swenshuai.xi 
970*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_STC_Alloc(MS_U32 *pu32EngId);
971*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_STC_Free(MS_U32 u32EngId);
972*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_STC_UpdateCtrl(MS_U8 u8Eng, MS_U8 u8Mode);
973*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_STC_Select(DrvTSP_FltType eFltSrc, MS_U32 u32StcEng);
974*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_PcrId_To_StcId(MS_U32 u32PcrFltId,MS_U32 *pu32EngId);
975*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_SetSTCOffset(MS_U32 u32EngId, MS_U32 u32Offset, MS_BOOL bAdd);
976*53ee8cc1Swenshuai.xi 
977*53ee8cc1Swenshuai.xi //----------- Debug table --------------
978*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Get_DisContiCnt(DrvTSP_DisContiCnt_info* tspInfo, MS_U32* pu32Cnt);
979*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Get_DropPktCnt(DrvTSP_DropPktCnt_info* tspInfo, MS_U32* pu32Cnt);
980*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Get_LockPktCnt(DrvTSP_LockPktCnt_info* tspInfo, MS_U32* pu32Cnt);
981*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Get_AVPktCnt(DrvTSP_AVPktCnt_info* tspInfo, MS_U32* pu32Cnt);
982*53ee8cc1Swenshuai.xi 
983*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Get_SecTEI_PktCount(DrvTSP_FltType FltSrc, MS_U32* pu32PktCnt);
984*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Reset_SecTEI_PktCount(DrvTSP_FltType FltSrc);
985*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Get_SecDisCont_PktCount(MS_U32 u32FltID, MS_U32* pu32PktCnt);
986*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Reset_SecDisCont_PktCount(MS_U32 u32FltID);
987*53ee8cc1Swenshuai.xi 
988*53ee8cc1Swenshuai.xi //-------- merge stream --------------------------
989*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_MStr_SyncByte(DrvTSP_If eIf, MS_U8 u8StrId, MS_U8* pu8SyncByte, MS_BOOL bSet);
990*53ee8cc1Swenshuai.xi 
991*53ee8cc1Swenshuai.xi //------- For 2K kernel mode, user mode callback thread using events
992*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Create_IoSignal(DrvTSP_IoSignal *pstIoSignal);
993*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Close_IoSignal(DrvTSP_IoSignal *pstIoSignal);
994*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Wait_IoSignal(DrvTSP_IoSignal *pstIoSignal);
995*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Proc_IoSignal(DrvTSP_IoSignal *pstIoSignal);
996*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Get_SecEvents(MS_U32 u32Group, DrvTSP_IoSignal *pstIoSignal);
997*53ee8cc1Swenshuai.xi 
998*53ee8cc1Swenshuai.xi #ifdef SECURE_PVR_ENABLE
999*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Ree_TeeCmdSystem_Init(void);
1000*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Ree_TeeCmdSystem_Exit(void);
1001*53ee8cc1Swenshuai.xi TSP_Result MDrv_TSP_Ree_SendTeeCmd(TSP_REE_TO_TEE_CMD_TYPE cmd_type, void* param, size_t datasize);
1002*53ee8cc1Swenshuai.xi #endif   //SECURE_PVR_ENABLE
1003*53ee8cc1Swenshuai.xi 
1004*53ee8cc1Swenshuai.xi #ifdef __cplusplus
1005*53ee8cc1Swenshuai.xi } // closing brace for extern "C"
1006*53ee8cc1Swenshuai.xi #endif
1007*53ee8cc1Swenshuai.xi 
1008*53ee8cc1Swenshuai.xi #endif // _DRV_TSP_H_
1009