1a42bad37SYann Gautier /* 2*39b08bc3SYann Gautier * Copyright (c) 2014-2024, STMicroelectronics - All Rights Reserved 3a42bad37SYann Gautier * 4a42bad37SYann Gautier * SPDX-License-Identifier: BSD-3-Clause 5a42bad37SYann Gautier */ 6a42bad37SYann Gautier 7a42bad37SYann Gautier #include <stdbool.h> 8a42bad37SYann Gautier #include <stdint.h> 9a42bad37SYann Gautier 10a42bad37SYann Gautier #include <common/debug.h> 11a42bad37SYann Gautier #include <common/runtime_svc.h> 12b4734308SPeng Fan #include <drivers/scmi-msg.h> 13a42bad37SYann Gautier #include <lib/psci/psci.h> 14a42bad37SYann Gautier #include <tools_share/uuid.h> 15a42bad37SYann Gautier 16a42bad37SYann Gautier #include <stm32mp1_smc.h> 17*39b08bc3SYann Gautier #include <stm32mp_svc_setup.h> 18a42bad37SYann Gautier 19c7ba52daSYann Gautier #include "bsec_svc.h" 20c7ba52daSYann Gautier 21a42bad37SYann Gautier /* 22*39b08bc3SYann Gautier * Platform Standard Service SMC handler. This handler will dispatch 23*39b08bc3SYann Gautier * calls to features handlers. 24a42bad37SYann Gautier */ 25*39b08bc3SYann Gautier void plat_svc_smc_handler(uint32_t smc_fid, u_register_t x1, 26a42bad37SYann Gautier u_register_t x2, u_register_t x3, 27*39b08bc3SYann Gautier u_register_t x4, uint32_t *ret1, 28*39b08bc3SYann Gautier uint32_t *ret2, bool *ret2_enabled, 29*39b08bc3SYann Gautier u_register_t flags) 30a42bad37SYann Gautier { 31a42bad37SYann Gautier switch (smc_fid) { 32a42bad37SYann Gautier case STM32_SIP_SVC_CALL_COUNT: 33*39b08bc3SYann Gautier *ret1 = STM32_COMMON_SIP_NUM_CALLS; 34a42bad37SYann Gautier break; 35c7ba52daSYann Gautier case STM32_SMC_BSEC: 36*39b08bc3SYann Gautier *ret1 = bsec_main(x1, x2, x3, ret2); 37*39b08bc3SYann Gautier *ret2_enabled = true; 38c7ba52daSYann Gautier break; 39c7ba52daSYann Gautier 40fdaaaeb4SEtienne Carriere case STM32_SIP_SMC_SCMI_AGENT0: 41fdaaaeb4SEtienne Carriere scmi_smt_fastcall_smc_entry(0); 42fdaaaeb4SEtienne Carriere break; 43fdaaaeb4SEtienne Carriere case STM32_SIP_SMC_SCMI_AGENT1: 44fdaaaeb4SEtienne Carriere scmi_smt_fastcall_smc_entry(1); 45fdaaaeb4SEtienne Carriere break; 46fdaaaeb4SEtienne Carriere 47a42bad37SYann Gautier default: 48a42bad37SYann Gautier WARN("Unimplemented STM32MP1 Service Call: 0x%x\n", smc_fid); 49*39b08bc3SYann Gautier *ret1 = STM32_SMC_NOT_SUPPORTED; 50a42bad37SYann Gautier break; 51a42bad37SYann Gautier } 52a42bad37SYann Gautier } 53