xref: /utopia/UTPA2-700.0.x/modules/dscmb/drv/dscmb2/drvDSCMB_private.h (revision 53ee8cc121a030b8d368113ac3e966b4705770ef)
1*53ee8cc1Swenshuai.xi #ifndef __DSCMB_PRIVATE__
2*53ee8cc1Swenshuai.xi #define __DSCMB_PRIVATE__
3*53ee8cc1Swenshuai.xi 
4*53ee8cc1Swenshuai.xi #include "halDSCMB.h"
5*53ee8cc1Swenshuai.xi 
6*53ee8cc1Swenshuai.xi #define MAGIC_NUM 0x12345678
7*53ee8cc1Swenshuai.xi 
8*53ee8cc1Swenshuai.xi typedef enum {
9*53ee8cc1Swenshuai.xi     E_DSCMB_RESOURCE,
10*53ee8cc1Swenshuai.xi } eDscmbResourceId;
11*53ee8cc1Swenshuai.xi 
12*53ee8cc1Swenshuai.xi typedef struct
13*53ee8cc1Swenshuai.xi {
14*53ee8cc1Swenshuai.xi     MS_U32 u32SlotIdOdd;
15*53ee8cc1Swenshuai.xi     MS_U32 u32SlotIdEven;
16*53ee8cc1Swenshuai.xi     MS_U32 u32SlotIdClear;
17*53ee8cc1Swenshuai.xi     MS_U32 u32PidFltIdNum;
18*53ee8cc1Swenshuai.xi     MS_BOOL bUsed;
19*53ee8cc1Swenshuai.xi     MS_BOOL bDscmb;
20*53ee8cc1Swenshuai.xi     MS_U32 u32Tsid;
21*53ee8cc1Swenshuai.xi     DSCMB_Flt_Type eFltType;
22*53ee8cc1Swenshuai.xi     MS_U32 u32CAVid;
23*53ee8cc1Swenshuai.xi     MS_U32 u32RIVIdx;
24*53ee8cc1Swenshuai.xi     MS_BOOL bSecure;
25*53ee8cc1Swenshuai.xi } stDscmbTspMap;
26*53ee8cc1Swenshuai.xi 
27*53ee8cc1Swenshuai.xi typedef struct
28*53ee8cc1Swenshuai.xi {
29*53ee8cc1Swenshuai.xi     MS_U32 u8DscmbId;
30*53ee8cc1Swenshuai.xi     MS_U8 u8TsId;
31*53ee8cc1Swenshuai.xi     MS_U8 u8CaVid;
32*53ee8cc1Swenshuai.xi     MS_U8 u8CaDestUpp;
33*53ee8cc1Swenshuai.xi     MS_U8 u8CaDestLow;
34*53ee8cc1Swenshuai.xi } stTspFltInfo;
35*53ee8cc1Swenshuai.xi 
36*53ee8cc1Swenshuai.xi typedef struct _DSCMB_RESOURCE_PRIVATE
37*53ee8cc1Swenshuai.xi {
38*53ee8cc1Swenshuai.xi     stTspFltInfo  u32PidFlt2Dscmb[HAL_DSCMB_PIDFLT_NUM];
39*53ee8cc1Swenshuai.xi     stDscmbTspMap DscmbTspMap[HAL_DSCMB_ENG_NUM][HAL_DSCMB_KTE_MAX];
40*53ee8cc1Swenshuai.xi     MS_BOOL       bFreeSlot[HAL_DSCMB_KTE_MAX];
41*53ee8cc1Swenshuai.xi     MS_BOOL       bFreeRIVSlot[HAL_DSCMB_RIV_MAX];
42*53ee8cc1Swenshuai.xi 
43*53ee8cc1Swenshuai.xi     MS_U32        u32Cavid;
44*53ee8cc1Swenshuai.xi     MS_BOOL       bInited_Drv;
45*53ee8cc1Swenshuai.xi     MS_U32        u32Magic;
46*53ee8cc1Swenshuai.xi 
47*53ee8cc1Swenshuai.xi } DSCMB_RESOURCE_PRIVATE;
48*53ee8cc1Swenshuai.xi 
49*53ee8cc1Swenshuai.xi 
50*53ee8cc1Swenshuai.xi typedef struct _DSCMB_INSTANT_PRIVATE
51*53ee8cc1Swenshuai.xi {
52*53ee8cc1Swenshuai.xi 
53*53ee8cc1Swenshuai.xi } DSCMB_INSTANT_PRIVATE;
54*53ee8cc1Swenshuai.xi 
55*53ee8cc1Swenshuai.xi 
56*53ee8cc1Swenshuai.xi // descrambler initial function
57*53ee8cc1Swenshuai.xi MS_BOOL _MDrv_DSCMB2_Init(void);
58*53ee8cc1Swenshuai.xi MS_BOOL _MDrv_DSCMB2_InitBySWFlag(MS_BOOL bSWInit);
59*53ee8cc1Swenshuai.xi MS_BOOL _MDrv_DSCMB2_Exit(void);
60*53ee8cc1Swenshuai.xi 
61*53ee8cc1Swenshuai.xi // descrambler filter management
62*53ee8cc1Swenshuai.xi MS_U32  _MDrv_DSCMB2_FltAlloc_Ex(MS_U32 u32EngId, DSCMB_Flt_Type eFltType);
63*53ee8cc1Swenshuai.xi MS_BOOL _MDrv_DSCMB2_FltFree(MS_U32 u32EngId, MS_U32 u32DscmbId);
64*53ee8cc1Swenshuai.xi 
65*53ee8cc1Swenshuai.xi // descrambler filter maps to TSP pid
66*53ee8cc1Swenshuai.xi #if !(defined(MSOS_TYPE_OPTEE) || defined(MSOS_TYPE_NUTTX))
67*53ee8cc1Swenshuai.xi MS_BOOL _MDrv_DSCMB2_FltConnectPid(MS_U32 u32EngId, MS_U32 u32DscmbId, MS_U32 u32Pid);
68*53ee8cc1Swenshuai.xi MS_BOOL _MDrv_DSCMB2_FltDisconnectPid_Ex(MS_U32 u32EngId, MS_U32 u32DscmbId, MS_U32 u32Pid);
69*53ee8cc1Swenshuai.xi #endif
70*53ee8cc1Swenshuai.xi 
71*53ee8cc1Swenshuai.xi // descrambler filter maps to TSP filter id
72*53ee8cc1Swenshuai.xi MS_BOOL _MDrv_DSCMB2_FltConnectFltId(MS_U32 u32EngId, MS_U32 u32DscmbId, MS_U32 u32FltId);
73*53ee8cc1Swenshuai.xi MS_BOOL _MDrv_DSCMB2_FltDisconnectFltId(MS_U32 u32EngId, MS_U32 u32DscmbId, MS_U32 u32FltId);
74*53ee8cc1Swenshuai.xi 
75*53ee8cc1Swenshuai.xi MS_BOOL _MDrv_DSCMB2_SetDefaultCAVid(MS_U32 u32EngId, MS_U32 u32CAVid);
76*53ee8cc1Swenshuai.xi MS_BOOL _MDrv_DSCMB2_EngSetAlgo(MS_U32 u32EngId, MS_U32 u32DscmbId, DSCMB_Eng_Type eEngType, DSCMB_Algo_Cfg stConfig);
77*53ee8cc1Swenshuai.xi MS_BOOL _MDrv_DSCMB2_EngSetKeyFSCB(MS_U32 u32EngId, MS_U32 u32DscmbId, DSCMB_Eng_Type eEngType, DSCMB_Key_Type eKeyType, DSCMB_FSCB eForceSCB);
78*53ee8cc1Swenshuai.xi MS_BOOL _MDrv_DSCMB2_EngSetKey(MS_U32 u32EngId, MS_U32 u32DscmbId, DSCMB_Eng_Type eEngType, DSCMB_Key_Type eKeyType, MS_U8* pu8Key);
79*53ee8cc1Swenshuai.xi MS_BOOL _MDrv_DSCMB2_EngResetKey(MS_U32 u32EngId, MS_U32 u32DscmbId, DSCMB_Eng_Type eEngType, DSCMB_Key_Type eKeyType);
80*53ee8cc1Swenshuai.xi MS_BOOL _MDrv_DSCMB2_EngSetIV(MS_U32 u32EngId, MS_U32 u32DscmbId, DSCMB_Key_Type eKeyType, MS_U8* pu8IV);
81*53ee8cc1Swenshuai.xi MS_BOOL _MDrv_DSCMB2_EngSetIV_Ex(MS_U32 u32EngId, MS_U32 u32DscmbId, DSCMB_Eng_Type eEngType, DSCMB_Key_Type eKeyType, MS_U8* pu8IV);
82*53ee8cc1Swenshuai.xi MS_BOOL _MDrv_DSCMB2_EngSetFSCB(MS_U32 u32EngId, MS_U32 u32DscmbId, DSCMB_FSCB eForceSCB );
83*53ee8cc1Swenshuai.xi MS_BOOL _MDrv_DSCMB2_EngSetSwitch(MS_U32 u32EngId, MS_U32 u32DscmbId, DSCMB_Eng_Type eUppSwitch ,DSCMB_Eng_Type eLowSwitch);
84*53ee8cc1Swenshuai.xi 
85*53ee8cc1Swenshuai.xi // descrambler for enable dual path
86*53ee8cc1Swenshuai.xi MS_BOOL _MDrv_DSCMB2_CAPVR_FlowSet(MS_U32 u32EngId, DSCMB_CAPVR_MODE eCaMode, DSCMB_TSIF ePvrSrcTSIf);
87*53ee8cc1Swenshuai.xi MS_BOOL _MDrv_DSCMB2_DualPath_Enable(MS_U32 u32EngId, MS_U32 u32FltId);
88*53ee8cc1Swenshuai.xi MS_BOOL _MDrv_DSCMB2_DualPath_Disable(MS_U32 u32EngId, MS_U32 u32FltId);
89*53ee8cc1Swenshuai.xi 
90*53ee8cc1Swenshuai.xi // Set descrambler filter as scrambling/decrambling mode
91*53ee8cc1Swenshuai.xi // Default filter mode is descrambling if this function is not specified
92*53ee8cc1Swenshuai.xi // This function should be invoked before MDrv_DSCMB_FltTypeSet
93*53ee8cc1Swenshuai.xi MS_BOOL _MDrv_DSCMB2_FltDscmb(MS_U32 u32EngId, MS_U32 u32DscmbId, MS_BOOL bDscmb);
94*53ee8cc1Swenshuai.xi MS_BOOL _MDrv_DSCMB2_FltTypeSet(MS_U32 u32EngId, MS_U32 u32DscmbId, DSCMB_Type);
95*53ee8cc1Swenshuai.xi MS_BOOL _MDrv_DSCMB2_FltKeySet(MS_U32 u32EngId, MS_U32 u32DscmbId, DSCMB_Key_Type eKeyType, MS_U8* pu8Key);
96*53ee8cc1Swenshuai.xi MS_BOOL _MDrv_DSCMB2_FltKeyReset(MS_U32 u32EngId, MS_U32 u32DscmbId, DSCMB_Key_Type eKeyType);
97*53ee8cc1Swenshuai.xi MS_BOOL _MDrv_DSCMB2_FltIVSet(MS_U32 u32EngId, MS_U32 u32DscmbId, DSCMB_Key_Type eKeyType, MS_U8* pu8IV);
98*53ee8cc1Swenshuai.xi 
99*53ee8cc1Swenshuai.xi 
100*53ee8cc1Swenshuai.xi // descrambler query function
101*53ee8cc1Swenshuai.xi MS_BOOL _MDrv_DSCMB2_GetLibVer(const MSIF_Version **ppVersion);
102*53ee8cc1Swenshuai.xi MS_BOOL _MDrv_DSCMB2_SetDBGLevel(MS_U32 u32Level);
103*53ee8cc1Swenshuai.xi MS_BOOL _MDrv_DSCMB2_GetCap(MS_U32 u32EngId, DSCMB_Query_Type eQueryType, void* pInput, void* pOutput);
104*53ee8cc1Swenshuai.xi MS_BOOL _MDrv_DSCMB2_GetConnectStatus(MS_U32 u32EngId, MS_U32 u32DscmbId, MS_U32 u32TspFltId);
105*53ee8cc1Swenshuai.xi 
106*53ee8cc1Swenshuai.xi // descrambler altorithm related
107*53ee8cc1Swenshuai.xi MS_BOOL _MDrv_DSCMB2_Multi2_SetRound(MS_U32 u32EngId, MS_U32 u32Round);
108*53ee8cc1Swenshuai.xi MS_BOOL _MDrv_DSCMB2_Multi2_SetSystemKey(MS_U32 u32EngId, MS_U8* pu8Syskey);
109*53ee8cc1Swenshuai.xi MS_BOOL _MDrv_DSCMB2_ES_SetStaticKey(MS_U32 u32EngId, MS_U8* pu8Statickey);
110*53ee8cc1Swenshuai.xi MS_BOOL _MDrv_DSCMB2_HDCP2_SetRIV(MS_U32 u32EngId, MS_U8* pu8RIV);
111*53ee8cc1Swenshuai.xi MS_BOOL _MDrv_DSCMB2_HDCP2_SetRIV_Ex(MS_U32 u32EngId, MS_U32 u32DscmbId, MS_U8* pu8RIV);
112*53ee8cc1Swenshuai.xi 
113*53ee8cc1Swenshuai.xi MS_BOOL _MDrv_DSCMB2_PVR_RecCtrl(MS_U32 u32EngId, MS_BOOL Enable);
114*53ee8cc1Swenshuai.xi MS_U32  _MDrv_DSCMB2_SetPowerState(EN_POWER_MODE u16PowerState);
115*53ee8cc1Swenshuai.xi MS_BOOL _MDrv_DSCMB2_PidFlt_ScmbStatus(MS_U32 u32EngId, MS_U32 u32PidFltId, SCMB_Level* pScmbLevel);
116*53ee8cc1Swenshuai.xi 
117*53ee8cc1Swenshuai.xi 
118*53ee8cc1Swenshuai.xi // key ladder
119*53ee8cc1Swenshuai.xi MS_BOOL _MDrv_DSCMB2_KLadder_AtomicExec(DSCMB_KLCfg_All* KLCfg , MS_U8 *ACPU_Out, DSCMB_KL_Status* u32Status );
120*53ee8cc1Swenshuai.xi MS_BOOL _MDrv_DSCMB2_KLadder_ETSI(DSCMB_KLCfg_All* KLCfg , MS_U8 *ACPU_Out, MS_U8 *pu8Nonce, MS_U8 *pu8Response, DSCMB_KL_Status* u32Status);
121*53ee8cc1Swenshuai.xi 
122*53ee8cc1Swenshuai.xi 
123*53ee8cc1Swenshuai.xi #endif // __DSCMB_PRIVATE__
124*53ee8cc1Swenshuai.xi 
125