1*53ee8cc1Swenshuai.xi #ifndef __DRV_CA_V2_H__ 2*53ee8cc1Swenshuai.xi #define __DRV_CA_V2_H__ 3*53ee8cc1Swenshuai.xi 4*53ee8cc1Swenshuai.xi #include "drvCA.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 typedef enum { 12*53ee8cc1Swenshuai.xi E_MDRV_CMD_CA_Init, 13*53ee8cc1Swenshuai.xi E_MDRV_CMD_CA_OTP_EnableSecureBoot, 14*53ee8cc1Swenshuai.xi E_MDRV_CMD_CA_OTP_IsSecureBootEnabled, 15*53ee8cc1Swenshuai.xi E_MDRV_CMD_CA_OTP_SetBlockLock, 16*53ee8cc1Swenshuai.xi E_MDRV_CMD_CA_OTP_GetBlockLock, 17*53ee8cc1Swenshuai.xi E_MDRV_CMD_CA_OTP_IsBlank, 18*53ee8cc1Swenshuai.xi E_MDRV_CMD_CA_OTP_Read, 19*53ee8cc1Swenshuai.xi E_MDRV_CMD_CA_OTP_Write, 20*53ee8cc1Swenshuai.xi E_MDRV_CMD_CA_Locked, 21*53ee8cc1Swenshuai.xi E_MDRV_CMD_CA_OTP_Lock, 22*53ee8cc1Swenshuai.xi E_MDRV_CMD_CA_OTP_SetRSAextID, 23*53ee8cc1Swenshuai.xi E_MDRV_CMD_CA_OTP_GetRSAextID, 24*53ee8cc1Swenshuai.xi E_MDRV_CMD_CA_OTP_SetHASH1_REF_VER, 25*53ee8cc1Swenshuai.xi E_MDRV_CMD_CA_OTP_GetHASH1_REF_VER, 26*53ee8cc1Swenshuai.xi E_MDRV_CMD_CA_OTP_SetHASH_REF_VER, 27*53ee8cc1Swenshuai.xi E_MDRV_CMD_CA_OTP_GetHASH_REF_VER, 28*53ee8cc1Swenshuai.xi E_MDRV_CMD_CA_OTP_SetDebugPortMode, 29*53ee8cc1Swenshuai.xi E_MDRV_CMD_CA_OTP_GetDebugPortMode, 30*53ee8cc1Swenshuai.xi E_MDRV_CMD_CA_OTP_SetDeviceId, 31*53ee8cc1Swenshuai.xi E_MDRV_CMD_CA_OTP_GetDeviceId, 32*53ee8cc1Swenshuai.xi E_MDRV_CMD_CA_MaxDeviceIdSize, 33*53ee8cc1Swenshuai.xi E_MDRV_CMD_CA_OTP_EnableSecureCWMode, 34*53ee8cc1Swenshuai.xi E_MDRV_CMD_CA_OTP_IsSecureCWMode, 35*53ee8cc1Swenshuai.xi E_MDRV_CMD_CA_Random, 36*53ee8cc1Swenshuai.xi E_MDRV_CMD_CA_OTP_ReadCAVendor, 37*53ee8cc1Swenshuai.xi 38*53ee8cc1Swenshuai.xi } eCAIoctlOpt; 39*53ee8cc1Swenshuai.xi 40*53ee8cc1Swenshuai.xi 41*53ee8cc1Swenshuai.xi typedef struct _CA_OTP_SETBLOCKLOCK 42*53ee8cc1Swenshuai.xi { 43*53ee8cc1Swenshuai.xi MS_U32 u32Start; 44*53ee8cc1Swenshuai.xi MS_U32 u32End; 45*53ee8cc1Swenshuai.xi CA_LOCK_TYPE eLockType; 46*53ee8cc1Swenshuai.xi } CA_OTP_SETBLOCKLOCK; 47*53ee8cc1Swenshuai.xi 48*53ee8cc1Swenshuai.xi typedef struct _CA_OTP_GETBLOCKLOCK 49*53ee8cc1Swenshuai.xi { 50*53ee8cc1Swenshuai.xi MS_U32 *pu32Start; 51*53ee8cc1Swenshuai.xi MS_U32 *pu32End; 52*53ee8cc1Swenshuai.xi CA_LOCK_TYPE *peLockType; 53*53ee8cc1Swenshuai.xi } CA_OTP_GETBLOCKLOCK; 54*53ee8cc1Swenshuai.xi 55*53ee8cc1Swenshuai.xi typedef struct _CA_OTP_ISBLANK 56*53ee8cc1Swenshuai.xi { 57*53ee8cc1Swenshuai.xi MS_U32 u32addr; 58*53ee8cc1Swenshuai.xi } CA_OTP_ISBLANK; 59*53ee8cc1Swenshuai.xi 60*53ee8cc1Swenshuai.xi typedef struct _CA_OTP_READ 61*53ee8cc1Swenshuai.xi { 62*53ee8cc1Swenshuai.xi MS_U32 u32Addr; 63*53ee8cc1Swenshuai.xi MS_U32 u32OTPValue; 64*53ee8cc1Swenshuai.xi } CA_OTP_READ; 65*53ee8cc1Swenshuai.xi 66*53ee8cc1Swenshuai.xi typedef struct _CA_OTP_WRITE 67*53ee8cc1Swenshuai.xi { 68*53ee8cc1Swenshuai.xi MS_U32 u32Addr; 69*53ee8cc1Swenshuai.xi MS_U32 u32value; 70*53ee8cc1Swenshuai.xi } CA_OTP_WRITE; 71*53ee8cc1Swenshuai.xi 72*53ee8cc1Swenshuai.xi typedef struct _CA_OTP_LOCK20 73*53ee8cc1Swenshuai.xi { 74*53ee8cc1Swenshuai.xi CA_OTP_LOCK eLock; 75*53ee8cc1Swenshuai.xi } CA_OTP_LOCK20; 76*53ee8cc1Swenshuai.xi 77*53ee8cc1Swenshuai.xi typedef struct _CA_OTP_SETRSAEXTID 78*53ee8cc1Swenshuai.xi { 79*53ee8cc1Swenshuai.xi MS_U32 u32value; 80*53ee8cc1Swenshuai.xi } CA_OTP_SETRSAEXTID; 81*53ee8cc1Swenshuai.xi 82*53ee8cc1Swenshuai.xi typedef struct _CA_OTP_GETRSAEXTID 83*53ee8cc1Swenshuai.xi { 84*53ee8cc1Swenshuai.xi MS_U32 u32value; 85*53ee8cc1Swenshuai.xi } CA_OTP_GETRSAEXTID; 86*53ee8cc1Swenshuai.xi 87*53ee8cc1Swenshuai.xi typedef struct _CA_OTP_SETHASH1REFVER 88*53ee8cc1Swenshuai.xi { 89*53ee8cc1Swenshuai.xi MS_U32 u32HASH1_REF_VER; 90*53ee8cc1Swenshuai.xi } CA_OTP_SETHASH1REFVER; 91*53ee8cc1Swenshuai.xi 92*53ee8cc1Swenshuai.xi typedef struct _CA_OTP_GETHASH1REFVER 93*53ee8cc1Swenshuai.xi { 94*53ee8cc1Swenshuai.xi MS_U32 *pu32HASH1_REF_VER; 95*53ee8cc1Swenshuai.xi } CA_OTP_GETHASH1REFVER; 96*53ee8cc1Swenshuai.xi 97*53ee8cc1Swenshuai.xi typedef struct _CA_OTP_SETHASHREFVER 98*53ee8cc1Swenshuai.xi { 99*53ee8cc1Swenshuai.xi MS_U32 u32HASH0_REF_VER; 100*53ee8cc1Swenshuai.xi MS_U32 u32HASH2_REF_VER; 101*53ee8cc1Swenshuai.xi } CA_OTP_SETHASHREFVER; 102*53ee8cc1Swenshuai.xi 103*53ee8cc1Swenshuai.xi typedef struct _CA_OTP_GETHASHREFVER 104*53ee8cc1Swenshuai.xi { 105*53ee8cc1Swenshuai.xi MS_U32 *pu32HASH0_REF_VER; 106*53ee8cc1Swenshuai.xi MS_U32 *pu32HASH2_REF_VER; 107*53ee8cc1Swenshuai.xi } CA_OTP_GETHASHREFVER; 108*53ee8cc1Swenshuai.xi 109*53ee8cc1Swenshuai.xi typedef struct _CA_OTP_SETDEBUGPORTMODE 110*53ee8cc1Swenshuai.xi { 111*53ee8cc1Swenshuai.xi CA_DEBUG_PORT eDebugPort; 112*53ee8cc1Swenshuai.xi CA_DEBUG_PORT_MODE eMode; 113*53ee8cc1Swenshuai.xi } CA_OTP_SETDEBUGPORTMODE; 114*53ee8cc1Swenshuai.xi 115*53ee8cc1Swenshuai.xi typedef struct _CA_OTP_GETDEBUGPORTMODE 116*53ee8cc1Swenshuai.xi { 117*53ee8cc1Swenshuai.xi CA_DEBUG_PORT eDebugPort; 118*53ee8cc1Swenshuai.xi CA_DEBUG_PORT_MODE *eMode; 119*53ee8cc1Swenshuai.xi } CA_OTP_GETDEBUGPORTMODE; 120*53ee8cc1Swenshuai.xi 121*53ee8cc1Swenshuai.xi typedef struct _CA_OTP_SETDEVICEID 122*53ee8cc1Swenshuai.xi { 123*53ee8cc1Swenshuai.xi const MS_U8 *pu8Did; 124*53ee8cc1Swenshuai.xi MS_U32 u32Size; 125*53ee8cc1Swenshuai.xi } CA_OTP_SETDEVICEID; 126*53ee8cc1Swenshuai.xi 127*53ee8cc1Swenshuai.xi typedef struct _CA_OTP_GETDEVICEID 128*53ee8cc1Swenshuai.xi { 129*53ee8cc1Swenshuai.xi MS_U8 *pu8Did; 130*53ee8cc1Swenshuai.xi MS_U32 u32Size; 131*53ee8cc1Swenshuai.xi } CA_OTP_GETDEVICEID; 132*53ee8cc1Swenshuai.xi 133*53ee8cc1Swenshuai.xi typedef struct _CA_MAXDEVICEIDSIZE 134*53ee8cc1Swenshuai.xi { 135*53ee8cc1Swenshuai.xi MS_U32 u32MaxDeviceIdSize; 136*53ee8cc1Swenshuai.xi } CA_MAXDEVICEIDSIZE; 137*53ee8cc1Swenshuai.xi 138*53ee8cc1Swenshuai.xi typedef struct _CA_RANDOM 139*53ee8cc1Swenshuai.xi { 140*53ee8cc1Swenshuai.xi MS_U32 u32Random; 141*53ee8cc1Swenshuai.xi } CA_RANDOM; 142*53ee8cc1Swenshuai.xi 143*53ee8cc1Swenshuai.xi typedef struct _CA_OTP_READCAVENDOR 144*53ee8cc1Swenshuai.xi { 145*53ee8cc1Swenshuai.xi MS_U32 u32CAVendor; 146*53ee8cc1Swenshuai.xi } CA_OTP_READCAVENDOR; 147*53ee8cc1Swenshuai.xi 148*53ee8cc1Swenshuai.xi MS_U32 CAOpen(void** pInstantTmp, MS_U32 u32ModuleVersion, void* pAttribute); 149*53ee8cc1Swenshuai.xi MS_U32 CAClose(void* pInstantTmp); 150*53ee8cc1Swenshuai.xi MS_U32 CAIoctl(void* pInstantTmp, MS_U32 u32Cmd, void* pu32Args); 151*53ee8cc1Swenshuai.xi 152*53ee8cc1Swenshuai.xi #ifdef __cplusplus 153*53ee8cc1Swenshuai.xi } 154*53ee8cc1Swenshuai.xi #endif 155*53ee8cc1Swenshuai.xi 156*53ee8cc1Swenshuai.xi #endif // __DRV_CA_V2_H__ 157