1*cf48f49fSManish V Badarkhe /* 2*cf48f49fSManish V Badarkhe * Copyright (c) 2025, Arm Limited. All rights reserved. 3*cf48f49fSManish V Badarkhe * 4*cf48f49fSManish V Badarkhe * SPDX-License-Identifier: BSD-3-Clause 5*cf48f49fSManish V Badarkhe */ 6*cf48f49fSManish V Badarkhe 7*cf48f49fSManish V Badarkhe #include <services/lfa_svc.h> 8*cf48f49fSManish V Badarkhe #include <smccc_helpers.h> 9*cf48f49fSManish V Badarkhe 10*cf48f49fSManish V Badarkhe int lfa_setup(void) 11*cf48f49fSManish V Badarkhe { 12*cf48f49fSManish V Badarkhe return LFA_SUCCESS; 13*cf48f49fSManish V Badarkhe } 14*cf48f49fSManish V Badarkhe 15*cf48f49fSManish V Badarkhe uint64_t lfa_smc_handler(uint32_t smc_fid, u_register_t x1, u_register_t x2, 16*cf48f49fSManish V Badarkhe u_register_t x3, u_register_t x4, void *cookie, 17*cf48f49fSManish V Badarkhe void *handle, u_register_t flags) 18*cf48f49fSManish V Badarkhe { 19*cf48f49fSManish V Badarkhe /** 20*cf48f49fSManish V Badarkhe * TODO: Acquire serialization lock. 21*cf48f49fSManish V Badarkhe */ 22*cf48f49fSManish V Badarkhe switch (smc_fid) { 23*cf48f49fSManish V Badarkhe case LFA_VERSION: 24*cf48f49fSManish V Badarkhe SMC_RET1(handle, LFA_VERSION_VAL); 25*cf48f49fSManish V Badarkhe break; 26*cf48f49fSManish V Badarkhe 27*cf48f49fSManish V Badarkhe case LFA_FEATURES: 28*cf48f49fSManish V Badarkhe SMC_RET1(handle, is_lfa_fid(x1) ? LFA_SUCCESS : LFA_NOT_SUPPORTED); 29*cf48f49fSManish V Badarkhe break; 30*cf48f49fSManish V Badarkhe 31*cf48f49fSManish V Badarkhe case LFA_GET_INFO: 32*cf48f49fSManish V Badarkhe break; 33*cf48f49fSManish V Badarkhe 34*cf48f49fSManish V Badarkhe case LFA_GET_INVENTORY: 35*cf48f49fSManish V Badarkhe break; 36*cf48f49fSManish V Badarkhe 37*cf48f49fSManish V Badarkhe case LFA_PRIME: 38*cf48f49fSManish V Badarkhe break; 39*cf48f49fSManish V Badarkhe 40*cf48f49fSManish V Badarkhe case LFA_ACTIVATE: 41*cf48f49fSManish V Badarkhe break; 42*cf48f49fSManish V Badarkhe 43*cf48f49fSManish V Badarkhe case LFA_CANCEL: 44*cf48f49fSManish V Badarkhe break; 45*cf48f49fSManish V Badarkhe 46*cf48f49fSManish V Badarkhe default: 47*cf48f49fSManish V Badarkhe WARN("Unimplemented LFA Service Call: 0x%x\n", smc_fid); 48*cf48f49fSManish V Badarkhe SMC_RET1(handle, SMC_UNK); 49*cf48f49fSManish V Badarkhe break; /* unreachable */ 50*cf48f49fSManish V Badarkhe 51*cf48f49fSManish V Badarkhe } 52*cf48f49fSManish V Badarkhe 53*cf48f49fSManish V Badarkhe SMC_RET1(handle, SMC_UNK); 54*cf48f49fSManish V Badarkhe 55*cf48f49fSManish V Badarkhe return 0; 56*cf48f49fSManish V Badarkhe } 57