1 /*
2  * SPDX-License-Identifier: BSD-3-Clause
3  * SPDX-FileCopyrightText: Copyright TF-RMM Contributors.
4  */
5 
6 #ifndef SMC_HANDLER_H
7 #define SMC_HANDLER_H
8 
9 #include <smc.h>
10 
11 void smc_version(unsigned long rmi_version,
12 				struct smc_result *res);
13 
14 void smc_read_feature_register(unsigned long index,
15 				struct smc_result *res);
16 
17 unsigned long smc_data_create(unsigned long rd_addr,
18 			      unsigned long data_addr,
19 			      unsigned long map_addr,
20 			      unsigned long src_addr,
21 			      unsigned long flags);
22 
23 unsigned long smc_data_create_unknown(unsigned long rd_addr,
24 				      unsigned long data_addr,
25 				      unsigned long map_addr);
26 
27 void smc_data_destroy(unsigned long rd_addr,
28 		      unsigned long map_addr,
29 		      struct smc_result *res);
30 
31 unsigned long smc_granule_delegate(unsigned long addr);
32 
33 unsigned long smc_granule_undelegate(unsigned long addr);
34 
35 unsigned long smc_realm_activate(unsigned long rd_addr);
36 
37 unsigned long smc_realm_create(unsigned long rd_addr,
38 				unsigned long realm_params_addr);
39 
40 unsigned long smc_realm_destroy(unsigned long rd_addr);
41 
42 unsigned long smc_rec_create(unsigned long rd_addr,
43 			     unsigned long rec_addr,
44 			     unsigned long rec_params_addr);
45 
46 unsigned long smc_rec_destroy(unsigned long rec_addr);
47 
48 unsigned long smc_rec_enter(unsigned long rec_addr,
49 			    unsigned long rec_run_addr);
50 
51 void smc_rec_aux_count(unsigned long rd_addr,
52 			struct smc_result *res);
53 
54 unsigned long smc_rtt_create(unsigned long rd_addr,
55 			     unsigned long rtt_addr,
56 			     unsigned long map_addr,
57 			     unsigned long ulevel);
58 
59 void smc_rtt_destroy(unsigned long rd_addr,
60 		     unsigned long map_addr,
61 		     unsigned long ulevel,
62 		     struct smc_result *res);
63 
64 void smc_rtt_fold(unsigned long rd_addr,
65 		  unsigned long map_addr,
66 		  unsigned long ulevel,
67 		  struct smc_result *res);
68 
69 unsigned long smc_rtt_map_unprotected(unsigned long rd_addr,
70 				      unsigned long map_addr,
71 				      unsigned long ulevel,
72 				      unsigned long s2tte);
73 
74 void smc_rtt_unmap_unprotected(unsigned long rd_addr,
75 				unsigned long map_addr,
76 				unsigned long ulevel,
77 				struct smc_result *res);
78 
79 void smc_rtt_read_entry(unsigned long rd_addr,
80 			unsigned long map_addr,
81 			unsigned long ulevel,
82 			struct smc_result *res);
83 
84 unsigned long smc_psci_complete(unsigned long calling_rec_addr,
85 				unsigned long target_rec_addr,
86 				unsigned long status);
87 
88 void smc_rtt_init_ripas(unsigned long rd_addr,
89 			unsigned long base,
90 			unsigned long top,
91 			struct smc_result *res);
92 
93 void smc_rtt_set_ripas(unsigned long rd_addr,
94 			unsigned long rec_addr,
95 			unsigned long base,
96 			unsigned long top,
97 			struct smc_result *res);
98 
99 unsigned long smc_dev_mem_map(unsigned long rd_addr,
100 				unsigned long map_addr,
101 				unsigned long ulevel,
102 				unsigned long dev_mem_addr);
103 
104 void smc_dev_mem_unmap(unsigned long rd_addr,
105 			unsigned long map_addr,
106 			unsigned long ulevel,
107 			struct smc_result *res);
108 
109 unsigned long smc_pdev_create(unsigned long pdev_ptr,
110 			      unsigned long pdev_params_ptr);
111 
112 void smc_pdev_aux_count(unsigned long flags, struct smc_result *res);
113 
114 unsigned long smc_pdev_communicate(unsigned long pdev_ptr,
115 				   unsigned long dev_comm_data_ptr);
116 
117 void smc_pdev_get_state(unsigned long pdev_ptr, struct smc_result *res);
118 
119 unsigned long smc_pdev_set_pubkey(unsigned long pdev_ptr,
120 				  unsigned long pubkey_params_ptr);
121 
122 unsigned long smc_pdev_abort(unsigned long pdev_ptr);
123 
124 unsigned long smc_pdev_stop(unsigned long pdev_ptr);
125 
126 unsigned long smc_pdev_destroy(unsigned long pdev_ptr);
127 
128 #endif /* SMC_HANDLER_H */
129