blob: c24099b75cbb778ba9178adac48b96b0f44f75a1 [file] [log] [blame]
Soby Mathewb4c6df42022-11-09 11:13:29 +00001/*
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
Soby Mathewc13b2302023-09-19 16:14:52 +010011void smc_version(unsigned long rmi_version,
12 struct smc_result *res);
Soby Mathewb4c6df42022-11-09 11:13:29 +000013
14void smc_read_feature_register(unsigned long index,
AlexeiFedorovccce3ad2023-04-28 18:29:47 +010015 struct smc_result *res);
Soby Mathewb4c6df42022-11-09 11:13:29 +000016
AlexeiFedorovac923c82023-04-06 15:12:04 +010017unsigned long smc_data_create(unsigned long rd_addr,
18 unsigned long data_addr,
Soby Mathewb4c6df42022-11-09 11:13:29 +000019 unsigned long map_addr,
20 unsigned long src_addr,
21 unsigned long flags);
22
AlexeiFedorovac923c82023-04-06 15:12:04 +010023unsigned long smc_data_create_unknown(unsigned long rd_addr,
24 unsigned long data_addr,
Soby Mathewb4c6df42022-11-09 11:13:29 +000025 unsigned long map_addr);
26
AlexeiFedorove2002be2023-04-19 17:20:12 +010027void smc_data_destroy(unsigned long rd_addr,
28 unsigned long map_addr,
AlexeiFedorovccce3ad2023-04-28 18:29:47 +010029 struct smc_result *res);
Soby Mathewb4c6df42022-11-09 11:13:29 +000030
31unsigned long smc_granule_delegate(unsigned long addr);
32
33unsigned long smc_granule_undelegate(unsigned long addr);
34
35unsigned long smc_realm_activate(unsigned long rd_addr);
36
37unsigned long smc_realm_create(unsigned long rd_addr,
AlexeiFedorove2002be2023-04-19 17:20:12 +010038 unsigned long realm_params_addr);
Soby Mathewb4c6df42022-11-09 11:13:29 +000039
40unsigned long smc_realm_destroy(unsigned long rd_addr);
41
AlexeiFedorovac923c82023-04-06 15:12:04 +010042unsigned long smc_rec_create(unsigned long rd_addr,
43 unsigned long rec_addr,
Soby Mathewb4c6df42022-11-09 11:13:29 +000044 unsigned long rec_params_addr);
45
46unsigned long smc_rec_destroy(unsigned long rec_addr);
47
48unsigned long smc_rec_enter(unsigned long rec_addr,
49 unsigned long rec_run_addr);
50
51void smc_rec_aux_count(unsigned long rd_addr,
AlexeiFedorovccce3ad2023-04-28 18:29:47 +010052 struct smc_result *res);
Soby Mathewb4c6df42022-11-09 11:13:29 +000053
AlexeiFedorovac923c82023-04-06 15:12:04 +010054unsigned long smc_rtt_create(unsigned long rd_addr,
55 unsigned long rtt_addr,
Soby Mathewb4c6df42022-11-09 11:13:29 +000056 unsigned long map_addr,
57 unsigned long ulevel);
58
AlexeiFedorove2002be2023-04-19 17:20:12 +010059void smc_rtt_destroy(unsigned long rd_addr,
60 unsigned long map_addr,
61 unsigned long ulevel,
AlexeiFedorovccce3ad2023-04-28 18:29:47 +010062 struct smc_result *res);
Soby Mathewb4c6df42022-11-09 11:13:29 +000063
AlexeiFedorove2002be2023-04-19 17:20:12 +010064void smc_rtt_fold(unsigned long rd_addr,
65 unsigned long map_addr,
66 unsigned long ulevel,
AlexeiFedorovccce3ad2023-04-28 18:29:47 +010067 struct smc_result *res);
Soby Mathewb4c6df42022-11-09 11:13:29 +000068
69unsigned long smc_rtt_map_unprotected(unsigned long rd_addr,
70 unsigned long map_addr,
71 unsigned long ulevel,
72 unsigned long s2tte);
73
AlexeiFedorov917eabf2023-04-24 12:20:41 +010074void smc_rtt_unmap_unprotected(unsigned long rd_addr,
75 unsigned long map_addr,
76 unsigned long ulevel,
77 struct smc_result *res);
Soby Mathewb4c6df42022-11-09 11:13:29 +000078
79void smc_rtt_read_entry(unsigned long rd_addr,
80 unsigned long map_addr,
81 unsigned long ulevel,
AlexeiFedorovccce3ad2023-04-28 18:29:47 +010082 struct smc_result *res);
Soby Mathewb4c6df42022-11-09 11:13:29 +000083
84unsigned long smc_psci_complete(unsigned long calling_rec_addr,
AlexeiFedorov120d7d02023-08-02 16:51:48 +010085 unsigned long target_rec_addr,
86 unsigned long status);
Soby Mathewb4c6df42022-11-09 11:13:29 +000087
AlexeiFedorov960d1612023-04-25 13:23:39 +010088void smc_rtt_init_ripas(unsigned long rd_addr,
89 unsigned long base,
90 unsigned long top,
91 struct smc_result *res);
Soby Mathewb4c6df42022-11-09 11:13:29 +000092
AlexeiFedorov5cf35ba2023-04-25 10:02:20 +010093void smc_rtt_set_ripas(unsigned long rd_addr,
94 unsigned long rec_addr,
95 unsigned long base,
96 unsigned long top,
AlexeiFedorovccce3ad2023-04-28 18:29:47 +010097 struct smc_result *res);
Soby Mathewb4c6df42022-11-09 11:13:29 +000098
AlexeiFedorovd2e93932025-01-13 17:24:37 +000099unsigned 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
104void smc_dev_mem_unmap(unsigned long rd_addr,
105 unsigned long map_addr,
106 unsigned long ulevel,
107 struct smc_result *res);
108
Soby Mathewb4c6df42022-11-09 11:13:29 +0000109#endif /* SMC_HANDLER_H */