xref: /OK3568_Linux_fs/u-boot/include/optee_include/OpteeClientRPC.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
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