xref: /rk3399_ARM-atf/services/spd/opteed/teesmc_opteed.h (revision 8aabea3358670f26cfa9eb99f8cd935d928f6da0)
1aa5da461SJens Wiklander /*
2*8aabea33SPaul Beesley  * Copyright (c) 2014-2019, ARM Limited and Contributors. All rights reserved.
3aa5da461SJens Wiklander  *
482cb2c1aSdp-arm  * SPDX-License-Identifier: BSD-3-Clause
5aa5da461SJens Wiklander  */
6aa5da461SJens Wiklander 
7aa5da461SJens Wiklander /* Copyright (c) 2014, Linaro Limited. All rights reserved. */
8aa5da461SJens Wiklander 
9aa5da461SJens Wiklander #ifndef TEESMC_OPTEED_H
10aa5da461SJens Wiklander #define TEESMC_OPTEED_H
11aa5da461SJens Wiklander 
12aa5da461SJens Wiklander /*
13*8aabea33SPaul Beesley  * This file specifies SMC function IDs used when returning from TEE to the
14aa5da461SJens Wiklander  * secure monitor.
15aa5da461SJens Wiklander  *
16aa5da461SJens Wiklander  * All SMC Function IDs indicates SMC32 Calling Convention but will carry
17aa5da461SJens Wiklander  * full 64 bit values in the argument registers if invoked from Aarch64
18aa5da461SJens Wiklander  * mode. This violates the SMC Calling Convention, but since this
19*8aabea33SPaul Beesley  * convention only coveres API towards Normal World it's something that
20aa5da461SJens Wiklander  * only concerns the OP-TEE Dispatcher in ARM Trusted Firmware and OP-TEE
21aa5da461SJens Wiklander  * OS at Secure EL1.
22aa5da461SJens Wiklander  */
23aa5da461SJens Wiklander 
24aa5da461SJens Wiklander /*
25aa5da461SJens Wiklander  * Issued when returning from initial entry.
26aa5da461SJens Wiklander  *
27aa5da461SJens Wiklander  * Register usage:
28aa5da461SJens Wiklander  * r0/x0	SMC Function ID, TEESMC_OPTEED_RETURN_ENTRY_DONE
29aa5da461SJens Wiklander  * r1/x1	Pointer to entry vector
30aa5da461SJens Wiklander  */
31aa5da461SJens Wiklander #define TEESMC_OPTEED_FUNCID_RETURN_ENTRY_DONE		0
32aa5da461SJens Wiklander #define TEESMC_OPTEED_RETURN_ENTRY_DONE \
33aa5da461SJens Wiklander 	TEESMC_OPTEED_RV(TEESMC_OPTEED_FUNCID_RETURN_ENTRY_DONE)
34aa5da461SJens Wiklander 
35aa5da461SJens Wiklander 
36aa5da461SJens Wiklander 
37aa5da461SJens Wiklander /*
38aa5da461SJens Wiklander  * Issued when returning from "cpu_on" vector
39aa5da461SJens Wiklander  *
40aa5da461SJens Wiklander  * Register usage:
41aa5da461SJens Wiklander  * r0/x0	SMC Function ID, TEESMC_OPTEED_RETURN_ON_DONE
42aa5da461SJens Wiklander  * r1/x1	0 on success and anything else to indicate error condition
43aa5da461SJens Wiklander  */
44aa5da461SJens Wiklander #define TEESMC_OPTEED_FUNCID_RETURN_ON_DONE		1
45aa5da461SJens Wiklander #define TEESMC_OPTEED_RETURN_ON_DONE \
46aa5da461SJens Wiklander 	TEESMC_OPTEED_RV(TEESMC_OPTEED_FUNCID_RETURN_ON_DONE)
47aa5da461SJens Wiklander 
48aa5da461SJens Wiklander /*
49aa5da461SJens Wiklander  * Issued when returning from "cpu_off" vector
50aa5da461SJens Wiklander  *
51aa5da461SJens Wiklander  * Register usage:
52aa5da461SJens Wiklander  * r0/x0	SMC Function ID, TEESMC_OPTEED_RETURN_OFF_DONE
53aa5da461SJens Wiklander  * r1/x1	0 on success and anything else to indicate error condition
54aa5da461SJens Wiklander  */
55aa5da461SJens Wiklander #define TEESMC_OPTEED_FUNCID_RETURN_OFF_DONE		2
56aa5da461SJens Wiklander #define TEESMC_OPTEED_RETURN_OFF_DONE \
57aa5da461SJens Wiklander 	TEESMC_OPTEED_RV(TEESMC_OPTEED_FUNCID_RETURN_OFF_DONE)
58aa5da461SJens Wiklander 
59aa5da461SJens Wiklander /*
60aa5da461SJens Wiklander  * Issued when returning from "cpu_suspend" vector
61aa5da461SJens Wiklander  *
62aa5da461SJens Wiklander  * Register usage:
63aa5da461SJens Wiklander  * r0/x0	SMC Function ID, TEESMC_OPTEED_RETURN_SUSPEND_DONE
64aa5da461SJens Wiklander  * r1/x1	0 on success and anything else to indicate error condition
65aa5da461SJens Wiklander  */
66aa5da461SJens Wiklander #define TEESMC_OPTEED_FUNCID_RETURN_SUSPEND_DONE	3
67aa5da461SJens Wiklander #define TEESMC_OPTEED_RETURN_SUSPEND_DONE \
68aa5da461SJens Wiklander 	TEESMC_OPTEED_RV(TEESMC_OPTEED_FUNCID_RETURN_SUSPEND_DONE)
69aa5da461SJens Wiklander 
70aa5da461SJens Wiklander /*
71aa5da461SJens Wiklander  * Issued when returning from "cpu_resume" vector
72aa5da461SJens Wiklander  *
73aa5da461SJens Wiklander  * Register usage:
74aa5da461SJens Wiklander  * r0/x0	SMC Function ID, TEESMC_OPTEED_RETURN_RESUME_DONE
75aa5da461SJens Wiklander  * r1/x1	0 on success and anything else to indicate error condition
76aa5da461SJens Wiklander  */
77aa5da461SJens Wiklander #define TEESMC_OPTEED_FUNCID_RETURN_RESUME_DONE		4
78aa5da461SJens Wiklander #define TEESMC_OPTEED_RETURN_RESUME_DONE \
79aa5da461SJens Wiklander 	TEESMC_OPTEED_RV(TEESMC_OPTEED_FUNCID_RETURN_RESUME_DONE)
80aa5da461SJens Wiklander 
81aa5da461SJens Wiklander /*
82aa5da461SJens Wiklander  * Issued when returning from "std_smc" or "fast_smc" vector
83aa5da461SJens Wiklander  *
84aa5da461SJens Wiklander  * Register usage:
85aa5da461SJens Wiklander  * r0/x0	SMC Function ID, TEESMC_OPTEED_RETURN_CALL_DONE
86aa5da461SJens Wiklander  * r1-4/x1-4	Return value 0-3 which will passed to normal world in
87aa5da461SJens Wiklander  *		r0-3/x0-3
88aa5da461SJens Wiklander  */
89aa5da461SJens Wiklander #define TEESMC_OPTEED_FUNCID_RETURN_CALL_DONE		5
90aa5da461SJens Wiklander #define TEESMC_OPTEED_RETURN_CALL_DONE \
91aa5da461SJens Wiklander 	TEESMC_OPTEED_RV(TEESMC_OPTEED_FUNCID_RETURN_CALL_DONE)
92aa5da461SJens Wiklander 
93aa5da461SJens Wiklander /*
94aa5da461SJens Wiklander  * Issued when returning from "fiq" vector
95aa5da461SJens Wiklander  *
96aa5da461SJens Wiklander  * Register usage:
97aa5da461SJens Wiklander  * r0/x0	SMC Function ID, TEESMC_OPTEED_RETURN_FIQ_DONE
98aa5da461SJens Wiklander  */
99aa5da461SJens Wiklander #define TEESMC_OPTEED_FUNCID_RETURN_FIQ_DONE		6
100aa5da461SJens Wiklander #define TEESMC_OPTEED_RETURN_FIQ_DONE \
101aa5da461SJens Wiklander 	TEESMC_OPTEED_RV(TEESMC_OPTEED_FUNCID_RETURN_FIQ_DONE)
102aa5da461SJens Wiklander 
103aa5da461SJens Wiklander /*
104aa5da461SJens Wiklander  * Issued when returning from "system_off" vector
105aa5da461SJens Wiklander  *
106aa5da461SJens Wiklander  * Register usage:
107aa5da461SJens Wiklander  * r0/x0	SMC Function ID, TEESMC_OPTEED_RETURN_SYSTEM_OFF_DONE
108aa5da461SJens Wiklander  */
109aa5da461SJens Wiklander #define TEESMC_OPTEED_FUNCID_RETURN_SYSTEM_OFF_DONE	7
110aa5da461SJens Wiklander #define TEESMC_OPTEED_RETURN_SYSTEM_OFF_DONE \
111aa5da461SJens Wiklander 	TEESMC_OPTEED_RV(TEESMC_OPTEED_FUNCID_RETURN_SYSTEM_OFF_DONE)
112aa5da461SJens Wiklander 
113aa5da461SJens Wiklander /*
114aa5da461SJens Wiklander  * Issued when returning from "system_reset" vector
115aa5da461SJens Wiklander  *
116aa5da461SJens Wiklander  * Register usage:
117aa5da461SJens Wiklander  * r0/x0	SMC Function ID, TEESMC_OPTEED_RETURN_SYSTEM_RESET_DONE
118aa5da461SJens Wiklander  */
119aa5da461SJens Wiklander #define TEESMC_OPTEED_FUNCID_RETURN_SYSTEM_RESET_DONE	8
120aa5da461SJens Wiklander #define TEESMC_OPTEED_RETURN_SYSTEM_RESET_DONE \
121aa5da461SJens Wiklander 	TEESMC_OPTEED_RV(TEESMC_OPTEED_FUNCID_RETURN_SYSTEM_RESET_DONE)
122aa5da461SJens Wiklander 
123aa5da461SJens Wiklander #endif /*TEESMC_OPTEED_H*/
124