93 lines
2.5 KiB
C
93 lines
2.5 KiB
C
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
/*
|
|
* Copyright (c) 2023, Arm Limited
|
|
*/
|
|
|
|
#ifndef TSTEE_PRIVATE_H
|
|
#define TSTEE_PRIVATE_H
|
|
|
|
#include <linux/arm_ffa.h>
|
|
#include <linux/bitops.h>
|
|
#include <linux/tee_core.h>
|
|
#include <linux/types.h>
|
|
#include <linux/uuid.h>
|
|
#include <linux/xarray.h>
|
|
|
|
/*
|
|
* 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 */
|