xref: /utopia/UTPA2-700.0.x/modules/dscmb/hal/k6lite/nsk2/halDSCMB.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 /// @attention
101*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////////////////////////
102*53ee8cc1Swenshuai.xi 
103*53ee8cc1Swenshuai.xi #ifndef __HAL_DSCMB_H__
104*53ee8cc1Swenshuai.xi #define __HAL_DSCMB_H__
105*53ee8cc1Swenshuai.xi 
106*53ee8cc1Swenshuai.xi #define DSCMB2_DBGLV_EMERG     0  //Used for emergency messages, usually those that precede a crash.
107*53ee8cc1Swenshuai.xi #define DSCMB2_DBGLV_ALERT     1  //A situation requiring immediate action.
108*53ee8cc1Swenshuai.xi #define DSCMB2_DBGLV_CRIT      2  //Critical conditions, often related to serious hardware or software failures.
109*53ee8cc1Swenshuai.xi #define DSCMB2_DBGLV_ERR       3  //Used to report error conditions; device drivers often use KERN_ERR to report hardware difficulties.
110*53ee8cc1Swenshuai.xi #define DSCMB2_DBGLV_WARNING   4  //Warnings about problematic situations that do not, in themselves, create serious problems with the system.
111*53ee8cc1Swenshuai.xi #define DSCMB2_DBGLV_NOTICE    5  //Situations that are normal, but still worthy of note. A number of security-related conditions are reported at this level.
112*53ee8cc1Swenshuai.xi #define DSCMB2_DBGLV_INFO      6  //Informational messages. Many drivers print information about the hardware they find at startup time at this level.
113*53ee8cc1Swenshuai.xi #define DSCMB2_DBGLV_DEBUG     7  //Used for debugging messages.
114*53ee8cc1Swenshuai.xi #define DSCMB2_DBGLV_ARRAY     8  //Uesd for array data.
115*53ee8cc1Swenshuai.xi 
116*53ee8cc1Swenshuai.xi 
117*53ee8cc1Swenshuai.xi #define NDS_IMPL                // tag for reconstructure the code
118*53ee8cc1Swenshuai.xi 
119*53ee8cc1Swenshuai.xi #define HAL_DSCMB_FLT_NULL                      0xFFFFFFFFUL
120*53ee8cc1Swenshuai.xi #define PID_SLOT_INDEX_NULL                     0x7FUL
121*53ee8cc1Swenshuai.xi 
122*53ee8cc1Swenshuai.xi //HAL_DSCMB_KTE_GetStatus(), for debug usage
123*53ee8cc1Swenshuai.xi #define DSCMB_PIDIDX_EN     0x80000000UL
124*53ee8cc1Swenshuai.xi #define DSCMB_KTE_VALID     0x40000000UL
125*53ee8cc1Swenshuai.xi #define DSCMB_KTE_DUAL_EN   0x10000000UL
126*53ee8cc1Swenshuai.xi #define DSCMB_KTE_LSAS_EN   0x00000001UL
127*53ee8cc1Swenshuai.xi #define DSCMB_KTE_ESA_EN    0x00000100UL
128*53ee8cc1Swenshuai.xi #define DSCMB_KTE_LSAD_EN   0x00010000UL
129*53ee8cc1Swenshuai.xi #define DSCMB_KTE_IV_EN     0x01000000UL
130*53ee8cc1Swenshuai.xi 
131*53ee8cc1Swenshuai.xi #define HAL_DSCMB_RIV_MAX      16UL  //max  number of RIV slot
132*53ee8cc1Swenshuai.xi 
133*53ee8cc1Swenshuai.xi #define HAL_DSCMB_KTE_MAX      128UL // 0 ~ 127 and 127 is reserved for NULL key
134*53ee8cc1Swenshuai.xi #define HAL_DSCMB_KTE_ID_NULL  127UL
135*53ee8cc1Swenshuai.xi #define HAL_DSCMB_PIDIDX_MAX   192UL
136*53ee8cc1Swenshuai.xi #define HAL_DSCMB_PIDFLT_NUM   192UL
137*53ee8cc1Swenshuai.xi #define HAL_DSCMB_TSIF_MAX      4UL
138*53ee8cc1Swenshuai.xi #define HAL_DSCMB_TSID_MAX      4UL
139*53ee8cc1Swenshuai.xi #define HAL_DSCMB_ENG_MAX       1UL
140*53ee8cc1Swenshuai.xi #define REG_DSCMB_PATH_CNT      HAL_DSCMB_TSID_MAX
141*53ee8cc1Swenshuai.xi 
142*53ee8cc1Swenshuai.xi #define HAL_DSCMB_ENG_NUM               1UL
143*53ee8cc1Swenshuai.xi 
144*53ee8cc1Swenshuai.xi #define HAL_DSCMB_KEY_TYPE_CLEAR        0UL
145*53ee8cc1Swenshuai.xi #define HAL_DSCMB_KEY_TYPE_EVEN         2UL
146*53ee8cc1Swenshuai.xi #define HAL_DSCMB_KEY_TYPE_ODD          3UL
147*53ee8cc1Swenshuai.xi 
148*53ee8cc1Swenshuai.xi #define HAL_DSCMB_KEYLEN_MAX            16UL
149*53ee8cc1Swenshuai.xi #define HAL_DSCMB_MULTI2_SYSKEY_MAX     32UL
150*53ee8cc1Swenshuai.xi 
151*53ee8cc1Swenshuai.xi #define HAL_DSCMB_ES_STATICKEY_MAX      16UL
152*53ee8cc1Swenshuai.xi 
153*53ee8cc1Swenshuai.xi #define HAL_DSCMB_SPSPVR_ENG_NUM        1UL  //only one spspvr filter in dscmb(32 filter pid)
154*53ee8cc1Swenshuai.xi #define HAL_DSCMB_SPSPVR_FLT_NUM        32UL
155*53ee8cc1Swenshuai.xi //#define HAL_DSCMB_SPSPVR_BUF_NUM        1
156*53ee8cc1Swenshuai.xi 
157*53ee8cc1Swenshuai.xi #define DSCMB_CAPVR_PIDTABLE_NUM  (2UL)
158*53ee8cc1Swenshuai.xi #define DSCMB_CAPVR_PIDFLT_MAX (HAL_DSCMB_SPSPVR_FLT_NUM*DSCMB_CAPVR_PIDTABLE_NUM)
159*53ee8cc1Swenshuai.xi 
160*53ee8cc1Swenshuai.xi #define DEFAULT_CAVID            (0x0FUL)
161*53ee8cc1Swenshuai.xi 
162*53ee8cc1Swenshuai.xi #define DSCMB_CWKL                (0UL)
163*53ee8cc1Swenshuai.xi #define DSCMB_PVRKL               (1UL)
164*53ee8cc1Swenshuai.xi 
165*53ee8cc1Swenshuai.xi #define DSCMB_KL_DST_CLASS_CPU     (0x80UL)
166*53ee8cc1Swenshuai.xi #define DSCMB_KL_DST_CLASS_TSIO    (0x800UL)
167*53ee8cc1Swenshuai.xi #define DSCMB_KL_DST_CLASS_KT      (0x8000UL)
168*53ee8cc1Swenshuai.xi #define DSCMB_KL_DST_CLASS_DMA     (0x800000UL)
169*53ee8cc1Swenshuai.xi #define DSCMB_KL_DST_CLASS_SPSSPD  (0x880000UL)
170*53ee8cc1Swenshuai.xi #define DSCMB_KL_DST_CLASS_PVT     (0x80000000UL)
171*53ee8cc1Swenshuai.xi 
172*53ee8cc1Swenshuai.xi //Tmp define here, need to put drvDSCMB.h in the future
173*53ee8cc1Swenshuai.xi #define    E_DSCMB_KL_DST_DMA_CSSK            0x00900000UL
174*53ee8cc1Swenshuai.xi typedef enum
175*53ee8cc1Swenshuai.xi {
176*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_CAVID1 = 0x0001,
177*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_CAVID2 = 0x0002,
178*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_CAVID3 = 0x0003,
179*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_CAVID4 = 0x0004,
180*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_CAVID5 = 0x0005,
181*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_CAVID6 = 0x0006,
182*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_CAVID7 = 0x0007,
183*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_CAVID8 = 0x0008,
184*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_CAVIDF = 0x000F,
185*53ee8cc1Swenshuai.xi } HAL_DSCMB_CAVID;
186*53ee8cc1Swenshuai.xi 
187*53ee8cc1Swenshuai.xi typedef enum
188*53ee8cc1Swenshuai.xi {
189*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_MAIN_ALGO_AES    = 0,
190*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_MAIN_ALGO_CSA2   = 1,
191*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_MAIN_ALGO_DES    = 2,
192*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_MAIN_ALGO_TDES   = 3,
193*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_MAIN_ALGO_MULTI2 = 4,
194*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_MAIN_ALGO_CSA2_CONF =5,
195*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_MAIN_ALGO_CSA3   = 6,
196*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_MAIN_ALGO_ASA    = 7,
197*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_MAIN_ALGO_TCSA3  = 8,
198*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_MAIN_ALGO_ESSA   = 9,
199*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_MAIN_ALGO_DEFAULT = 0xF,
200*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_MAIN_ALGO_NUM,
201*53ee8cc1Swenshuai.xi } HAL_DSCMB_MainAlgo_Type;
202*53ee8cc1Swenshuai.xi 
203*53ee8cc1Swenshuai.xi typedef enum
204*53ee8cc1Swenshuai.xi {
205*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_SUB_ALGO_MDI_CBC  = 0,
206*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_SUB_ALGO_MDI_RCBC = 1,
207*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_SUB_ALGO_MDD_CBC  = 2 ,
208*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_SUB_ALGO_MDD_RCBC = 3,
209*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_SUB_ALGO_LEADING_CLEAR = 4,
210*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_SUB_ALGO_ECB = 5,
211*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_SUB_ALGO_CBC = 6,
212*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_SUB_ALGO_CTR = 7,
213*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_SUB_ALGO_OFB = 8,
214*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_SUB_ALGO_AESVAR = 9 ,
215*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_SUB_ALGO_DEFAULT = 0xF,
216*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_SUB_ALGO_NUM,
217*53ee8cc1Swenshuai.xi } HAL_DSCMB_SubAlgo_Type;
218*53ee8cc1Swenshuai.xi 
219*53ee8cc1Swenshuai.xi 
220*53ee8cc1Swenshuai.xi typedef enum
221*53ee8cc1Swenshuai.xi {
222*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_RESSB_ALGO_CLR    = 0,
223*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_RESSB_ALGO_CTS    = 1,
224*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_RESSB_ALGO_SCTE52 = 2,
225*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_RESSB_ALGO_XORIV1 = 3,
226*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_RESSB_ALGO_OC_M   = 4,
227*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_RESSB_ALGO_XORIV2 = 5,
228*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_RESSB_ALGO_CTR    = 6,
229*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_RESSB_ALGO_DEFAULT = 0x7,
230*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_RESSB_ALGO_NUM,
231*53ee8cc1Swenshuai.xi } HAL_DSCMB_ResSBAlgo_Type;
232*53ee8cc1Swenshuai.xi 
233*53ee8cc1Swenshuai.xi 
234*53ee8cc1Swenshuai.xi typedef enum
235*53ee8cc1Swenshuai.xi {
236*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_ENG_LSAD = 0 ,
237*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_ENG_ESA  = 1  ,
238*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_ENG_LSAS = 2 ,
239*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_ENG_SWITCH   = 3 ,
240*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_ENG_IV_LSAD  = 4,
241*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_ENG_IV_ESA   = 5 ,
242*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_ENG_IV_LSAS  = 6 ,
243*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_ENG_NUM,
244*53ee8cc1Swenshuai.xi } HAL_DSCMB_KTE_WriteType;
245*53ee8cc1Swenshuai.xi 
246*53ee8cc1Swenshuai.xi 
247*53ee8cc1Swenshuai.xi // descrambler key ladder
248*53ee8cc1Swenshuai.xi typedef enum
249*53ee8cc1Swenshuai.xi {
250*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_KEY_CLEAR =             0,
251*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_KEY_UNDEFINE =          1,
252*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_KEY_EVEN  =             2,
253*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_KEY_ODD   =             3,
254*53ee8cc1Swenshuai.xi } HAL_DSCMB_KeyType;
255*53ee8cc1Swenshuai.xi 
256*53ee8cc1Swenshuai.xi typedef enum
257*53ee8cc1Swenshuai.xi {
258*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_FSCB_UNCHG =             0,
259*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_FSCB_B00   =             1,
260*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_FSCB_B10   =             2,
261*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_FSCB_B11   =             3,
262*53ee8cc1Swenshuai.xi } HAL_DSCMB_FSCB;
263*53ee8cc1Swenshuai.xi 
264*53ee8cc1Swenshuai.xi 
265*53ee8cc1Swenshuai.xi typedef enum
266*53ee8cc1Swenshuai.xi {
267*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_SCBFIX_UNCHG  =             0,
268*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_SCBFIX_USESCB =             1,
269*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_SCBFIX_CLEAR  =             2,
270*53ee8cc1Swenshuai.xi 
271*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_SCBFIX_ODD2EVEN =           4,
272*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_SCBFIX_EVEN2ODD =           5,
273*53ee8cc1Swenshuai.xi 
274*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_SCBFIX_ODD2CLEAR  =         6,
275*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_SCBFIX_EVEN2CLEAR =         7,
276*53ee8cc1Swenshuai.xi 
277*53ee8cc1Swenshuai.xi } HAL_DSCMB_SCBFix;
278*53ee8cc1Swenshuai.xi 
279*53ee8cc1Swenshuai.xi 
280*53ee8cc1Swenshuai.xi typedef enum
281*53ee8cc1Swenshuai.xi {
282*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_SCBFIX_LSAD =          0,
283*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_SCBFIX_ESA  =          1,
284*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_SCBFIX_LSAS =          2,
285*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_SCBFIX_DMXU =          3,
286*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_SCBFIX_DMXL =          4,
287*53ee8cc1Swenshuai.xi } HAL_DSCMB_SCBFix_EngSel;
288*53ee8cc1Swenshuai.xi 
289*53ee8cc1Swenshuai.xi 
290*53ee8cc1Swenshuai.xi 
291*53ee8cc1Swenshuai.xi typedef enum
292*53ee8cc1Swenshuai.xi {
293*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_CIPHER_OUTPUT_SPS0 = 0 ,
294*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_CIPHER_OUTPUT_SPS1 = 1 ,
295*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_CIPHER_OUTPUT_SPS2 = 2 ,
296*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_CIPHER_OUTPUT_SPS3 = 3 ,
297*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_CIPHER_OUTPUT_CLR0 = 4 ,
298*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_CIPHER_OUTPUT_CLR1 = 5 ,
299*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_CIPHER_OUTPUT_CLR2 = 6 ,
300*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_CIPHER_OUTPUT_CLR3 = 7 ,
301*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_CIPHER_OUTPUT_CLR4 = 8 ,
302*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_CIPHER_OUTPUT_CLR5 = 9 ,
303*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_CIPHER_OUTPUT_TSO0 = 10 ,
304*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_CIPHER_OUTPUT_TSO1 = 11 ,
305*53ee8cc1Swenshuai.xi 
306*53ee8cc1Swenshuai.xi } HAL_DSCMB_OutPut_Eng_Sel;
307*53ee8cc1Swenshuai.xi 
308*53ee8cc1Swenshuai.xi 
309*53ee8cc1Swenshuai.xi typedef enum
310*53ee8cc1Swenshuai.xi {
311*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_PARSER_CNT    =       0,
312*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_PARSER_EVENT  =       1,
313*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_PARSER_SCB    =       2,
314*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_PARSER_BADPKT =       3,
315*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_PARSER_2NDHIT =       4,
316*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_PARSER_ESA    =       5,
317*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_PARSER_LSA    =       6,
318*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_PARSER_INFO   =       7,
319*53ee8cc1Swenshuai.xi } HAL_DSCMB_PktParser_Mode;
320*53ee8cc1Swenshuai.xi 
321*53ee8cc1Swenshuai.xi 
322*53ee8cc1Swenshuai.xi //---------------------------
323*53ee8cc1Swenshuai.xi //   KL enumerate
324*53ee8cc1Swenshuai.xi //---------------------------
325*53ee8cc1Swenshuai.xi typedef enum
326*53ee8cc1Swenshuai.xi {
327*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_KL_DST_KT    = 0x0,
328*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_KL_DST_DMA   = 0x1,
329*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_KL_DST_CSSK  = 0x1,
330*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_KL_DST_TSIO  = 0x2,
331*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_KL_DST_ACPU  = 0x4,
332*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_KL_DST_SCPU  = 0x5,
333*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_KL_DST_PRI0  = 0x8,
334*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_KL_DST_PRI1  = 0x9,
335*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_KL_DST_PRI2  = 0xA,
336*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_KL_DST_PRI3  = 0xB,
337*53ee8cc1Swenshuai.xi 
338*53ee8cc1Swenshuai.xi } HAL_DSCMB_KL_Dst;
339*53ee8cc1Swenshuai.xi 
340*53ee8cc1Swenshuai.xi typedef enum
341*53ee8cc1Swenshuai.xi {
342*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_KL_DSTDMA_NA     = 0x0 ,
343*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_KL_DSTDMA_SK0    = 0x0 ,
344*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_KL_DSTDMA_SK1    = 0x1 ,
345*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_KL_DSTDMA_SK2    = 0x2 ,
346*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_KL_DSTDMA_SK3    = 0x3 ,
347*53ee8cc1Swenshuai.xi 
348*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_KL_DSTDMA_SPS0   = 0xf ,
349*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_KL_DSTDMA_SPS1   = 0xf ,
350*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_KL_DSTDMA_SPS2   = 0xf ,
351*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_KL_DSTDMA_SPS3   = 0xf ,
352*53ee8cc1Swenshuai.xi 
353*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_KL_DSTDMA_SPD0   = 0xf ,  //PVR
354*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_KL_DSTDMA_SPD1   = 0xf ,  //PVR
355*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_KL_DSTDMA_SPD2   = 0xf ,  //PVR
356*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_KL_DSTDMA_SPD3   = 0xf ,  //PVR
357*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_KL_DSTDMA_SPD4   = 0xf ,  //PVR
358*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_KL_DSTDMA_SPD5   = 0xf ,  //PVR
359*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_KL_DSTDMA_CSSK   = 0xf ,  //CW
360*53ee8cc1Swenshuai.xi } HAL_DSCMB_KL_DstDma;
361*53ee8cc1Swenshuai.xi 
362*53ee8cc1Swenshuai.xi typedef enum
363*53ee8cc1Swenshuai.xi {
364*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_KL_DST_SP_NA     = 0x0 ,
365*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_KL_DST_SP_SPS0   = 0x4 ,
366*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_KL_DST_SP_SPS1   = 0x5 ,
367*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_KL_DST_SP_SPS2   = 0x6 ,
368*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_KL_DST_SP_SPS3   = 0x7 ,
369*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_KL_DST_SP_SPD0   = 0xC ,
370*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_KL_DST_SP_SPD1   = 0xD ,
371*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_KL_DST_SP_SPD2   = 0x8 ,
372*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_KL_DST_SP_SPD3   = 0x9 ,
373*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_KL_DST_SP_SPD4   = 0xA ,
374*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_KL_DST_SP_SPD5   = 0xB ,
375*53ee8cc1Swenshuai.xi } HAL_DSCMB_KL_DstSP;
376*53ee8cc1Swenshuai.xi 
377*53ee8cc1Swenshuai.xi typedef enum
378*53ee8cc1Swenshuai.xi {
379*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_KL_DSTKT_LSAD    = 0x0 ,
380*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_KL_DSTKT_ESA     = 0x1 ,
381*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_KL_DSTKT_LSAS    = 0x2 ,
382*53ee8cc1Swenshuai.xi } HAL_DSCMB_KL_DstKT;
383*53ee8cc1Swenshuai.xi 
384*53ee8cc1Swenshuai.xi 
385*53ee8cc1Swenshuai.xi typedef enum
386*53ee8cc1Swenshuai.xi {
387*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_KL_SRC_ACPU  = 0,
388*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_KL_SRC_SK1   = 1,
389*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_KL_SRC_SK2   = 2,
390*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_KL_SRC_SK3   = 3,
391*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_KL_SRC_SK4   = 4,
392*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_KL_SRC_SK5   = 5,
393*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_KL_SRC_SK6   = 6,
394*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_KL_SRC_SK7   = 7,
395*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_KL_SRC_SK8   = 8,
396*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_KL_SRC_SK9   = 9,
397*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_KL_SRC_SK10  = 10,
398*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_KL_SRC_SK11  = 11,
399*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_KL_SRC_SK12  = 12,
400*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_KL_SRC_SK13  = 13,
401*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_KL_SRC_SK14  = 14,
402*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_KL_SRC_SK15  = 15,
403*53ee8cc1Swenshuai.xi 
404*53ee8cc1Swenshuai.xi } HAL_DSCMB_KL_Src;
405*53ee8cc1Swenshuai.xi 
406*53ee8cc1Swenshuai.xi typedef enum
407*53ee8cc1Swenshuai.xi {
408*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_KL_TYPE_0   = 0x0,
409*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_KL_TYPE_1   = 0x1,
410*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_KL_TYPE_2   = 0x2,
411*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_KL_TYPE_3   = 0x3,
412*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_KL_TYPE_4   = 0x4,
413*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_KL_TYPE_5   = 0x5,
414*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_KL_TYPE_1_KPR =0x9,
415*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_KL_TYPE_1_2   =0xA,
416*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_KL_TYPE_1_3   =0xB,
417*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_KL_TYPE_5_SMI =0xD,
418*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_KL_TYPE_LUT   =0xF,
419*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_KL_TYPE_INVALID,
420*53ee8cc1Swenshuai.xi } HAL_DSCMB_KL_Type;
421*53ee8cc1Swenshuai.xi 
422*53ee8cc1Swenshuai.xi 
423*53ee8cc1Swenshuai.xi typedef enum
424*53ee8cc1Swenshuai.xi {
425*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_KL_ALGO_TDES  = 0,
426*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_KL_ALGO_AES   = 1,
427*53ee8cc1Swenshuai.xi } HAL_DSCMB_KL_Algo;
428*53ee8cc1Swenshuai.xi 
429*53ee8cc1Swenshuai.xi typedef struct
430*53ee8cc1Swenshuai.xi {
431*53ee8cc1Swenshuai.xi     MS_U32 u32LUT; //LUT3 fill in 512 bytes table, each has 9 bits to describe
432*53ee8cc1Swenshuai.xi     MS_U32 u32M;
433*53ee8cc1Swenshuai.xi     MS_U32 u32BC;
434*53ee8cc1Swenshuai.xi } DSCMB_KL_TA_LUT3;
435*53ee8cc1Swenshuai.xi 
436*53ee8cc1Swenshuai.xi typedef enum
437*53ee8cc1Swenshuai.xi {
438*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_KL_ERR_MSG_KDF,
439*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_KL_ERR_MSG_KL,
440*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_KL_ERR_MSG_AES,
441*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_KL_ERR_MSG_TDES,
442*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_KL_ERR_MSG_LSA,
443*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_KL_ERR_MSG_ESA,
444*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_KL_ERR_MSG_DMA,
445*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_KL_ERR_MSG_TSIO,
446*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_KL_ERR_MSG_UACPU,
447*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_KL_ERR_MSG_SEP,
448*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_KL_ERR_MSG_NONCE,
449*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_KL_ERR_MSG_TYPE,
450*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_KL_ERR_MSG_PRV,
451*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_KL_ERR_MSG_HK,
452*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_KL_ERR_MSG_DACPU,
453*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_KL_ERR_MSG_BADRK,
454*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_KL_ERR_MSG_ILUT,
455*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_KL_ERR_MSG_RSV1,
456*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_KL_ERR_MSG_KLTYPE,
457*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_KL_ERR_MSG_ZERO,
458*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_KL_ERR_MSG_RSV2,
459*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_KL_ERR_MSG_RSV3,
460*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_KL_ERR_MSG_KCV,
461*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_KL_ERR_MSG_BADIK,
462*53ee8cc1Swenshuai.xi 
463*53ee8cc1Swenshuai.xi }HAL_DSCMB_KL_Err_Msg;
464*53ee8cc1Swenshuai.xi 
465*53ee8cc1Swenshuai.xi 
466*53ee8cc1Swenshuai.xi //---------------------------
467*53ee8cc1Swenshuai.xi //    enumerate
468*53ee8cc1Swenshuai.xi //---------------------------
469*53ee8cc1Swenshuai.xi //ts_if
470*53ee8cc1Swenshuai.xi typedef enum
471*53ee8cc1Swenshuai.xi {
472*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_TSIF0 = 0,
473*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_TSIF1 = 1,
474*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_TSIF2 = 2,
475*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_TSIF3 = 3,
476*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_TSIF_NUM,
477*53ee8cc1Swenshuai.xi } HAL_DSCMB_TSIF;
478*53ee8cc1Swenshuai.xi 
479*53ee8cc1Swenshuai.xi //pktDmx
480*53ee8cc1Swenshuai.xi typedef enum
481*53ee8cc1Swenshuai.xi {
482*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_TSID0 = 0,
483*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_TSID1 = 1,
484*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_TSID2 = 2,
485*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_TSID3 = 3,
486*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_TSID_NUM,
487*53ee8cc1Swenshuai.xi } HAL_DSCMB_TSID;
488*53ee8cc1Swenshuai.xi 
489*53ee8cc1Swenshuai.xi typedef enum
490*53ee8cc1Swenshuai.xi {
491*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_CHANNEL0 = 0,
492*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_CHANNEL_NUM,
493*53ee8cc1Swenshuai.xi } HAL_DSCMB_CHANNEL;
494*53ee8cc1Swenshuai.xi 
495*53ee8cc1Swenshuai.xi typedef enum
496*53ee8cc1Swenshuai.xi {
497*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_SPSPVR_NUM,
498*53ee8cc1Swenshuai.xi } HAL_DSCMB_SPSPVR;
499*53ee8cc1Swenshuai.xi 
500*53ee8cc1Swenshuai.xi 
501*53ee8cc1Swenshuai.xi typedef struct
502*53ee8cc1Swenshuai.xi {
503*53ee8cc1Swenshuai.xi     //for read:
504*53ee8cc1Swenshuai.xi     MS_U32 ClrSlotIndex : 7; //bit[6:0] clr slot index
505*53ee8cc1Swenshuai.xi     MS_U32 PktViewDbgInfo : 1; //bit[7]
506*53ee8cc1Swenshuai.xi     MS_U32 OddSlotIndex : 7; //bit[14:8] odd slot index
507*53ee8cc1Swenshuai.xi     MS_U32 PidSlotEn : 1; //bit[15]
508*53ee8cc1Swenshuai.xi     MS_U32 EvenSlotIndex : 7; //bit[22:16] even slot index
509*53ee8cc1Swenshuai.xi     MS_U32 DualSloEn : 1; //bit[23] dualpath_en
510*53ee8cc1Swenshuai.xi     MS_U32 ClrSloEn : 1; //bit[24] clr slot enable
511*53ee8cc1Swenshuai.xi     MS_U32 OddSloEn : 1; //bit[25] odd slot enable
512*53ee8cc1Swenshuai.xi     MS_U32 EvenSloEn : 1; //bit[26] even slot enable
513*53ee8cc1Swenshuai.xi     MS_U32 CA_VID : 5; //bit[31:27] cavid
514*53ee8cc1Swenshuai.xi } PidSlotMapRead_t;
515*53ee8cc1Swenshuai.xi 
516*53ee8cc1Swenshuai.xi typedef struct
517*53ee8cc1Swenshuai.xi {
518*53ee8cc1Swenshuai.xi     //for read:
519*53ee8cc1Swenshuai.xi     MS_U32 Privileged : 1; //bit[32] privileged
520*53ee8cc1Swenshuai.xi     MS_U32 SecurePidSlot : 1; //bit[33] pidslot_is_secure
521*53ee8cc1Swenshuai.xi     MS_U32 Reserved : 30;
522*53ee8cc1Swenshuai.xi } PidSlotMapRead2_t;
523*53ee8cc1Swenshuai.xi 
524*53ee8cc1Swenshuai.xi typedef struct
525*53ee8cc1Swenshuai.xi {
526*53ee8cc1Swenshuai.xi 
527*53ee8cc1Swenshuai.xi     MS_U32 ForceSCB : 2; //bit[1:0]
528*53ee8cc1Swenshuai.xi     MS_U32 NDS_AES_MODE_PI : 1;
529*53ee8cc1Swenshuai.xi     MS_U32 NDS_AES_MODE_EN : 1;
530*53ee8cc1Swenshuai.xi     MS_U32 Reg2_reserve_4_7 : 4;
531*53ee8cc1Swenshuai.xi     MS_U32 IuputSrc : 8;
532*53ee8cc1Swenshuai.xi     MS_U32 LowDest : 8;
533*53ee8cc1Swenshuai.xi     MS_U32 UppDest : 8;
534*53ee8cc1Swenshuai.xi 
535*53ee8cc1Swenshuai.xi     MS_U32 ESA_Decrypt : 1;
536*53ee8cc1Swenshuai.xi     MS_U32 Reg3_reserve_1_11 : 11;
537*53ee8cc1Swenshuai.xi     MS_U32 ESA_SB : 3;
538*53ee8cc1Swenshuai.xi     MS_U32 Reg3_reserve_15 : 1;
539*53ee8cc1Swenshuai.xi     MS_U32 ESA_RES : 3;
540*53ee8cc1Swenshuai.xi     MS_U32 Reg3_reserve_19 : 1;
541*53ee8cc1Swenshuai.xi     MS_U32 ESA_SubAlgo : 4;
542*53ee8cc1Swenshuai.xi     MS_U32 ESA_MainAlgo : 4;
543*53ee8cc1Swenshuai.xi     MS_U32 Reg3_reserve_28_31 : 4;
544*53ee8cc1Swenshuai.xi 
545*53ee8cc1Swenshuai.xi     MS_U32 LSAS_Decrypt : 1;
546*53ee8cc1Swenshuai.xi     MS_U32 Reg4_reserve_1_11 : 11;
547*53ee8cc1Swenshuai.xi     MS_U32 LSAS_SB : 3;
548*53ee8cc1Swenshuai.xi     MS_U32 Reg4_reserve_15 : 1;
549*53ee8cc1Swenshuai.xi     MS_U32 LSAS_RES : 3;
550*53ee8cc1Swenshuai.xi     MS_U32 Reg4_reserve_19 : 1;
551*53ee8cc1Swenshuai.xi     MS_U32 LSAS_SubAlgo : 4;
552*53ee8cc1Swenshuai.xi     MS_U32 LSAS_MainAlgo : 4;
553*53ee8cc1Swenshuai.xi     MS_U32 Reg4_reserve_28_31 : 4;
554*53ee8cc1Swenshuai.xi 
555*53ee8cc1Swenshuai.xi     MS_U32 LSAD_Decrypt : 1;
556*53ee8cc1Swenshuai.xi     MS_U32 Reg5_reserve_1_11 : 11;
557*53ee8cc1Swenshuai.xi     MS_U32 LSAD_SB : 3;
558*53ee8cc1Swenshuai.xi     MS_U32 Reg5_reserve_15 : 1;
559*53ee8cc1Swenshuai.xi     MS_U32 LSAD_RES : 3;
560*53ee8cc1Swenshuai.xi     MS_U32 Reg5_reserve_19 : 1;
561*53ee8cc1Swenshuai.xi     MS_U32 LSAD_SubAlgo : 4;
562*53ee8cc1Swenshuai.xi     MS_U32 LSAD_MainAlgo : 4;
563*53ee8cc1Swenshuai.xi     MS_U32 Reg5_reserve_28_31 : 4;
564*53ee8cc1Swenshuai.xi 
565*53ee8cc1Swenshuai.xi     MS_U32 Low_Switch : 4;
566*53ee8cc1Swenshuai.xi     MS_U32 Upp_Switch : 4;
567*53ee8cc1Swenshuai.xi     MS_U32 DVBCSA_Var : 5;
568*53ee8cc1Swenshuai.xi     MS_U32 Reg6_reserve_13_14 : 2;
569*53ee8cc1Swenshuai.xi     MS_U32 ModifyXrc : 1;
570*53ee8cc1Swenshuai.xi     MS_U32 Permutation : 3;
571*53ee8cc1Swenshuai.xi     MS_U32 CAVid : 5;
572*53ee8cc1Swenshuai.xi     MS_U32 RegCnt : 8;
573*53ee8cc1Swenshuai.xi 
574*53ee8cc1Swenshuai.xi } SwitchReg_Map_t;
575*53ee8cc1Swenshuai.xi 
576*53ee8cc1Swenshuai.xi typedef struct
577*53ee8cc1Swenshuai.xi {
578*53ee8cc1Swenshuai.xi #define ErrStatusMak 0x1FFFFFFF
579*53ee8cc1Swenshuai.xi 	MS_U32 Key_KDF_KeyForbidden : 1;
580*53ee8cc1Swenshuai.xi 	MS_U32 Key_KL_KeyForbidden : 1;
581*53ee8cc1Swenshuai.xi 	MS_U32 Key_AES_KeyForbidden : 1;
582*53ee8cc1Swenshuai.xi 	MS_U32 Key_TDES_KeyForbidden : 1;
583*53ee8cc1Swenshuai.xi 	MS_U32 Key_LSA_KeyForbidden : 1;
584*53ee8cc1Swenshuai.xi 	MS_U32 Key_ESA_KeyForbidden : 1;
585*53ee8cc1Swenshuai.xi 	MS_U32 Key_DMA_KeyForbidden : 1;
586*53ee8cc1Swenshuai.xi 	MS_U32 Key_HMAC_KeyForbidden : 1;
587*53ee8cc1Swenshuai.xi 	MS_U32 Key_ACPU_KeyForbidden : 1;
588*53ee8cc1Swenshuai.xi 	MS_U32 Key_SEP_KeyForbidden : 1;
589*53ee8cc1Swenshuai.xi 	MS_U32 Key_LUT_KeyForbidden : 1;
590*53ee8cc1Swenshuai.xi 	MS_U32 Key_Type_KeyForbidden : 1;
591*53ee8cc1Swenshuai.xi 	MS_U32 Key_PrivateKey_KeyForbidden : 1;
592*53ee8cc1Swenshuai.xi 	MS_U32 Key_SW_KeyForbidden : 1;
593*53ee8cc1Swenshuai.xi 	MS_U32 Key_Reserve : 1;
594*53ee8cc1Swenshuai.xi 	MS_U32 Key_BadRootKey : 1;
595*53ee8cc1Swenshuai.xi 
596*53ee8cc1Swenshuai.xi 	MS_U32 KL_LUT_NotInit : 1;
597*53ee8cc1Swenshuai.xi 	MS_U32 KL_LUT_GenWithoutSWReset : 1;
598*53ee8cc1Swenshuai.xi 	MS_U32 KL_NotSupportKLType  : 1;
599*53ee8cc1Swenshuai.xi 	MS_U32 KL_ZeroOrder : 1;
600*53ee8cc1Swenshuai.xi 	MS_U32 KL_Reserve : 2;
601*53ee8cc1Swenshuai.xi 	MS_U32 KL_LUT0_Err : 1;
602*53ee8cc1Swenshuai.xi 	MS_U32 KL_BadInternalKey : 1;
603*53ee8cc1Swenshuai.xi 
604*53ee8cc1Swenshuai.xi 	MS_U32 KeyBus_Resp : 5;
605*53ee8cc1Swenshuai.xi 		#define KeyBusRespMsk            0x1F
606*53ee8cc1Swenshuai.xi 		#define KeyBusRespOK             0x0
607*53ee8cc1Swenshuai.xi 		#define KeyBusNoSlot             0x1F
608*53ee8cc1Swenshuai.xi 		#define KeyBusNotAllowToWriteKey 0x19
609*53ee8cc1Swenshuai.xi 		#define KeyBusAllOneOrZeroKey    0x10
610*53ee8cc1Swenshuai.xi 
611*53ee8cc1Swenshuai.xi 	MS_U32 KeyBus_Done : 1;
612*53ee8cc1Swenshuai.xi 
613*53ee8cc1Swenshuai.xi 	MS_U32 Biss_AllowWriteKey : 1;
614*53ee8cc1Swenshuai.xi 	MS_U32 Biss_WriteKeyError : 1;
615*53ee8cc1Swenshuai.xi 
616*53ee8cc1Swenshuai.xi }KL_RegErrFlag_t;
617*53ee8cc1Swenshuai.xi 
618*53ee8cc1Swenshuai.xi 
619*53ee8cc1Swenshuai.xi #if 1 //put here temp, when sps/spd read, and want to open api, put these to drvDSCMB.h
620*53ee8cc1Swenshuai.xi typedef struct
621*53ee8cc1Swenshuai.xi {
622*53ee8cc1Swenshuai.xi     MS_U32                  pPvrBuf0;       ///< DMX PVR buffer 0 starting address
623*53ee8cc1Swenshuai.xi     MS_U32                  pPvrBuf1;       ///< DMX PVR buffer 1 starting address
624*53ee8cc1Swenshuai.xi     MS_U32                  u32PvrBufSize0;    ///< DMX PVR buffer 0 size
625*53ee8cc1Swenshuai.xi     MS_U32                  u32PvrBufSize1;    ///< DMX PVR buffer 1 size
626*53ee8cc1Swenshuai.xi     MS_U32                  u32ChannelEngId;
627*53ee8cc1Swenshuai.xi     MS_BOOL                 bEncrypt;
628*53ee8cc1Swenshuai.xi } DSCMB_SPSPVR_Info;
629*53ee8cc1Swenshuai.xi 
630*53ee8cc1Swenshuai.xi 
631*53ee8cc1Swenshuai.xi typedef enum
632*53ee8cc1Swenshuai.xi {
633*53ee8cc1Swenshuai.xi     E_DSCMB_SPSPVR_ENG0 = 0 ,
634*53ee8cc1Swenshuai.xi     E_DSCMB_SPSPVR_ENG1 = 1 ,
635*53ee8cc1Swenshuai.xi     E_DSCMB_SPSPVR_ENG2 = 2 ,
636*53ee8cc1Swenshuai.xi     E_DSCMB_SPSPVR_ENG3 = 3 ,
637*53ee8cc1Swenshuai.xi     E_DSCMB_SPSPVR_ENG_NUM,
638*53ee8cc1Swenshuai.xi } DSCMB_SPSPVR_ENG;
639*53ee8cc1Swenshuai.xi 
640*53ee8cc1Swenshuai.xi #endif
641*53ee8cc1Swenshuai.xi 
642*53ee8cc1Swenshuai.xi typedef enum
643*53ee8cc1Swenshuai.xi {
644*53ee8cc1Swenshuai.xi     // descrambler engine
645*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_CAP_ENGINE_NUM,
646*53ee8cc1Swenshuai.xi     // descrambler slot
647*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_CAP_FLT_NUM,
648*53ee8cc1Swenshuai.xi     // descrambler type supported
649*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_CAP_SUPPORT_ALGORITHM,
650*53ee8cc1Swenshuai.xi     // descrambler mapping, start tsp pid filter
651*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_CAP_PIDFILTER_MAP_START,
652*53ee8cc1Swenshuai.xi     // descrambler mapping, end tsp pid filter
653*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_CAP_PIDFILTER_MAP_END,
654*53ee8cc1Swenshuai.xi     // share key slot max number
655*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_CAP_SHARE_KEY_SLOT_NUM,
656*53ee8cc1Swenshuai.xi     // share key slot max number
657*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_CAP_SHARE_KEY_SLOT_MAX_NUM,
658*53ee8cc1Swenshuai.xi     // share key region number
659*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_CAP_SHARE_KEY_REGION_NUM,
660*53ee8cc1Swenshuai.xi     // share key region start
661*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_CAP_SHARE_KEY_REGION_START,
662*53ee8cc1Swenshuai.xi     // share key region end
663*53ee8cc1Swenshuai.xi     E_HAL_DSCMB_CAP_SHARE_KEY_REGION_END,
664*53ee8cc1Swenshuai.xi } HAL_DSCMB_Query_Type;
665*53ee8cc1Swenshuai.xi 
666*53ee8cc1Swenshuai.xi 
667*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------
668*53ee8cc1Swenshuai.xi //   function Declaration
669*53ee8cc1Swenshuai.xi //--------------------------------------------------------------------------
670*53ee8cc1Swenshuai.xi MS_BOOL HAL_DSCMB_SetBank(MS_VIRT u32Bank);
671*53ee8cc1Swenshuai.xi MS_BOOL HAL_DSCMB_GetBank(MS_VIRT * u32Bank);
672*53ee8cc1Swenshuai.xi MS_BOOL HAL_DSCMB_Init(void);
673*53ee8cc1Swenshuai.xi MS_BOOL HAL_DSCMB_OTPEnDSCMB(void);
674*53ee8cc1Swenshuai.xi MS_BOOL HAL_DSCMB_SetCAVid(MS_U32 u32CAVid);
675*53ee8cc1Swenshuai.xi MS_U32  HAL_DSCMB_GetCAVid(void);
676*53ee8cc1Swenshuai.xi MS_BOOL HAL_DSCMB_GetCap(MS_U32 u32EngId, HAL_DSCMB_Query_Type eQueryType, void* pInData, void* pOutData);
677*53ee8cc1Swenshuai.xi 
678*53ee8cc1Swenshuai.xi void    HAL_DSCMB_ReadPidSlotMap(MS_U32 u32FltId,PidSlotMapRead_t *pReadData);
679*53ee8cc1Swenshuai.xi MS_BOOL HAL_DSCMB_CC_Respin(MS_U32 u32CHNum, MS_U32 u32Tsid, MS_BOOL bEnable);
680*53ee8cc1Swenshuai.xi 
681*53ee8cc1Swenshuai.xi void   HAL_DSCMB_SetDBGLevel(MS_U32 u32Level);
682*53ee8cc1Swenshuai.xi 
683*53ee8cc1Swenshuai.xi 
684*53ee8cc1Swenshuai.xi //////////////////////////////////////
685*53ee8cc1Swenshuai.xi //////                                               ////
686*53ee8cc1Swenshuai.xi //////     PidSlotMap Control function     ///
687*53ee8cc1Swenshuai.xi //////                                               ////
688*53ee8cc1Swenshuai.xi //////////////////////////////////////
689*53ee8cc1Swenshuai.xi MS_BOOL HAL_DSCMB_PidIdx_SetCAVid(MS_U32 u32fltid , MS_U32 u32CAVid );
690*53ee8cc1Swenshuai.xi MS_BOOL HAL_DSCMB_PidIdx_SetTsId(MS_U32 u32fltid , MS_U32 u32TsId );
691*53ee8cc1Swenshuai.xi MS_BOOL HAL_DSCMB_PidIdx_SetSlotKeyIdx(MS_U32 u32FltId,DSCMB_Key_Type key, MS_U32 keyIdx);
692*53ee8cc1Swenshuai.xi MS_BOOL HAL_DSCMB_PidIdx_ClearSlotKeyIdx(MS_U32 u32FltId,DSCMB_Key_Type key);
693*53ee8cc1Swenshuai.xi MS_BOOL HAL_DSCMB_PidIdx_EnableSlot(MS_U32 u32FltId);
694*53ee8cc1Swenshuai.xi MS_BOOL HAL_DSCMB_PidIdx_DisableSlot(MS_U32 u32FltId);
695*53ee8cc1Swenshuai.xi MS_BOOL HAL_DSCMB_PidIdx_DualPath(MS_U32 u32fltid , MS_BOOL bDual );
696*53ee8cc1Swenshuai.xi MS_BOOL HAL_DSCMB_PidIdx_Enable(MS_U32 u32fltid , MS_BOOL bEnable);
697*53ee8cc1Swenshuai.xi MS_BOOL HAL_DSCMB_PidIdx_SetSecure(MS_U32 u32fltid , MS_BOOL bSecure);
698*53ee8cc1Swenshuai.xi MS_BOOL HAL_DSCMB_PidIdx_SetPrivilege(MS_U32 u32fltid , MS_BOOL bEnable );
699*53ee8cc1Swenshuai.xi 
700*53ee8cc1Swenshuai.xi 
701*53ee8cc1Swenshuai.xi ////////////////////////////////////////////
702*53ee8cc1Swenshuai.xi //////                                                          ////
703*53ee8cc1Swenshuai.xi //////     Slot Control function  (Key & Switch)   ///
704*53ee8cc1Swenshuai.xi //////                                                          ////
705*53ee8cc1Swenshuai.xi /////////////////////////////////////////////
706*53ee8cc1Swenshuai.xi 
707*53ee8cc1Swenshuai.xi // Key-specific FSCB
708*53ee8cc1Swenshuai.xi #define ENABLE_KEY_FSCB
709*53ee8cc1Swenshuai.xi void HAL_DSCMB_KTE_Clear_KeyFSCB(MS_U32 u32fltid);
710*53ee8cc1Swenshuai.xi void HAL_DSCMB_KTE_Copy_KeyFSCB(MS_U32 u32fltid_Src, MS_U32 u32fltid_Dst);
711*53ee8cc1Swenshuai.xi MS_BOOL HAL_DSCMB_KTE_Write_KeyFSCB(MS_U32 u32FltId, MS_U32 u32KteSel, DSCMB_Key_Type eKeyType, HAL_DSCMB_FSCB eForceSCB);
712*53ee8cc1Swenshuai.xi 
713*53ee8cc1Swenshuai.xi MS_BOOL HAL_DSCMB_KTE_Read_Switch(MS_U32 u32fltid, DSCMB_Key_Type type, MS_U32 u32CAVid, MS_U32 *u32data);
714*53ee8cc1Swenshuai.xi MS_BOOL HAL_DSCMB_KTE_Write_Key(MS_U32 u32fltid, DSCMB_Key_Type type,DSCMB_Eng_Type wtype, MS_U32 u32CAVid, MS_U8* u8key);
715*53ee8cc1Swenshuai.xi MS_BOOL HAL_DSCMB_KTE_Write_RIV(MS_U32 u32FltId, DSCMB_Key_Type eType, MS_U32 u32CAVid, MS_U8* u8key, MS_U32 u32RIVIdx);
716*53ee8cc1Swenshuai.xi MS_BOOL HAL_DSCMB_KTE_Write_IV(MS_U32 u32FltId, DSCMB_Key_Type eType, MS_U32 u32CAVid, MS_U8* u8key );
717*53ee8cc1Swenshuai.xi MS_BOOL HAL_DSCMB_KTE_Write_IV_Ex(MS_U32 u32FltId, DSCMB_Key_Type eType, DSCMB_Eng_Type wType, MS_U32 u32CAVid, MS_U8* u8key );
718*53ee8cc1Swenshuai.xi MS_BOOL HAL_DSCMB_KTE_Key_Ctrl (MS_U32 u32fltid, DSCMB_Key_Type type, DSCMB_Eng_Type wtype, MS_U32 u32CAVid, MS_BOOL bEnable );
719*53ee8cc1Swenshuai.xi MS_BOOL HAL_DSCMB_KTE_Key_Ctrl_Ex(MS_U32 u32FltId, DSCMB_Key_Type eType, DSCMB_Eng_Type wType, MS_U32 u32CAVid, MS_BOOL bEnable, MS_BOOL bIsKL);
720*53ee8cc1Swenshuai.xi MS_BOOL HAL_DSCMB_KTE_IV_Ctrl(MS_U32 u32FltId, DSCMB_Key_Type eType, MS_U32 u32CAVid, MS_BOOL bEnable );
721*53ee8cc1Swenshuai.xi MS_BOOL HAL_DSCMB_KTE_IV_Ctrl_Ex(MS_U32 u32FltId, DSCMB_Key_Type eType, DSCMB_Eng_Type wType, MS_U32 u32CAVid, MS_BOOL bEnable );
722*53ee8cc1Swenshuai.xi 
723*53ee8cc1Swenshuai.xi MS_BOOL HAL_DSCMB_KTE_Write_Algo(MS_U32 u32fltid,DSCMB_Key_Type eKeyType,DSCMB_Eng_Type eEngType , MS_U32 u32CAVid,
724*53ee8cc1Swenshuai.xi                                  DSCMB_MainAlgo_Type eAlgoType, DSCMB_SubAlgo_Type eSubAlgo,
725*53ee8cc1Swenshuai.xi                                  DSCMB_ResSBAlgo_Type eRes, DSCMB_ResSBAlgo_Type eSB ,
726*53ee8cc1Swenshuai.xi                                  MS_BOOL bDecrypt );
727*53ee8cc1Swenshuai.xi MS_BOOL HAL_DSCMB_KTE_Write_Switch(MS_U32 u32fltid, DSCMB_Key_Type eKeyType, MS_U32 u32CAVid, MS_U32 UppSwitch, MS_U32 LowSwitch);
728*53ee8cc1Swenshuai.xi MS_BOOL HAL_DSCMB_KTE_Write_Permu(MS_U32 u32fltid ,DSCMB_Key_Type eKeyType, MS_U32 u32CAVid, MS_U32 u32per);
729*53ee8cc1Swenshuai.xi MS_BOOL HAL_DSCMB_KTE_Write_SBOX(MS_U32 u32fltid ,DSCMB_Key_Type eKeyType, MS_U32 u32CAVid, MS_U32 u32Sbox, MS_BOOL bCSA2Mode);
730*53ee8cc1Swenshuai.xi MS_BOOL HAL_DSCMB_KTE_GetStatus(MS_U32 u32fltid ,DSCMB_Key_Type eKeyType, MS_U32 *KeyStatus);
731*53ee8cc1Swenshuai.xi MS_BOOL HAL_DSCMB_KTE_Write_SrcDst(MS_U32 u32fltid ,DSCMB_Key_Type eKeyType, MS_U32 u32CAVid, MS_U32 Src, MS_U32 UppDst, MS_U32 LowDst);
732*53ee8cc1Swenshuai.xi MS_BOOL HAL_DSCMB_KTE_Write_FSCB(MS_U32 u32FltId ,DSCMB_Key_Type eKeyType, MS_U32 u32CAVid, DSCMB_FSCB eForceSCB);
733*53ee8cc1Swenshuai.xi MS_BOOL HAL_DSCMB_KTE_Write_PacketSwitch(MS_U32 u32FltId ,DSCMB_Key_Type eKeyType, MS_U32 u32CAVid, DSCMB_Eng_Type eUppSwitch, DSCMB_Eng_Type eLowSwitch);
734*53ee8cc1Swenshuai.xi 
735*53ee8cc1Swenshuai.xi // Set Multi2 syskey //
736*53ee8cc1Swenshuai.xi MS_BOOL HAL_DSCMB_KTE_Write_MULTI2_SysKey(MS_U8* Key , MS_U32 u32Len);
737*53ee8cc1Swenshuai.xi MS_BOOL HAL_DSCMB_KTE_Write_MULTI2_Round(MS_U32 u32Round) ;
738*53ee8cc1Swenshuai.xi 
739*53ee8cc1Swenshuai.xi MS_BOOL HAL_DSCMB_KTE_HW_SEM_Lock(MS_U32 u32WaitMs);
740*53ee8cc1Swenshuai.xi MS_BOOL HAL_DSCMB_KTE_HW_SEM_Unlock(void);
741*53ee8cc1Swenshuai.xi 
742*53ee8cc1Swenshuai.xi /////////////////////////////////////////////
743*53ee8cc1Swenshuai.xi //////                                                           ////
744*53ee8cc1Swenshuai.xi //////     Cipher Channel function                     ////
745*53ee8cc1Swenshuai.xi //////                                                          ////
746*53ee8cc1Swenshuai.xi /////////////////////////////////////////////
747*53ee8cc1Swenshuai.xi 
748*53ee8cc1Swenshuai.xi MS_BOOL HAL_DSCMB_Cipher_DualPath(MS_U32 u32CHNum, MS_BOOL bEnable);
749*53ee8cc1Swenshuai.xi MS_BOOL HAL_DSCMB_Cipher_TCSA3(MS_U32 u32CHNum, MS_BOOL bEnable);
750*53ee8cc1Swenshuai.xi 
751*53ee8cc1Swenshuai.xi MS_BOOL HAL_DSCMB_Cipher_Set_SCBFix(MS_U32 EngId ,MS_U32 u32tsif ,HAL_DSCMB_SCBFix_EngSel eEngSel ,
752*53ee8cc1Swenshuai.xi                                     HAL_DSCMB_SCBFix eSCBFix);
753*53ee8cc1Swenshuai.xi 
754*53ee8cc1Swenshuai.xi MS_U32 HAL_DSCMB_Cipher_Output_Ctrl(HAL_DSCMB_OutPut_Eng_Sel EngId, MS_U32 u32ChlSel , MS_BOOL bEnable , MS_BOOL bEncrypt ,
755*53ee8cc1Swenshuai.xi                                     MS_U32 u32TsId , MS_U32 u32CaVid) ;
756*53ee8cc1Swenshuai.xi 
757*53ee8cc1Swenshuai.xi MS_BOOL HAL_DSCMB_Cipher_ES_SetStaticKey(MS_U32 u32EngId, MS_U8 *pu8StaticKey, MS_U32 u32KeyLen);
758*53ee8cc1Swenshuai.xi 
759*53ee8cc1Swenshuai.xi MS_U32 HAL_DSCMB_PktParser_Ctrl( MS_U32 u32Eng, MS_U32 u32tsif, MS_BOOL bRst, MS_U32 u32Range ,
760*53ee8cc1Swenshuai.xi                                  HAL_DSCMB_PktParser_Mode u32viewer, MS_BOOL bEnable );
761*53ee8cc1Swenshuai.xi 
762*53ee8cc1Swenshuai.xi // TSP control
763*53ee8cc1Swenshuai.xi void HAL_DSCMB_SetTSPCADst(MS_U32 fltId, MS_U32 u32UpDst, MS_U32 u32LowDst);
764*53ee8cc1Swenshuai.xi void HAL_DSCMB_SetTSPPidSlotMap(MS_U32 u32FltId, MS_U32 u32PidSlotMapNo);
765*53ee8cc1Swenshuai.xi void HAL_DSCMB_PidFlt_EnableKey(MS_U32 fltId, MS_BOOL bEnable);
766*53ee8cc1Swenshuai.xi void HAL_DSCMB_Get_TsidInput(MS_U32 u32FltId, MS_U32 *u32Tsid);
767*53ee8cc1Swenshuai.xi void HAL_DSCMB_ConnectPath(MS_U32 u32Idx ,MS_BOOL bEnable);
768*53ee8cc1Swenshuai.xi void HAL_DSCMB_SetTSPCAVid(MS_U32 u32Tsid, MS_U32 CAVid);
769*53ee8cc1Swenshuai.xi void HAL_DSCMB_PidFlt_2ndPid(MS_U32 u32FltId, MS_BOOL bEnable);
770*53ee8cc1Swenshuai.xi void HAL_DSCMB_PidFlt_PIDPair(MS_U32 u32FltId, MS_U32 u32PPNo, MS_BOOL bEnable);
771*53ee8cc1Swenshuai.xi MS_BOOL HAL_DSCMB_ClearPidPairStatus(MS_U32 u32TsSrc, MS_U32 u32PidPairNum);
772*53ee8cc1Swenshuai.xi MS_BOOL HAL_DSCMB_PidFlt_SetPidPair(MS_U32 u32FltIdPri, MS_U32 u32FltIdSec);
773*53ee8cc1Swenshuai.xi MS_BOOL HAL_DSCMB_PidFlt_ClearPidPair(MS_U32 u32FltIdPri, MS_U32 u32FltIdSec);
774*53ee8cc1Swenshuai.xi MS_U32  HAL_DSCMB_PidFlt_GetPid(MS_U32 u32FltId);
775*53ee8cc1Swenshuai.xi 
776*53ee8cc1Swenshuai.xi // New
777*53ee8cc1Swenshuai.xi MS_U32  HAL_DSCMB_FltSrc2TSIF(DSCMB_TSIF ePidFltSrc);
778*53ee8cc1Swenshuai.xi MS_U32  HAL_DSCMB_FltSrc2PktDmx(DSCMB_TSIF ePidFltSrc);
779*53ee8cc1Swenshuai.xi MS_BOOL HAL_DSCMB_SPD_Enable(MS_U32 tsif);
780*53ee8cc1Swenshuai.xi MS_BOOL HAL_DSCMB_SPD_Disable(MS_U32 tsif);
781*53ee8cc1Swenshuai.xi MS_BOOL HAL_DSCMB_SPD_Reset(MS_U32 tsif);
782*53ee8cc1Swenshuai.xi void    HAL_DSCMB_PrintSwitchSetup(MS_U32 u32FltId, DSCMB_Key_Type type, MS_U32 u32CAVid);
783*53ee8cc1Swenshuai.xi void    HAL_DSCMB_PktParser_PrintEvent(MS_U32 event);
784*53ee8cc1Swenshuai.xi MS_U32  HAL_DSCMB_GetProgId(DSCMB_CAPVR_MODE eCaMode);
785*53ee8cc1Swenshuai.xi MS_U32  HAL_DSCMB_GetChannlId(DSCMB_TSIF ePidFltSrc);
786*53ee8cc1Swenshuai.xi MS_BOOL HAL_DSCMB_Cipher_SPS_Enable(HAL_DSCMB_OutPut_Eng_Sel EngId, MS_BOOL bEncrypt);
787*53ee8cc1Swenshuai.xi MS_BOOL HAL_DSCMB_PES_Enable(MS_U32 u32CHNum, MS_U32 u32Tsid, MS_BOOL bEnable);
788*53ee8cc1Swenshuai.xi 
789*53ee8cc1Swenshuai.xi 
790*53ee8cc1Swenshuai.xi // Key Ladder Functions //
791*53ee8cc1Swenshuai.xi MS_BOOL HAL_DSCMB_KL_Start( DSCMB_KL_SelEng eKLEng );
792*53ee8cc1Swenshuai.xi MS_BOOL HAL_DSCMB_KL_Reset(DSCMB_KL_SelEng eKLEng) ;
793*53ee8cc1Swenshuai.xi MS_BOOL HAL_DSCMB_KL_KeyProp(DSCMB_KL_SelEng eKLEng, MS_U32 u32CAVid, MS_U32 u32KeyUsg, MS_U32 u32KeyEtpy);
794*53ee8cc1Swenshuai.xi MS_BOOL HAL_DSCMB_KL_KeyBus_Ex(DSCMB_KL_SelEng eKLEng, MS_U32 u32FltId, MS_U32 u32Field, DSCMB_Key_Type eKeyType, DSCMB_KLDst eDst, HAL_DSCMB_FSCB eFSCB);
795*53ee8cc1Swenshuai.xi MS_BOOL HAL_DSCMB_KL_KeyBus(DSCMB_KL_SelEng eKLEng, MS_U32 u32FltId, MS_U32 u32Field, DSCMB_Key_Type eKeyType, DSCMB_KLDst eDst);
796*53ee8cc1Swenshuai.xi MS_BOOL HAL_DSCMB_KL_Ctrl(DSCMB_KL_SelEng eKLEng, DSCMB_KLEng eAlgo, DSCMB_KLType eType, DSCMB_KLSrc eSrc, DSCMB_KLDst eDst);
797*53ee8cc1Swenshuai.xi MS_BOOL HAL_DSCMB_KL_GetACPUOut(DSCMB_KL_SelEng eKLEng, MS_U8 *pu8Key, MS_U32 u32Size);
798*53ee8cc1Swenshuai.xi MS_BOOL HAL_DSCMB_KL_ACPURootKey(DSCMB_KL_SelEng eKLEng, MS_U8 *pu8Key);
799*53ee8cc1Swenshuai.xi MS_BOOL HAL_DSCMB_KL_Input(DSCMB_KL_SelEng eKLEng, MS_U32 u32In, MS_U8 *pu8Key);
800*53ee8cc1Swenshuai.xi MS_BOOL HAL_DSCMB_KL_ErrStatus(DSCMB_KL_SelEng eKLEng);
801*53ee8cc1Swenshuai.xi MS_BOOL HAL_DSCMB_KL_ErrMsg(DSCMB_KL_SelEng eKLEng, MS_U32 *pu32ErrMsg);
802*53ee8cc1Swenshuai.xi MS_BOOL HAL_DSCMB_KL_KDF_Busy(DSCMB_KL_SelEng eKLEng, MS_BOOL *pbBusy);
803*53ee8cc1Swenshuai.xi MS_BOOL HAL_DSCMB_KL_TCSA3_CHSel(MS_U32 u32Ch);
804*53ee8cc1Swenshuai.xi MS_BOOL HAL_DSCMB_KL_TCSA3_Start(void);
805*53ee8cc1Swenshuai.xi MS_BOOL HAL_DSCMB_KL_TCSA3_ActCode(MS_U8 *pu8Code, MS_U32 u32Size);
806*53ee8cc1Swenshuai.xi 
807*53ee8cc1Swenshuai.xi MS_BOOL HAL_DSCMB_KL_TA_LUT3(DSCMB_KL_SelEng eKLEng, DSCMB_KL_TA_LUT3 *LUT3Tab);
808*53ee8cc1Swenshuai.xi MS_BOOL HAL_DSCMB_KL_TA_EncCW(DSCMB_KL_SelEng eKLEng, MS_U8 *pu8EncCW);
809*53ee8cc1Swenshuai.xi MS_BOOL HAL_DSCMB_KL_TA_EN(DSCMB_KL_SelEng eKLEng, MS_BOOL bTAEn);
810*53ee8cc1Swenshuai.xi 
811*53ee8cc1Swenshuai.xi MS_BOOL HAL_DSCMB_KL_ETSI_Nonce(DSCMB_KL_SelEng eKLEng, MS_U8 *pu8Nonce);
812*53ee8cc1Swenshuai.xi MS_BOOL HAL_DSCMB_KL_ETSI_Response(DSCMB_KL_SelEng eKLEng, MS_U8 *pu8Response);
813*53ee8cc1Swenshuai.xi void    HAL_DSCMB_KL_KDF_Disable( DSCMB_KL_SelEng  eKLEng);
814*53ee8cc1Swenshuai.xi void    HAL_DSCMB_KL_KDF_Enable( DSCMB_KL_SelEng  eKLEng, KDF_TYPE eKDFType, MS_U16  u16AppId, KDF_HW_KEY_SEL eHWKeyId);
815*53ee8cc1Swenshuai.xi 
816*53ee8cc1Swenshuai.xi MS_BOOL HAL_DSCMB_KL_SP_KeyCtrl(DSCMB_KL_SelEng  eKLEng, DSCMB_KLDst eDst);
817*53ee8cc1Swenshuai.xi MS_BOOL HAL_DSCMB_KL_SP_SetIV(DSCMB_KL_SelEng  eKLEng, MS_U8 *pu8IV);
818*53ee8cc1Swenshuai.xi MS_BOOL HAL_DSCMB_KL_SP_Start(DSCMB_KL_SelEng eKLEng);
819*53ee8cc1Swenshuai.xi 
820*53ee8cc1Swenshuai.xi MS_BOOL HAL_DSCMB_KL_HW_SEM_Lock(DSCMB_KL_SelEng eKLEng, MS_U32 u32WaitMs);
821*53ee8cc1Swenshuai.xi MS_BOOL HAL_DSCMB_KL_HW_SEM_Unlock(DSCMB_KL_SelEng eKLEng);
822*53ee8cc1Swenshuai.xi 
823*53ee8cc1Swenshuai.xi void HAL_DSCMB_KL_DstSecure(DSCMB_KL_SelEng eKLEng, MS_BOOL bDstSecure);
824*53ee8cc1Swenshuai.xi 
825*53ee8cc1Swenshuai.xi #endif
826