19ff4a311SJens Wiklander /* SPDX-License-Identifier: GPL-2.0+ */ 29ff4a311SJens Wiklander /* 39ff4a311SJens Wiklander * Copyright (c) 2018 Linaro Limited 49ff4a311SJens Wiklander */ 59ff4a311SJens Wiklander 69ff4a311SJens Wiklander #ifndef __TEE_H 79ff4a311SJens Wiklander #define __TEE_H 89ff4a311SJens Wiklander 99ff4a311SJens Wiklander #define TEE_UUID_LEN 16 109ff4a311SJens Wiklander 119ff4a311SJens Wiklander #define TEE_GEN_CAP_GP BIT(0) /* GlobalPlatform compliant TEE */ 129ff4a311SJens Wiklander #define TEE_GEN_CAP_REG_MEM BIT(1) /* Supports registering shared memory */ 139ff4a311SJens Wiklander 149ff4a311SJens Wiklander #define TEE_SHM_REGISTER BIT(0) /* In list of shared memory */ 159ff4a311SJens Wiklander #define TEE_SHM_SEC_REGISTER BIT(1) /* TEE notified of this memory */ 169ff4a311SJens Wiklander #define TEE_SHM_ALLOC BIT(2) /* The memory is malloced() and must */ 179ff4a311SJens Wiklander /* be freed() */ 189ff4a311SJens Wiklander 199ff4a311SJens Wiklander #define TEE_PARAM_ATTR_TYPE_NONE 0 /* parameter not used */ 209ff4a311SJens Wiklander #define TEE_PARAM_ATTR_TYPE_VALUE_INPUT 1 219ff4a311SJens Wiklander #define TEE_PARAM_ATTR_TYPE_VALUE_OUTPUT 2 229ff4a311SJens Wiklander #define TEE_PARAM_ATTR_TYPE_VALUE_INOUT 3 /* input and output */ 239ff4a311SJens Wiklander #define TEE_PARAM_ATTR_TYPE_MEMREF_INPUT 5 249ff4a311SJens Wiklander #define TEE_PARAM_ATTR_TYPE_MEMREF_OUTPUT 6 259ff4a311SJens Wiklander #define TEE_PARAM_ATTR_TYPE_MEMREF_INOUT 7 /* input and output */ 269ff4a311SJens Wiklander #define TEE_PARAM_ATTR_TYPE_MASK 0xff 279ff4a311SJens Wiklander #define TEE_PARAM_ATTR_META 0x100 289ff4a311SJens Wiklander #define TEE_PARAM_ATTR_MASK (TEE_PARAM_ATTR_TYPE_MASK | \ 299ff4a311SJens Wiklander TEE_PARAM_ATTR_META) 309ff4a311SJens Wiklander 319ff4a311SJens Wiklander /* 329ff4a311SJens Wiklander * Some Global Platform error codes which has a meaning if the 339ff4a311SJens Wiklander * TEE_GEN_CAP_GP bit is returned by the driver in 349ff4a311SJens Wiklander * struct tee_version_data::gen_caps 359ff4a311SJens Wiklander */ 369ff4a311SJens Wiklander #define TEE_SUCCESS 0x00000000 37*8b131266SIgor Opaniuk #define TEE_ERROR_STORAGE_NOT_AVAILABLE 0xf0100003 389ff4a311SJens Wiklander #define TEE_ERROR_GENERIC 0xffff0000 399ff4a311SJens Wiklander #define TEE_ERROR_BAD_PARAMETERS 0xffff0006 409ff4a311SJens Wiklander #define TEE_ERROR_ITEM_NOT_FOUND 0xffff0008 419ff4a311SJens Wiklander #define TEE_ERROR_NOT_IMPLEMENTED 0xffff0009 429ff4a311SJens Wiklander #define TEE_ERROR_NOT_SUPPORTED 0xffff000a 439ff4a311SJens Wiklander #define TEE_ERROR_COMMUNICATION 0xffff000e 449ff4a311SJens Wiklander #define TEE_ERROR_SECURITY 0xffff000f 459ff4a311SJens Wiklander #define TEE_ERROR_OUT_OF_MEMORY 0xffff000c 469ff4a311SJens Wiklander #define TEE_ERROR_TARGET_DEAD 0xffff3024 479ff4a311SJens Wiklander 489ff4a311SJens Wiklander #define TEE_ORIGIN_COMMS 0x00000002 499ff4a311SJens Wiklander #define TEE_ORIGIN_TEE 0x00000003 509ff4a311SJens Wiklander #define TEE_ORIGIN_TRUSTED_APP 0x00000004 519ff4a311SJens Wiklander 529ff4a311SJens Wiklander struct udevice; 531cc8cc4eSJens Wiklander 541cc8cc4eSJens Wiklander /** 551cc8cc4eSJens Wiklander * struct tee_optee_ta_uuid - OP-TEE Trusted Application (TA) UUID format 561cc8cc4eSJens Wiklander * 571cc8cc4eSJens Wiklander * Used to identify an OP-TEE TA and define suitable to initialize structs 581cc8cc4eSJens Wiklander * of this format is distributed with the interface of the TA. The 591cc8cc4eSJens Wiklander * individual fields of this struct doesn't have any special meaning in 601cc8cc4eSJens Wiklander * OP-TEE. See RFC4122 for details on the format. 611cc8cc4eSJens Wiklander */ 621cc8cc4eSJens Wiklander struct tee_optee_ta_uuid { 631cc8cc4eSJens Wiklander u32 time_low; 641cc8cc4eSJens Wiklander u16 time_mid; 651cc8cc4eSJens Wiklander u16 time_hi_and_version; 661cc8cc4eSJens Wiklander u8 clock_seq_and_node[8]; 671cc8cc4eSJens Wiklander }; 681cc8cc4eSJens Wiklander 699ff4a311SJens Wiklander /** 709ff4a311SJens Wiklander * struct tee_shm - memory shared with the TEE 719ff4a311SJens Wiklander * @dev: The TEE device 729ff4a311SJens Wiklander * @link: List node in the list in struct struct tee_uclass_priv 739ff4a311SJens Wiklander * @addr: Pointer to the shared memory 749ff4a311SJens Wiklander * @size: Size of the the shared memory 759ff4a311SJens Wiklander * @flags: TEE_SHM_* above 769ff4a311SJens Wiklander */ 779ff4a311SJens Wiklander struct tee_shm { 789ff4a311SJens Wiklander struct udevice *dev; 799ff4a311SJens Wiklander struct list_head link; 809ff4a311SJens Wiklander void *addr; 819ff4a311SJens Wiklander ulong size; 829ff4a311SJens Wiklander u32 flags; 839ff4a311SJens Wiklander }; 849ff4a311SJens Wiklander 859ff4a311SJens Wiklander /** 869ff4a311SJens Wiklander * struct tee_param_memref - memory reference for a Trusted Application 879ff4a311SJens Wiklander * @shm_offs: Offset in bytes into the shared memory object @shm 889ff4a311SJens Wiklander * @size: Size in bytes of the memory reference 899ff4a311SJens Wiklander * @shm: Pointer to a shared memory object for the buffer 909ff4a311SJens Wiklander * 919ff4a311SJens Wiklander * Used as a part of struct tee_param, see that for more information. 929ff4a311SJens Wiklander */ 939ff4a311SJens Wiklander struct tee_param_memref { 949ff4a311SJens Wiklander ulong shm_offs; 959ff4a311SJens Wiklander ulong size; 969ff4a311SJens Wiklander struct tee_shm *shm; 979ff4a311SJens Wiklander }; 989ff4a311SJens Wiklander 999ff4a311SJens Wiklander /** 1009ff4a311SJens Wiklander * struct tee_param_value - value parameter for a Trusted Application 1019ff4a311SJens Wiklander * @a, @b, @c: Parameters passed by value 1029ff4a311SJens Wiklander * 1039ff4a311SJens Wiklander * Used as a part of struct tee_param, see that for more information. 1049ff4a311SJens Wiklander */ 1059ff4a311SJens Wiklander struct tee_param_value { 1069ff4a311SJens Wiklander u64 a; 1079ff4a311SJens Wiklander u64 b; 1089ff4a311SJens Wiklander u64 c; 1099ff4a311SJens Wiklander }; 1109ff4a311SJens Wiklander 1119ff4a311SJens Wiklander /** 1129ff4a311SJens Wiklander * struct tee_param - invoke parameter for a Trusted Application 1139ff4a311SJens Wiklander * @attr: Attributes 1149ff4a311SJens Wiklander * @u.memref: Memref parameter if (@attr & TEE_PARAM_ATTR_MASK) is one of 1159ff4a311SJens Wiklander * TEE_PARAM_ATTR_TYPE_MEMREF_* above 1169ff4a311SJens Wiklander * @u.value: Value parameter if (@attr & TEE_PARAM_ATTR_MASK) is one of 1179ff4a311SJens Wiklander * TEE_PARAM_ATTR_TYPE_VALUE_* above 1189ff4a311SJens Wiklander * 1199ff4a311SJens Wiklander * Parameters to TA are passed using an array of this struct, for 1209ff4a311SJens Wiklander * flexibility both value parameters and memory refereces can be used. 1219ff4a311SJens Wiklander */ 1229ff4a311SJens Wiklander struct tee_param { 1239ff4a311SJens Wiklander u64 attr; 1249ff4a311SJens Wiklander union { 1259ff4a311SJens Wiklander struct tee_param_memref memref; 1269ff4a311SJens Wiklander struct tee_param_value value; 1279ff4a311SJens Wiklander } u; 1289ff4a311SJens Wiklander }; 1299ff4a311SJens Wiklander 1309ff4a311SJens Wiklander /** 1319ff4a311SJens Wiklander * struct tee_open_session_arg - extra arguments for tee_open_session() 1329ff4a311SJens Wiklander * @uuid: [in] UUID of the Trusted Application 1339ff4a311SJens Wiklander * @clnt_uuid: [in] Normally zeroes 1349ff4a311SJens Wiklander * @clnt_login: [in] Normally 0 1359ff4a311SJens Wiklander * @session: [out] Session id 1369ff4a311SJens Wiklander * @ret: [out] return value 1379ff4a311SJens Wiklander * @ret_origin: [out] origin of the return value 1389ff4a311SJens Wiklander */ 1399ff4a311SJens Wiklander struct tee_open_session_arg { 1409ff4a311SJens Wiklander u8 uuid[TEE_UUID_LEN]; 1419ff4a311SJens Wiklander u8 clnt_uuid[TEE_UUID_LEN]; 1429ff4a311SJens Wiklander u32 clnt_login; 1439ff4a311SJens Wiklander u32 session; 1449ff4a311SJens Wiklander u32 ret; 1459ff4a311SJens Wiklander u32 ret_origin; 1469ff4a311SJens Wiklander }; 1479ff4a311SJens Wiklander 1489ff4a311SJens Wiklander /** 1499ff4a311SJens Wiklander * struct tee_invoke_arg - extra arguments for tee_invoke_func() 1509ff4a311SJens Wiklander * @func: [in] Trusted Application function, specific to the TA 1519ff4a311SJens Wiklander * @session: [in] Session id, from open session 1529ff4a311SJens Wiklander * @ret: [out] return value 1539ff4a311SJens Wiklander * @ret_origin: [out] origin of the return value 1549ff4a311SJens Wiklander */ 1559ff4a311SJens Wiklander struct tee_invoke_arg { 1569ff4a311SJens Wiklander u32 func; 1579ff4a311SJens Wiklander u32 session; 1589ff4a311SJens Wiklander u32 ret; 1599ff4a311SJens Wiklander u32 ret_origin; 1609ff4a311SJens Wiklander }; 1619ff4a311SJens Wiklander 1629ff4a311SJens Wiklander /** 1639ff4a311SJens Wiklander * struct tee_version_data - description of TEE 1649ff4a311SJens Wiklander * @gen_caps: Generic capabilities, TEE_GEN_CAP_* above 1659ff4a311SJens Wiklander */ 1669ff4a311SJens Wiklander struct tee_version_data { 1679ff4a311SJens Wiklander u32 gen_caps; 1689ff4a311SJens Wiklander }; 1699ff4a311SJens Wiklander 1709ff4a311SJens Wiklander /** 1719ff4a311SJens Wiklander * struct tee_driver_ops - TEE driver operations 1729ff4a311SJens Wiklander * @get_version: Query capabilities of TEE device, 1739ff4a311SJens Wiklander * @open_session: Opens a session to a Trusted Application in the TEE, 1749ff4a311SJens Wiklander * @close_session: Closes a session to Trusted Application, 1759ff4a311SJens Wiklander * @invoke_func: Invokes a function in a Trusted Application, 1769ff4a311SJens Wiklander * @shm_register: Registers memory shared with the TEE 1779ff4a311SJens Wiklander * @shm_unregister: Unregisters memory shared with the TEE 1789ff4a311SJens Wiklander */ 1799ff4a311SJens Wiklander struct tee_driver_ops { 1809ff4a311SJens Wiklander /** 1819ff4a311SJens Wiklander * get_version() - Query capabilities of TEE device 1829ff4a311SJens Wiklander * @dev: The TEE device 1839ff4a311SJens Wiklander * @vers: Pointer to version data 1849ff4a311SJens Wiklander */ 1859ff4a311SJens Wiklander void (*get_version)(struct udevice *dev, struct tee_version_data *vers); 1869ff4a311SJens Wiklander /** 1879ff4a311SJens Wiklander * open_session() - Open a session to a Trusted Application 1889ff4a311SJens Wiklander * @dev: The TEE device 1899ff4a311SJens Wiklander * @arg: Open session arguments 1909ff4a311SJens Wiklander * @num_param: Number of elements in @param 1919ff4a311SJens Wiklander * @param: Parameters for Trusted Application 1929ff4a311SJens Wiklander * 1939ff4a311SJens Wiklander * Returns < 0 on error else see @arg->ret for result. If @arg->ret is 1949ff4a311SJens Wiklander * TEE_SUCCESS the session identifier is available in @arg->session. 1959ff4a311SJens Wiklander */ 1969ff4a311SJens Wiklander int (*open_session)(struct udevice *dev, 1979ff4a311SJens Wiklander struct tee_open_session_arg *arg, uint num_param, 1989ff4a311SJens Wiklander struct tee_param *param); 1999ff4a311SJens Wiklander /** 2009ff4a311SJens Wiklander * close_session() - Close a session to a Trusted Application 2019ff4a311SJens Wiklander * @dev: The TEE device 2029ff4a311SJens Wiklander * @session: Session id 2039ff4a311SJens Wiklander * 2049ff4a311SJens Wiklander * Return < 0 on error else 0, regardless the session will not be valid 2059ff4a311SJens Wiklander * after this function has returned. 2069ff4a311SJens Wiklander */ 2079ff4a311SJens Wiklander int (*close_session)(struct udevice *dev, u32 session); 2089ff4a311SJens Wiklander /** 2099ff4a311SJens Wiklander * tee_invoke_func() - Invoke a function in a Trusted Application 2109ff4a311SJens Wiklander * @dev: The TEE device 2119ff4a311SJens Wiklander * @arg: Invoke arguments 2129ff4a311SJens Wiklander * @num_param: Number of elements in @param 2139ff4a311SJens Wiklander * @param: Parameters for Trusted Application 2149ff4a311SJens Wiklander * 2159ff4a311SJens Wiklander * Returns < 0 on error else see @arg->ret for result. 2169ff4a311SJens Wiklander */ 2179ff4a311SJens Wiklander int (*invoke_func)(struct udevice *dev, struct tee_invoke_arg *arg, 2189ff4a311SJens Wiklander uint num_param, struct tee_param *param); 2199ff4a311SJens Wiklander /** 2209ff4a311SJens Wiklander * shm_register() - Registers memory shared with the TEE 2219ff4a311SJens Wiklander * @dev: The TEE device 2229ff4a311SJens Wiklander * @shm: Pointer to a shared memory object 2239ff4a311SJens Wiklander * Returns 0 on success or < 0 on failure. 2249ff4a311SJens Wiklander */ 2259ff4a311SJens Wiklander int (*shm_register)(struct udevice *dev, struct tee_shm *shm); 2269ff4a311SJens Wiklander /** 2279ff4a311SJens Wiklander * shm_unregister() - Unregisters memory shared with the TEE 2289ff4a311SJens Wiklander * @dev: The TEE device 2299ff4a311SJens Wiklander * @shm: Pointer to a shared memory object 2309ff4a311SJens Wiklander * Returns 0 on success or < 0 on failure. 2319ff4a311SJens Wiklander */ 2329ff4a311SJens Wiklander int (*shm_unregister)(struct udevice *dev, struct tee_shm *shm); 2339ff4a311SJens Wiklander }; 2349ff4a311SJens Wiklander 2359ff4a311SJens Wiklander /** 2369ff4a311SJens Wiklander * __tee_shm_add() - Internal helper function to register shared memory 2379ff4a311SJens Wiklander * @dev: The TEE device 2389ff4a311SJens Wiklander * @align: Required alignment of allocated memory block if 2399ff4a311SJens Wiklander * (@flags & TEE_SHM_ALLOC) 2409ff4a311SJens Wiklander * @addr: Address of memory block, ignored if (@flags & TEE_SHM_ALLOC) 2419ff4a311SJens Wiklander * @size: Size of memory block 2429ff4a311SJens Wiklander * @flags: TEE_SHM_* above 2439ff4a311SJens Wiklander * @shmp: If the function return 0, this holds the allocated 2449ff4a311SJens Wiklander * struct tee_shm 2459ff4a311SJens Wiklander * 2469ff4a311SJens Wiklander * returns 0 on success or < 0 on failure. 2479ff4a311SJens Wiklander */ 2489ff4a311SJens Wiklander int __tee_shm_add(struct udevice *dev, ulong align, void *addr, ulong size, 2499ff4a311SJens Wiklander u32 flags, struct tee_shm **shmp); 2509ff4a311SJens Wiklander 2519ff4a311SJens Wiklander /** 2529ff4a311SJens Wiklander * tee_shm_alloc() - Allocate shared memory 2539ff4a311SJens Wiklander * @dev: The TEE device 2549ff4a311SJens Wiklander * @size: Size of memory block 2559ff4a311SJens Wiklander * @flags: TEE_SHM_* above 2569ff4a311SJens Wiklander * @shmp: If the function return 0, this holds the allocated 2579ff4a311SJens Wiklander * struct tee_shm 2589ff4a311SJens Wiklander * 2599ff4a311SJens Wiklander * returns 0 on success or < 0 on failure. 2609ff4a311SJens Wiklander */ 2619ff4a311SJens Wiklander int tee_shm_alloc(struct udevice *dev, ulong size, u32 flags, 2629ff4a311SJens Wiklander struct tee_shm **shmp); 2639ff4a311SJens Wiklander 2649ff4a311SJens Wiklander /** 2659ff4a311SJens Wiklander * tee_shm_register() - Registers shared memory 2669ff4a311SJens Wiklander * @dev: The TEE device 2679ff4a311SJens Wiklander * @addr: Address of memory block 2689ff4a311SJens Wiklander * @size: Size of memory block 2699ff4a311SJens Wiklander * @flags: TEE_SHM_* above 2709ff4a311SJens Wiklander * @shmp: If the function return 0, this holds the allocated 2719ff4a311SJens Wiklander * struct tee_shm 2729ff4a311SJens Wiklander * 2739ff4a311SJens Wiklander * returns 0 on success or < 0 on failure. 2749ff4a311SJens Wiklander */ 2759ff4a311SJens Wiklander int tee_shm_register(struct udevice *dev, void *addr, ulong size, u32 flags, 2769ff4a311SJens Wiklander struct tee_shm **shmp); 2779ff4a311SJens Wiklander 2789ff4a311SJens Wiklander /** 2799ff4a311SJens Wiklander * tee_shm_free() - Frees shared memory 2809ff4a311SJens Wiklander * @shm: Shared memory object 2819ff4a311SJens Wiklander */ 2829ff4a311SJens Wiklander void tee_shm_free(struct tee_shm *shm); 2839ff4a311SJens Wiklander 2849ff4a311SJens Wiklander /** 2859ff4a311SJens Wiklander * tee_shm_is_registered() - Check register status of shared memory object 2869ff4a311SJens Wiklander * @shm: Pointer to shared memory object 2879ff4a311SJens Wiklander * @dev: The TEE device 2889ff4a311SJens Wiklander * 2899ff4a311SJens Wiklander * Returns true if the shared memory object is registered for the supplied 2909ff4a311SJens Wiklander * TEE device 2919ff4a311SJens Wiklander */ 2929ff4a311SJens Wiklander bool tee_shm_is_registered(struct tee_shm *shm, struct udevice *dev); 2939ff4a311SJens Wiklander 2949ff4a311SJens Wiklander /** 2959ff4a311SJens Wiklander * tee_find_device() - Look up a TEE device 2969ff4a311SJens Wiklander * @start: if not NULL, continue search after this device 2979ff4a311SJens Wiklander * @match: function to check TEE device, returns != 0 if the device 2989ff4a311SJens Wiklander * matches 2999ff4a311SJens Wiklander * @data: data for match function 3009ff4a311SJens Wiklander * @vers: if not NULL, version data of TEE device of the device returned 3019ff4a311SJens Wiklander * 3029ff4a311SJens Wiklander * Returns a probed TEE device of the first TEE device matched by the 3039ff4a311SJens Wiklander * match() callback or NULL. 3049ff4a311SJens Wiklander */ 3059ff4a311SJens Wiklander struct udevice *tee_find_device(struct udevice *start, 3069ff4a311SJens Wiklander int (*match)(struct tee_version_data *vers, 3079ff4a311SJens Wiklander const void *data), 3089ff4a311SJens Wiklander const void *data, 3099ff4a311SJens Wiklander struct tee_version_data *vers); 3109ff4a311SJens Wiklander 3119ff4a311SJens Wiklander /** 3129ff4a311SJens Wiklander * tee_get_version() - Query capabilities of TEE device 3139ff4a311SJens Wiklander * @dev: The TEE device 3149ff4a311SJens Wiklander * @vers: Pointer to version data 3159ff4a311SJens Wiklander */ 3169ff4a311SJens Wiklander void tee_get_version(struct udevice *dev, struct tee_version_data *vers); 3179ff4a311SJens Wiklander 3189ff4a311SJens Wiklander /** 3199ff4a311SJens Wiklander * tee_open_session() - Open a session to a Trusted Application 3209ff4a311SJens Wiklander * @dev: The TEE device 3219ff4a311SJens Wiklander * @arg: Open session arguments 3229ff4a311SJens Wiklander * @num_param: Number of elements in @param 3239ff4a311SJens Wiklander * @param: Parameters for Trusted Application 3249ff4a311SJens Wiklander * 3259ff4a311SJens Wiklander * Returns < 0 on error else see @arg->ret for result. If @arg->ret is 3269ff4a311SJens Wiklander * TEE_SUCCESS the session identifier is available in @arg->session. 3279ff4a311SJens Wiklander */ 3289ff4a311SJens Wiklander int tee_open_session(struct udevice *dev, struct tee_open_session_arg *arg, 3299ff4a311SJens Wiklander uint num_param, struct tee_param *param); 3309ff4a311SJens Wiklander 3319ff4a311SJens Wiklander /** 3329ff4a311SJens Wiklander * tee_close_session() - Close a session to a Trusted Application 3339ff4a311SJens Wiklander * @dev: The TEE device 3349ff4a311SJens Wiklander * @session: Session id 3359ff4a311SJens Wiklander * 3369ff4a311SJens Wiklander * Return < 0 on error else 0, regardless the session will not be valid 3379ff4a311SJens Wiklander * after this function has returned. 3389ff4a311SJens Wiklander */ 3399ff4a311SJens Wiklander int tee_close_session(struct udevice *dev, u32 session); 3409ff4a311SJens Wiklander 3419ff4a311SJens Wiklander /** 3429ff4a311SJens Wiklander * tee_invoke_func() - Invoke a function in a Trusted Application 3439ff4a311SJens Wiklander * @dev: The TEE device 3449ff4a311SJens Wiklander * @arg: Invoke arguments 3459ff4a311SJens Wiklander * @num_param: Number of elements in @param 3469ff4a311SJens Wiklander * @param: Parameters for Trusted Application 3479ff4a311SJens Wiklander * 3489ff4a311SJens Wiklander * Returns < 0 on error else see @arg->ret for result. 3499ff4a311SJens Wiklander */ 3509ff4a311SJens Wiklander int tee_invoke_func(struct udevice *dev, struct tee_invoke_arg *arg, 3519ff4a311SJens Wiklander uint num_param, struct tee_param *param); 3529ff4a311SJens Wiklander 3531cc8cc4eSJens Wiklander /** 3541cc8cc4eSJens Wiklander * tee_optee_ta_uuid_from_octets() - Converts to struct tee_optee_ta_uuid 3551cc8cc4eSJens Wiklander * @d: Destination struct 3561cc8cc4eSJens Wiklander * @s: Source UUID octets 3571cc8cc4eSJens Wiklander * 3581cc8cc4eSJens Wiklander * Conversion to a struct tee_optee_ta_uuid represantion from binary octet 3591cc8cc4eSJens Wiklander * representation. 3601cc8cc4eSJens Wiklander */ 3611cc8cc4eSJens Wiklander void tee_optee_ta_uuid_from_octets(struct tee_optee_ta_uuid *d, 3621cc8cc4eSJens Wiklander const u8 s[TEE_UUID_LEN]); 3631cc8cc4eSJens Wiklander 3641cc8cc4eSJens Wiklander /** 3651cc8cc4eSJens Wiklander * tee_optee_ta_uuid_to_octets() - Converts from struct tee_optee_ta_uuid 3661cc8cc4eSJens Wiklander * @d: Destination UUID octets 3671cc8cc4eSJens Wiklander * @s: Source struct 3681cc8cc4eSJens Wiklander * 3691cc8cc4eSJens Wiklander * Conversion from a struct tee_optee_ta_uuid represantion to binary octet 3701cc8cc4eSJens Wiklander * representation. 3711cc8cc4eSJens Wiklander */ 3721cc8cc4eSJens Wiklander void tee_optee_ta_uuid_to_octets(u8 d[TEE_UUID_LEN], 3731cc8cc4eSJens Wiklander const struct tee_optee_ta_uuid *s); 3741cc8cc4eSJens Wiklander 3759ff4a311SJens Wiklander #endif /* __TEE_H */ 376