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_PidFlt_ScmbStatus, 47*53ee8cc1Swenshuai.xi E_MDRV_CMD_DSCMB_PVR_RecCtrl, 48*53ee8cc1Swenshuai.xi 49*53ee8cc1Swenshuai.xi /* advanced configuration*/ 50*53ee8cc1Swenshuai.xi E_MDRV_CMD_DSCMB_SetDefaultCAVid, 51*53ee8cc1Swenshuai.xi E_MDRV_CMD_DSCMB_EngSetAlgo, 52*53ee8cc1Swenshuai.xi E_MDRV_CMD_DSCMB_EngSetKey, 53*53ee8cc1Swenshuai.xi E_MDRV_CMD_DSCMB_EngResetKey, 54*53ee8cc1Swenshuai.xi E_MDRV_CMD_DSCMB_EngSetIV, 55*53ee8cc1Swenshuai.xi E_MDRV_CMD_DSCMB_EngSetSwitch, 56*53ee8cc1Swenshuai.xi E_MDRV_CMD_DSCMB_EngSetFSCB, 57*53ee8cc1Swenshuai.xi 58*53ee8cc1Swenshuai.xi /*Key ladder*/ 59*53ee8cc1Swenshuai.xi E_MDRV_CMD_DSCMB_KLadder_AtomicExec, 60*53ee8cc1Swenshuai.xi E_MDRV_CMD_DSCMB_KLadder_ETSI, 61*53ee8cc1Swenshuai.xi 62*53ee8cc1Swenshuai.xi /*System info*/ 63*53ee8cc1Swenshuai.xi E_MDRV_CMD_DSCMB_QueryCap, 64*53ee8cc1Swenshuai.xi E_MDRV_CMD_DSCMB_SetDBGLevel, 65*53ee8cc1Swenshuai.xi E_MDRV_CMD_DSCMB_GetLibVer, 66*53ee8cc1Swenshuai.xi E_MDRV_CMD_DSCMB_GetConnectStatus, 67*53ee8cc1Swenshuai.xi 68*53ee8cc1Swenshuai.xi E_MDRV_CMD_DSCMB_MAX, 69*53ee8cc1Swenshuai.xi } eDscmbIoctlOpt; 70*53ee8cc1Swenshuai.xi 71*53ee8cc1Swenshuai.xi typedef struct _DSCMB_QUERYCAP 72*53ee8cc1Swenshuai.xi { 73*53ee8cc1Swenshuai.xi MS_U32 u32EngId; 74*53ee8cc1Swenshuai.xi DSCMB_Query_Type eQueryType; 75*53ee8cc1Swenshuai.xi void* pInput; 76*53ee8cc1Swenshuai.xi void* pOutput; 77*53ee8cc1Swenshuai.xi } DSCMB_QUERYCAP; 78*53ee8cc1Swenshuai.xi 79*53ee8cc1Swenshuai.xi typedef struct _DSCMB_FLTALLOC 80*53ee8cc1Swenshuai.xi { 81*53ee8cc1Swenshuai.xi MS_U32 u32EngId; 82*53ee8cc1Swenshuai.xi DSCMB_Flt_Type eFltType; 83*53ee8cc1Swenshuai.xi MS_U32 u32DscmbId; 84*53ee8cc1Swenshuai.xi } DSCMB_FLTALLOC; 85*53ee8cc1Swenshuai.xi 86*53ee8cc1Swenshuai.xi typedef struct _DSCMB_FLTFREE 87*53ee8cc1Swenshuai.xi { 88*53ee8cc1Swenshuai.xi MS_U32 u32EngId; 89*53ee8cc1Swenshuai.xi MS_U32 u32DscmbId; 90*53ee8cc1Swenshuai.xi } DSCMB_FLTFREE; 91*53ee8cc1Swenshuai.xi 92*53ee8cc1Swenshuai.xi typedef struct _DSCMB_CONNECTFLT 93*53ee8cc1Swenshuai.xi { 94*53ee8cc1Swenshuai.xi MS_U32 u32EngId; 95*53ee8cc1Swenshuai.xi MS_U32 u32DscmbId; 96*53ee8cc1Swenshuai.xi MS_U32 u32DmxFltId; 97*53ee8cc1Swenshuai.xi } DSCMB_CONNECTFLT, DSCMB_DISCONNECTFLT, DSCMB_CONNECTSTATUS; 98*53ee8cc1Swenshuai.xi 99*53ee8cc1Swenshuai.xi typedef struct _DSCMB_CONNECTPID 100*53ee8cc1Swenshuai.xi { 101*53ee8cc1Swenshuai.xi MS_U32 u32EngId; 102*53ee8cc1Swenshuai.xi MS_U32 u32DscmbId; 103*53ee8cc1Swenshuai.xi MS_U32 u32Pid; 104*53ee8cc1Swenshuai.xi } DSCMB_CONNECTPID, DSCMB_DISCONNECTPID; 105*53ee8cc1Swenshuai.xi 106*53ee8cc1Swenshuai.xi typedef struct _DSCMB_FLTDSCMB 107*53ee8cc1Swenshuai.xi { 108*53ee8cc1Swenshuai.xi MS_U32 u32EngId; 109*53ee8cc1Swenshuai.xi MS_U32 u32DscmbId; 110*53ee8cc1Swenshuai.xi MS_BOOL bDscmb; 111*53ee8cc1Swenshuai.xi } DSCMB_FLTDSCMB; 112*53ee8cc1Swenshuai.xi 113*53ee8cc1Swenshuai.xi typedef struct _DSCMB_FLTIVSET 114*53ee8cc1Swenshuai.xi { 115*53ee8cc1Swenshuai.xi MS_U32 u32EngId; 116*53ee8cc1Swenshuai.xi MS_U32 u32DscmbId; 117*53ee8cc1Swenshuai.xi DSCMB_Key_Type eKeyType; 118*53ee8cc1Swenshuai.xi union { 119*53ee8cc1Swenshuai.xi MS_U8* pu8IV; 120*53ee8cc1Swenshuai.xi MS_U8* pu8Key; 121*53ee8cc1Swenshuai.xi }; 122*53ee8cc1Swenshuai.xi } DSCMB_FLTIVSET, DSCMB_FLTKEYSET, DSCMB_ENGIV; 123*53ee8cc1Swenshuai.xi 124*53ee8cc1Swenshuai.xi typedef struct _DSCMB_FLTKEYRESET 125*53ee8cc1Swenshuai.xi { 126*53ee8cc1Swenshuai.xi MS_U32 u32EngId; 127*53ee8cc1Swenshuai.xi MS_U32 u32DscmbId; 128*53ee8cc1Swenshuai.xi DSCMB_Key_Type eKeyType; 129*53ee8cc1Swenshuai.xi } DSCMB_FLTKEYRESET; 130*53ee8cc1Swenshuai.xi 131*53ee8cc1Swenshuai.xi typedef struct _DSCMB_TYPESET 132*53ee8cc1Swenshuai.xi { 133*53ee8cc1Swenshuai.xi MS_U32 u32EngId; 134*53ee8cc1Swenshuai.xi MS_U32 u32DscmbId; 135*53ee8cc1Swenshuai.xi DSCMB_Type eType; 136*53ee8cc1Swenshuai.xi } DSCMB_TYPESET; 137*53ee8cc1Swenshuai.xi 138*53ee8cc1Swenshuai.xi typedef struct _DSCMB_HDCP2_SETRIV 139*53ee8cc1Swenshuai.xi { 140*53ee8cc1Swenshuai.xi MS_U32 u32EngId; 141*53ee8cc1Swenshuai.xi MS_U8* pu8Riv; 142*53ee8cc1Swenshuai.xi } DSCMB_HDCP2_SETRIV; 143*53ee8cc1Swenshuai.xi 144*53ee8cc1Swenshuai.xi typedef struct _DSCMB_MULTI2_SETSYSKEY 145*53ee8cc1Swenshuai.xi { 146*53ee8cc1Swenshuai.xi MS_U32 u32EngId; 147*53ee8cc1Swenshuai.xi MS_U8* pu8SysKey; 148*53ee8cc1Swenshuai.xi } DSCMB_MULTI2_SETSYSKEY; 149*53ee8cc1Swenshuai.xi 150*53ee8cc1Swenshuai.xi typedef struct _DSCMB_MULTI2_SETROUND 151*53ee8cc1Swenshuai.xi { 152*53ee8cc1Swenshuai.xi MS_U32 u32EngId; 153*53ee8cc1Swenshuai.xi MS_U32 u32Round; 154*53ee8cc1Swenshuai.xi } DSCMB_MULTI2_SETROUND; 155*53ee8cc1Swenshuai.xi 156*53ee8cc1Swenshuai.xi typedef struct _DSCMB_SCMBSTATUS 157*53ee8cc1Swenshuai.xi { 158*53ee8cc1Swenshuai.xi MS_U32 u32EngId; 159*53ee8cc1Swenshuai.xi MS_U32 u32DmxFltId; 160*53ee8cc1Swenshuai.xi SCMB_Level* pScmbLevel; 161*53ee8cc1Swenshuai.xi } DSCMB_DSCMBSTATUS; 162*53ee8cc1Swenshuai.xi 163*53ee8cc1Swenshuai.xi typedef struct _DSCMB_PVR_RECCTRL 164*53ee8cc1Swenshuai.xi { 165*53ee8cc1Swenshuai.xi MS_U32 u32EngId; 166*53ee8cc1Swenshuai.xi MS_BOOL bEnable; 167*53ee8cc1Swenshuai.xi } DSCMB_PVR_RECCTRL; 168*53ee8cc1Swenshuai.xi 169*53ee8cc1Swenshuai.xi typedef struct _DSCMB_DEFAULT_CAVID 170*53ee8cc1Swenshuai.xi { 171*53ee8cc1Swenshuai.xi MS_U32 u32EngId; 172*53ee8cc1Swenshuai.xi MS_U32 u32CAVid; 173*53ee8cc1Swenshuai.xi } DSCMB_DEFAULT_CAVID; 174*53ee8cc1Swenshuai.xi 175*53ee8cc1Swenshuai.xi typedef struct _DSCMB_ENGFSCB 176*53ee8cc1Swenshuai.xi { 177*53ee8cc1Swenshuai.xi MS_U32 u32EngId; 178*53ee8cc1Swenshuai.xi MS_U32 u32DscmbId; 179*53ee8cc1Swenshuai.xi DSCMB_FSCB eForceSCB; 180*53ee8cc1Swenshuai.xi } DSCMB_ENGFSCB; 181*53ee8cc1Swenshuai.xi 182*53ee8cc1Swenshuai.xi typedef struct _DSCMB_ENGSWITCH 183*53ee8cc1Swenshuai.xi { 184*53ee8cc1Swenshuai.xi MS_U32 u32EngId; 185*53ee8cc1Swenshuai.xi MS_U32 u32DscmbId; 186*53ee8cc1Swenshuai.xi DSCMB_Eng_Type eUppSwitch; 187*53ee8cc1Swenshuai.xi DSCMB_Eng_Type eLowSwitch; 188*53ee8cc1Swenshuai.xi } DSCMB_ENGSWITCH; 189*53ee8cc1Swenshuai.xi 190*53ee8cc1Swenshuai.xi typedef struct _DSCMB_ENGALGO 191*53ee8cc1Swenshuai.xi { 192*53ee8cc1Swenshuai.xi MS_U32 u32EngId; 193*53ee8cc1Swenshuai.xi MS_U32 u32DscmbId; 194*53ee8cc1Swenshuai.xi DSCMB_Eng_Type eEngType; 195*53ee8cc1Swenshuai.xi DSCMB_Algo_Cfg stConfig; 196*53ee8cc1Swenshuai.xi } DSCMB_ENGALGO; 197*53ee8cc1Swenshuai.xi 198*53ee8cc1Swenshuai.xi typedef struct _DSCMB_ENGKEY 199*53ee8cc1Swenshuai.xi { 200*53ee8cc1Swenshuai.xi MS_U32 u32EngId; 201*53ee8cc1Swenshuai.xi MS_U32 u32DscmbId; 202*53ee8cc1Swenshuai.xi DSCMB_Eng_Type eEngType; 203*53ee8cc1Swenshuai.xi DSCMB_Key_Type eKeyType; 204*53ee8cc1Swenshuai.xi MS_U8* pu8Key; 205*53ee8cc1Swenshuai.xi } DSCMB_ENGKEY; 206*53ee8cc1Swenshuai.xi 207*53ee8cc1Swenshuai.xi typedef struct _DSCMB_ENGRESETKEY 208*53ee8cc1Swenshuai.xi { 209*53ee8cc1Swenshuai.xi MS_U32 u32EngId; 210*53ee8cc1Swenshuai.xi MS_U32 u32DscmbId; 211*53ee8cc1Swenshuai.xi DSCMB_Eng_Type eEngType; 212*53ee8cc1Swenshuai.xi DSCMB_Key_Type eKeyType; 213*53ee8cc1Swenshuai.xi } DSCMB_ENGRESETKEY; 214*53ee8cc1Swenshuai.xi 215*53ee8cc1Swenshuai.xi typedef struct _DSCMB_KL_ATOMICEXEC 216*53ee8cc1Swenshuai.xi { 217*53ee8cc1Swenshuai.xi DSCMB_KLCfg_All* KLCfg; 218*53ee8cc1Swenshuai.xi MS_U8* ACPU_Out; 219*53ee8cc1Swenshuai.xi DSCMB_KL_Status* u32Status; 220*53ee8cc1Swenshuai.xi } DSCMB_KL_ATOMICEXEC; 221*53ee8cc1Swenshuai.xi 222*53ee8cc1Swenshuai.xi typedef struct _DSCMB_KL_ETSI 223*53ee8cc1Swenshuai.xi { 224*53ee8cc1Swenshuai.xi DSCMB_KLCfg_All* KLCfg; 225*53ee8cc1Swenshuai.xi MS_U8* ACPU_Out; 226*53ee8cc1Swenshuai.xi MS_U8* pu8Nonce; 227*53ee8cc1Swenshuai.xi MS_U8* pu8Response; 228*53ee8cc1Swenshuai.xi DSCMB_KL_Status* u32Status; 229*53ee8cc1Swenshuai.xi } DSCMB_KL_ETSI; 230*53ee8cc1Swenshuai.xi 231*53ee8cc1Swenshuai.xi MS_U32 DSCMBOpen(void** pInstantTmp, MS_U32 u32ModuleVersion, void* pAttribute); 232*53ee8cc1Swenshuai.xi MS_U32 DSCMBClose(void* pInstantTmp); 233*53ee8cc1Swenshuai.xi MS_U32 DSCMBIoctl(void* pInstantTmp, MS_U32 u32Cmd, void* pu32Args); 234*53ee8cc1Swenshuai.xi 235*53ee8cc1Swenshuai.xi 236*53ee8cc1Swenshuai.xi #ifdef __cplusplus 237*53ee8cc1Swenshuai.xi } 238*53ee8cc1Swenshuai.xi #endif 239*53ee8cc1Swenshuai.xi 240*53ee8cc1Swenshuai.xi #endif // __DRV_DSCMB_V2_H__ 241