xref: /rk3399_ARM-atf/include/drivers/arm/ethosn.h (revision 76a21174d2a2f1750b13b2680461b6b80a654848)
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