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