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