xref: /optee_os/core/kernel/notif.c (revision 2828809ee87773e817c3ca071330131ae9ce66a7)
1*2828809eSJens Wiklander // SPDX-License-Identifier: BSD-2-Clause
2*2828809eSJens Wiklander /*
3*2828809eSJens Wiklander  * Copyright (c) 2021, Linaro Limited
4*2828809eSJens Wiklander  */
5*2828809eSJens Wiklander 
6*2828809eSJens Wiklander #include <kernel/notif.h>
7*2828809eSJens Wiklander #include <kernel/thread.h>
8*2828809eSJens Wiklander #include <optee_rpc_cmd.h>
9*2828809eSJens Wiklander #include <tee_api_types.h>
10*2828809eSJens Wiklander #include <types_ext.h>
11*2828809eSJens Wiklander 
12*2828809eSJens Wiklander static TEE_Result notif_rpc(uint32_t func, uint32_t value)
13*2828809eSJens Wiklander {
14*2828809eSJens Wiklander 	struct thread_param params = THREAD_PARAM_VALUE(IN, func, value, 0);
15*2828809eSJens Wiklander 
16*2828809eSJens Wiklander 	return thread_rpc_cmd(OPTEE_RPC_CMD_NOTIFICATION, 1, &params);
17*2828809eSJens Wiklander }
18*2828809eSJens Wiklander 
19*2828809eSJens Wiklander TEE_Result notif_wait(uint32_t value)
20*2828809eSJens Wiklander {
21*2828809eSJens Wiklander 	return notif_rpc(OPTEE_RPC_NOTIFICATION_WAIT, value);
22*2828809eSJens Wiklander }
23*2828809eSJens Wiklander 
24*2828809eSJens Wiklander TEE_Result notif_send_sync(uint32_t value)
25*2828809eSJens Wiklander {
26*2828809eSJens Wiklander 	return notif_rpc(OPTEE_RPC_NOTIFICATION_SEND, value);
27*2828809eSJens Wiklander }
28