1 /* 2 * Copyright 2017, Rockchip Electronics Co., Ltd 3 * hisping lin, <hisping.lin@rock-chips.com> 4 * 5 * SPDX-License-Identifier: GPL-2.0+ 6 */ 7 #ifndef _OPTEE_CLIENT_RPC_H_ 8 #define _OPTEE_CLIENT_RPC_H_ 9 10 #include <optee_include/tee_base_types.h> 11 #include <optee_include/OpteeClientApiLib.h> 12 13 typedef struct{ 14 unsigned int Arg0; 15 unsigned int Arg1; 16 unsigned int Arg2; 17 unsigned int Arg3; 18 unsigned int Arg4; 19 unsigned int Arg5; 20 unsigned int Arg6; 21 unsigned int Arg7; 22 } ARM_SMC_ARGS; 23 24 #define RPMB_PACKET_DATA_TO_UINT16(d) ((d[0] << 8) + (d[1])) 25 #define RPMB_PACKET_DATA_TO_UINT16(d) ((d[0] << 8) + (d[1])) 26 #define RPMB_STUFF_DATA_SIZE 196 27 #define RPMB_KEY_MAC_SIZE 32 28 #define RPMB_DATA_SIZE 256 29 #define RPMB_NONCE_SIZE 16 30 #define RPMB_DATA_FRAME_SIZE 512 31 32 typedef struct rpmb_data_frame { 33 unsigned char stuff_bytes[RPMB_STUFF_DATA_SIZE]; 34 unsigned char key_mac[RPMB_KEY_MAC_SIZE]; 35 unsigned char data[RPMB_DATA_SIZE]; 36 unsigned char nonce[RPMB_NONCE_SIZE]; 37 unsigned char write_counter[4]; 38 unsigned char address[2]; 39 unsigned char block_count[2]; 40 unsigned char op_result[2]; 41 unsigned char msg_type[2]; 42 } EFI_RK_RPMB_DATA_PACKET; 43 44 typedef struct s_rpmb_back { 45 unsigned char stuff[RPMB_STUFF_DATA_SIZE]; 46 unsigned char mac[RPMB_KEY_MAC_SIZE]; 47 unsigned char data[RPMB_DATA_SIZE]; 48 unsigned char nonce[RPMB_NONCE_SIZE]; 49 unsigned int write_counter; 50 unsigned short address; 51 unsigned short block_count; 52 unsigned short result; 53 unsigned short request; 54 } EFI_RK_RPMB_DATA_PACKET_BACK; 55 56 TEEC_Result OpteeRpcCallback(ARM_SMC_ARGS *ArmSmcArgs); 57 58 #endif /*_OPTEE_CLIENT_RPC_H_*/ 59