xref: /utopia/UTPA2-700.0.x/projects/tmplib/include/drvDSCMB.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) 2006-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   drvDscmb.h
98*53ee8cc1Swenshuai.xi /// @brief  Descrambler (Dscmb) Driver Interface
99*53ee8cc1Swenshuai.xi /// @author MStar Semiconductor,Inc.
100*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////////////////////////
101*53ee8cc1Swenshuai.xi //-------------------------------------------------
102*53ee8cc1Swenshuai.xi /*! \defgroup DSCMB DSCMB interface
103*53ee8cc1Swenshuai.xi 
104*53ee8cc1Swenshuai.xi   MSTAR DESCRAMBLE(abbr. DSCMB) engine is used to decrypt the payload of Transport stream packet (ISO 13818-1).
105*53ee8cc1Swenshuai.xi   The design of descramble engine must corporate with DEMUX engine to accomplish decryption process, which including TS packet filtering and TS payload descrambling.
106*53ee8cc1Swenshuai.xi 
107*53ee8cc1Swenshuai.xi   <b> DSCMB engine support following cipher algorithms. </b> \n
108*53ee8cc1Swenshuai.xi   -# CSA :  Common Scrambling Algorithm, ETSI TS 100 289
109*53ee8cc1Swenshuai.xi   -# DES :  Data Encryption Standard, U.S. FIPS PUB 46-2
110*53ee8cc1Swenshuai.xi   -# AES :  Advanced Encryption Standard, U.S. FIPS PUB 197 (FIPS 197)
111*53ee8cc1Swenshuai.xi   -# AES-CTR :   High-Bandwidth Digital Content Protection (HDCP2.x)
112*53ee8cc1Swenshuai.xi   -# SCTE52 (DVS042) :   Data Encryption Standard �V Cipher Block Chaining Packet Encryption Specification
113*53ee8cc1Swenshuai.xi   -# MULTI2 :   ISO/IEC 9979 and assigned registration number 9
114*53ee8cc1Swenshuai.xi 
115*53ee8cc1Swenshuai.xi   <b> API call flow: </b> \n
116*53ee8cc1Swenshuai.xi    \image html drvDSCMB_pic.png
117*53ee8cc1Swenshuai.xi 
118*53ee8cc1Swenshuai.xi   *! \defgroup DSCMB_General DSCMB general functions
119*53ee8cc1Swenshuai.xi   *   \ingroup   DSCMB
120*53ee8cc1Swenshuai.xi 
121*53ee8cc1Swenshuai.xi   *! \defgroup DSCMB_Slot_Control DSCMB alloc/free/connect/disconnect functions.
122*53ee8cc1Swenshuai.xi   *   \ingroup   DSCMB
123*53ee8cc1Swenshuai.xi 
124*53ee8cc1Swenshuai.xi   *! \defgroup DSCMB_Key DSCMB set type/key related functions.
125*53ee8cc1Swenshuai.xi   *   \ingroup   DSCMB
126*53ee8cc1Swenshuai.xi 
127*53ee8cc1Swenshuai.xi   *! \defgroup DSCMB_STR DSCMB STR related functions
128*53ee8cc1Swenshuai.xi   *   \ingroup   DSCMB
129*53ee8cc1Swenshuai.xi 
130*53ee8cc1Swenshuai.xi   *! \defgroup DSCMB_ToBeModified DSCMB api to be modified
131*53ee8cc1Swenshuai.xi   *   \ingroup   DSCMB
132*53ee8cc1Swenshuai.xi 
133*53ee8cc1Swenshuai.xi   *! \defgroup DSCMB_ToBeModified_Slot_Ctrl DSCMB slot control functions. (To be modified)
134*53ee8cc1Swenshuai.xi   *   \ingroup   DSCMB_ToBeModified
135*53ee8cc1Swenshuai.xi 
136*53ee8cc1Swenshuai.xi   *! \defgroup DSCMB_ToBeRemove DSCMB api to be removed
137*53ee8cc1Swenshuai.xi   *   \ingroup   DSCMB
138*53ee8cc1Swenshuai.xi 
139*53ee8cc1Swenshuai.xi   *! \defgroup DSCMB_STB DSCMB functions for STB.
140*53ee8cc1Swenshuai.xi   *   \ingroup   DSCMB
141*53ee8cc1Swenshuai.xi 
142*53ee8cc1Swenshuai.xi   *! \defgroup DSCMB_STB_General DSCMB general functions for STB.
143*53ee8cc1Swenshuai.xi   *   \ingroup   DSCMB_STB
144*53ee8cc1Swenshuai.xi 
145*53ee8cc1Swenshuai.xi   *! \defgroup DSCMB_STB_Kladder DSCMB Kladder functions for STB.
146*53ee8cc1Swenshuai.xi   *   \ingroup   DSCMB_STB
147*53ee8cc1Swenshuai.xi 
148*53ee8cc1Swenshuai.xi   */
149*53ee8cc1Swenshuai.xi //-------------------------------------------------
150*53ee8cc1Swenshuai.xi 
151*53ee8cc1Swenshuai.xi 
152*53ee8cc1Swenshuai.xi #ifndef __DRV_DSCMB_H__
153*53ee8cc1Swenshuai.xi #define __DRV_DSCMB_H__
154*53ee8cc1Swenshuai.xi 
155*53ee8cc1Swenshuai.xi #include "MsTypes.h"
156*53ee8cc1Swenshuai.xi #include "MsCommon.h"
157*53ee8cc1Swenshuai.xi 
158*53ee8cc1Swenshuai.xi #include "ULog.h"
159*53ee8cc1Swenshuai.xi 
160*53ee8cc1Swenshuai.xi #ifdef __cplusplus
161*53ee8cc1Swenshuai.xi extern "C"
162*53ee8cc1Swenshuai.xi {
163*53ee8cc1Swenshuai.xi #endif
164*53ee8cc1Swenshuai.xi 
165*53ee8cc1Swenshuai.xi #define MSIF_DSMB_LIB_CODE              {'D','S','M','B'}    //Lib code
166*53ee8cc1Swenshuai.xi #define MSIF_DSMB_LIBVER                {'0','2'}            //LIB version
167*53ee8cc1Swenshuai.xi #define MSIF_DSMB_BUILDNUM              {'1','8'}            //Build Number
168*53ee8cc1Swenshuai.xi #define MSIF_DSMB_CHANGELIST            {'0','0','5','6','5','9','8','0'} //P4 ChangeList Number
169*53ee8cc1Swenshuai.xi 
170*53ee8cc1Swenshuai.xi #define DSCMB_DRV_VERSION               /* Character String for DRV/API version             */  \
171*53ee8cc1Swenshuai.xi     MSIF_TAG,                           /* 'MSIF'                                           */  \
172*53ee8cc1Swenshuai.xi     MSIF_CLASS,                         /* '00'                                             */  \
173*53ee8cc1Swenshuai.xi     MSIF_CUS,                           /* 0x0000                                           */  \
174*53ee8cc1Swenshuai.xi     MSIF_MOD,                           /* 0x0000                                           */  \
175*53ee8cc1Swenshuai.xi     MSIF_CHIP,                                                                                  \
176*53ee8cc1Swenshuai.xi     MSIF_CPU,                                                                                   \
177*53ee8cc1Swenshuai.xi     MSIF_DSMB_LIB_CODE,                 /* IP__                                             */  \
178*53ee8cc1Swenshuai.xi     MSIF_DSMB_LIBVER,                   /* 0.0 ~ Z.Z                                        */  \
179*53ee8cc1Swenshuai.xi     MSIF_DSMB_BUILDNUM,                 /* 00 ~ 99                                          */  \
180*53ee8cc1Swenshuai.xi     MSIF_DSMB_CHANGELIST,               /* CL#                                              */  \
181*53ee8cc1Swenshuai.xi     MSIF_OS
182*53ee8cc1Swenshuai.xi 
183*53ee8cc1Swenshuai.xi 
184*53ee8cc1Swenshuai.xi #define DSCMB_ASSERT_AND_RETURN(x)             if (!(x)){printf ("ASSERT FAIL: %s %s %d\n", __FILE__, __FUNCTION__, __LINE__); return FALSE;}
185*53ee8cc1Swenshuai.xi #define DSCMB_ASSERT_NO_RETURN(x)             if (!(x)){printf ("ASSERT FAIL: %s %s %d\n", __FILE__, __FUNCTION__, __LINE__);}
186*53ee8cc1Swenshuai.xi 
187*53ee8cc1Swenshuai.xi #define DSCMB_LIB_TIME_MAX          16      ///< Maximum length of time
188*53ee8cc1Swenshuai.xi #define DSCMB_LIB_DATE_MAX          16      ///< Maximum length of date
189*53ee8cc1Swenshuai.xi 
190*53ee8cc1Swenshuai.xi typedef struct
191*53ee8cc1Swenshuai.xi {
192*53ee8cc1Swenshuai.xi     MS_U8   Time[DSCMB_LIB_TIME_MAX];       ///< Library Built Time
193*53ee8cc1Swenshuai.xi     MS_U8   Date[DSCMB_LIB_DATE_MAX];       ///< Library Built Date
194*53ee8cc1Swenshuai.xi } DSCMB_Info;
195*53ee8cc1Swenshuai.xi 
196*53ee8cc1Swenshuai.xi typedef struct
197*53ee8cc1Swenshuai.xi {
198*53ee8cc1Swenshuai.xi     MS_U32 u32Status;
199*53ee8cc1Swenshuai.xi } DSCMB_Status;
200*53ee8cc1Swenshuai.xi 
201*53ee8cc1Swenshuai.xi /// Descrambler null filter ID
202*53ee8cc1Swenshuai.xi #define DRV_DSCMB_FLT_NULL          0xFFFFFFFF
203*53ee8cc1Swenshuai.xi 
204*53ee8cc1Swenshuai.xi typedef enum
205*53ee8cc1Swenshuai.xi {
206*53ee8cc1Swenshuai.xi     /// Descrambler Slot Type :
207*53ee8cc1Swenshuai.xi     E_SLOT_TYPE_NORMAL = 0,  // Normal
208*53ee8cc1Swenshuai.xi     E_SLOT_TYPE_SHARE,       // Share
209*53ee8cc1Swenshuai.xi } DSCMB_SLOT_Type;
210*53ee8cc1Swenshuai.xi 
211*53ee8cc1Swenshuai.xi typedef enum
212*53ee8cc1Swenshuai.xi {
213*53ee8cc1Swenshuai.xi     E_DSCMB_FLT_3_KEYS        = 0x00000000, // Odd, Even, and Clear Key
214*53ee8cc1Swenshuai.xi     E_DSCMB_FLT_2_KEYS        = 0x00000001, // Odd and Even Key
215*53ee8cc1Swenshuai.xi     E_DSCMB_FLT_2_KEYS_SHARE  = 0x00000002, // Odd and Even Key (share key)
216*53ee8cc1Swenshuai.xi     E_DSCMB_FLT_1_KEYS        = 0x00000003, // Always use the Key
217*53ee8cc1Swenshuai.xi } DSCMB_Flt_Type;
218*53ee8cc1Swenshuai.xi 
219*53ee8cc1Swenshuai.xi /// Descrambler algorithm type
220*53ee8cc1Swenshuai.xi typedef enum
221*53ee8cc1Swenshuai.xi {
222*53ee8cc1Swenshuai.xi     /// Descrambler algorithm : CSA
223*53ee8cc1Swenshuai.xi     E_DSCMB_TYPE_CSA = 0,    // CSA
224*53ee8cc1Swenshuai.xi     /// Descrambler algorithm : NSA as ESA
225*53ee8cc1Swenshuai.xi     E_DSCMB_TYPE_NSA_AS_ESA, // NSA as ESA
226*53ee8cc1Swenshuai.xi     /// Descrambler algorithm : CI+ DES
227*53ee8cc1Swenshuai.xi     E_DSCMB_TYPE_DES,        // CI+ DES
228*53ee8cc1Swenshuai.xi     /// Descrambler algorithm : CI+ AES
229*53ee8cc1Swenshuai.xi     E_DSCMB_TYPE_AES,        // CI+ AES
230*53ee8cc1Swenshuai.xi     // E_DSCMB_TYPE_ESA,       // ESA
231*53ee8cc1Swenshuai.xi     // E_DSCMB_TYPE_NSAS,      // NSAS
232*53ee8cc1Swenshuai.xi     E_DSCMB_TYPE_AES_ECB,
233*53ee8cc1Swenshuai.xi     E_DSCMB_TYPE_AES_SCTE52,  // Descrambler algorithm : DBook, AES+CBC, S8 new, not support for all chips
234*53ee8cc1Swenshuai.xi     E_DSCMB_TYPE_AES_CTR,     // AES Counter mode
235*53ee8cc1Swenshuai.xi     E_DSCMB_TYPE_TDES_ECB,
236*53ee8cc1Swenshuai.xi     E_DSCMB_TYPE_TDES_SCTE52,
237*53ee8cc1Swenshuai.xi 
238*53ee8cc1Swenshuai.xi     // Synamedia AES
239*53ee8cc1Swenshuai.xi     E_DSCMB_TYPE_SYN_AES,    // AES Leading CLR EBC
240*53ee8cc1Swenshuai.xi 
241*53ee8cc1Swenshuai.xi     E_DSCMB_TYPE_MULTI2,    // Multi2
242*53ee8cc1Swenshuai.xi 
243*53ee8cc1Swenshuai.xi     /// Descrambler algorithm : CSA3
244*53ee8cc1Swenshuai.xi     E_DSCMB_TYPE_CSA3,    // CSA3
245*53ee8cc1Swenshuai.xi 
246*53ee8cc1Swenshuai.xi     /// Descrambler algorithm : CSA conformance mode
247*53ee8cc1Swenshuai.xi     E_DSCMB_TYPE_CSA_CONF,    // CSA conformance mode
248*53ee8cc1Swenshuai.xi 
249*53ee8cc1Swenshuai.xi     E_DSCMB_TYPE_OC,    // Open Cable
250*53ee8cc1Swenshuai.xi } DSCMB_Type;
251*53ee8cc1Swenshuai.xi 
252*53ee8cc1Swenshuai.xi /// Descrambler key type
253*53ee8cc1Swenshuai.xi typedef enum
254*53ee8cc1Swenshuai.xi {
255*53ee8cc1Swenshuai.xi     /// Descrambler key type : clear
256*53ee8cc1Swenshuai.xi     E_DSCMB_KEY_CLEAR = 0,
257*53ee8cc1Swenshuai.xi     /// Descrambler key type : even
258*53ee8cc1Swenshuai.xi     E_DSCMB_KEY_EVEN,
259*53ee8cc1Swenshuai.xi     /// Descrambler key type : odd
260*53ee8cc1Swenshuai.xi     E_DSCMB_KEY_ODD,
261*53ee8cc1Swenshuai.xi } DSCMB_Key_Type;
262*53ee8cc1Swenshuai.xi 
263*53ee8cc1Swenshuai.xi /// Scramble level
264*53ee8cc1Swenshuai.xi typedef enum
265*53ee8cc1Swenshuai.xi {
266*53ee8cc1Swenshuai.xi     /// Descrambler level : none
267*53ee8cc1Swenshuai.xi     E_DSCMB_NONE                    =   0x00000000,
268*53ee8cc1Swenshuai.xi     /// Descrambler level : TS level
269*53ee8cc1Swenshuai.xi     E_DSCMB_TS                      =   0x00000001,
270*53ee8cc1Swenshuai.xi     /// Descrambler level : PES level
271*53ee8cc1Swenshuai.xi     E_DSCMB_PES                     =   0x00000002,
272*53ee8cc1Swenshuai.xi     /// Descrambler level : TS and PES level
273*53ee8cc1Swenshuai.xi     E_DSCMB_TS_PES                  =   (E_DSCMB_TS | E_DSCMB_PES),
274*53ee8cc1Swenshuai.xi } SCMB_Level;
275*53ee8cc1Swenshuai.xi 
276*53ee8cc1Swenshuai.xi // Descrambler Engine Type //
277*53ee8cc1Swenshuai.xi typedef enum
278*53ee8cc1Swenshuai.xi {
279*53ee8cc1Swenshuai.xi     E_DSCMB_ENG_LSAS = 0x1,
280*53ee8cc1Swenshuai.xi     E_DSCMB_ENG_ESA  = 0x2,
281*53ee8cc1Swenshuai.xi     E_DSCMB_ENG_LSAD = 0x4,
282*53ee8cc1Swenshuai.xi } DSCMB_Eng_Type;
283*53ee8cc1Swenshuai.xi 
284*53ee8cc1Swenshuai.xi /// Key ladder input source
285*53ee8cc1Swenshuai.xi typedef enum
286*53ee8cc1Swenshuai.xi {
287*53ee8cc1Swenshuai.xi     /// Key ladder source from ACPU/SCPU
288*53ee8cc1Swenshuai.xi     E_DSCMB_KL_SRC_ACPU             =   0,
289*53ee8cc1Swenshuai.xi     /// Key ladder source from SECRET_1
290*53ee8cc1Swenshuai.xi     E_DSCMB_KL_SRC_SECRET_1         =   1,
291*53ee8cc1Swenshuai.xi     /// Key ladder source from SECRET_2
292*53ee8cc1Swenshuai.xi     E_DSCMB_KL_SRC_SECRET_2         =   2,
293*53ee8cc1Swenshuai.xi     /// Key ladder source from SECRET_3
294*53ee8cc1Swenshuai.xi     E_DSCMB_KL_SRC_SECRET_3         =   3,
295*53ee8cc1Swenshuai.xi     /// Key ladder source from SECRET_4
296*53ee8cc1Swenshuai.xi     E_DSCMB_KL_SRC_SECRET_4         =   4,
297*53ee8cc1Swenshuai.xi     /// Key ladder source from SECRET_5
298*53ee8cc1Swenshuai.xi     E_DSCMB_KL_SRC_SECRET_5         =   5,
299*53ee8cc1Swenshuai.xi     /// Key ladder source from SECRET_6
300*53ee8cc1Swenshuai.xi     E_DSCMB_KL_SRC_SECRET_6         =   6,
301*53ee8cc1Swenshuai.xi     /// Key ladder source from SECRET_7
302*53ee8cc1Swenshuai.xi     E_DSCMB_KL_SRC_SECRET_7         =   7,
303*53ee8cc1Swenshuai.xi     /// Key ladder source from SECRET_8
304*53ee8cc1Swenshuai.xi     E_DSCMB_KL_SRC_SECRET_8         =   8,
305*53ee8cc1Swenshuai.xi 
306*53ee8cc1Swenshuai.xi     /// Key ladder source from Private_0
307*53ee8cc1Swenshuai.xi     E_DSCMB_KL_SRC_PRIVATE_0        =   5,
308*53ee8cc1Swenshuai.xi     /// Key ladder source from Private_1
309*53ee8cc1Swenshuai.xi     E_DSCMB_KL_SRC_PRIVATE_1        =   6,
310*53ee8cc1Swenshuai.xi     /// Key ladder source from Private_2
311*53ee8cc1Swenshuai.xi     E_DSCMB_KL_SRC_PRIVATE_2        =   7,
312*53ee8cc1Swenshuai.xi     /// Key ladder source from Private_3
313*53ee8cc1Swenshuai.xi     E_DSCMB_KL_SRC_PRIVATE_3        =   8,
314*53ee8cc1Swenshuai.xi 
315*53ee8cc1Swenshuai.xi     /// Key ladder source from VGK
316*53ee8cc1Swenshuai.xi     E_DSCMB_KL_SRC_VGK              =   9,
317*53ee8cc1Swenshuai.xi } DSCMB_KLSrc;
318*53ee8cc1Swenshuai.xi 
319*53ee8cc1Swenshuai.xi /// Key ladder output destination
320*53ee8cc1Swenshuai.xi typedef enum
321*53ee8cc1Swenshuai.xi {
322*53ee8cc1Swenshuai.xi     E_DSCMB_KL_DST_ACPU             =   0x1,
323*53ee8cc1Swenshuai.xi     E_DSCMB_KL_DST_KT_NSA           =   0x3,
324*53ee8cc1Swenshuai.xi     E_DSCMB_KL_DST_DMA_AES          =   0x4,
325*53ee8cc1Swenshuai.xi     E_DSCMB_KL_DST_DMA_TDES         =   0x5,
326*53ee8cc1Swenshuai.xi     E_DSCMB_KL_DST_PRIVATE0         =   0x6,
327*53ee8cc1Swenshuai.xi     E_DSCMB_KL_DST_PRIVATE1         =   0x7,
328*53ee8cc1Swenshuai.xi     E_DSCMB_KL_DST_PRIVATE2         =   0x8,
329*53ee8cc1Swenshuai.xi 
330*53ee8cc1Swenshuai.xi 
331*53ee8cc1Swenshuai.xi     /// Key ladder destination to ACPU
332*53ee8cc1Swenshuai.xi     E_DSCMB_KL_DST_CPU_ACPU         =   0x00000080,
333*53ee8cc1Swenshuai.xi     /// Key ladder destination to Secure CPU
334*53ee8cc1Swenshuai.xi     E_DSCMB_KL_DST_CPU_SCPU         =   0x00000081,
335*53ee8cc1Swenshuai.xi     /// Key ladder destination to DSCMB (KeyTable)
336*53ee8cc1Swenshuai.xi     E_DSCMB_KL_DST_KT_LSAD          =   0x00008000,
337*53ee8cc1Swenshuai.xi     E_DSCMB_KL_DST_KT_ESA           =   0x00008100,
338*53ee8cc1Swenshuai.xi     E_DSCMB_KL_DST_KT_LSAS          =   0x00008200,
339*53ee8cc1Swenshuai.xi     /// Key ladder destination to DMA
340*53ee8cc1Swenshuai.xi     E_DSCMB_KL_DST_DMA_SK0         =    0x00800000,
341*53ee8cc1Swenshuai.xi     E_DSCMB_KL_DST_DMA_SK1         =    0x00810000,
342*53ee8cc1Swenshuai.xi     E_DSCMB_KL_DST_DMA_SK2         =    0x00820000,
343*53ee8cc1Swenshuai.xi     E_DSCMB_KL_DST_DMA_SPS0        =    0x00880000 ,
344*53ee8cc1Swenshuai.xi     E_DSCMB_KL_DST_DMA_SPS1        =    0x00890000 ,
345*53ee8cc1Swenshuai.xi     E_DSCMB_KL_DST_DMA_SPS2        =    0x008A0000 ,
346*53ee8cc1Swenshuai.xi     E_DSCMB_KL_DST_DMA_SPS3        =    0x008B0000 ,
347*53ee8cc1Swenshuai.xi     E_DSCMB_KL_DST_DMA_SPD0        =    0x008C0000 ,
348*53ee8cc1Swenshuai.xi     E_DSCMB_KL_DST_DMA_SPD1        =    0x008D0000 ,
349*53ee8cc1Swenshuai.xi     E_DSCMB_KL_DST_DMA_SPD2        =    0x008E0000 ,
350*53ee8cc1Swenshuai.xi     E_DSCMB_KL_DST_DMA_SPD3        =    0x008F0000 ,
351*53ee8cc1Swenshuai.xi     /// Key ladder destination to PRIVATE KEY
352*53ee8cc1Swenshuai.xi     E_DSCMB_KL_DST_PRIVATE_0       =    0x81000000   ,
353*53ee8cc1Swenshuai.xi     E_DSCMB_KL_DST_PRIVATE_1       =    0x82000000   ,
354*53ee8cc1Swenshuai.xi     E_DSCMB_KL_DST_PRIVATE_2       =    0x83000000   ,
355*53ee8cc1Swenshuai.xi     E_DSCMB_KL_DST_PRIVATE_3       =    0x84000000   ,
356*53ee8cc1Swenshuai.xi } DSCMB_KLDst;
357*53ee8cc1Swenshuai.xi 
358*53ee8cc1Swenshuai.xi typedef enum
359*53ee8cc1Swenshuai.xi {
360*53ee8cc1Swenshuai.xi     // descrambler engine
361*53ee8cc1Swenshuai.xi     E_DSCMB_CAP_ENGINE_NUM,
362*53ee8cc1Swenshuai.xi     // descrambler slot
363*53ee8cc1Swenshuai.xi     E_DSCMB_CAP_FLT_NUM,
364*53ee8cc1Swenshuai.xi     // descrambler type supported
365*53ee8cc1Swenshuai.xi     E_DSCMB_CAP_SUPPORT_ALGORITHM,
366*53ee8cc1Swenshuai.xi     // descrambler key type supported
367*53ee8cc1Swenshuai.xi     E_DSCMB_CAP_SUPPORT_KEY_TYPE,
368*53ee8cc1Swenshuai.xi     // descrambler mapping, start tsp pid filter
369*53ee8cc1Swenshuai.xi     E_DSCMB_CAP_PIDFILTER_MAP_START,
370*53ee8cc1Swenshuai.xi     // descrambler mapping, end tsp pid filter
371*53ee8cc1Swenshuai.xi     E_DSCMB_CAP_PIDFILTER_MAP_END,
372*53ee8cc1Swenshuai.xi     // share key slot max number
373*53ee8cc1Swenshuai.xi     E_DSCMB_CAP_SHARE_KEY_SLOT_MAX_NUM,
374*53ee8cc1Swenshuai.xi     // share key region number
375*53ee8cc1Swenshuai.xi     E_DSCMB_CAP_SHARE_KEY_REGION_NUM,
376*53ee8cc1Swenshuai.xi     // share key region start
377*53ee8cc1Swenshuai.xi     E_DSCMB_CAP_SHARE_KEY_REGION_START,
378*53ee8cc1Swenshuai.xi     // share key region end
379*53ee8cc1Swenshuai.xi     E_DSCMB_CAP_SHARE_KEY_REGION_END,
380*53ee8cc1Swenshuai.xi } DSCMB_Query_Type;
381*53ee8cc1Swenshuai.xi 
382*53ee8cc1Swenshuai.xi typedef enum
383*53ee8cc1Swenshuai.xi {
384*53ee8cc1Swenshuai.xi     E_DSCMB_KL_TDES                 =   0x00000000,
385*53ee8cc1Swenshuai.xi     E_DSCMB_KL_AES                  =   0x0000003F,
386*53ee8cc1Swenshuai.xi } DSCMB_KLEng;
387*53ee8cc1Swenshuai.xi 
388*53ee8cc1Swenshuai.xi typedef enum
389*53ee8cc1Swenshuai.xi {
390*53ee8cc1Swenshuai.xi     E_DSCMB_KL_SEL_DEFAULT = 0, //Backward compatible, actual default value is chosen in HAL driver
391*53ee8cc1Swenshuai.xi     E_DSCMB_KL_SEL_CW      , //CWKL
392*53ee8cc1Swenshuai.xi     E_DSCMB_KL_SEL_PVR     , //PVRKL
393*53ee8cc1Swenshuai.xi } DSCMB_KL_SelEng;
394*53ee8cc1Swenshuai.xi 
395*53ee8cc1Swenshuai.xi /// Key ladder configurations
396*53ee8cc1Swenshuai.xi typedef enum
397*53ee8cc1Swenshuai.xi {
398*53ee8cc1Swenshuai.xi     E_DSCMB_KL_LVL_0 = 0,
399*53ee8cc1Swenshuai.xi     E_DSCMB_KL_LVL_1 ,
400*53ee8cc1Swenshuai.xi     E_DSCMB_KL_LVL_2 ,
401*53ee8cc1Swenshuai.xi     E_DSCMB_KL_LVL_3 ,
402*53ee8cc1Swenshuai.xi     E_DSCMB_KL_LVL_9 = 9 ,
403*53ee8cc1Swenshuai.xi     E_DSCMB_KL_LVL_D = 0xD ,
404*53ee8cc1Swenshuai.xi } DSCMB_KLType;
405*53ee8cc1Swenshuai.xi 
406*53ee8cc1Swenshuai.xi typedef enum
407*53ee8cc1Swenshuai.xi {
408*53ee8cc1Swenshuai.xi     E_DSCMB_KL_128_BITS   ,
409*53ee8cc1Swenshuai.xi     E_DSCMB_KL_64_BITS  ,
410*53ee8cc1Swenshuai.xi } DSCMB_KL_OutputSize;
411*53ee8cc1Swenshuai.xi 
412*53ee8cc1Swenshuai.xi /// Key ladder configurations
413*53ee8cc1Swenshuai.xi typedef struct
414*53ee8cc1Swenshuai.xi {
415*53ee8cc1Swenshuai.xi     MS_BOOL         bDecrypt;
416*53ee8cc1Swenshuai.xi     MS_BOOL         bInverse;
417*53ee8cc1Swenshuai.xi     MS_BOOL         bKeepRound;
418*53ee8cc1Swenshuai.xi     MS_U32          u32Round;
419*53ee8cc1Swenshuai.xi     MS_U32          u32EngMode;
420*53ee8cc1Swenshuai.xi     DSCMB_KLType         eKLType;
421*53ee8cc1Swenshuai.xi     DSCMB_KL_OutputSize  eOutsize;
422*53ee8cc1Swenshuai.xi 
423*53ee8cc1Swenshuai.xi } DSCMB_KLCfg;
424*53ee8cc1Swenshuai.xi 
425*53ee8cc1Swenshuai.xi 
426*53ee8cc1Swenshuai.xi ///New  Key ladder configurations for Keyladder run all.
427*53ee8cc1Swenshuai.xi typedef struct
428*53ee8cc1Swenshuai.xi {
429*53ee8cc1Swenshuai.xi     DSCMB_KLEng          eAlgo;
430*53ee8cc1Swenshuai.xi     DSCMB_KLSrc          eSrc;   // Select KL root key source //
431*53ee8cc1Swenshuai.xi     DSCMB_KLDst          eDst;   // Select KL output Key destination //
432*53ee8cc1Swenshuai.xi     DSCMB_KL_OutputSize  eOutsize;  // Select ouput Key size. ex: Key size of CSA and DES are E_DSCMB_KL_64_BITS//
433*53ee8cc1Swenshuai.xi     DSCMB_Key_Type       eKeyType;
434*53ee8cc1Swenshuai.xi     // Key ladder running level, support level 0 ~ 3 // [NOTE] Level 0 is only supported when destination is CryptoDMA
435*53ee8cc1Swenshuai.xi     MS_U32               u32Level;
436*53ee8cc1Swenshuai.xi     MS_U32               u32EngID;  // Select ESA/NSA as KL destination, Dscmb engine ID //
437*53ee8cc1Swenshuai.xi     MS_U32               u32DscID;  // Select ESA/NSA as KL destination, Dscmb ID //
438*53ee8cc1Swenshuai.xi     MS_U8                *u8KeyACPU;  // Select ACPU as KL root Key, KL root key //
439*53ee8cc1Swenshuai.xi     // KL inputs, pointer of bytes array for each level input, every input contains 16 bytes //
440*53ee8cc1Swenshuai.xi     // ex: MS_U8 input[48]: input[0-15] Level1 , input[16-31] Level2, input[32-47] Level3
441*53ee8cc1Swenshuai.xi     MS_U8                *pu8KeyKLIn;
442*53ee8cc1Swenshuai.xi     MS_BOOL              bDecrypt;
443*53ee8cc1Swenshuai.xi     MS_BOOL              bInverse;
444*53ee8cc1Swenshuai.xi 
445*53ee8cc1Swenshuai.xi     // New data member
446*53ee8cc1Swenshuai.xi     DSCMB_KL_SelEng      eKLSel;   //Select KeyLadder
447*53ee8cc1Swenshuai.xi     MS_U32               u32CAVid; //Set CAVid
448*53ee8cc1Swenshuai.xi 
449*53ee8cc1Swenshuai.xi     //TODO: Add Key property
450*53ee8cc1Swenshuai.xi } DSCMB_KLCfg_All;
451*53ee8cc1Swenshuai.xi 
452*53ee8cc1Swenshuai.xi 
453*53ee8cc1Swenshuai.xi typedef enum
454*53ee8cc1Swenshuai.xi {
455*53ee8cc1Swenshuai.xi     E_DSCMB_MAIN_ALGO_AES       ,
456*53ee8cc1Swenshuai.xi     E_DSCMB_MAIN_ALGO_CSA2      ,
457*53ee8cc1Swenshuai.xi     E_DSCMB_MAIN_ALGO_DES       ,
458*53ee8cc1Swenshuai.xi     E_DSCMB_MAIN_ALGO_TDES      ,
459*53ee8cc1Swenshuai.xi     E_DSCMB_MAIN_ALGO_MULTI2    ,
460*53ee8cc1Swenshuai.xi     E_DSCMB_MAIN_ALGO_CSA2_CONF ,
461*53ee8cc1Swenshuai.xi     E_DSCMB_MAIN_ALGO_CSA3      ,
462*53ee8cc1Swenshuai.xi     E_DSCMB_MAIN_ALGO_DEFAULT = 0xF,
463*53ee8cc1Swenshuai.xi     E_DSCMB_MAIN_ALGO_NUM,
464*53ee8cc1Swenshuai.xi } DSCMB_MainAlgo_Type;
465*53ee8cc1Swenshuai.xi 
466*53ee8cc1Swenshuai.xi 
467*53ee8cc1Swenshuai.xi typedef enum
468*53ee8cc1Swenshuai.xi {
469*53ee8cc1Swenshuai.xi     E_DSCMB_SUB_ALGO_NONE = 0   ,
470*53ee8cc1Swenshuai.xi     E_DSCMB_SUB_ALGO_MDI_CBC = 0,
471*53ee8cc1Swenshuai.xi     E_DSCMB_SUB_ALGO_MDI_RCBC  ,
472*53ee8cc1Swenshuai.xi     E_DSCMB_SUB_ALGO_MDD_CBC   ,
473*53ee8cc1Swenshuai.xi     E_DSCMB_SUB_ALGO_MDD_RCBC  ,
474*53ee8cc1Swenshuai.xi     E_DSCMB_SUB_ALGO_LEADING_CLEAR ,
475*53ee8cc1Swenshuai.xi     E_DSCMB_SUB_ALGO_ECB ,
476*53ee8cc1Swenshuai.xi     E_DSCMB_SUB_ALGO_CBC ,
477*53ee8cc1Swenshuai.xi     E_DSCMB_SUB_ALGO_CTR ,
478*53ee8cc1Swenshuai.xi     E_DSCMB_SUB_ALGO_OFB ,
479*53ee8cc1Swenshuai.xi     E_DSCMB_SUB_ALGO_DEFAULT = 0xF,
480*53ee8cc1Swenshuai.xi     E_DSCMB_SUB_ALGO_NUM,
481*53ee8cc1Swenshuai.xi } DSCMB_SubAlgo_Type;
482*53ee8cc1Swenshuai.xi 
483*53ee8cc1Swenshuai.xi 
484*53ee8cc1Swenshuai.xi typedef enum
485*53ee8cc1Swenshuai.xi {
486*53ee8cc1Swenshuai.xi     E_DSCMB_RESSB_ALGO_NONE = 0,
487*53ee8cc1Swenshuai.xi     E_DSCMB_RESSB_ALGO_CLR = 0,
488*53ee8cc1Swenshuai.xi     E_DSCMB_RESSB_ALGO_CTS,
489*53ee8cc1Swenshuai.xi     E_DSCMB_RESSB_ALGO_SCTE52,
490*53ee8cc1Swenshuai.xi     E_DSCMB_RESSB_ALGO_XORIV1,
491*53ee8cc1Swenshuai.xi     E_DSCMB_RESSB_ALGO_OC_M,
492*53ee8cc1Swenshuai.xi     E_DSCMB_RESSB_ALGO_XORIV2,
493*53ee8cc1Swenshuai.xi     E_DSCMB_RESSB_ALGO_DEFAULT = 0x7,
494*53ee8cc1Swenshuai.xi     E_DSCMB_RESSB_ALGO_NUM,
495*53ee8cc1Swenshuai.xi } DSCMB_ResSBAlgo_Type;
496*53ee8cc1Swenshuai.xi 
497*53ee8cc1Swenshuai.xi 
498*53ee8cc1Swenshuai.xi typedef struct
499*53ee8cc1Swenshuai.xi {
500*53ee8cc1Swenshuai.xi     DSCMB_MainAlgo_Type   eMainAlgo;
501*53ee8cc1Swenshuai.xi     DSCMB_SubAlgo_Type    eSubAlgo;
502*53ee8cc1Swenshuai.xi     DSCMB_ResSBAlgo_Type  eResAlgo;
503*53ee8cc1Swenshuai.xi     DSCMB_ResSBAlgo_Type  eSBAlgo;
504*53ee8cc1Swenshuai.xi     MS_BOOL               bDecrypt;
505*53ee8cc1Swenshuai.xi } DSCMB_Algo_Cfg;
506*53ee8cc1Swenshuai.xi 
507*53ee8cc1Swenshuai.xi // Error Status for KL //s
508*53ee8cc1Swenshuai.xi #define DSCMB_KL_Status MS_U32
509*53ee8cc1Swenshuai.xi 
510*53ee8cc1Swenshuai.xi #define    KL_STATUS_KEY_OK                            0x0000
511*53ee8cc1Swenshuai.xi #define    KL_STATUS_ACPU_KEY_NULL                     0x0001
512*53ee8cc1Swenshuai.xi #define    KL_STATUS_ACPU_OUTKEY_NULL                  0x0002
513*53ee8cc1Swenshuai.xi #define    KL_STATUS_INVALID_KEYROUND_PARAMETER        0x0004
514*53ee8cc1Swenshuai.xi #define    KL_STATUS_INVALID_INPUT_LEVEL               0x0008
515*53ee8cc1Swenshuai.xi #define    KL_STATUS_IVALID_DSCMB_ID                   0x0010
516*53ee8cc1Swenshuai.xi #define    KL_STATUS_WAIT_CW_READY_TIMEOUT             0x0020
517*53ee8cc1Swenshuai.xi #define    KL_STATUS_WAIT_KL_READY_TIMEOUT             0x0040
518*53ee8cc1Swenshuai.xi #define    KL_STATUS_KL_INPUT_NULL                     0x0080
519*53ee8cc1Swenshuai.xi 
520*53ee8cc1Swenshuai.xi #define    KL_STATUS_BAD_KEY                           0x0100
521*53ee8cc1Swenshuai.xi #define    KL_STATUS_INVALID_FUNCTION                  0x0200
522*53ee8cc1Swenshuai.xi #define    KL_STATUS_MULTI_FUNCTION                    0x0400
523*53ee8cc1Swenshuai.xi #define    KL_STATUS_ZERO_ORDER                        0x0800
524*53ee8cc1Swenshuai.xi #define    KL_STATUS_INTERNAL_BAD_KEY                  0x1000
525*53ee8cc1Swenshuai.xi #define    KL_STATUS_INVALID_KL_SEL                    0x2000
526*53ee8cc1Swenshuai.xi 
527*53ee8cc1Swenshuai.xi 
528*53ee8cc1Swenshuai.xi 
529*53ee8cc1Swenshuai.xi // Backward compatible
530*53ee8cc1Swenshuai.xi typedef DSCMB_KLSrc          DSCMB_KLadderSrc;
531*53ee8cc1Swenshuai.xi #define E_DSCMB_KLAD_SRC_ACPU               E_DSCMB_KL_SRC_ACPU
532*53ee8cc1Swenshuai.xi #define E_DSCMB_KLAD_SRC_SECRET_KEY1        E_DSCMB_KL_SRC_SECRET_1
533*53ee8cc1Swenshuai.xi #define E_DSCMB_KLAD_SRC_SECRET_KEY2        E_DSCMB_KL_SRC_SECRET_2
534*53ee8cc1Swenshuai.xi #define E_DSCMB_KLAD_SRC_SECRET_KEY3        E_DSCMB_KL_SRC_SECRET_3
535*53ee8cc1Swenshuai.xi #define E_DSCMB_KLAD_SRC_SECRET_KEY4        E_DSCMB_KL_SRC_SECRET_4
536*53ee8cc1Swenshuai.xi #define E_DSCMB_KLAD_SRC_VGK                E_DSCMB_KL_SRC_VGK
537*53ee8cc1Swenshuai.xi 
538*53ee8cc1Swenshuai.xi typedef DSCMB_KLDst          DSCMB_KLadderDst;
539*53ee8cc1Swenshuai.xi #define E_DSCMB_KLAD_DST_KTAB_ESA           E_DSCMB_KL_DST_KT_ESA
540*53ee8cc1Swenshuai.xi #define E_DSCMB_KLAD_DST_KTAB_NSA =         E_DSCMB_KL_DST_KT_NSA
541*53ee8cc1Swenshuai.xi #define E_DSCMB_KLAD_DST_AESDMA_AES =       E_DSCMB_KL_DST_DMA_AES
542*53ee8cc1Swenshuai.xi #define E_DSCMB_KLAD_DST_AESDMA_TDES =      E_DSCMB_KL_DST_DMA_TDES
543*53ee8cc1Swenshuai.xi #define E_DSCMB_KLAD_DST_ACPU =             E_DSCMB_KL_DST_ACPU
544*53ee8cc1Swenshuai.xi 
545*53ee8cc1Swenshuai.xi typedef DSCMB_KLCfg          DSCMB_KLadderConfig;
546*53ee8cc1Swenshuai.xi 
547*53ee8cc1Swenshuai.xi 
548*53ee8cc1Swenshuai.xi typedef enum
549*53ee8cc1Swenshuai.xi {
550*53ee8cc1Swenshuai.xi     DSCMB_FSCB_UNCHG = 0,
551*53ee8cc1Swenshuai.xi     DSCMB_FSCB_CLEAR,
552*53ee8cc1Swenshuai.xi     DSCMB_FSCB_EVEN,
553*53ee8cc1Swenshuai.xi     DSCMB_FSCB_ODD,
554*53ee8cc1Swenshuai.xi } DSCMB_FSCB;
555*53ee8cc1Swenshuai.xi 
556*53ee8cc1Swenshuai.xi // wrapper function
557*53ee8cc1Swenshuai.xi #define MDrv_DSCMB_FltAlloc(void)   \
558*53ee8cc1Swenshuai.xi     MDrv_DSCMB2_FltAlloc(0)
559*53ee8cc1Swenshuai.xi #define MDrv_DSCMB_FltAlloc_Ex(eFltType)   \
560*53ee8cc1Swenshuai.xi     MDrv_DSCMB2_FltAlloc_Ex(0, eFltType)
561*53ee8cc1Swenshuai.xi #define MDrv_DSCMB_FltFree(u32DscmbId)   \
562*53ee8cc1Swenshuai.xi     MDrv_DSCMB2_FltFree(0, u32DscmbId)
563*53ee8cc1Swenshuai.xi #define MDrv_DSCMB_FltConnectPid(u32DscmbId, u32Pid)  \
564*53ee8cc1Swenshuai.xi     MDrv_DSCMB2_FltConnectPid(0, u32DscmbId, u32Pid)
565*53ee8cc1Swenshuai.xi #define MDrv_DSCMB_FltDisconnectPid(u32DscmbId, u32Pid) \
566*53ee8cc1Swenshuai.xi     MDrv_DSCMB2_FltDisconnectPid(0, u32DscmbId, u32Pid)
567*53ee8cc1Swenshuai.xi #define MDrv_DSCMB_FltConnectFltId(u32DscmbId, u32FltId)    \
568*53ee8cc1Swenshuai.xi     MDrv_DSCMB2_FltConnectFltId(0, u32DscmbId, u32FltId)
569*53ee8cc1Swenshuai.xi #define MDrv_DSCMB_FltDisconnectPid_Ex(u32DscmbId, u32Pid) \
570*53ee8cc1Swenshuai.xi     MDrv_DSCMB2_FltDisconnectPid_Ex(0, u32DscmbId, u32Pid)
571*53ee8cc1Swenshuai.xi #define MDrv_DSCMB_FltDisconnectFltId(u32DscmbId, u32FltId)    \
572*53ee8cc1Swenshuai.xi     MDrv_DSCMB2_FltDisconnectFltId(0, u32DscmbId, u32FltId)
573*53ee8cc1Swenshuai.xi #define MDrv_DSCMB_FltDscmb(u32DscmbId, bDscmb) \
574*53ee8cc1Swenshuai.xi     MDrv_DSCMB2_FltDscmb(0, u32DscmbId, bDscmb)
575*53ee8cc1Swenshuai.xi #define MDrv_DSCMB_FltTypeSet(u32DscmbId, eType)    \
576*53ee8cc1Swenshuai.xi     MDrv_DSCMB2_FltTypeSet(0, u32DscmbId, eType)
577*53ee8cc1Swenshuai.xi #define MDrv_DSCMB_Multi2_SetRound(u32Round)    \
578*53ee8cc1Swenshuai.xi     MDrv_DSCMB2_Multi2_SetRound(0, u32Round)
579*53ee8cc1Swenshuai.xi #define MDrv_DSCMB_Multi2_SetSystemKey(u8Syskey)    \
580*53ee8cc1Swenshuai.xi     MDrv_DSCMB2_Multi2_SetSystemKey(0, u8Syskey)
581*53ee8cc1Swenshuai.xi #define MDrv_DSCMB_FltKeySet(u32DscmbId, eKeyType, pu8Key)  \
582*53ee8cc1Swenshuai.xi     MDrv_DSCMB2_FltKeySet(0, u32DscmbId, eKeyType, pu8Key)
583*53ee8cc1Swenshuai.xi #define MDrv_DSCMB_FltKeyReset(u32DscmbId, eKeyType)    \
584*53ee8cc1Swenshuai.xi     MDrv_DSCMB2_FltKeyReset(0, u32DscmbId, eKeyType)
585*53ee8cc1Swenshuai.xi #define MDrv_DSCMB_FltIVSet(u32DscmbId, eKeyType, pu8IV)    \
586*53ee8cc1Swenshuai.xi     MDrv_DSCMB2_FltIVSet(0, u32DscmbId, eKeyType, pu8IV)
587*53ee8cc1Swenshuai.xi #define MDrv_DSCMB_PidFlt_ScmbStatus(u32PidFltId, pScmbLevel)    \
588*53ee8cc1Swenshuai.xi     MDrv_DSCMB2_PidFlt_ScmbStatus(0, u32PidFltId, pScmbLevel)
589*53ee8cc1Swenshuai.xi #define MDrv_DSCMB_FltKeyReset(u32DscmbId, eKeyType)    \
590*53ee8cc1Swenshuai.xi     MDrv_DSCMB2_FltKeyReset(0, u32DscmbId, eKeyType)
591*53ee8cc1Swenshuai.xi 
592*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
593*53ee8cc1Swenshuai.xi //  Functions
594*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
595*53ee8cc1Swenshuai.xi 
596*53ee8cc1Swenshuai.xi // descrambler initial function
597*53ee8cc1Swenshuai.xi //-----------------
598*53ee8cc1Swenshuai.xi // DSCMB_General
599*53ee8cc1Swenshuai.xi //-----------------
600*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
601*53ee8cc1Swenshuai.xi /// Initialize DSCMB module
602*53ee8cc1Swenshuai.xi /// @ingroup DSCMB_General
603*53ee8cc1Swenshuai.xi /// @return TRUE  : Succeed
604*53ee8cc1Swenshuai.xi /// @return FALSE : Fail
605*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
606*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MDrv_DSCMB2_Init(void);
607*53ee8cc1Swenshuai.xi 
608*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
609*53ee8cc1Swenshuai.xi /// Finalize DSCMB module
610*53ee8cc1Swenshuai.xi /// @ingroup DSCMB_General
611*53ee8cc1Swenshuai.xi /// @return TRUE  : Succeed
612*53ee8cc1Swenshuai.xi /// @return FALSE : Fail
613*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
614*53ee8cc1Swenshuai.xi // DLL_PUBLIC MS_BOOL MDrv_DSCMB2_Exit(void);
615*53ee8cc1Swenshuai.xi //-----------------
616*53ee8cc1Swenshuai.xi // DSCMB_STB
617*53ee8cc1Swenshuai.xi //-----------------
618*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
619*53ee8cc1Swenshuai.xi /// Set DSCMB CA VID
620*53ee8cc1Swenshuai.xi /// @ingroup DSCMB_STB_General
621*53ee8cc1Swenshuai.xi /// @param  u32EngId   \b IN: DSCMB engine id.
622*53ee8cc1Swenshuai.xi /// @param  u32CAVid  \b IN: CA VID.
623*53ee8cc1Swenshuai.xi /// @return TRUE  : Succeed
624*53ee8cc1Swenshuai.xi /// @return FALSE : Fail
625*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
626*53ee8cc1Swenshuai.xi // DLL_PUBLIC MS_BOOL MDrv_DSCMB2_SetDefaultCAVid(MS_U32 u32EngId, MS_U32 u32CAVid);
627*53ee8cc1Swenshuai.xi 
628*53ee8cc1Swenshuai.xi //-----------------
629*53ee8cc1Swenshuai.xi // DSCMB_ToBeModified: Slot_Ctrl
630*53ee8cc1Swenshuai.xi //-----------------
631*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
632*53ee8cc1Swenshuai.xi /// Allocate a dscrambler filter (Slot). (Update to support share key case)
633*53ee8cc1Swenshuai.xi /// @ingroup DSCMB_ToBeModified_Slot_Ctrl
634*53ee8cc1Swenshuai.xi /// @return TRUE  : Succeed - Descrambler filter slot
635*53ee8cc1Swenshuai.xi /// @return FALSE : Fail - DRV_DSCMB_FLT_NULL
636*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
637*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_U32  MDrv_DSCMB2_FltAlloc(MS_U32 u32EngId);
638*53ee8cc1Swenshuai.xi 
639*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
640*53ee8cc1Swenshuai.xi /// Allocate a dscrambler filter (Slot). (Only this function can allocate share key slot).
641*53ee8cc1Swenshuai.xi /// (Just keep MDrv_DSCMB2_FltAlloc and refine it)
642*53ee8cc1Swenshuai.xi /// @ingroup DSCMB_ToBeRemove
643*53ee8cc1Swenshuai.xi /// @param u32EngId  \b IN: DSCMB engine id.
644*53ee8cc1Swenshuai.xi /// @param eFltType    \b IN: Type for descramber filter.
645*53ee8cc1Swenshuai.xi /// @return TRUE  : Succeed - Descrambler filter slot.
646*53ee8cc1Swenshuai.xi /// @return FALSE : Fail - DRV_DSCMB_FLT_NULL
647*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
648*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_U32  MDrv_DSCMB2_FltAlloc_Ex(MS_U32 u32EngId, DSCMB_Flt_Type eFltType);
649*53ee8cc1Swenshuai.xi //-----------------
650*53ee8cc1Swenshuai.xi // DSCMB_Slot_Control
651*53ee8cc1Swenshuai.xi //-----------------
652*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
653*53ee8cc1Swenshuai.xi /// Free a dscrambler slot.
654*53ee8cc1Swenshuai.xi /// @ingroup DSCMB_Slot_Control
655*53ee8cc1Swenshuai.xi /// @param u32EngId        \b IN: DSCMB engine id.
656*53ee8cc1Swenshuai.xi /// @param u32DscmbId    \b IN: DSCMB slot.
657*53ee8cc1Swenshuai.xi /// @return TRUE  : Succeed
658*53ee8cc1Swenshuai.xi /// @return FALSE : Fail
659*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
660*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MDrv_DSCMB2_FltFree(MS_U32 u32EngId, MS_U32 u32DscmbId);
661*53ee8cc1Swenshuai.xi 
662*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
663*53ee8cc1Swenshuai.xi /// Connect DSCMB slot with DMX PID filter by filter index for Enc/Dec used.
664*53ee8cc1Swenshuai.xi /// @ingroup DSCMB_Slot_Control
665*53ee8cc1Swenshuai.xi /// @param u32EngId        \b IN: DSCMB engine id.
666*53ee8cc1Swenshuai.xi /// @param u32DscmbId    \b IN: DSCMB slot.
667*53ee8cc1Swenshuai.xi /// @param u32FltId          \b IN: DMX PID filter index.
668*53ee8cc1Swenshuai.xi /// @return TRUE  : Succeed
669*53ee8cc1Swenshuai.xi /// @return FALSE : Fail
670*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
671*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MDrv_DSCMB2_FltConnectFltId(MS_U32 u32EngId, MS_U32 u32DscmbId, MS_U32 u32FltId);
672*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
673*53ee8cc1Swenshuai.xi /// Dis-connect DSCMB slot with DMX PID filter by filter index.
674*53ee8cc1Swenshuai.xi /// @ingroup DSCMB_Slot_Control
675*53ee8cc1Swenshuai.xi /// @param u32EngId        \b IN: DSCMB engine id.
676*53ee8cc1Swenshuai.xi /// @param u32DscmbId    \b IN: DSCMB slot.
677*53ee8cc1Swenshuai.xi /// @param u32FltId          \b IN: DMX PID filter index.
678*53ee8cc1Swenshuai.xi /// @return TRUE  : Succeed
679*53ee8cc1Swenshuai.xi /// @return FALSE : Fail
680*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
681*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MDrv_DSCMB2_FltDisconnectFltId(MS_U32 u32EngId, MS_U32 u32DscmbId, MS_U32 u32FltId);
682*53ee8cc1Swenshuai.xi 
683*53ee8cc1Swenshuai.xi // descrambler filter maps to TSP pid
684*53ee8cc1Swenshuai.xi #ifndef MSOS_TYPE_NUTTX
685*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
686*53ee8cc1Swenshuai.xi /// Connect DSCMB slot with DMX PID filter by PID for Enc/Dec used.
687*53ee8cc1Swenshuai.xi /// @ingroup DSCMB_Slot_Control
688*53ee8cc1Swenshuai.xi /// @param u32EngId        \b IN: DSCMB engine id.
689*53ee8cc1Swenshuai.xi /// @param u32DscmbId    \b IN: DSCMB slot.
690*53ee8cc1Swenshuai.xi /// @param u32Pid            \b IN: PID.
691*53ee8cc1Swenshuai.xi /// @return TRUE  : Succeed
692*53ee8cc1Swenshuai.xi /// @return FALSE : Fail
693*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
694*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MDrv_DSCMB2_FltConnectPid(MS_U32 u32EngId, MS_U32 u32DscmbId, MS_U32 u32Pid);
695*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
696*53ee8cc1Swenshuai.xi /// Dis-connect DSCMB slot with DMX PID filter by PID. (Refine for multi dis-connect case)
697*53ee8cc1Swenshuai.xi /// @ingroup DSCMB_ToBeModified_Slot_Ctrl
698*53ee8cc1Swenshuai.xi /// @param u32EngId        \b IN: DSCMB engine id.
699*53ee8cc1Swenshuai.xi /// @param u32DscmbId    \b IN: DSCMB slot.
700*53ee8cc1Swenshuai.xi /// @param u32Pid            \b IN: PID.
701*53ee8cc1Swenshuai.xi /// @return TRUE  : Succeed
702*53ee8cc1Swenshuai.xi /// @return FALSE : Fail
703*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
704*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MDrv_DSCMB2_FltDisconnectPid(MS_U32 u32EngId, MS_U32 u32DscmbId, MS_U32 u32Pid);
705*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
706*53ee8cc1Swenshuai.xi /// Dis-connect DSCMB slot with DMX PID filter by PID. (It will check this PID exist on DMX side or not)
707*53ee8cc1Swenshuai.xi /// @ingroup DSCMB_STB_General
708*53ee8cc1Swenshuai.xi /// @param u32EngId        \b IN: DSCMB engine id.
709*53ee8cc1Swenshuai.xi /// @param u32DscmbId    \b IN: DSCMB slot.
710*53ee8cc1Swenshuai.xi /// @param u32Pid            \b IN: PID.
711*53ee8cc1Swenshuai.xi /// @return TRUE  : Succeed
712*53ee8cc1Swenshuai.xi /// @return FALSE : Fail
713*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
714*53ee8cc1Swenshuai.xi // DLL_PUBLIC MS_BOOL MDrv_DSCMB2_FltDisconnectPid_Ex(MS_U32 u32EngId, MS_U32 u32DscmbId, MS_U32 u32Pid);
715*53ee8cc1Swenshuai.xi #endif
716*53ee8cc1Swenshuai.xi 
717*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
718*53ee8cc1Swenshuai.xi /// Set descrambler filter as scrambling/decrambling mode
719*53ee8cc1Swenshuai.xi /// @ingroup DSCMB_STB_General
720*53ee8cc1Swenshuai.xi /// @param u32EngId        \b IN: DSCMB engine id.
721*53ee8cc1Swenshuai.xi /// @param u32DscmbId    \b IN: DSCMB slot.
722*53ee8cc1Swenshuai.xi /// @param eEngType        \b IN: DSCMB engine type.
723*53ee8cc1Swenshuai.xi /// @param stConfig          \b IN: DSCMB algo.
724*53ee8cc1Swenshuai.xi /// @return TRUE - Success
725*53ee8cc1Swenshuai.xi /// @return FALSE - Failure
726*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
727*53ee8cc1Swenshuai.xi // DLL_PUBLIC MS_BOOL MDrv_DSCMB2_EngSetAlgo(MS_U32 u32EngId, MS_U32 u32DscmbId, DSCMB_Eng_Type eEngType, DSCMB_Algo_Cfg stConfig);
728*53ee8cc1Swenshuai.xi 
729*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
730*53ee8cc1Swenshuai.xi /// Set descrambler key
731*53ee8cc1Swenshuai.xi /// @ingroup DSCMB_STB_General
732*53ee8cc1Swenshuai.xi /// @param u32EngId        \b IN: DSCMB engine id.
733*53ee8cc1Swenshuai.xi /// @param u32DscmbId   \b IN: DSCMB slot.
734*53ee8cc1Swenshuai.xi /// @param eEngType       \b IN: DSCMB engine type.
735*53ee8cc1Swenshuai.xi /// @param eKeyType       \b IN: Descrambler key type
736*53ee8cc1Swenshuai.xi /// @param pu8Key          \b IN: pointer to the key (Array)
737*53ee8cc1Swenshuai.xi /// @return TRUE - Success
738*53ee8cc1Swenshuai.xi /// @return FALSE - Failure
739*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
740*53ee8cc1Swenshuai.xi // DLL_PUBLIC MS_BOOL MDrv_DSCMB2_EngSetKey(MS_U32 u32EngId, MS_U32 u32DscmbId, DSCMB_Eng_Type eEngType, DSCMB_Key_Type eKeyType, MS_U8* pu8Key);
741*53ee8cc1Swenshuai.xi 
742*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
743*53ee8cc1Swenshuai.xi /// Reset descrambler key
744*53ee8cc1Swenshuai.xi /// @ingroup DSCMB_STB_General
745*53ee8cc1Swenshuai.xi /// @param u32EngId        \b IN: DSCMB engine id.
746*53ee8cc1Swenshuai.xi /// @param u32DscmbId   \b IN: DSCMB slot.
747*53ee8cc1Swenshuai.xi /// @param eEngType       \b IN: DSCMB engine type.
748*53ee8cc1Swenshuai.xi /// @param eKeyType      \b IN: Descrambler key type
749*53ee8cc1Swenshuai.xi /// @return TRUE - Success
750*53ee8cc1Swenshuai.xi /// @return FALSE - Failure
751*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
752*53ee8cc1Swenshuai.xi // DLL_PUBLIC MS_BOOL MDrv_DSCMB2_EngResetKey(MS_U32 u32EngId, MS_U32 u32DscmbId, DSCMB_Eng_Type eEngType, DSCMB_Key_Type eKeyType);
753*53ee8cc1Swenshuai.xi 
754*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
755*53ee8cc1Swenshuai.xi /// Set descrambler IV key
756*53ee8cc1Swenshuai.xi /// @ingroup DSCMB_STB_General
757*53ee8cc1Swenshuai.xi /// @param u32EngId       \b IN: DSCMB engine id
758*53ee8cc1Swenshuai.xi /// @param u32DscmbId   \b IN: DSCMB slot.
759*53ee8cc1Swenshuai.xi /// @param eKeyType      \b IN: Descrambler key type
760*53ee8cc1Swenshuai.xi /// @param pu8IV            \b IN: pointer to the key. (Instruction Vector)
761*53ee8cc1Swenshuai.xi /// @return TRUE - Success
762*53ee8cc1Swenshuai.xi /// @return FALSE - Failure
763*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
764*53ee8cc1Swenshuai.xi // DLL_PUBLIC MS_BOOL MDrv_DSCMB2_EngSetIV(MS_U32 u32EngId, MS_U32 u32DscmbId, DSCMB_Key_Type eKeyType, MS_U8* pu8IV);
765*53ee8cc1Swenshuai.xi 
766*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
767*53ee8cc1Swenshuai.xi /// Switch descrambler engine type
768*53ee8cc1Swenshuai.xi /// @ingroup DSCMB_STB_General
769*53ee8cc1Swenshuai.xi /// @param u32EngId       \b IN: DSCMB engine id
770*53ee8cc1Swenshuai.xi /// @param u32DscmbId   \b IN: DSCMB slot.
771*53ee8cc1Swenshuai.xi /// @param eUppSwitch    \b IN: Up: Engine type.
772*53ee8cc1Swenshuai.xi /// @param eLowSwitch    \b IN: Low: Engine type.
773*53ee8cc1Swenshuai.xi /// @return TRUE - Success
774*53ee8cc1Swenshuai.xi /// @return FALSE - Failure
775*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
776*53ee8cc1Swenshuai.xi // DLL_PUBLIC MS_BOOL MDrv_DSCMB2_EngSetSwitch(MS_U32 u32EngId, MS_U32 u32DscmbId, DSCMB_Eng_Type eUppSwitch, DSCMB_Eng_Type eLowSwitch);
777*53ee8cc1Swenshuai.xi 
778*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
779*53ee8cc1Swenshuai.xi /// Set descrambler engine FSCB
780*53ee8cc1Swenshuai.xi /// @ingroup DSCMB_STB_General
781*53ee8cc1Swenshuai.xi /// @param u32EngId       \b IN: DSCMB engine id
782*53ee8cc1Swenshuai.xi /// @param u32DscmbId   \b IN: DSCMB slot.
783*53ee8cc1Swenshuai.xi /// @param eForceSCB     \b IN: FSCB type.
784*53ee8cc1Swenshuai.xi /// @return TRUE - Success
785*53ee8cc1Swenshuai.xi /// @return FALSE - Failure
786*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
787*53ee8cc1Swenshuai.xi // DLL_PUBLIC MS_BOOL MDrv_DSCMB2_EngSetFSCB(MS_U32 u32EngId, MS_U32 u32DscmbId, DSCMB_FSCB eForceSCB );
788*53ee8cc1Swenshuai.xi 
789*53ee8cc1Swenshuai.xi 
790*53ee8cc1Swenshuai.xi 
791*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
792*53ee8cc1Swenshuai.xi /// Set descrambler filter as scrambling/decrambling mode.
793*53ee8cc1Swenshuai.xi /// Default filter mode is descrambling if this function is not specified.
794*53ee8cc1Swenshuai.xi /// This function should be invoked before MDrv_DSCMB_FltTypeSet.
795*53ee8cc1Swenshuai.xi /// @ingroup DSCMB_STB_General
796*53ee8cc1Swenshuai.xi /// @param u32DscmbId \b IN: Descrambler filter ID obtained from MDrv_DSCMB_FltAlloc
797*53ee8cc1Swenshuai.xi /// @param DscmbType \b IN: The descrambler algorithm
798*53ee8cc1Swenshuai.xi /// @return TRUE - Success
799*53ee8cc1Swenshuai.xi /// @return FALSE - Failure
800*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
801*53ee8cc1Swenshuai.xi // DLL_PUBLIC MS_BOOL MDrv_DSCMB2_FltDscmb(MS_U32 u32EngId, MS_U32 u32DscmbId, MS_BOOL bDscmb);
802*53ee8cc1Swenshuai.xi //-----------------
803*53ee8cc1Swenshuai.xi // DSCMB_Key
804*53ee8cc1Swenshuai.xi //-----------------
805*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
806*53ee8cc1Swenshuai.xi /// Set descrambler algorithm by common predefined descramble type.
807*53ee8cc1Swenshuai.xi /// @ingroup DSCMB_Key
808*53ee8cc1Swenshuai.xi /// @param u32EngId       \b IN: DSCMB engine id
809*53ee8cc1Swenshuai.xi /// @param u32DscmbId   \b IN: DSCMB slot.
810*53ee8cc1Swenshuai.xi /// @param DscmbType    \b IN: The descrambler algorithm
811*53ee8cc1Swenshuai.xi /// @return TRUE  - Success
812*53ee8cc1Swenshuai.xi /// @return FALSE - Failure
813*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
814*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MDrv_DSCMB2_FltTypeSet(MS_U32 u32EngId, MS_U32 u32DscmbId, DSCMB_Type DscmbType);
815*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
816*53ee8cc1Swenshuai.xi /// Set descrambler key of the Dscmb ID
817*53ee8cc1Swenshuai.xi /// @ingroup DSCMB_Key
818*53ee8cc1Swenshuai.xi /// @param u32EngId       \b IN: DSCMB engine id
819*53ee8cc1Swenshuai.xi /// @param u32DscmbId   \b IN: DSCMB slot.
820*53ee8cc1Swenshuai.xi /// @param eKeyType      \b IN: Descrambler key type
821*53ee8cc1Swenshuai.xi /// @param pu8Key         \b IN: pointer to the key (Array)
822*53ee8cc1Swenshuai.xi /// @return TRUE - Success
823*53ee8cc1Swenshuai.xi /// @return FALSE - Failure
824*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
825*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MDrv_DSCMB2_FltKeySet(MS_U32 u32EngId, MS_U32 u32DscmbId, DSCMB_Key_Type eKeyType, MS_U8* pu8Key);
826*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
827*53ee8cc1Swenshuai.xi /// Reset descrambler key of the Dscmb ID. (It will set key to 0)
828*53ee8cc1Swenshuai.xi /// @ingroup DSCMB_Key
829*53ee8cc1Swenshuai.xi /// @param u32EngId       \b IN: DSCMB engine id
830*53ee8cc1Swenshuai.xi /// @param u32DscmbId   \b IN: DSCMB slot.
831*53ee8cc1Swenshuai.xi /// @param eKeyType      \b IN: Descrambler key type
832*53ee8cc1Swenshuai.xi /// @return TRUE - Success
833*53ee8cc1Swenshuai.xi /// @return FALSE - Failure
834*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
835*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MDrv_DSCMB2_FltKeyReset(MS_U32 u32EngId, MS_U32 u32DscmbId, DSCMB_Key_Type eKeyType);
836*53ee8cc1Swenshuai.xi 
837*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
838*53ee8cc1Swenshuai.xi /// Set descrambler initial vector of the Dscmb ID
839*53ee8cc1Swenshuai.xi /// @ingroup DSCMB_Key
840*53ee8cc1Swenshuai.xi /// @param u32EngId       \b IN: DSCMB engine id
841*53ee8cc1Swenshuai.xi /// @param u32DscmbId   \b IN: DSCMB slot.
842*53ee8cc1Swenshuai.xi /// @param eKeyType      \b IN: Descrambler key type
843*53ee8cc1Swenshuai.xi /// @param pu8IV            \b IN: pointer to the key. (Instruction Vector)
844*53ee8cc1Swenshuai.xi /// @return TRUE - Success
845*53ee8cc1Swenshuai.xi /// @return FALSE - Failure
846*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
847*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MDrv_DSCMB2_FltIVSet(MS_U32 u32EngId, MS_U32 u32DscmbId, DSCMB_Key_Type eKeyType, MS_U8* pu8IV);
848*53ee8cc1Swenshuai.xi 
849*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
850*53ee8cc1Swenshuai.xi /// Query dscrambler capability information
851*53ee8cc1Swenshuai.xi /// @ingroup DSCMB_General
852*53ee8cc1Swenshuai.xi /// @param u32EngId      \b IN: DSCMB engine id.
853*53ee8cc1Swenshuai.xi /// @param eQueryType  \b IN: type for query
854*53ee8cc1Swenshuai.xi /// @param pInput          \b IN: intput parameter
855*53ee8cc1Swenshuai.xi /// @param pOutput        \b OUT: result for the query type
856*53ee8cc1Swenshuai.xi /// @return TRUE - Success
857*53ee8cc1Swenshuai.xi /// @return FALSE - Failure
858*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
859*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MDrv_DSCMB2_GetCap(MS_U32 u32EngId, DSCMB_Query_Type eQueryType, void* pInput, void* pOutput);
860*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
861*53ee8cc1Swenshuai.xi /// Get DSCMB driver library information
862*53ee8cc1Swenshuai.xi /// @ingroup DSCMB_General
863*53ee8cc1Swenshuai.xi /// @param ppVersion \b OUT: Descrambler library version infomation
864*53ee8cc1Swenshuai.xi /// @return TRUE - Success
865*53ee8cc1Swenshuai.xi /// @return FALSE - Failure
866*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
867*53ee8cc1Swenshuai.xi // DLL_PUBLIC MS_BOOL MDrv_DSCMB2_GetLibVer(const MSIF_Version **ppVersion);
868*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
869*53ee8cc1Swenshuai.xi /// Set DSCMB Debug Level.
870*53ee8cc1Swenshuai.xi /// @ingroup DSCMB_General
871*53ee8cc1Swenshuai.xi /// @param  u32Level  \b IN: debug level.
872*53ee8cc1Swenshuai.xi /// @return TRUE  : Succeed
873*53ee8cc1Swenshuai.xi /// @return FALSE : Fail
874*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
875*53ee8cc1Swenshuai.xi // DLL_PUBLIC MS_BOOL MDrv_DSCMB2_SetDBGLevel(MS_U32 u32Level);
876*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
877*53ee8cc1Swenshuai.xi /// Check the status between DSCMB slot and DMX PID filter.
878*53ee8cc1Swenshuai.xi /// @ingroup DSCMB_STB_General
879*53ee8cc1Swenshuai.xi /// @param  u32EngId      \b IN: DSCMB engine id.
880*53ee8cc1Swenshuai.xi /// @param u32DscmbId   \b IN: descramble id
881*53ee8cc1Swenshuai.xi /// @param u32TspFltId    \b IN: tsp filter id
882*53ee8cc1Swenshuai.xi /// @return TRUE  - Success (connect)
883*53ee8cc1Swenshuai.xi /// @return FALSE - Failure (not connect)
884*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
885*53ee8cc1Swenshuai.xi // DLL_PUBLIC MS_BOOL MDrv_DSCMB2_GetConnectStatus(MS_U32 u32EngId, MS_U32 u32DscmbId, MS_U32 u32TspFltId);
886*53ee8cc1Swenshuai.xi 
887*53ee8cc1Swenshuai.xi 
888*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
889*53ee8cc1Swenshuai.xi /// Set rounds of descrambler algorithm MULTI2
890*53ee8cc1Swenshuai.xi /// @ingroup DSCMB_Key
891*53ee8cc1Swenshuai.xi /// @param u32EngId     \b IN: DSCMB engine id
892*53ee8cc1Swenshuai.xi /// @param u32Round    \b IN: # rounds to apply, multiple of 4 and maximum value is 252
893*53ee8cc1Swenshuai.xi /// @return TRUE  - Success
894*53ee8cc1Swenshuai.xi /// @return FALSE - Failure
895*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
896*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MDrv_DSCMB2_Multi2_SetRound(MS_U32 u32EngId, MS_U32 u32Round);
897*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
898*53ee8cc1Swenshuai.xi /// Set system key of descrambler algorithm MULTI2
899*53ee8cc1Swenshuai.xi /// @ingroup DSCMB_Key
900*53ee8cc1Swenshuai.xi /// @param u32EngId     \b IN: DSCMB engine id
901*53ee8cc1Swenshuai.xi /// @param u32SysKey  \b IN: the array of system key (u8SysKey[32]): there are 32 group system key(8-bit should be 32 group) should be set.
902*53ee8cc1Swenshuai.xi /// @[0-31][32-63][64-95][96-127][128-159][160-191][192-223][224-255] and the bit order is MSB.
903*53ee8cc1Swenshuai.xi /// @return TRUE  - Success
904*53ee8cc1Swenshuai.xi /// @return FALSE - Failure
905*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
906*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MDrv_DSCMB2_Multi2_SetSystemKey(MS_U32 u32EngId, MS_U8* u8Syskey);
907*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
908*53ee8cc1Swenshuai.xi /// Set Riv of HDCP2, which is 64-bits number generated from transmitter
909*53ee8cc1Swenshuai.xi /// @ingroup DSCMB_Key
910*53ee8cc1Swenshuai.xi /// @param u32EngId   \b IN: DSCMB engine id
911*53ee8cc1Swenshuai.xi /// @param pu8RIV      \b IN: pointer to 64bit Riv buffer in BIG ENDIAN order
912*53ee8cc1Swenshuai.xi /// @return TRUE  - Success
913*53ee8cc1Swenshuai.xi /// @return FALSE - Failure
914*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
915*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MDrv_DSCMB2_HDCP2_SetRIV(MS_U32 u32EngId, MS_U8* pu8RIV);
916*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
917*53ee8cc1Swenshuai.xi /// Set Riv of HDCP2, which is 64-bits number generated from transmitter
918*53ee8cc1Swenshuai.xi /// @ingroup DSCMB_Key
919*53ee8cc1Swenshuai.xi /// @param u32EngId   \b IN: DSCMB engine id
920*53ee8cc1Swenshuai.xi /// @param u32EngId   \b IN: DSCMB slot
921*53ee8cc1Swenshuai.xi /// @param pu8RIV      \b IN: pointer to 64bit Riv buffer in BIG ENDIAN order
922*53ee8cc1Swenshuai.xi /// @return TRUE  - Success
923*53ee8cc1Swenshuai.xi /// @return FALSE - Failure
924*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
925*53ee8cc1Swenshuai.xi // DLL_PUBLIC MS_BOOL MDrv_DSCMB2_HDCP2_SetRIV_Ex(MS_U32 u32EngId, MS_U32 u32DscmbId, MS_U8* pu8RIV);
926*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
927*53ee8cc1Swenshuai.xi /// Enable Record stream after stream is descrambled, only supported when CA venders do not prohibat this feature.
928*53ee8cc1Swenshuai.xi /// @ingroup DSCMB_STB_General
929*53ee8cc1Swenshuai.xi /// @param u32EngId  \b IN: DSCMB engine id
930*53ee8cc1Swenshuai.xi /// @param Enable      \b IN: for enabe/disable record mechanism.
931*53ee8cc1Swenshuai.xi /// @return TRUE  - Success
932*53ee8cc1Swenshuai.xi /// @return FALSE - Failure
933*53ee8cc1Swenshuai.xi /// @Note: Function can only be called before any record function is called.
934*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
935*53ee8cc1Swenshuai.xi // DLL_PUBLIC MS_BOOL MDrv_DSCMB2_PVR_RecCtrl(MS_U32 u32EngId, MS_BOOL Enable);
936*53ee8cc1Swenshuai.xi //-----------------
937*53ee8cc1Swenshuai.xi // DSCMB_STR
938*53ee8cc1Swenshuai.xi //-----------------
939*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
940*53ee8cc1Swenshuai.xi /// Control DSCMB STR functions.
941*53ee8cc1Swenshuai.xi /// @ingroup DSCMB_STR
942*53ee8cc1Swenshuai.xi /// @param  u16PowerState  \b IN: STR power mode. (to control STR suspend & resume case.)
943*53ee8cc1Swenshuai.xi /// @return : Utopia status - UTOPIA_STATUS_SUCCESS (Succeed) or UTOPIA_STATUS_FAIL (Fail)
944*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
945*53ee8cc1Swenshuai.xi // DLL_PUBLIC MS_U32  MDrv_DSCMB2_SetPowerState(EN_POWER_MODE u16PowerState);
946*53ee8cc1Swenshuai.xi 
947*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
948*53ee8cc1Swenshuai.xi /// Get scrambler level of a pid filter ID
949*53ee8cc1Swenshuai.xi /// @ingroup DSCMB_General
950*53ee8cc1Swenshuai.xi /// @param u32EngId      \b IN: DSCMB engine id.
951*53ee8cc1Swenshuai.xi /// @param u32PidFltId    \b IN: Pid filter ID obtained from MApi_DMX_Open/MDrv_TSP_PidFlt_Alloc
952*53ee8cc1Swenshuai.xi /// @param pScmbLevel   \b OUT: The output scrambler level
953*53ee8cc1Swenshuai.xi /// @return TRUE - Success
954*53ee8cc1Swenshuai.xi /// @return FALSE - Failure
955*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
956*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MDrv_DSCMB2_PidFlt_ScmbStatus(MS_U32 u32EngId, MS_U32 u32PidFltId, SCMB_Level* pScmbLevel);
957*53ee8cc1Swenshuai.xi 
958*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
959*53ee8cc1Swenshuai.xi /// Get Dscmb driver status (There is no any code use this parameter)
960*53ee8cc1Swenshuai.xi /// @ingroup DSCMB_ToBeRemove
961*53ee8cc1Swenshuai.xi /// @param pStatus   \b OUT: Descrambler status
962*53ee8cc1Swenshuai.xi /// @return TRUE - Success
963*53ee8cc1Swenshuai.xi /// @return FALSE - Failure
964*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
965*53ee8cc1Swenshuai.xi // DLL_PUBLIC MS_BOOL MDrv_DSCMB_GetStatus(DSCMB_Status *pStatus);
966*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
967*53ee8cc1Swenshuai.xi /// Get Dscmb driver information
968*53ee8cc1Swenshuai.xi /// @ingroup DSCMB_General
969*53ee8cc1Swenshuai.xi /// @return DSCMB_Info
970*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
971*53ee8cc1Swenshuai.xi // DLL_PUBLIC const DSCMB_Info* MDrv_DSCMB_GetInfo(void);
972*53ee8cc1Swenshuai.xi 
973*53ee8cc1Swenshuai.xi 
974*53ee8cc1Swenshuai.xi //-----------------
975*53ee8cc1Swenshuai.xi // DSCMB_STB_Kladder
976*53ee8cc1Swenshuai.xi //-----------------
977*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
978*53ee8cc1Swenshuai.xi /// KLadder_ETSI
979*53ee8cc1Swenshuai.xi /// @ingroup DSCMB_STB_Kladder
980*53ee8cc1Swenshuai.xi /// @return TRUE  - Success
981*53ee8cc1Swenshuai.xi /// @return FALSE - Failure
982*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
983*53ee8cc1Swenshuai.xi // DLL_PUBLIC MS_BOOL MDrv_DSCMB2_KLadder_ETSI(DSCMB_KLCfg_All* KLCfg , MS_U8 *ACPU_Out, MS_U8 *pu8Nonce, MS_U8 * pu8Response, DSCMB_KL_Status* u32Status );
984*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
985*53ee8cc1Swenshuai.xi /// KLadder_AtomicExec
986*53ee8cc1Swenshuai.xi /// @ingroup DSCMB_STB_Kladder
987*53ee8cc1Swenshuai.xi /// @return TRUE  - Success
988*53ee8cc1Swenshuai.xi /// @return FALSE - Failure
989*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
990*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MDrv_DSCMB2_KLadder_AtomicExec(DSCMB_KLCfg_All* KLCfg , MS_U8 *ACPU_Out, DSCMB_KL_Status* u32Status );
991*53ee8cc1Swenshuai.xi 
992*53ee8cc1Swenshuai.xi 
993*53ee8cc1Swenshuai.xi //-----------------
994*53ee8cc1Swenshuai.xi // DSCMB_ToBeRemove
995*53ee8cc1Swenshuai.xi //-----------------
996*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
997*53ee8cc1Swenshuai.xi /// Initialize DSCMB module. (Already have another function: DSCMB2_Init)
998*53ee8cc1Swenshuai.xi /// @ingroup DSCMB_ToBeRemove
999*53ee8cc1Swenshuai.xi /// @return TRUE  : Succeed
1000*53ee8cc1Swenshuai.xi /// @return FALSE : Fail
1001*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1002*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MDrv_DSCMB_Init(void);
1003*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1004*53ee8cc1Swenshuai.xi /// Finalize DSCMB module. (Already have another function: DSCMB2_Exit)
1005*53ee8cc1Swenshuai.xi /// @ingroup DSCMB_ToBeRemove
1006*53ee8cc1Swenshuai.xi /// @return TRUE  : Succeed
1007*53ee8cc1Swenshuai.xi /// @return FALSE : Fail
1008*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1009*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MDrv_DSCMB_Exit(void);
1010*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
1011*53ee8cc1Swenshuai.xi /// Get Dscmb driver library information. (Already have another function: DSCMB2_GetLibVer)
1012*53ee8cc1Swenshuai.xi /// @ingroup DSCMB_ToBeRemove
1013*53ee8cc1Swenshuai.xi /// @param ppVersion \b OUT: Descrambler library version infomation
1014*53ee8cc1Swenshuai.xi /// @return TRUE - Success
1015*53ee8cc1Swenshuai.xi /// @return FALSE - Failure
1016*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
1017*53ee8cc1Swenshuai.xi // DLL_PUBLIC MS_BOOL MDrv_DSCMB_GetLibVer(const MSIF_Version **ppVersion);
1018*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1019*53ee8cc1Swenshuai.xi /// Set DSCMB Debug Level. (Already have another function: DSCMB2_SetDBGLevel)
1020*53ee8cc1Swenshuai.xi /// @ingroup DSCMB_ToBeRemove
1021*53ee8cc1Swenshuai.xi /// @param  u32Level  \b IN: debug level.
1022*53ee8cc1Swenshuai.xi /// @return TRUE  : Succeed
1023*53ee8cc1Swenshuai.xi /// @return FALSE : Fail
1024*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1025*53ee8cc1Swenshuai.xi // DLL_PUBLIC MS_BOOL MDrv_DSCMB_SetDBGLevel(MS_U32 u32Level);
1026*53ee8cc1Swenshuai.xi 
1027*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
1028*53ee8cc1Swenshuai.xi /// Check the status between DSCMB slot and DMX PID filter.
1029*53ee8cc1Swenshuai.xi /// @ingroup DSCMB_STB_General
1030*53ee8cc1Swenshuai.xi /// @param  u32EngId      \b IN: DSCMB engine id.
1031*53ee8cc1Swenshuai.xi /// @param u32DscmbId   \b IN: descramble id
1032*53ee8cc1Swenshuai.xi /// @param u32TspFltId    \b IN: tsp filter id
1033*53ee8cc1Swenshuai.xi /// @return TRUE  - Success (connect)
1034*53ee8cc1Swenshuai.xi /// @return FALSE - Failure (not connect)
1035*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
1036*53ee8cc1Swenshuai.xi // DLL_PUBLIC MS_BOOL MDrv_DSCMB_GetConnectStatus(MS_U32 u32EngId, MS_U32 u32DscmbId, MS_U32 u32TspFltId);
1037*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
1038*53ee8cc1Swenshuai.xi /// KLadder_AtomicExec
1039*53ee8cc1Swenshuai.xi /// @ingroup DSCMB_STB_Kladder
1040*53ee8cc1Swenshuai.xi /// @return TRUE  - Success
1041*53ee8cc1Swenshuai.xi /// @return FALSE - Failure
1042*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
1043*53ee8cc1Swenshuai.xi // DLL_PUBLIC MS_BOOL MDrv_DSCMB_KLadder_AtomicExec(DSCMB_KLCfg_All* KLCfg , MS_U8 *ACPU_Out, DSCMB_KL_Status* u32Status);
1044*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
1045*53ee8cc1Swenshuai.xi /// KLadder_Reset
1046*53ee8cc1Swenshuai.xi /// @ingroup DSCMB_STB_Kladder
1047*53ee8cc1Swenshuai.xi /// @return TRUE  - Success
1048*53ee8cc1Swenshuai.xi /// @return FALSE - Failure
1049*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
1050*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MDrv_DSCMB_KLadder_Reset(void);
1051*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
1052*53ee8cc1Swenshuai.xi /// KLadder_SetInput
1053*53ee8cc1Swenshuai.xi /// @ingroup DSCMB_STB_Kladder
1054*53ee8cc1Swenshuai.xi /// @return TRUE  - Success
1055*53ee8cc1Swenshuai.xi /// @return FALSE - Failure
1056*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
1057*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MDrv_DSCMB_KLadder_SetInput(MS_U32 u32Level, MS_U8* pu8In, MS_U32 u32InLen);
1058*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
1059*53ee8cc1Swenshuai.xi /// KLadder_SetKey
1060*53ee8cc1Swenshuai.xi /// @ingroup DSCMB_STB_Kladder
1061*53ee8cc1Swenshuai.xi /// @return TRUE  - Success
1062*53ee8cc1Swenshuai.xi /// @return FALSE - Failure
1063*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
1064*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MDrv_DSCMB_KLadder_SetKey(DSCMB_KLSrc KLSrc, MS_U8* pu8Key, MS_U32 u32KeyLen);
1065*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
1066*53ee8cc1Swenshuai.xi /// KLadder_SetDst
1067*53ee8cc1Swenshuai.xi /// @ingroup DSCMB_STB_Kladder
1068*53ee8cc1Swenshuai.xi /// @return TRUE  - Success
1069*53ee8cc1Swenshuai.xi /// @return FALSE - Failure
1070*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
1071*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MDrv_DSCMB_KLadder_SetDst(DSCMB_KLDst KLDst);
1072*53ee8cc1Swenshuai.xi 
1073*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
1074*53ee8cc1Swenshuai.xi /// KLadder_SetConfig
1075*53ee8cc1Swenshuai.xi /// @ingroup DSCMB_STB_Kladder
1076*53ee8cc1Swenshuai.xi /// @return TRUE  - Success
1077*53ee8cc1Swenshuai.xi /// @return FALSE - Failure
1078*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
1079*53ee8cc1Swenshuai.xi DLL_PUBLIC void    MDrv_DSCMB_KLadder_SetConfig(DSCMB_KLCfg *KLCfg);
1080*53ee8cc1Swenshuai.xi 
1081*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
1082*53ee8cc1Swenshuai.xi /// KLadder_Start
1083*53ee8cc1Swenshuai.xi /// @ingroup DSCMB_STB_Kladder
1084*53ee8cc1Swenshuai.xi /// @return TRUE  - Success
1085*53ee8cc1Swenshuai.xi /// @return FALSE - Failure
1086*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
1087*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MDrv_DSCMB_KLadder_Start(void);
1088*53ee8cc1Swenshuai.xi 
1089*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
1090*53ee8cc1Swenshuai.xi /// KLadder_IsComplete
1091*53ee8cc1Swenshuai.xi /// @ingroup DSCMB_STB_Kladder
1092*53ee8cc1Swenshuai.xi /// @return TRUE  - Success
1093*53ee8cc1Swenshuai.xi /// @return FALSE - Failure
1094*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
1095*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MDrv_DSCMB_KLadder_IsComplete(void);
1096*53ee8cc1Swenshuai.xi 
1097*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
1098*53ee8cc1Swenshuai.xi /// KLadder_Output_Start
1099*53ee8cc1Swenshuai.xi /// @ingroup DSCMB_STB_Kladder
1100*53ee8cc1Swenshuai.xi /// @return TRUE  - Success
1101*53ee8cc1Swenshuai.xi /// @return FALSE - Failure
1102*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
1103*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MDrv_DSCMB_KLadder_Output_Start(MS_U32 u32DscmbId, DSCMB_Key_Type eKeyType);
1104*53ee8cc1Swenshuai.xi 
1105*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
1106*53ee8cc1Swenshuai.xi /// KLadder_Output_IsComplete
1107*53ee8cc1Swenshuai.xi /// @ingroup DSCMB_STB_Kladder
1108*53ee8cc1Swenshuai.xi /// @return TRUE  - Success
1109*53ee8cc1Swenshuai.xi /// @return FALSE - Failure
1110*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
1111*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MDrv_DSCMB_KLadder_Output_IsComplete(void);
1112*53ee8cc1Swenshuai.xi 
1113*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
1114*53ee8cc1Swenshuai.xi /// KLadder_Output_Stop
1115*53ee8cc1Swenshuai.xi /// @ingroup DSCMB_STB_Kladder
1116*53ee8cc1Swenshuai.xi /// @return TRUE  - Success
1117*53ee8cc1Swenshuai.xi /// @return FALSE - Failure
1118*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
1119*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MDrv_DSCMB_KLadder_Output_Stop(void);
1120*53ee8cc1Swenshuai.xi 
1121*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
1122*53ee8cc1Swenshuai.xi /// KLadder_ResetAcpuAck
1123*53ee8cc1Swenshuai.xi /// @ingroup DSCMB_STB_Kladder
1124*53ee8cc1Swenshuai.xi /// @return TRUE  - Success
1125*53ee8cc1Swenshuai.xi /// @return FALSE - Failure
1126*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
1127*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MDrv_DSCMB_KLadder_ResetAcpuAck(void);
1128*53ee8cc1Swenshuai.xi 
1129*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
1130*53ee8cc1Swenshuai.xi /// KLadder_ReadDataFromAcpu
1131*53ee8cc1Swenshuai.xi /// @ingroup DSCMB_STB_Kladder
1132*53ee8cc1Swenshuai.xi /// @return TRUE  - Success
1133*53ee8cc1Swenshuai.xi /// @return FALSE - Failure
1134*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
1135*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MDrv_DSCMB_KLadder_ReadDataFromAcpu(MS_U8* pu8Out);
1136*53ee8cc1Swenshuai.xi 
1137*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
1138*53ee8cc1Swenshuai.xi /// KLadder_Stop
1139*53ee8cc1Swenshuai.xi /// @ingroup DSCMB_STB_Kladder
1140*53ee8cc1Swenshuai.xi /// @return TRUE  - Success
1141*53ee8cc1Swenshuai.xi /// @return FALSE - Failure
1142*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
1143*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_BOOL MDrv_DSCMB_KLadder_Stop(void); // write KTE
1144*53ee8cc1Swenshuai.xi 
1145*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
1146*53ee8cc1Swenshuai.xi /// KLadder_Lock
1147*53ee8cc1Swenshuai.xi /// @ingroup DSCMB_STB_Kladder
1148*53ee8cc1Swenshuai.xi /// @return TRUE  - Success
1149*53ee8cc1Swenshuai.xi /// @return FALSE - Failure
1150*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
1151*53ee8cc1Swenshuai.xi // DLL_PUBLIC MS_BOOL MDrv_DSCMB_KLadder_Lock(void);
1152*53ee8cc1Swenshuai.xi 
1153*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
1154*53ee8cc1Swenshuai.xi /// KLadder_Unlock
1155*53ee8cc1Swenshuai.xi /// @ingroup DSCMB_STB_Kladder
1156*53ee8cc1Swenshuai.xi /// @return TRUE  - Success
1157*53ee8cc1Swenshuai.xi /// @return FALSE - Failure
1158*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
1159*53ee8cc1Swenshuai.xi // DLL_PUBLIC MS_BOOL MDrv_DSCMB_KLadder_Unlock(void);
1160*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
1161*53ee8cc1Swenshuai.xi /// Set the PID to be replaced
1162*53ee8cc1Swenshuai.xi /// @ingroup DSCMB_STB_General
1163*53ee8cc1Swenshuai.xi /// @param u32PidPrim     \b IN: The packet with this target PID(u32PidPrim) will be replaced in the field of PID by u32Pid2ndary
1164*53ee8cc1Swenshuai.xi /// @param u32Pid2ndary  \b IN: The packet with this target PID(u32PidPrim) will be replaced in the field of PID by u32Pid2ndary
1165*53ee8cc1Swenshuai.xi /// @return TRUE  - Success
1166*53ee8cc1Swenshuai.xi /// @return FALSE - Failure
1167*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
1168*53ee8cc1Swenshuai.xi // DLL_PUBLIC MS_BOOL MDrv_DSCMB_2ndarySet(MS_U32 u32PidPrim, MS_U32 u32Pid2ndary);
1169*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
1170*53ee8cc1Swenshuai.xi /// Reset the PID to be replaced
1171*53ee8cc1Swenshuai.xi /// @ingroup DSCMB_STB_General
1172*53ee8cc1Swenshuai.xi /// @param u32PidPrim\b   IN: Reset the replacement of PID (u32PidPrim) set by MDrv_DSCMB_2ndarySet
1173*53ee8cc1Swenshuai.xi /// @return TRUE  - Success
1174*53ee8cc1Swenshuai.xi /// @return FALSE - Failure
1175*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
1176*53ee8cc1Swenshuai.xi // DLL_PUBLIC MS_BOOL MDrv_DSCMB_2ndaryReset(MS_U32 u32PidPrim);
1177*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
1178*53ee8cc1Swenshuai.xi /// The low-level implementation of @ref MDrv_DSCMB_FltTypeSet [RESERVED]
1179*53ee8cc1Swenshuai.xi /// @ingroup DSCMB_STB_General
1180*53ee8cc1Swenshuai.xi /// @param u32DscmbId \b IN: descrambler filter ID obtained from MDrv_DSCMB_FltAlloc
1181*53ee8cc1Swenshuai.xi /// @param eKeyType \b IN: key type for this setting
1182*53ee8cc1Swenshuai.xi /// @param u32SW0 \b IN: The descramlber switch configuration
1183*53ee8cc1Swenshuai.xi /// @param u32SW1 \b IN: reserved
1184*53ee8cc1Swenshuai.xi /// @param u32SW2 \b IN: reserved
1185*53ee8cc1Swenshuai.xi /// @return TRUE  - Success
1186*53ee8cc1Swenshuai.xi /// @return FALSE - Failure
1187*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
1188*53ee8cc1Swenshuai.xi // DLL_PUBLIC MS_BOOL MDrv_DSCMB_SlotSwitchWrite(MS_U32 u32DscmbId, DSCMB_Key_Type eKeyType, MS_U32 u32SW0, MS_U32 u32SW1, MS_U32 u32SW2);
1189*53ee8cc1Swenshuai.xi 
1190*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
1191*53ee8cc1Swenshuai.xi /// Set record buffer
1192*53ee8cc1Swenshuai.xi /// @ingroup DSCMB_STB_General
1193*53ee8cc1Swenshuai.xi /// @return TRUE - Success
1194*53ee8cc1Swenshuai.xi /// @return FALSE - Failure
1195*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
1196*53ee8cc1Swenshuai.xi // DLL_PUBLIC MS_BOOL MDrv_DSCMB2_SetRecBuf(MS_U32 u32EngId , MS_U32 u32Start, MS_U32 u32Size);
1197*53ee8cc1Swenshuai.xi 
1198*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
1199*53ee8cc1Swenshuai.xi /// Record control
1200*53ee8cc1Swenshuai.xi /// @ingroup DSCMB_STB_General
1201*53ee8cc1Swenshuai.xi /// @return TRUE - Success
1202*53ee8cc1Swenshuai.xi /// @return FALSE - Failure
1203*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
1204*53ee8cc1Swenshuai.xi // DLL_PUBLIC MS_BOOL MDrv_DSCMB2_RecCtrl(MS_U32 u32EngId, MS_BOOL bEnable);
1205*53ee8cc1Swenshuai.xi 
1206*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
1207*53ee8cc1Swenshuai.xi /// Get record write pointer
1208*53ee8cc1Swenshuai.xi /// @ingroup DSCMB_STB_General
1209*53ee8cc1Swenshuai.xi /// @return TRUE - Success
1210*53ee8cc1Swenshuai.xi /// @return FALSE - Failure
1211*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------------------------------
1212*53ee8cc1Swenshuai.xi // DLL_PUBLIC MS_BOOL MDrv_DSCMB2_GetRecWptr(MS_U32 u32EngId, MS_U32* pu32Write);
1213*53ee8cc1Swenshuai.xi 
1214*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1215*53ee8cc1Swenshuai.xi /// Control DSCMB STR functions. (Already have another function: DSCMB2_SetPowerState)
1216*53ee8cc1Swenshuai.xi /// @ingroup DSCMB_ToBeRemove
1217*53ee8cc1Swenshuai.xi /// @param  u16PowerState  \b IN: STR power mode. (to control STR suspend & resume case.)
1218*53ee8cc1Swenshuai.xi /// @return : Utopia status - UTOPIA_STATUS_SUCCESS (Succeed) or UTOPIA_STATUS_FAIL (Fail)
1219*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
1220*53ee8cc1Swenshuai.xi DLL_PUBLIC MS_U32  MApi_DSCMB_SetPowerState(EN_POWER_MODE u16PowerState);
1221*53ee8cc1Swenshuai.xi 
1222*53ee8cc1Swenshuai.xi 
1223*53ee8cc1Swenshuai.xi #ifdef __cplusplus
1224*53ee8cc1Swenshuai.xi }
1225*53ee8cc1Swenshuai.xi #endif
1226*53ee8cc1Swenshuai.xi 
1227*53ee8cc1Swenshuai.xi #endif
1228