diff --git a/include/services/ffa_svc.h b/include/services/ffa_svc.h index 5b39c4265d08f9570d7d2e32d76bd994fc4e609a..ab36d9e1f63007b3d384a4dbd82bde3f1df43ee1 100644 --- a/include/services/ffa_svc.h +++ b/include/services/ffa_svc.h @@ -22,7 +22,7 @@ /* The macros below are used to identify FFA calls from the SMC function ID */ #define FFA_FNUM_MIN_VALUE U(0x60) -#define FFA_FNUM_MAX_VALUE U(0x85) +#define FFA_FNUM_MAX_VALUE U(0x87) #define is_ffa_fid(fid) __extension__ ({ \ __typeof__(fid) _fid = (fid); \ ((GET_SMC_NUM(_fid) >= FFA_FNUM_MIN_VALUE) && \ @@ -32,7 +32,7 @@ #define FFA_VERSION_MAJOR U(1) #define FFA_VERSION_MAJOR_SHIFT 16 #define FFA_VERSION_MAJOR_MASK U(0x7FFF) -#define FFA_VERSION_MINOR U(0) +#define FFA_VERSION_MINOR U(1) #define FFA_VERSION_MINOR_SHIFT 0 #define FFA_VERSION_MINOR_MASK U(0xFFFF) #define FFA_VERSION_BIT31_MASK U(0x1u << 31) @@ -61,32 +61,44 @@ ((func_num) << FUNCID_NUM_SHIFT)) /* FFA function numbers */ -#define FFA_FNUM_ERROR U(0x60) -#define FFA_FNUM_SUCCESS U(0x61) -#define FFA_FNUM_INTERRUPT U(0x62) -#define FFA_FNUM_VERSION U(0x63) -#define FFA_FNUM_FEATURES U(0x64) -#define FFA_FNUM_RX_RELEASE U(0x65) -#define FFA_FNUM_RXTX_MAP U(0x66) -#define FFA_FNUM_RXTX_UNMAP U(0x67) -#define FFA_FNUM_PARTITION_INFO_GET U(0x68) -#define FFA_FNUM_ID_GET U(0x69) -#define FFA_FNUM_MSG_POLL U(0x6A) -#define FFA_FNUM_MSG_WAIT U(0x6B) -#define FFA_FNUM_MSG_YIELD U(0x6C) -#define FFA_FNUM_MSG_RUN U(0x6D) -#define FFA_FNUM_MSG_SEND U(0x6E) -#define FFA_FNUM_MSG_SEND_DIRECT_REQ U(0x6F) -#define FFA_FNUM_MSG_SEND_DIRECT_RESP U(0x70) -#define FFA_FNUM_MEM_DONATE U(0x71) -#define FFA_FNUM_MEM_LEND U(0x72) -#define FFA_FNUM_MEM_SHARE U(0x73) -#define FFA_FNUM_MEM_RETRIEVE_REQ U(0x74) -#define FFA_FNUM_MEM_RETRIEVE_RESP U(0x75) -#define FFA_FNUM_MEM_RELINQUISH U(0x76) -#define FFA_FNUM_MEM_RECLAIM U(0x77) -#define FFA_FNUM_SECONDARY_EP_REGISTER U(0x84) -#define FFA_FNUM_SPM_ID_GET U(0x85) +#define FFA_FNUM_ERROR U(0x60) +#define FFA_FNUM_SUCCESS U(0x61) +#define FFA_FNUM_INTERRUPT U(0x62) +#define FFA_FNUM_VERSION U(0x63) +#define FFA_FNUM_FEATURES U(0x64) +#define FFA_FNUM_RX_RELEASE U(0x65) +#define FFA_FNUM_RXTX_MAP U(0x66) +#define FFA_FNUM_RXTX_UNMAP U(0x67) +#define FFA_FNUM_PARTITION_INFO_GET U(0x68) +#define FFA_FNUM_ID_GET U(0x69) +#define FFA_FNUM_MSG_POLL U(0x6A) /* Legacy FF-A v1.0 */ +#define FFA_FNUM_MSG_WAIT U(0x6B) +#define FFA_FNUM_MSG_YIELD U(0x6C) +#define FFA_FNUM_MSG_RUN U(0x6D) +#define FFA_FNUM_MSG_SEND U(0x6E) /* Legacy FF-A v1.0 */ +#define FFA_FNUM_MSG_SEND_DIRECT_REQ U(0x6F) +#define FFA_FNUM_MSG_SEND_DIRECT_RESP U(0x70) +#define FFA_FNUM_MEM_DONATE U(0x71) +#define FFA_FNUM_MEM_LEND U(0x72) +#define FFA_FNUM_MEM_SHARE U(0x73) +#define FFA_FNUM_MEM_RETRIEVE_REQ U(0x74) +#define FFA_FNUM_MEM_RETRIEVE_RESP U(0x75) +#define FFA_FNUM_MEM_RELINQUISH U(0x76) +#define FFA_FNUM_MEM_RECLAIM U(0x77) +#define FFA_FNUM_NORMAL_WORLD_RESUME U(0x7C) + +/* FF-A v1.1 */ +#define FFA_FNUM_NOTIFICATION_BITMAP_CREATE U(0x7D) +#define FFA_FNUM_NOTIFICATION_BITMAP_DESTROY U(0x7E) +#define FFA_FNUM_NOTIFICATION_BIND U(0x7F) +#define FFA_FNUM_NOTIFICATION_UNBIND U(0x80) +#define FFA_FNUM_NOTIFICATION_SET U(0x81) +#define FFA_FNUM_NOTIFICATION_GET U(0x82) +#define FFA_FNUM_NOTIFICATION_INFO_GET U(0x83) +#define FFA_FNUM_RX_ACQUIRE U(0x84) +#define FFA_FNUM_SPM_ID_GET U(0x85) +#define FFA_FNUM_MSG_SEND2 U(0x86) +#define FFA_FNUM_SECONDARY_EP_REGISTER U(0x87) /* FFA SMC32 FIDs */ #define FFA_ERROR FFA_FID(SMC_32, FFA_FNUM_ERROR) diff --git a/plat/arm/board/diphda/common/fdts/diphda_spmc_manifest.dts b/plat/arm/board/diphda/common/fdts/diphda_spmc_manifest.dts index def04cde134490cd7c86d13e0edd59d6d87e5b31..536bdc39b433510be85690076c6baa37dd4934f8 100644 --- a/plat/arm/board/diphda/common/fdts/diphda_spmc_manifest.dts +++ b/plat/arm/board/diphda/common/fdts/diphda_spmc_manifest.dts @@ -20,7 +20,7 @@ attribute { spmc_id = <0x8000>; maj_ver = <0x1>; - min_ver = <0x0>; + min_ver = <0x1>; exec_state = <0x0>; load_address = <0x0 0x2002000>; entrypoint = <0x0 0x2002000>; diff --git a/plat/arm/board/fvp/fdts/fvp_spmc_manifest.dts b/plat/arm/board/fvp/fdts/fvp_spmc_manifest.dts index 67e55049229ee4e59dcd23a9ac658b29b4064630..21a6073a338c397ca6e34c312f5fe2256dfb5126 100644 --- a/plat/arm/board/fvp/fdts/fvp_spmc_manifest.dts +++ b/plat/arm/board/fvp/fdts/fvp_spmc_manifest.dts @@ -20,7 +20,7 @@ attribute { spmc_id = <0x8000>; maj_ver = <0x1>; - min_ver = <0x0>; + min_ver = <0x1>; exec_state = <0x0>; load_address = <0x0 0x6000000>; entrypoint = <0x0 0x6000000>; diff --git a/plat/arm/board/fvp/fdts/fvp_spmc_optee_sp_manifest.dts b/plat/arm/board/fvp/fdts/fvp_spmc_optee_sp_manifest.dts index 088179b6124e48c0642facd44f590e4b871fabf5..041dade7353d8acdfee6f8441142061b68b8a7a2 100644 --- a/plat/arm/board/fvp/fdts/fvp_spmc_optee_sp_manifest.dts +++ b/plat/arm/board/fvp/fdts/fvp_spmc_optee_sp_manifest.dts @@ -20,7 +20,7 @@ attribute { spmc_id = <0x8000>; maj_ver = <0x1>; - min_ver = <0x0>; + min_ver = <0x1>; exec_state = <0x0>; load_address = <0x0 0x6000000>; entrypoint = <0x0 0x6000000>; diff --git a/plat/arm/board/tc0/fdts/tc0_spmc_manifest.dts b/plat/arm/board/tc0/fdts/tc0_spmc_manifest.dts index 44c7008a82907dbbfc93e8d41d03892261f3fb48..7fb1657b18708cf1d8ce359de06152d35291ca63 100644 --- a/plat/arm/board/tc0/fdts/tc0_spmc_manifest.dts +++ b/plat/arm/board/tc0/fdts/tc0_spmc_manifest.dts @@ -13,7 +13,7 @@ attribute { spmc_id = <0x8000>; maj_ver = <0x1>; - min_ver = <0x0>; + min_ver = <0x1>; exec_state = <0x0>; load_address = <0x0 0xfd000000>; entrypoint = <0x0 0xfd000000>; diff --git a/plat/arm/board/tc0/fdts/tc0_spmc_optee_sp_manifest.dts b/plat/arm/board/tc0/fdts/tc0_spmc_optee_sp_manifest.dts index 0830d5ceedaf9c6e3f8cd123bb44f217e5266b81..8714d4459ecf3c432c62f10fdde6a6fa994fb091 100644 --- a/plat/arm/board/tc0/fdts/tc0_spmc_optee_sp_manifest.dts +++ b/plat/arm/board/tc0/fdts/tc0_spmc_optee_sp_manifest.dts @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020, Arm Limited. All rights reserved. + * Copyright (c) 2020-2021, Arm Limited. All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause */ @@ -13,7 +13,7 @@ attribute { spmc_id = <0x8000>; maj_ver = <0x1>; - min_ver = <0x0>; + min_ver = <0x1>; exec_state = <0x0>; load_address = <0x0 0xfd000000>; entrypoint = <0x0 0xfd000000>;