xref: /OK3568_Linux_fs/u-boot/include/optee_include/OpteeClientRkFs.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /*
2*4882a593Smuzhiyun  * Copyright (c) 2016, Fuzhou Rockchip Electronics Co.,Ltd.
3*4882a593Smuzhiyun  * All rights reserved.
4*4882a593Smuzhiyun  *
5*4882a593Smuzhiyun  * Redistribution and use in source and binary forms, with or without
6*4882a593Smuzhiyun  * modification, are permitted provided that the following conditions are met:
7*4882a593Smuzhiyun  *
8*4882a593Smuzhiyun  * 1. Redistributions of source code must retain the above copyright notice,
9*4882a593Smuzhiyun  * this list of conditions and the following disclaimer.
10*4882a593Smuzhiyun  *
11*4882a593Smuzhiyun  * 2. Redistributions in binary form must reproduce the above copyright notice,
12*4882a593Smuzhiyun  * this list of conditions and the following disclaimer in the documentation
13*4882a593Smuzhiyun  * and/or other materials provided with the distribution.
14*4882a593Smuzhiyun  *
15*4882a593Smuzhiyun  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
16*4882a593Smuzhiyun  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17*4882a593Smuzhiyun  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18*4882a593Smuzhiyun  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
19*4882a593Smuzhiyun  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
20*4882a593Smuzhiyun  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
21*4882a593Smuzhiyun  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
22*4882a593Smuzhiyun  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
23*4882a593Smuzhiyun  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
24*4882a593Smuzhiyun  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
25*4882a593Smuzhiyun  * POSSIBILITY OF SUCH DAMAGE.
26*4882a593Smuzhiyun  */
27*4882a593Smuzhiyun #ifndef TEE_SUPP_RK_FS_H
28*4882a593Smuzhiyun #define TEE_SUPP_RK_FS_H
29*4882a593Smuzhiyun 
30*4882a593Smuzhiyun #include <stddef.h>
31*4882a593Smuzhiyun 
32*4882a593Smuzhiyun /*
33*4882a593Smuzhiyun  * Operations and defines shared with TEE.
34*4882a593Smuzhiyun  */
35*4882a593Smuzhiyun #define TEE_FS_OPEN       1
36*4882a593Smuzhiyun #define TEE_FS_CLOSE      2
37*4882a593Smuzhiyun #define TEE_FS_READ       3
38*4882a593Smuzhiyun #define TEE_FS_WRITE      4
39*4882a593Smuzhiyun #define TEE_FS_SEEK       5
40*4882a593Smuzhiyun #define TEE_FS_UNLINK     6
41*4882a593Smuzhiyun #define TEE_FS_RENAME     7
42*4882a593Smuzhiyun #define TEE_FS_TRUNC      8
43*4882a593Smuzhiyun #define TEE_FS_MKDIR      9
44*4882a593Smuzhiyun #define TEE_FS_OPENDIR   10
45*4882a593Smuzhiyun #define TEE_FS_CLOSEDIR  11
46*4882a593Smuzhiyun #define TEE_FS_READDIR   12
47*4882a593Smuzhiyun #define TEE_FS_RMDIR     13
48*4882a593Smuzhiyun #define TEE_FS_ACCESS    14
49*4882a593Smuzhiyun #define TEE_FS_LINK      15
50*4882a593Smuzhiyun 
51*4882a593Smuzhiyun /*
52*4882a593Smuzhiyun  * Open flags, defines shared with TEE.
53*4882a593Smuzhiyun  */
54*4882a593Smuzhiyun #define TEE_FS_O_RDONLY 0x1
55*4882a593Smuzhiyun #define TEE_FS_O_WRONLY 0x2
56*4882a593Smuzhiyun #define TEE_FS_O_RDWR   0x4
57*4882a593Smuzhiyun #define TEE_FS_O_CREAT  0x8
58*4882a593Smuzhiyun #define TEE_FS_O_EXCL   0x10
59*4882a593Smuzhiyun #define TEE_FS_O_APPEND 0x20
60*4882a593Smuzhiyun 
61*4882a593Smuzhiyun /*
62*4882a593Smuzhiyun  * Seek flags, defines shared with TEE.
63*4882a593Smuzhiyun  */
64*4882a593Smuzhiyun #define TEE_FS_SEEK_SET 0x1
65*4882a593Smuzhiyun #define TEE_FS_SEEK_END 0x2
66*4882a593Smuzhiyun #define TEE_FS_SEEK_CUR 0x4
67*4882a593Smuzhiyun 
68*4882a593Smuzhiyun /*
69*4882a593Smuzhiyun  * Mkdir flags, defines shared with TEE.
70*4882a593Smuzhiyun  */
71*4882a593Smuzhiyun #define TEE_FS_S_IWUSR 0x1
72*4882a593Smuzhiyun #define TEE_FS_S_IRUSR 0x2
73*4882a593Smuzhiyun 
74*4882a593Smuzhiyun /*
75*4882a593Smuzhiyun  * Access flags, X_OK not supported, defines shared with TEE.
76*4882a593Smuzhiyun  */
77*4882a593Smuzhiyun #define TEE_FS_R_OK    0x1
78*4882a593Smuzhiyun #define TEE_FS_W_OK    0x2
79*4882a593Smuzhiyun #define TEE_FS_F_OK    0x4
80*4882a593Smuzhiyun 
81*4882a593Smuzhiyun #define RK_FS_R    0x1
82*4882a593Smuzhiyun #define RK_FS_W    0x2
83*4882a593Smuzhiyun #define RK_FS_D    0x8
84*4882a593Smuzhiyun 
85*4882a593Smuzhiyun /* Function Defines */
86*4882a593Smuzhiyun #define UNREFERENCED_PARAMETER(P) (P = P)
87*4882a593Smuzhiyun #define CHECKFLAG(flags, flag) (flags & flag)
88*4882a593Smuzhiyun #define ADDFLAG(flags, flag) (flags | flag)
89*4882a593Smuzhiyun 
90*4882a593Smuzhiyun #define RKSS_VERSION_V1			1
91*4882a593Smuzhiyun #define RKSS_VERSION_V2			2
92*4882a593Smuzhiyun #define RKSS_VERSION_ERR			100
93*4882a593Smuzhiyun 
94*4882a593Smuzhiyun /*
95*4882a593Smuzhiyun  * Structure for file related RPC calls
96*4882a593Smuzhiyun  *
97*4882a593Smuzhiyun  * @op     The operation like open, close, read, write etc
98*4882a593Smuzhiyun  * @flags  Flags to the operation shared with secure world
99*4882a593Smuzhiyun  * @arg    Argument to operation
100*4882a593Smuzhiyun  * @fd     NW file descriptor
101*4882a593Smuzhiyun  * @len    Length of buffer at the end of this struct
102*4882a593Smuzhiyun  * @res    Result of the operation
103*4882a593Smuzhiyun  */
104*4882a593Smuzhiyun struct tee_fs_rpc {
105*4882a593Smuzhiyun 	int op;
106*4882a593Smuzhiyun 	int flags;
107*4882a593Smuzhiyun 	int arg;
108*4882a593Smuzhiyun 	int fd;
109*4882a593Smuzhiyun 	uint32_t len;
110*4882a593Smuzhiyun 	int res;
111*4882a593Smuzhiyun };
112*4882a593Smuzhiyun 
113*4882a593Smuzhiyun int tee_supp_rk_fs_init_v1(void);
114*4882a593Smuzhiyun 
115*4882a593Smuzhiyun int tee_supp_rk_fs_process_v1(void *cmd, size_t cmd_size);
116*4882a593Smuzhiyun 
117*4882a593Smuzhiyun int tee_supp_rk_fs_init_v2(void);
118*4882a593Smuzhiyun 
119*4882a593Smuzhiyun int tee_supp_rk_fs_process_v2(void *cmd, size_t cmd_size);
120*4882a593Smuzhiyun 
121*4882a593Smuzhiyun int OpteeClientRkFsInit(void);
122*4882a593Smuzhiyun 
123*4882a593Smuzhiyun int OpteeClientRkFsProcess(void *cmd, size_t cmd_size);
124*4882a593Smuzhiyun 
125*4882a593Smuzhiyun #endif
126