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