xref: /utopia/UTPA2-700.0.x/mxlib/include/drvDSCMB_v2.h (revision 53ee8cc121a030b8d368113ac3e966b4705770ef)
1*53ee8cc1Swenshuai.xi #ifndef __DRV_DSCMB_V2_H__
2*53ee8cc1Swenshuai.xi #define __DRV_DSCMB_V2_H__
3*53ee8cc1Swenshuai.xi 
4*53ee8cc1Swenshuai.xi #include "drvDSCMB.h"
5*53ee8cc1Swenshuai.xi 
6*53ee8cc1Swenshuai.xi #ifdef __cplusplus
7*53ee8cc1Swenshuai.xi extern "C"
8*53ee8cc1Swenshuai.xi {
9*53ee8cc1Swenshuai.xi #endif
10*53ee8cc1Swenshuai.xi 
11*53ee8cc1Swenshuai.xi #define DSCMB_IV_LENGTH 16
12*53ee8cc1Swenshuai.xi #define DSCMB_KEY_LENGTH 16
13*53ee8cc1Swenshuai.xi #define DSCMB_HDCP2_RIV_LENGTH 8
14*53ee8cc1Swenshuai.xi #define DSCMB_MULTI2_SYSKEY_LENGTH 32
15*53ee8cc1Swenshuai.xi 
16*53ee8cc1Swenshuai.xi typedef enum {
17*53ee8cc1Swenshuai.xi     E_DSCMB_ENG0,
18*53ee8cc1Swenshuai.xi     E_DSCMB_ENG1,
19*53ee8cc1Swenshuai.xi     E_DSCMB_ENG2,
20*53ee8cc1Swenshuai.xi     E_DSCMB_UNKNOWN,
21*53ee8cc1Swenshuai.xi } eDscmbEngID;
22*53ee8cc1Swenshuai.xi 
23*53ee8cc1Swenshuai.xi typedef enum {
24*53ee8cc1Swenshuai.xi     /* Init and exit */
25*53ee8cc1Swenshuai.xi     E_MDRV_CMD_DSCMB_Init,
26*53ee8cc1Swenshuai.xi     E_MDRV_CMD_DSCMB_Exit,
27*53ee8cc1Swenshuai.xi     E_MDRV_CMD_DSCMB_SetPowerState,
28*53ee8cc1Swenshuai.xi 
29*53ee8cc1Swenshuai.xi     E_MDRV_CMD_DSCMB_FltAlloc,
30*53ee8cc1Swenshuai.xi     E_MDRV_CMD_DSCMB_FltFree,
31*53ee8cc1Swenshuai.xi     E_MDRV_CMD_DSCMB_FltConnectFltId,
32*53ee8cc1Swenshuai.xi     E_MDRV_CMD_DSCMB_FltConnectPid,
33*53ee8cc1Swenshuai.xi     E_MDRV_CMD_DSCMB_FltDisconnectFltId,
34*53ee8cc1Swenshuai.xi     E_MDRV_CMD_DSCMB_FltDisconnectPid,
35*53ee8cc1Swenshuai.xi 
36*53ee8cc1Swenshuai.xi     /* basic configuration*/
37*53ee8cc1Swenshuai.xi     E_MDRV_CMD_DSCMB_FltDscmb,
38*53ee8cc1Swenshuai.xi     E_MDRV_CMD_DSCMB_FltTypeSet,
39*53ee8cc1Swenshuai.xi     E_MDRV_CMD_DSCMB_FltKeySet,
40*53ee8cc1Swenshuai.xi     E_MDRV_CMD_DSCMB_FltKeyReset,
41*53ee8cc1Swenshuai.xi     E_MDRV_CMD_DSCMB_FltIVSet,
42*53ee8cc1Swenshuai.xi 
43*53ee8cc1Swenshuai.xi     E_MDRV_CMD_DSCMB_HDCP2_SetRiv,
44*53ee8cc1Swenshuai.xi     E_MDRV_CMD_DSCMB_Multi2_SetRound,
45*53ee8cc1Swenshuai.xi     E_MDRV_CMD_DSCMB_Multi2_SetSysKey,
46*53ee8cc1Swenshuai.xi     E_MDRV_CMD_DSCMB_ES_SetStaticKey,
47*53ee8cc1Swenshuai.xi     E_MDRV_CMD_DSCMB_PidFlt_ScmbStatus,
48*53ee8cc1Swenshuai.xi     E_MDRV_CMD_DSCMB_PVR_RecCtrl,
49*53ee8cc1Swenshuai.xi 
50*53ee8cc1Swenshuai.xi     /* advanced configuration*/
51*53ee8cc1Swenshuai.xi     E_MDRV_CMD_DSCMB_SetDefaultCAVid,
52*53ee8cc1Swenshuai.xi     E_MDRV_CMD_DSCMB_EngSetAlgo,
53*53ee8cc1Swenshuai.xi     E_MDRV_CMD_DSCMB_EngSetKeyFSCB,
54*53ee8cc1Swenshuai.xi     E_MDRV_CMD_DSCMB_EngSetKey,
55*53ee8cc1Swenshuai.xi     E_MDRV_CMD_DSCMB_EngResetKey,
56*53ee8cc1Swenshuai.xi     E_MDRV_CMD_DSCMB_EngSetIV,
57*53ee8cc1Swenshuai.xi     E_MDRV_CMD_DSCMB_EngSetSwitch,
58*53ee8cc1Swenshuai.xi     E_MDRV_CMD_DSCMB_EngSetFSCB,
59*53ee8cc1Swenshuai.xi 
60*53ee8cc1Swenshuai.xi     /*Key ladder*/
61*53ee8cc1Swenshuai.xi     E_MDRV_CMD_DSCMB_KLadder_AtomicExec,
62*53ee8cc1Swenshuai.xi     E_MDRV_CMD_DSCMB_KLadder_ETSI,
63*53ee8cc1Swenshuai.xi 
64*53ee8cc1Swenshuai.xi     /*System info*/
65*53ee8cc1Swenshuai.xi     E_MDRV_CMD_DSCMB_QueryCap,
66*53ee8cc1Swenshuai.xi     E_MDRV_CMD_DSCMB_SetDBGLevel,
67*53ee8cc1Swenshuai.xi     E_MDRV_CMD_DSCMB_GetLibVer,
68*53ee8cc1Swenshuai.xi     E_MDRV_CMD_DSCMB_GetConnectStatus,
69*53ee8cc1Swenshuai.xi     E_MDRV_CMD_DSCMB_OptConfig,
70*53ee8cc1Swenshuai.xi 
71*53ee8cc1Swenshuai.xi     E_MDRV_CMD_DSCMB_HDCP2_SetRiv_Ex,
72*53ee8cc1Swenshuai.xi 
73*53ee8cc1Swenshuai.xi     /* PayLoad Encryption */
74*53ee8cc1Swenshuai.xi     E_MDRV_CMD_DSCMB_CAPVR_FlowSet,
75*53ee8cc1Swenshuai.xi     E_MDRV_CMD_DSCMB_DualPath_Enable,
76*53ee8cc1Swenshuai.xi     E_MDRV_CMD_DSCMB_DualPath_Disable,
77*53ee8cc1Swenshuai.xi 
78*53ee8cc1Swenshuai.xi     E_MDRV_CMD_DSCMB_EngSetIV_Ex,
79*53ee8cc1Swenshuai.xi 
80*53ee8cc1Swenshuai.xi     E_MDRV_CMD_DSCMB_MAX,
81*53ee8cc1Swenshuai.xi } eDscmbIoctlOpt;
82*53ee8cc1Swenshuai.xi 
83*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED _DSCMB_QUERYCAP
84*53ee8cc1Swenshuai.xi {
85*53ee8cc1Swenshuai.xi     MS_U32              u32EngId;
86*53ee8cc1Swenshuai.xi     DSCMB_Query_Type    eQueryType;
87*53ee8cc1Swenshuai.xi     void*               pInput;
88*53ee8cc1Swenshuai.xi     void*               pOutput;
89*53ee8cc1Swenshuai.xi } DSCMB_QUERYCAP;
90*53ee8cc1Swenshuai.xi 
91*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED _DSCMB_OPTCONFIG
92*53ee8cc1Swenshuai.xi {
93*53ee8cc1Swenshuai.xi     MS_U32              u32EngId;
94*53ee8cc1Swenshuai.xi     DSCMB_Option        eOpt;
95*53ee8cc1Swenshuai.xi     void*               pInput;
96*53ee8cc1Swenshuai.xi     void*               pOutput;
97*53ee8cc1Swenshuai.xi     MS_BOOL             bSet;
98*53ee8cc1Swenshuai.xi } DSCMB_OPTCONFIG;
99*53ee8cc1Swenshuai.xi 
100*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED _DSCMB_FLTALLOC
101*53ee8cc1Swenshuai.xi {
102*53ee8cc1Swenshuai.xi     MS_U32          u32EngId;
103*53ee8cc1Swenshuai.xi     DSCMB_Flt_Type  eFltType;
104*53ee8cc1Swenshuai.xi     MS_U32          u32DscmbId;
105*53ee8cc1Swenshuai.xi } DSCMB_FLTALLOC;
106*53ee8cc1Swenshuai.xi 
107*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED _DSCMB_FLTFREE
108*53ee8cc1Swenshuai.xi {
109*53ee8cc1Swenshuai.xi     MS_U32          u32EngId;
110*53ee8cc1Swenshuai.xi     MS_U32          u32DscmbId;
111*53ee8cc1Swenshuai.xi } DSCMB_FLTFREE;
112*53ee8cc1Swenshuai.xi 
113*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED _DSCMB_CONNECTFLT
114*53ee8cc1Swenshuai.xi {
115*53ee8cc1Swenshuai.xi     MS_U32      u32EngId;
116*53ee8cc1Swenshuai.xi     MS_U32      u32DscmbId;
117*53ee8cc1Swenshuai.xi     MS_U32      u32DmxFltId;
118*53ee8cc1Swenshuai.xi } DSCMB_CONNECTFLT, DSCMB_DISCONNECTFLT, DSCMB_CONNECTSTATUS;
119*53ee8cc1Swenshuai.xi 
120*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED _DSCMB_CONNECTPID
121*53ee8cc1Swenshuai.xi {
122*53ee8cc1Swenshuai.xi     MS_U32      u32EngId;
123*53ee8cc1Swenshuai.xi     MS_U32      u32DscmbId;
124*53ee8cc1Swenshuai.xi     MS_U32      u32Pid;
125*53ee8cc1Swenshuai.xi } DSCMB_CONNECTPID, DSCMB_DISCONNECTPID;
126*53ee8cc1Swenshuai.xi 
127*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED _DSCMB_FLTDSCMB
128*53ee8cc1Swenshuai.xi {
129*53ee8cc1Swenshuai.xi     MS_U32      u32EngId;
130*53ee8cc1Swenshuai.xi     MS_U32      u32DscmbId;
131*53ee8cc1Swenshuai.xi     MS_BOOL     bDscmb;
132*53ee8cc1Swenshuai.xi } DSCMB_FLTDSCMB;
133*53ee8cc1Swenshuai.xi 
134*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED _DSCMB_FLTIVSET
135*53ee8cc1Swenshuai.xi {
136*53ee8cc1Swenshuai.xi     MS_U32          u32EngId;
137*53ee8cc1Swenshuai.xi     MS_U32          u32DscmbId;
138*53ee8cc1Swenshuai.xi     DSCMB_Key_Type  eKeyType;
139*53ee8cc1Swenshuai.xi     union {
140*53ee8cc1Swenshuai.xi         MS_U8*      pu8IV;
141*53ee8cc1Swenshuai.xi         MS_U8*      pu8Key;
142*53ee8cc1Swenshuai.xi     };
143*53ee8cc1Swenshuai.xi } DSCMB_FLTIVSET, DSCMB_FLTKEYSET, DSCMB_ENGIV;
144*53ee8cc1Swenshuai.xi 
145*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED _DSCMB_FLTKEYRESET
146*53ee8cc1Swenshuai.xi {
147*53ee8cc1Swenshuai.xi     MS_U32          u32EngId;
148*53ee8cc1Swenshuai.xi     MS_U32          u32DscmbId;
149*53ee8cc1Swenshuai.xi     DSCMB_Key_Type  eKeyType;
150*53ee8cc1Swenshuai.xi } DSCMB_FLTKEYRESET;
151*53ee8cc1Swenshuai.xi 
152*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED _DSCMB_TYPESET
153*53ee8cc1Swenshuai.xi {
154*53ee8cc1Swenshuai.xi     MS_U32          u32EngId;
155*53ee8cc1Swenshuai.xi     MS_U32          u32DscmbId;
156*53ee8cc1Swenshuai.xi     DSCMB_Type      eType;
157*53ee8cc1Swenshuai.xi } DSCMB_TYPESET;
158*53ee8cc1Swenshuai.xi 
159*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED _DSCMB_HDCP2_SETRIV
160*53ee8cc1Swenshuai.xi {
161*53ee8cc1Swenshuai.xi     MS_U32      u32EngId;
162*53ee8cc1Swenshuai.xi     MS_U8*      pu8Riv;
163*53ee8cc1Swenshuai.xi } DSCMB_HDCP2_SETRIV;
164*53ee8cc1Swenshuai.xi 
165*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED _DSCMB_HDCP2_SETRIV_EX
166*53ee8cc1Swenshuai.xi {
167*53ee8cc1Swenshuai.xi     MS_U32      u32EngId;
168*53ee8cc1Swenshuai.xi     MS_U32      u32DscmbId;
169*53ee8cc1Swenshuai.xi     MS_U8*      pu8Riv;
170*53ee8cc1Swenshuai.xi } DSCMB_HDCP2_SETRIV_EX;
171*53ee8cc1Swenshuai.xi 
172*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED _DSCMB_MULTI2_SETSYSKEY
173*53ee8cc1Swenshuai.xi {
174*53ee8cc1Swenshuai.xi     MS_U32      u32EngId;
175*53ee8cc1Swenshuai.xi     MS_U8*      pu8SysKey;
176*53ee8cc1Swenshuai.xi } DSCMB_MULTI2_SETSYSKEY;
177*53ee8cc1Swenshuai.xi 
178*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED _DSCMB_MULTI2_SETROUND
179*53ee8cc1Swenshuai.xi {
180*53ee8cc1Swenshuai.xi     MS_U32      u32EngId;
181*53ee8cc1Swenshuai.xi     MS_U32      u32Round;
182*53ee8cc1Swenshuai.xi } DSCMB_MULTI2_SETROUND;
183*53ee8cc1Swenshuai.xi 
184*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED _DSCMB_ES_SETSTATICKEY
185*53ee8cc1Swenshuai.xi {
186*53ee8cc1Swenshuai.xi     MS_U32      u32EngId;
187*53ee8cc1Swenshuai.xi     MS_U8*      pu8StaticKey;
188*53ee8cc1Swenshuai.xi } DSCMB_ES_SETSTATICKEY;
189*53ee8cc1Swenshuai.xi 
190*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED _DSCMB_SCMBSTATUS
191*53ee8cc1Swenshuai.xi {
192*53ee8cc1Swenshuai.xi     MS_U32      u32EngId;
193*53ee8cc1Swenshuai.xi     MS_U32      u32DmxFltId;
194*53ee8cc1Swenshuai.xi     SCMB_Level* pScmbLevel;
195*53ee8cc1Swenshuai.xi } DSCMB_DSCMBSTATUS;
196*53ee8cc1Swenshuai.xi 
197*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED _DSCMB_PVR_RECCTRL
198*53ee8cc1Swenshuai.xi {
199*53ee8cc1Swenshuai.xi     MS_U32      u32EngId;
200*53ee8cc1Swenshuai.xi     MS_BOOL     bEnable;
201*53ee8cc1Swenshuai.xi } DSCMB_PVR_RECCTRL;
202*53ee8cc1Swenshuai.xi 
203*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED _DSCMB_DEFAULT_CAVID
204*53ee8cc1Swenshuai.xi {
205*53ee8cc1Swenshuai.xi     MS_U32        u32EngId;
206*53ee8cc1Swenshuai.xi     MS_U32        u32CAVid;
207*53ee8cc1Swenshuai.xi } DSCMB_DEFAULT_CAVID;
208*53ee8cc1Swenshuai.xi 
209*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED _DSCMB_ENGFSCB
210*53ee8cc1Swenshuai.xi {
211*53ee8cc1Swenshuai.xi     MS_U32        u32EngId;
212*53ee8cc1Swenshuai.xi     MS_U32        u32DscmbId;
213*53ee8cc1Swenshuai.xi     DSCMB_FSCB    eForceSCB;
214*53ee8cc1Swenshuai.xi } DSCMB_ENGFSCB;
215*53ee8cc1Swenshuai.xi 
216*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED _DSCMB_ENGSWITCH
217*53ee8cc1Swenshuai.xi {
218*53ee8cc1Swenshuai.xi     MS_U32         u32EngId;
219*53ee8cc1Swenshuai.xi     MS_U32         u32DscmbId;
220*53ee8cc1Swenshuai.xi     DSCMB_Eng_Type eUppSwitch;
221*53ee8cc1Swenshuai.xi     DSCMB_Eng_Type eLowSwitch;
222*53ee8cc1Swenshuai.xi } DSCMB_ENGSWITCH;
223*53ee8cc1Swenshuai.xi 
224*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED _DSCMB_ENGALGO
225*53ee8cc1Swenshuai.xi {
226*53ee8cc1Swenshuai.xi     MS_U32         u32EngId;
227*53ee8cc1Swenshuai.xi     MS_U32         u32DscmbId;
228*53ee8cc1Swenshuai.xi     DSCMB_Eng_Type eEngType;
229*53ee8cc1Swenshuai.xi     DSCMB_Algo_Cfg stConfig;
230*53ee8cc1Swenshuai.xi } DSCMB_ENGALGO;
231*53ee8cc1Swenshuai.xi 
232*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED _DSCMB_ENGKEYFSCB
233*53ee8cc1Swenshuai.xi {
234*53ee8cc1Swenshuai.xi     MS_U32         u32EngId;
235*53ee8cc1Swenshuai.xi     MS_U32         u32DscmbId;
236*53ee8cc1Swenshuai.xi     DSCMB_Eng_Type eEngType;
237*53ee8cc1Swenshuai.xi     DSCMB_Key_Type eKeyType;
238*53ee8cc1Swenshuai.xi     DSCMB_FSCB     eForceSCB;
239*53ee8cc1Swenshuai.xi } DSCMB_ENGKEYFSCB;
240*53ee8cc1Swenshuai.xi 
241*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED _DSCMB_ENGKEY
242*53ee8cc1Swenshuai.xi {
243*53ee8cc1Swenshuai.xi     MS_U32         u32EngId;
244*53ee8cc1Swenshuai.xi     MS_U32         u32DscmbId;
245*53ee8cc1Swenshuai.xi     DSCMB_Eng_Type eEngType;
246*53ee8cc1Swenshuai.xi     DSCMB_Key_Type eKeyType;
247*53ee8cc1Swenshuai.xi     union {
248*53ee8cc1Swenshuai.xi         MS_U8*      pu8IV;
249*53ee8cc1Swenshuai.xi     MS_U8*         pu8Key;
250*53ee8cc1Swenshuai.xi     };
251*53ee8cc1Swenshuai.xi } DSCMB_ENGKEY, DSCMB_ENGIV_EX;
252*53ee8cc1Swenshuai.xi 
253*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED _DSCMB_ENGRESETKEY
254*53ee8cc1Swenshuai.xi {
255*53ee8cc1Swenshuai.xi     MS_U32         u32EngId;
256*53ee8cc1Swenshuai.xi     MS_U32         u32DscmbId;
257*53ee8cc1Swenshuai.xi     DSCMB_Eng_Type eEngType;
258*53ee8cc1Swenshuai.xi     DSCMB_Key_Type eKeyType;
259*53ee8cc1Swenshuai.xi } DSCMB_ENGRESETKEY;
260*53ee8cc1Swenshuai.xi 
261*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED _DSCMB_CAPVR_FLOWSET
262*53ee8cc1Swenshuai.xi {
263*53ee8cc1Swenshuai.xi     MS_U32           u32EngId;
264*53ee8cc1Swenshuai.xi     DSCMB_CAPVR_MODE eCaMode;
265*53ee8cc1Swenshuai.xi     DSCMB_TSIF       ePvrSrcTsif;
266*53ee8cc1Swenshuai.xi } DSCMB_CAPVR_FLOWSET;
267*53ee8cc1Swenshuai.xi 
268*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED _DSCMB_DUALPATH
269*53ee8cc1Swenshuai.xi {
270*53ee8cc1Swenshuai.xi     MS_U32        u32EngId;
271*53ee8cc1Swenshuai.xi     MS_U32        u32DmxFltId;
272*53ee8cc1Swenshuai.xi } DSCMB_DUALPATH;
273*53ee8cc1Swenshuai.xi 
274*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED _DSCMB_KL_ATOMICEXEC
275*53ee8cc1Swenshuai.xi {
276*53ee8cc1Swenshuai.xi     DSCMB_KLCfg_All*   KLCfg;
277*53ee8cc1Swenshuai.xi     MS_U8*             ACPU_Out;
278*53ee8cc1Swenshuai.xi     DSCMB_KL_Status*   u32Status;
279*53ee8cc1Swenshuai.xi } DSCMB_KL_ATOMICEXEC;
280*53ee8cc1Swenshuai.xi 
281*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED _DSCMB_KL_ETSI
282*53ee8cc1Swenshuai.xi {
283*53ee8cc1Swenshuai.xi     DSCMB_KLCfg_All* KLCfg;
284*53ee8cc1Swenshuai.xi     MS_U8*           ACPU_Out;
285*53ee8cc1Swenshuai.xi     MS_U8*           pu8Nonce;
286*53ee8cc1Swenshuai.xi     MS_U8*           pu8Response;
287*53ee8cc1Swenshuai.xi     DSCMB_KL_Status* u32Status;
288*53ee8cc1Swenshuai.xi } DSCMB_KL_ETSI;
289*53ee8cc1Swenshuai.xi 
290*53ee8cc1Swenshuai.xi MS_U32 DSCMBOpen(void** pInstantTmp, MS_U32 u32ModuleVersion, void* pAttribute);
291*53ee8cc1Swenshuai.xi MS_U32 DSCMBClose(void* pInstantTmp);
292*53ee8cc1Swenshuai.xi MS_U32 DSCMBIoctl(void* pInstantTmp, MS_U32 u32Cmd, void* pu32Args);
293*53ee8cc1Swenshuai.xi 
294*53ee8cc1Swenshuai.xi 
295*53ee8cc1Swenshuai.xi #ifdef __cplusplus
296*53ee8cc1Swenshuai.xi }
297*53ee8cc1Swenshuai.xi #endif
298*53ee8cc1Swenshuai.xi 
299*53ee8cc1Swenshuai.xi #endif // __DRV_DSCMB_V2_H__
300