1*f55b136aSGatien Chevallier /* 2*f55b136aSGatien Chevallier * Copyright (c) 2024, STMicroelectronics - All Rights Reserved 3*f55b136aSGatien Chevallier * 4*f55b136aSGatien Chevallier * SPDX-License-Identifier: BSD-3-Clause 5*f55b136aSGatien Chevallier */ 6*f55b136aSGatien Chevallier 7*f55b136aSGatien Chevallier #include <stdbool.h> 8*f55b136aSGatien Chevallier #include <stdint.h> 9*f55b136aSGatien Chevallier 10*f55b136aSGatien Chevallier #include <common/debug.h> 11*f55b136aSGatien Chevallier #include <common/runtime_svc.h> 12*f55b136aSGatien Chevallier #include <lib/mmio.h> 13*f55b136aSGatien Chevallier 14*f55b136aSGatien Chevallier #include <stm32mp2_smc.h> 15*f55b136aSGatien Chevallier #include <stm32mp_svc_setup.h> 16*f55b136aSGatien Chevallier 17*f55b136aSGatien Chevallier /* 18*f55b136aSGatien Chevallier * Platform-level Standard Service SIP SMC handler. This handler will dispatch 19*f55b136aSGatien Chevallier * the SMC to the correct feature handler. 20*f55b136aSGatien Chevallier */ 21*f55b136aSGatien Chevallier void plat_svc_smc_handler(uint32_t smc_fid, u_register_t x1, 22*f55b136aSGatien Chevallier u_register_t x2, u_register_t x3, 23*f55b136aSGatien Chevallier u_register_t x4, uint32_t *ret1, 24*f55b136aSGatien Chevallier uint32_t *ret2, bool *ret2_enabled, 25*f55b136aSGatien Chevallier u_register_t flags) 26*f55b136aSGatien Chevallier { 27*f55b136aSGatien Chevallier switch (smc_fid) { 28*f55b136aSGatien Chevallier case STM32_SIP_SVC_CALL_COUNT: 29*f55b136aSGatien Chevallier *ret1 = STM32_COMMON_SIP_NUM_CALLS; 30*f55b136aSGatien Chevallier break; 31*f55b136aSGatien Chevallier default: 32*f55b136aSGatien Chevallier WARN("Unimplemented STM32MP2 Service Call: 0x%x\n", smc_fid); 33*f55b136aSGatien Chevallier *ret1 = STM32_SMC_NOT_SUPPORTED; 34*f55b136aSGatien Chevallier break; 35*f55b136aSGatien Chevallier } 36*f55b136aSGatien Chevallier } 37