cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

optee_rpc_cmd.h (3309B)


      1/* SPDX-License-Identifier: BSD-2-Clause */
      2/*
      3 * Copyright (c) 2016-2021, Linaro Limited
      4 */
      5
      6#ifndef __OPTEE_RPC_CMD_H
      7#define __OPTEE_RPC_CMD_H
      8
      9/*
     10 * All RPC is done with a struct optee_msg_arg as bearer of information,
     11 * struct optee_msg_arg::arg holds values defined by OPTEE_RPC_CMD_* below.
     12 * Only the commands handled by the kernel driver are defined here.
     13 *
     14 * RPC communication with tee-supplicant is reversed compared to normal
     15 * client communication described above. The supplicant receives requests
     16 * and sends responses.
     17 */
     18
     19/*
     20 * Get time
     21 *
     22 * Returns number of seconds and nano seconds since the Epoch,
     23 * 1970-01-01 00:00:00 +0000 (UTC).
     24 *
     25 * [out]    value[0].a	    Number of seconds
     26 * [out]    value[0].b	    Number of nano seconds.
     27 */
     28#define OPTEE_RPC_CMD_GET_TIME		3
     29
     30/*
     31 * Notification from/to secure world.
     32 *
     33 * If secure world needs to wait for something, for instance a mutex, it
     34 * does a notification wait request instead of spinning in secure world.
     35 * Conversely can a synchronous notification can be sent when a secure
     36 * world mutex with a thread waiting thread is unlocked.
     37 *
     38 * This interface can also be used to wait for a asynchronous notification
     39 * which instead is sent via a non-secure interrupt.
     40 *
     41 * Waiting on notification
     42 * [in]    value[0].a	    OPTEE_RPC_NOTIFICATION_WAIT
     43 * [in]    value[0].b	    notification value
     44 *
     45 * Sending a synchronous notification
     46 * [in]    value[0].a	    OPTEE_RPC_NOTIFICATION_SEND
     47 * [in]    value[0].b	    notification value
     48 */
     49#define OPTEE_RPC_CMD_NOTIFICATION	4
     50#define OPTEE_RPC_NOTIFICATION_WAIT	0
     51#define OPTEE_RPC_NOTIFICATION_SEND	1
     52
     53/*
     54 * Suspend execution
     55 *
     56 * [in]    value[0].a	Number of milliseconds to suspend
     57 */
     58#define OPTEE_RPC_CMD_SUSPEND		5
     59
     60/*
     61 * Allocate a piece of shared memory
     62 *
     63 * [in]    value[0].a	    Type of memory one of
     64 *			    OPTEE_RPC_SHM_TYPE_* below
     65 * [in]    value[0].b	    Requested size
     66 * [in]    value[0].c	    Required alignment
     67 * [out]   memref[0]	    Buffer
     68 */
     69#define OPTEE_RPC_CMD_SHM_ALLOC		6
     70/* Memory that can be shared with a non-secure user space application */
     71#define OPTEE_RPC_SHM_TYPE_APPL		0
     72/* Memory only shared with non-secure kernel */
     73#define OPTEE_RPC_SHM_TYPE_KERNEL	1
     74
     75/*
     76 * Free shared memory previously allocated with OPTEE_RPC_CMD_SHM_ALLOC
     77 *
     78 * [in]     value[0].a	    Type of memory one of
     79 *			    OPTEE_RPC_SHM_TYPE_* above
     80 * [in]     value[0].b	    Value of shared memory reference or cookie
     81 */
     82#define OPTEE_RPC_CMD_SHM_FREE		7
     83
     84/*
     85 * Issue master requests (read and write operations) to an I2C chip.
     86 *
     87 * [in]     value[0].a	    Transfer mode (OPTEE_RPC_I2C_TRANSFER_*)
     88 * [in]     value[0].b	    The I2C bus (a.k.a adapter).
     89 *				16 bit field.
     90 * [in]     value[0].c	    The I2C chip (a.k.a address).
     91 *				16 bit field (either 7 or 10 bit effective).
     92 * [in]     value[1].a	    The I2C master control flags (ie, 10 bit address).
     93 *				16 bit field.
     94 * [in/out] memref[2]	    Buffer used for data transfers.
     95 * [out]    value[3].a	    Number of bytes transferred by the REE.
     96 */
     97#define OPTEE_RPC_CMD_I2C_TRANSFER	21
     98
     99/* I2C master transfer modes */
    100#define OPTEE_RPC_I2C_TRANSFER_RD	0
    101#define OPTEE_RPC_I2C_TRANSFER_WR	1
    102
    103/* I2C master control flags */
    104#define OPTEE_RPC_I2C_FLAGS_TEN_BIT	BIT(0)
    105
    106#endif /*__OPTEE_RPC_CMD_H*/