blob: 585dd254fbf4629e0917505f8f0740488f926286 [file] [log] [blame]
/*
* Copyright (C) 2016 Samsung Electronics, Inc.
*
* This software is licensed under the terms of the GNU General Public
* License version 2, as published by the Free Software Foundation, and
* may be copied, distributed, and modified under those terms.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
#ifndef __TZ_COMMON_H__
#define __TZ_COMMON_H__
#include <linux/types.h>
#include <linux/limits.h>
/*
* CA_ID is a full basename of CA executable.
* It can not be longer than max supported filename length defined in Linux.
*/
#define CA_ID_LEN (256)
#define TZ_IOC_MAGIC 'c'
#define TZIO_SMC _IOWR(TZ_IOC_MAGIC, 101, struct tzio_smc_data)
#define TZIO_WAIT_EVT _IO(TZ_IOC_MAGIC, 112)
#define TZIO_GET_PIPE _IOR(TZ_IOC_MAGIC, 113, int)
#define TZIO_UPDATE_REE_TIME _IO(TZ_IOC_MAGIC, 114)
#define TZIO_GET_ACCESS_INFO _IOWR(TZ_IOC_MAGIC, 119, struct tzio_access_info)
#define TZIO_MEM_REGISTER _IOWR(TZ_IOC_MAGIC, 120, struct tzio_mem_register)
#define TZIO_MEM_RELEASE _IOW(TZ_IOC_MAGIC, 121, int)
#if defined(CONFIG_TZDEV_QC_CRYPTO_CLOCKS_USR_MNG)
#define TZIO_SET_QC_CLK _IOW(TZ_IOC_MAGIC, 123, int)
#endif
#define TZIO_GET_SYSCONF _IOW(TZ_IOC_MAGIC, 124, struct tzio_sysconf)
#define TZIO_BOOST _IO(TZ_IOC_MAGIC, 125)
#define TZIO_RELAX _IO(TZ_IOC_MAGIC, 126)
#define TZIO_GET_CPU_MASK _IO(TZ_IOC_MAGIC, 127)
#define TZIO_ACCEPT_NEW_HOLE _IO(TZ_IOC_MAGIC, 128)
struct tzio_access_info {
int32_t pid; /* CA PID */
int32_t gid; /* CA GID - to be received from TZDEV */
char ca_name[CA_ID_LEN]; /* CA identity - to be received from TZDEV */
};
/* NB: Sysconf related definitions should match with those in SWd */
#define SYSCONF_VERSION_LEN (256)
#define SYSCONF_CRYPTO_CLOCK_MANAGEMENT (1 << 0)
struct tzio_sysconf {
uint32_t os_version; /* SWd OS version */
uint32_t cpu_num; /* SWd number of cpu supported */
uint32_t big_cpus_mask; /* SWd big cluster cpus mask */
uint32_t flags; /* SWd flags */
char version[SYSCONF_VERSION_LEN]; /* SWd OS version string */
} __attribute__((__packed__));
#define NR_SMC_ARGS (4)
struct tzio_smc_data {
union {
int32_t args[NR_SMC_ARGS]; /* SMC args (in/out) */
struct {
uint16_t pipe;
uint8_t reserved1;
uint8_t event_mask;
uint32_t reserved2;
uint16_t iwnotify_oem_flags;
uint16_t reserved3;
uint32_t reserved4;
} __packed;
};
};
struct tzio_mem_register {
int32_t pid; /* Memory region owner's PID (in) */
const uint64_t ptr; /* Memory region start (in) */
uint64_t size; /* Memory region size (in) */
int32_t id; /* Memory region ID (out) */
int32_t write; /* 1 - rw, 0 - ro */
};
struct tzio_service_channel {
uint32_t mask;
};
#endif /*__TZ_COMMON_H__*/