/* SPDX-License-Identifier: GPL-2.0-only */ /* * Copyright (c) 2023, Arm Limited */ #ifndef TSTEE_PRIVATE_H #define TSTEE_PRIVATE_H #include #include #include #include #include #include /* * The description of the ABI implemented in this file is available at * https://trusted-services.readthedocs.io/en/v1.0.0/developer/service-access-protocols.html#abi */ /* UUID of this protocol */ #define TS_RPC_UUID UUID_INIT(0xbdcd76d7, 0x825e, 0x4751, \ 0x96, 0x3b, 0x86, 0xd4, 0xf8, 0x49, 0x43, 0xac) /* Protocol version*/ #define TS_RPC_PROTOCOL_VERSION (1) /* Status codes */ #define TS_RPC_OK (0) /* RPC control register */ #define TS_RPC_CTRL_REG (0) #define OPCODE_MASK GENMASK(15, 0) #define IFACE_ID_MASK GENMASK(23, 16) #define TS_RPC_CTRL_OPCODE(x) ((u16)(FIELD_GET(OPCODE_MASK, (x)))) #define TS_RPC_CTRL_IFACE_ID(x) ((u8)(FIELD_GET(IFACE_ID_MASK, (x)))) #define TS_RPC_CTRL_PACK_IFACE_OPCODE(i, o) \ (FIELD_PREP(IFACE_ID_MASK, (i)) | FIELD_PREP(OPCODE_MASK, (o))) #define TS_RPC_CTRL_SAP_RC BIT(30) #define TS_RPC_CTRL_SAP_ERR BIT(31) /* Interface ID for RPC management operations */ #define TS_RPC_MGMT_IFACE_ID (0xff) /* Management calls */ #define TS_RPC_OP_GET_VERSION (0x0000) #define TS_RPC_GET_VERSION_RESP (1) #define TS_RPC_OP_RETRIEVE_MEM (0x0001) #define TS_RPC_RETRIEVE_MEM_HANDLE_LSW (1) #define TS_RPC_RETRIEVE_MEM_HANDLE_MSW (2) #define TS_RPC_RETRIEVE_MEM_TAG_LSW (3) #define TS_RPC_RETRIEVE_MEM_TAG_MSW (4) #define TS_RPC_RETRIEVE_MEM_RPC_STATUS (1) #define TS_RPC_OP_RELINQ_MEM (0x0002) #define TS_RPC_RELINQ_MEM_HANDLE_LSW (1) #define TS_RPC_RELINQ_MEM_HANDLE_MSW (2) #define TS_RPC_RELINQ_MEM_RPC_STATUS (1) #define TS_RPC_OP_SERVICE_INFO (0x0003) #define TS_RPC_SERVICE_INFO_UUID0 (1) #define TS_RPC_SERVICE_INFO_UUID1 (2) #define TS_RPC_SERVICE_INFO_UUID2 (3) #define TS_RPC_SERVICE_INFO_UUID3 (4) #define TS_RPC_SERVICE_INFO_RPC_STATUS (1) #define TS_RPC_SERVICE_INFO_IFACE (2) /* Service call */ #define TS_RPC_SERVICE_MEM_HANDLE_LSW (1) #define TS_RPC_SERVICE_MEM_HANDLE_MSW (2) #define TS_RPC_SERVICE_REQ_LEN (3) #define TS_RPC_SERVICE_CLIENT_ID (4) #define TS_RPC_SERVICE_RPC_STATUS (1) #define TS_RPC_SERVICE_STATUS (2) #define TS_RPC_SERVICE_RESP_LEN (3) struct tstee { struct ffa_device *ffa_dev; struct tee_device *teedev; struct tee_shm_pool *pool; }; struct ts_session { u8 iface_id; }; struct ts_context_data { struct xarray sess_list; }; #endif /* TSTEE_PRIVATE_H */