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