brintos

brintos / linux-shallow public Read only

0
0
Text · 2.5 KiB · 8e58725 Raw
93 lines · c
1/* SPDX-License-Identifier: GPL-2.0-only */2/*3 * Copyright (c) 2023, Arm Limited4 */5 6#ifndef TSTEE_PRIVATE_H7#define TSTEE_PRIVATE_H8 9#include <linux/arm_ffa.h>10#include <linux/bitops.h>11#include <linux/tee_core.h>12#include <linux/types.h>13#include <linux/uuid.h>14#include <linux/xarray.h>15 16/*17 * The description of the ABI implemented in this file is available at18 * https://trusted-services.readthedocs.io/en/v1.0.0/developer/service-access-protocols.html#abi19 */20 21/* UUID of this protocol */22#define TS_RPC_UUID UUID_INIT(0xbdcd76d7, 0x825e, 0x4751, \23			      0x96, 0x3b, 0x86, 0xd4, 0xf8, 0x49, 0x43, 0xac)24 25/* Protocol version*/26#define TS_RPC_PROTOCOL_VERSION		(1)27 28/* Status codes */29#define TS_RPC_OK			(0)30 31/* RPC control register */32#define TS_RPC_CTRL_REG			(0)33#define OPCODE_MASK			GENMASK(15, 0)34#define IFACE_ID_MASK			GENMASK(23, 16)35#define TS_RPC_CTRL_OPCODE(x)		((u16)(FIELD_GET(OPCODE_MASK, (x))))36#define TS_RPC_CTRL_IFACE_ID(x)		((u8)(FIELD_GET(IFACE_ID_MASK, (x))))37#define TS_RPC_CTRL_PACK_IFACE_OPCODE(i, o)	\38	(FIELD_PREP(IFACE_ID_MASK, (i)) | FIELD_PREP(OPCODE_MASK, (o)))39#define TS_RPC_CTRL_SAP_RC		BIT(30)40#define TS_RPC_CTRL_SAP_ERR		BIT(31)41 42/* Interface ID for RPC management operations */43#define TS_RPC_MGMT_IFACE_ID		(0xff)44 45/* Management calls */46#define TS_RPC_OP_GET_VERSION		(0x0000)47#define TS_RPC_GET_VERSION_RESP		(1)48 49#define TS_RPC_OP_RETRIEVE_MEM		(0x0001)50#define TS_RPC_RETRIEVE_MEM_HANDLE_LSW	(1)51#define TS_RPC_RETRIEVE_MEM_HANDLE_MSW	(2)52#define TS_RPC_RETRIEVE_MEM_TAG_LSW	(3)53#define TS_RPC_RETRIEVE_MEM_TAG_MSW	(4)54#define TS_RPC_RETRIEVE_MEM_RPC_STATUS	(1)55 56#define TS_RPC_OP_RELINQ_MEM		(0x0002)57#define TS_RPC_RELINQ_MEM_HANDLE_LSW	(1)58#define TS_RPC_RELINQ_MEM_HANDLE_MSW	(2)59#define TS_RPC_RELINQ_MEM_RPC_STATUS	(1)60 61#define TS_RPC_OP_SERVICE_INFO		(0x0003)62#define TS_RPC_SERVICE_INFO_UUID0	(1)63#define TS_RPC_SERVICE_INFO_UUID1	(2)64#define TS_RPC_SERVICE_INFO_UUID2	(3)65#define TS_RPC_SERVICE_INFO_UUID3	(4)66#define TS_RPC_SERVICE_INFO_RPC_STATUS	(1)67#define TS_RPC_SERVICE_INFO_IFACE	(2)68 69/* Service call */70#define TS_RPC_SERVICE_MEM_HANDLE_LSW	(1)71#define TS_RPC_SERVICE_MEM_HANDLE_MSW	(2)72#define TS_RPC_SERVICE_REQ_LEN		(3)73#define TS_RPC_SERVICE_CLIENT_ID	(4)74#define TS_RPC_SERVICE_RPC_STATUS	(1)75#define TS_RPC_SERVICE_STATUS		(2)76#define TS_RPC_SERVICE_RESP_LEN		(3)77 78struct tstee {79	struct ffa_device *ffa_dev;80	struct tee_device *teedev;81	struct tee_shm_pool *pool;82};83 84struct ts_session {85	u8 iface_id;86};87 88struct ts_context_data {89	struct xarray sess_list;90};91 92#endif /* TSTEE_PRIVATE_H */93