xref: /rk3399_rockchip-uboot/include/optee_include/OpteeClientRkNewFs.h (revision df538e29bdfa27e8607f1bf29d6d641bd85ef124)
1*df538e29SHisping Lin /*
2*df538e29SHisping Lin  * Copyright (c) 2016, Fuzhou Rockchip Electronics Co.,Ltd.
3*df538e29SHisping Lin  * All rights reserved.
4*df538e29SHisping Lin  *
5*df538e29SHisping Lin  * Redistribution and use in source and binary forms, with or without
6*df538e29SHisping Lin  * modification, are permitted provided that the following conditions are met:
7*df538e29SHisping Lin  *
8*df538e29SHisping Lin  * 1. Redistributions of source code must retain the above copyright notice,
9*df538e29SHisping Lin  * this list of conditions and the following disclaimer.
10*df538e29SHisping Lin  *
11*df538e29SHisping Lin  * 2. Redistributions in binary form must reproduce the above copyright notice,
12*df538e29SHisping Lin  * this list of conditions and the following disclaimer in the documentation
13*df538e29SHisping Lin  * and/or other materials provided with the distribution.
14*df538e29SHisping Lin  *
15*df538e29SHisping Lin  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
16*df538e29SHisping Lin  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17*df538e29SHisping Lin  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18*df538e29SHisping Lin  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
19*df538e29SHisping Lin  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
20*df538e29SHisping Lin  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
21*df538e29SHisping Lin  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
22*df538e29SHisping Lin  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
23*df538e29SHisping Lin  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
24*df538e29SHisping Lin  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
25*df538e29SHisping Lin  * POSSIBILITY OF SUCH DAMAGE.
26*df538e29SHisping Lin  */
27*df538e29SHisping Lin #ifndef TEE_SUPP_RK_FS_H
28*df538e29SHisping Lin #define TEE_SUPP_RK_FS_H
29*df538e29SHisping Lin 
30*df538e29SHisping Lin /*
31*df538e29SHisping Lin  * Operations and defines shared with TEE.
32*df538e29SHisping Lin  */
33*df538e29SHisping Lin #define OPTEE_MRF_OPEN			0
34*df538e29SHisping Lin #define OPTEE_MRF_CREATE		1
35*df538e29SHisping Lin #define OPTEE_MRF_CLOSE			2
36*df538e29SHisping Lin #define OPTEE_MRF_READ			3
37*df538e29SHisping Lin #define OPTEE_MRF_WRITE			4
38*df538e29SHisping Lin #define OPTEE_MRF_TRUNCATE		5
39*df538e29SHisping Lin #define OPTEE_MRF_REMOVE		6
40*df538e29SHisping Lin #define OPTEE_MRF_RENAME		7
41*df538e29SHisping Lin #define OPTEE_MRF_OPENDIR		8
42*df538e29SHisping Lin #define OPTEE_MRF_CLOSEDIR		9
43*df538e29SHisping Lin #define OPTEE_MRF_READDIR		10
44*df538e29SHisping Lin 
45*df538e29SHisping Lin /*
46*df538e29SHisping Lin  * Open flags, defines shared with TEE.
47*df538e29SHisping Lin  */
48*df538e29SHisping Lin #define TEE_FS_O_RDONLY 0x1
49*df538e29SHisping Lin #define TEE_FS_O_WRONLY 0x2
50*df538e29SHisping Lin #define TEE_FS_O_RDWR   0x4
51*df538e29SHisping Lin #define TEE_FS_O_CREAT  0x8
52*df538e29SHisping Lin #define TEE_FS_O_EXCL   0x10
53*df538e29SHisping Lin #define TEE_FS_O_APPEND 0x20
54*df538e29SHisping Lin 
55*df538e29SHisping Lin /*
56*df538e29SHisping Lin  * Seek flags, defines shared with TEE.
57*df538e29SHisping Lin  */
58*df538e29SHisping Lin #define TEE_FS_SEEK_SET 0x1
59*df538e29SHisping Lin #define TEE_FS_SEEK_END 0x2
60*df538e29SHisping Lin #define TEE_FS_SEEK_CUR 0x4
61*df538e29SHisping Lin 
62*df538e29SHisping Lin /*
63*df538e29SHisping Lin  * Mkdir flags, defines shared with TEE.
64*df538e29SHisping Lin  */
65*df538e29SHisping Lin #define TEE_FS_S_IWUSR 0x1
66*df538e29SHisping Lin #define TEE_FS_S_IRUSR 0x2
67*df538e29SHisping Lin 
68*df538e29SHisping Lin /*
69*df538e29SHisping Lin  * Access flags, X_OK not supported, defines shared with TEE.
70*df538e29SHisping Lin  */
71*df538e29SHisping Lin #define TEE_FS_R_OK    0x1
72*df538e29SHisping Lin #define TEE_FS_W_OK    0x2
73*df538e29SHisping Lin #define TEE_FS_F_OK    0x4
74*df538e29SHisping Lin 
75*df538e29SHisping Lin #define RK_FS_R    0x1
76*df538e29SHisping Lin #define RK_FS_W    0x2
77*df538e29SHisping Lin #define RK_FS_D    0x8
78*df538e29SHisping Lin 
79*df538e29SHisping Lin #define TEE_IOCTL_PARAM_ATTR_TYPE_MASK		0xff
80*df538e29SHisping Lin #define TEE_IOCTL_PARAM_ATTR_TYPE_VALUE_INPUT	1
81*df538e29SHisping Lin #define TEE_IOCTL_PARAM_ATTR_TYPE_VALUE_OUTPUT	2
82*df538e29SHisping Lin #define TEE_IOCTL_PARAM_ATTR_TYPE_VALUE_INOUT	3	/* input and output */
83*df538e29SHisping Lin 
84*df538e29SHisping Lin #define TEE_IOCTL_PARAM_ATTR_TYPE_MEMREF_INPUT	5
85*df538e29SHisping Lin #define TEE_IOCTL_PARAM_ATTR_TYPE_MEMREF_OUTPUT	6
86*df538e29SHisping Lin #define TEE_IOCTL_PARAM_ATTR_TYPE_MEMREF_INOUT	7	/* input and output */
87*df538e29SHisping Lin 
88*df538e29SHisping Lin struct tee_ioctl_param_memref {
89*df538e29SHisping Lin 	uint64_t shm_offs;
90*df538e29SHisping Lin 	uint64_t size;
91*df538e29SHisping Lin 	int64_t shm_id;
92*df538e29SHisping Lin };
93*df538e29SHisping Lin 
94*df538e29SHisping Lin struct tee_ioctl_param_value {
95*df538e29SHisping Lin 	uint64_t a;
96*df538e29SHisping Lin 	uint64_t b;
97*df538e29SHisping Lin 	uint64_t c;
98*df538e29SHisping Lin };
99*df538e29SHisping Lin 
100*df538e29SHisping Lin struct tee_ioctl_param {
101*df538e29SHisping Lin 	uint64_t attr;
102*df538e29SHisping Lin 	union {
103*df538e29SHisping Lin 		struct tee_ioctl_param_memref memref;
104*df538e29SHisping Lin 		struct tee_ioctl_param_value value;
105*df538e29SHisping Lin 	} u;
106*df538e29SHisping Lin };
107*df538e29SHisping Lin 
108*df538e29SHisping Lin /* Function Defines */
109*df538e29SHisping Lin #define UNREFERENCED_PARAMETER(P) (P = P)
110*df538e29SHisping Lin #define CHECKFLAG(flags, flag) (flags & flag)
111*df538e29SHisping Lin #define ADDFLAG(flags, flag) (flags | flag)
112*df538e29SHisping Lin 
113*df538e29SHisping Lin #define RKSS_VERSION_V1			1
114*df538e29SHisping Lin #define RKSS_VERSION_V2			2
115*df538e29SHisping Lin #define RKSS_VERSION_ERR			100
116*df538e29SHisping Lin 
117*df538e29SHisping Lin int tee_supp_rk_fs_init_v1(void);
118*df538e29SHisping Lin 
119*df538e29SHisping Lin int tee_supp_rk_fs_process_v1(size_t num_params,
120*df538e29SHisping Lin 			struct tee_ioctl_param *params);
121*df538e29SHisping Lin 
122*df538e29SHisping Lin int tee_supp_rk_fs_init_v2(void);
123*df538e29SHisping Lin 
124*df538e29SHisping Lin int tee_supp_rk_fs_process_v2(size_t num_params,
125*df538e29SHisping Lin 			struct tee_ioctl_param *params);
126*df538e29SHisping Lin 
127*df538e29SHisping Lin int OpteeClientRkFsInit(void);
128*df538e29SHisping Lin 
129*df538e29SHisping Lin int OpteeClientRkFsProcess(size_t num_params,
130*df538e29SHisping Lin 			struct tee_ioctl_param *params);
131*df538e29SHisping Lin 
132*df538e29SHisping Lin #endif
133