1*76a21174SMikael Olsson /* 2*76a21174SMikael Olsson * Copyright (c) 2021, Arm Limited. All rights reserved. 3*76a21174SMikael Olsson * 4*76a21174SMikael Olsson * SPDX-License-Identifier: BSD-3-Clause 5*76a21174SMikael Olsson */ 6*76a21174SMikael Olsson 7*76a21174SMikael Olsson #ifndef ETHOSN_H 8*76a21174SMikael Olsson #define ETHOSN_H 9*76a21174SMikael Olsson 10*76a21174SMikael Olsson #include <lib/smccc.h> 11*76a21174SMikael Olsson 12*76a21174SMikael Olsson /* Function numbers */ 13*76a21174SMikael Olsson #define ETHOSN_FNUM_VERSION U(0x50) 14*76a21174SMikael Olsson #define ETHOSN_FNUM_IS_SEC U(0x51) 15*76a21174SMikael Olsson #define ETHOSN_FNUM_HARD_RESET U(0x52) 16*76a21174SMikael Olsson #define ETHOSN_FNUM_SOFT_RESET U(0x53) 17*76a21174SMikael Olsson /* 0x54-0x5F reserved for future use */ 18*76a21174SMikael Olsson 19*76a21174SMikael Olsson /* SMC64 function IDs */ 20*76a21174SMikael Olsson #define ETHOSN_FID_64(func_num) U(0xC2000000 | func_num) 21*76a21174SMikael Olsson #define ETHOSN_FID_VERSION_64 ETHOSN_FID_64(ETHOSN_FNUM_VERSION) 22*76a21174SMikael Olsson #define ETHOSN_FID_IS_SEC_64 ETHOSN_FID_64(ETHOSN_FNUM_IS_SEC) 23*76a21174SMikael Olsson #define ETHOSN_FID_HARD_RESET_64 ETHOSN_FID_64(ETHOSN_FNUM_HARD_RESET) 24*76a21174SMikael Olsson #define ETHOSN_FID_SOFT_RESET_64 ETHOSN_FID_64(ETHOSN_FNUM_SOFT_RESET) 25*76a21174SMikael Olsson 26*76a21174SMikael Olsson /* SMC32 function IDs */ 27*76a21174SMikael Olsson #define ETHOSN_FID_32(func_num) U(0x82000000 | func_num) 28*76a21174SMikael Olsson #define ETHOSN_FID_VERSION_32 ETHOSN_FID_32(ETHOSN_FNUM_VERSION) 29*76a21174SMikael Olsson #define ETHOSN_FID_IS_SEC_32 ETHOSN_FID_32(ETHOSN_FNUM_IS_SEC) 30*76a21174SMikael Olsson #define ETHOSN_FID_HARD_RESET_32 ETHOSN_FID_32(ETHOSN_FNUM_HARD_RESET) 31*76a21174SMikael Olsson #define ETHOSN_FID_SOFT_RESET_32 ETHOSN_FID_32(ETHOSN_FNUM_SOFT_RESET) 32*76a21174SMikael Olsson 33*76a21174SMikael Olsson #define ETHOSN_NUM_SMC_CALLS 8 34*76a21174SMikael Olsson 35*76a21174SMikael Olsson /* Macro to identify function calls */ 36*76a21174SMikael Olsson #define ETHOSN_FID_MASK U(0xFFF0) 37*76a21174SMikael Olsson #define ETHOSN_FID_VALUE U(0x50) 38*76a21174SMikael Olsson #define is_ethosn_fid(_fid) (((_fid) & ETHOSN_FID_MASK) == ETHOSN_FID_VALUE) 39*76a21174SMikael Olsson 40*76a21174SMikael Olsson /* Service version */ 41*76a21174SMikael Olsson #define ETHOSN_VERSION_MAJOR U(0) 42*76a21174SMikael Olsson #define ETHOSN_VERSION_MINOR U(1) 43*76a21174SMikael Olsson 44*76a21174SMikael Olsson /* Return codes for function calls */ 45*76a21174SMikael Olsson #define ETHOSN_SUCCESS 0 46*76a21174SMikael Olsson #define ETHOSN_NOT_SUPPORTED -1 47*76a21174SMikael Olsson /* -2 Reserved for NOT_REQUIRED */ 48*76a21174SMikael Olsson /* -3 Reserved for INVALID_PARAMETER */ 49*76a21174SMikael Olsson #define ETHOSN_FAILURE -4 50*76a21174SMikael Olsson #define ETHOSN_CORE_IDX_OUT_OF_RANGE -5 51*76a21174SMikael Olsson 52*76a21174SMikael Olsson uintptr_t ethosn_smc_handler(uint32_t smc_fid, 53*76a21174SMikael Olsson u_register_t core_idx, 54*76a21174SMikael Olsson u_register_t x2, 55*76a21174SMikael Olsson u_register_t x3, 56*76a21174SMikael Olsson u_register_t x4, 57*76a21174SMikael Olsson void *cookie, 58*76a21174SMikael Olsson void *handle, 59*76a21174SMikael Olsson u_register_t flags); 60*76a21174SMikael Olsson 61*76a21174SMikael Olsson #endif /* ETHOSN_H */ 62