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