diff --git a/cmake/install.cmake b/cmake/install.cmake
index 064fc5b..43f8cb1 100644
--- a/cmake/install.cmake
+++ b/cmake/install.cmake
@@ -33,7 +33,7 @@
 install(FILES       ${CMAKE_BINARY_DIR}/generated/interface/include/psa_manifest/sid.h
         DESTINATION ${INSTALL_INTERFACE_INC_DIR}/psa_manifest)
 
-install(FILES       ${INTERFACE_INC_DIR}/tfm_api.h
+install(FILES       ${INTERFACE_INC_DIR}/tfm_veneers.h
                     ${INTERFACE_INC_DIR}/tfm_ns_interface.h
         DESTINATION ${INSTALL_INTERFACE_INC_DIR})
 
diff --git a/docs/design_docs/dual-cpu/tfm_multi_core_access_check.rst b/docs/design_docs/dual-cpu/tfm_multi_core_access_check.rst
index 4ef0913..2b31d36 100644
--- a/docs/design_docs/dual-cpu/tfm_multi_core_access_check.rst
+++ b/docs/design_docs/dual-cpu/tfm_multi_core_access_check.rst
@@ -93,7 +93,7 @@
     :linenos:
     :emphasize-lines: 19,36,46
 
-    enum tfm_status_e tfm_has_access_to_region(const void *p, size_t s, uint8_t flags)
+    int32_t tfm_has_access_to_region(const void *p, size_t s, uint8_t flags)
     {
         struct security_attr_info_t security_attr;
         struct mem_attr_info_t mem_attr;
diff --git a/interface/include/tfm_ns_interface.h b/interface/include/tfm_ns_interface.h
index 6b55fc3..32a04c5 100644
--- a/interface/include/tfm_ns_interface.h
+++ b/interface/include/tfm_ns_interface.h
@@ -14,7 +14,7 @@
 #endif
 
 #include <stdint.h>
-#include "tfm_api.h"
+#include "tfm_veneers.h"
 
 typedef int32_t (*veneer_fn) (uint32_t arg0, uint32_t arg1,
                               uint32_t arg2, uint32_t arg3);
diff --git a/interface/include/tfm_platform_api.h b/interface/include/tfm_platform_api.h
index f7f3972..e925503 100644
--- a/interface/include/tfm_platform_api.h
+++ b/interface/include/tfm_platform_api.h
@@ -11,7 +11,7 @@
 #include <limits.h>
 #include <stdbool.h>
 #include <stdint.h>
-#include "tfm_api.h"
+#include "psa/client.h"
 
 #ifdef __cplusplus
 extern "C" {
diff --git a/interface/include/tfm_api.h b/interface/include/tfm_veneers.h
similarity index 60%
rename from interface/include/tfm_api.h
rename to interface/include/tfm_veneers.h
index 7e79746..24c4036 100644
--- a/interface/include/tfm_api.h
+++ b/interface/include/tfm_veneers.h
@@ -5,59 +5,15 @@
  *
  */
 
-#ifndef __TFM_API_H__
-#define __TFM_API_H__
-
-#ifdef __cplusplus
-extern "C" {
-#endif
+#ifndef __TFM_VENEERS_H__
+#define __TFM_VENEERS_H__
 
 #include <stdint.h>
 #include "psa/client.h"
 
-#define TFM_INVALID_CLIENT_ID 0
-
-/**
- * \brief Checks if the provided client ID is a secure client ID.
- *
- * \param[in] client_id         Client ID to check.
- *
- * \retval 1                    Client ID is secure.
- * \retval 0                    Client ID is non-secure.
- */
-#define TFM_CLIENT_ID_IS_S(client_id)  ((client_id)>0)
-
-/**
- * \brief Checks if the provided client ID is a non-secure client ID.
- *
- * \param[in] client_id         Client ID to check.
- *
- * \retval 1                    Client ID is non-secure.
- * \retval 0                    Client ID is secure.
- */
-#define TFM_CLIENT_ID_IS_NS(client_id) ((client_id)<0)
-
-/* The mask used for timeout values */
-#define PSA_TIMEOUT_MASK        PSA_BLOCK
-
-/* FixMe: sort out DEBUG compile option and limit return value options
- * on external interfaces */
-enum tfm_status_e
-{
-    TFM_SUCCESS = 0,
-    TFM_PARTITION_BUSY,
-    TFM_ERROR_SECURE_DOMAIN_LOCKED,
-    TFM_ERROR_INVALID_PARAMETER,
-    TFM_ERROR_PARTITION_NON_REENTRANT,
-    TFM_ERROR_NS_THREAD_MODE_CALL,
-    TFM_ERROR_NOT_INITIALIZED,
-    TFM_ERROR_NO_ACTIVE_PARTITION,
-    TFM_ERROR_INVALID_EXC_MODE,
-    TFM_ERROR_NOT_IN_RANGE,
-    TFM_SECURE_LOCK_FAILED,
-    TFM_SECURE_UNLOCK_FAILED,
-    TFM_ERROR_GENERIC = 0x1F,
-};
+#ifdef __cplusplus
+extern "C" {
+#endif
 
 /********************* Secure function declarations ***************************/
 
@@ -116,4 +72,4 @@
 }
 #endif
 
-#endif /* __TFM_API_H__ */
+#endif /* __TFM_VENEERS_H__ */
diff --git a/interface/src/multi_core/tfm_multi_core_psa_ns_api.c b/interface/src/multi_core/tfm_multi_core_psa_ns_api.c
index 2d25d09..d02e3a4 100644
--- a/interface/src/multi_core/tfm_multi_core_psa_ns_api.c
+++ b/interface/src/multi_core/tfm_multi_core_psa_ns_api.c
@@ -12,7 +12,6 @@
 
 #include "psa/client.h"
 #include "psa/error.h"
-#include "tfm_api.h"
 #include "tfm_ns_mailbox.h"
 
 /*
diff --git a/interface/src/tfm_fwu_api.c b/interface/src/tfm_fwu_api.c
index f7565bf..80c4778 100644
--- a/interface/src/tfm_fwu_api.c
+++ b/interface/src/tfm_fwu_api.c
@@ -8,7 +8,6 @@
 #include "psa/client.h"
 #include "psa/update.h"
 #include "psa_manifest/sid.h"
-#include "tfm_api.h"
 
 psa_status_t psa_fwu_start(psa_fwu_component_t component,
                            const void *manifest,
diff --git a/interface/src/tfm_its_api.c b/interface/src/tfm_its_api.c
index a52197b..adea920 100644
--- a/interface/src/tfm_its_api.c
+++ b/interface/src/tfm_its_api.c
@@ -8,7 +8,6 @@
 #include "psa/client.h"
 #include "psa/internal_trusted_storage.h"
 #include "psa_manifest/sid.h"
-#include "tfm_api.h"
 #include "tfm_its_defs.h"
 
 psa_status_t psa_its_set(psa_storage_uid_t uid,
diff --git a/interface/src/tfm_platform_api.c b/interface/src/tfm_platform_api.c
index d709607..4fc564b 100644
--- a/interface/src/tfm_platform_api.c
+++ b/interface/src/tfm_platform_api.c
@@ -7,6 +7,7 @@
 
 #include <stdbool.h>
 #include "tfm_platform_api.h"
+#include "psa/client.h"
 #include "psa_manifest/sid.h"
 
 enum tfm_platform_err_t tfm_platform_system_reset(void)
diff --git a/interface/src/tfm_psa_ns_api.c b/interface/src/tfm_psa_ns_api.c
index 819c72b..1f9fbe4 100644
--- a/interface/src/tfm_psa_ns_api.c
+++ b/interface/src/tfm_psa_ns_api.c
@@ -7,7 +7,6 @@
 
 #include "psa/client.h"
 #include "tfm_ns_interface.h"
-#include "tfm_api.h"
 #include "tfm_psa_call_pack.h"
 
 /**** API functions ****/
diff --git a/lib/ext/tf-m-tests/repo_config_default.cmake b/lib/ext/tf-m-tests/repo_config_default.cmake
index 2e45626..943cbff 100644
--- a/lib/ext/tf-m-tests/repo_config_default.cmake
+++ b/lib/ext/tf-m-tests/repo_config_default.cmake
@@ -10,5 +10,5 @@
 # Default configs of tf-m-tests repo
 
 set(TFM_TEST_REPO_PATH                  "DOWNLOAD"  CACHE PATH      "Path to TFM-TEST repo (or DOWNLOAD to fetch automatically")
-set(TFM_TEST_REPO_VERSION               "03d6a93"   CACHE STRING    "The version of tf-m-tests to use")
+set(TFM_TEST_REPO_VERSION               "03864fc"   CACHE STRING    "The version of tf-m-tests to use")
 set(CMSIS_5_PATH                        "DOWNLOAD"  CACHE PATH      "Path to CMSIS_5 (or DOWNLOAD to fetch automatically")
diff --git a/platform/ext/target/arm/corstone1000/tfm_hal_isolation.c b/platform/ext/target/arm/corstone1000/tfm_hal_isolation.c
index 7c8301b..59788bc 100644
--- a/platform/ext/target/arm/corstone1000/tfm_hal_isolation.c
+++ b/platform/ext/target/arm/corstone1000/tfm_hal_isolation.c
@@ -8,7 +8,7 @@
  *
  */
 
-#include "tfm_api.h"
+#include "internal_status_code.h"
 #include "tfm_hal_defs.h"
 #include "tfm_multi_core.h"
 #include "tfm_hal_isolation.h"
@@ -99,7 +99,7 @@
                                            size_t size,
                                            uint32_t access_type)
 {
-    enum tfm_status_e status;
+    int32_t status;
     uint32_t flags = 0;
 
     if ((access_type & TFM_HAL_ACCESS_READWRITE) == TFM_HAL_ACCESS_READWRITE) {
@@ -119,7 +119,7 @@
     }
 
     status = tfm_has_access_to_region((const void *)base, size, flags);
-    if (status != TFM_SUCCESS) {
+    if (status != SPM_SUCCESS) {
          return TFM_HAL_ERROR_MEM_FAULT;
     }
 
diff --git a/platform/ext/target/arm/musca_b1/services/include/tfm_ioctl_api.h b/platform/ext/target/arm/musca_b1/services/include/tfm_ioctl_api.h
index b391bf6..b3bc907 100644
--- a/platform/ext/target/arm/musca_b1/services/include/tfm_ioctl_api.h
+++ b/platform/ext/target/arm/musca_b1/services/include/tfm_ioctl_api.h
@@ -11,7 +11,6 @@
 #include <limits.h>
 #include <stdbool.h>
 #include <stdint.h>
-#include "tfm_api.h"
 #include "tfm_platform_api.h"
 
 #ifdef __cplusplus
diff --git a/platform/ext/target/arm/musca_s1/services/include/tfm_ioctl_api.h b/platform/ext/target/arm/musca_s1/services/include/tfm_ioctl_api.h
index 345f210..49feb42 100644
--- a/platform/ext/target/arm/musca_s1/services/include/tfm_ioctl_api.h
+++ b/platform/ext/target/arm/musca_s1/services/include/tfm_ioctl_api.h
@@ -11,7 +11,6 @@
 #include <limits.h>
 #include <stdbool.h>
 #include <stdint.h>
-#include "tfm_api.h"
 #include "tfm_platform_api.h"
 
 #ifdef __cplusplus
diff --git a/platform/ext/target/arm/rss/common/config.cmake b/platform/ext/target/arm/rss/common/config.cmake
index 423974b..87ec9fe 100644
--- a/platform/ext/target/arm/rss/common/config.cmake
+++ b/platform/ext/target/arm/rss/common/config.cmake
@@ -55,7 +55,7 @@
 set(TFM_MBEDCRYPTO_PLATFORM_EXTRA_CONFIG_PATH ${CMAKE_CURRENT_LIST_DIR}/mbedtls_extra_config.h CACHE PATH "Config to append to standard Mbed Crypto config, used by platforms to cnfigure feature support")
 
 set(TFM_EXTRAS_REPO_PATH                "DOWNLOAD" CACHE PATH    "Path to tf-m-extras repo (or DOWNLOAD to fetch automatically")
-set(TFM_EXTRAS_REPO_VERSION             "f683acf"  CACHE STRING  "The version of tf-m-extras to use")
+set(TFM_EXTRAS_REPO_VERSION             "3d407cf"  CACHE STRING  "The version of tf-m-extras to use")
 set(TFM_EXTRAS_REPO_EXTRA_PARTITIONS    "measured_boot;delegated_attestation" CACHE STRING "List of extra secure partition directory name(s)")
 # Below TFM_EXTRAS_REPO_EXTRA_MANIFEST_LIST path is relative to tf-m-extras repo
 set(TFM_EXTRAS_REPO_EXTRA_MANIFEST_LIST "partitions/measured_boot/measured_boot_manifest_list.yaml;partitions/delegated_attestation/delegated_attestation_manifest_list.yaml" CACHE STRING "List of extra secure partition manifests")
diff --git a/platform/ext/target/cypress/psoc64/driver_smpu.c b/platform/ext/target/cypress/psoc64/driver_smpu.c
index 0c11d22..e640046 100644
--- a/platform/ext/target/cypress/psoc64/driver_smpu.c
+++ b/platform/ext/target/cypress/psoc64/driver_smpu.c
@@ -20,13 +20,13 @@
 
 #include "driver_smpu.h"
 
+#include "internal_status_code.h"
 #include "flash_layout.h"
 #include "nv_counters.h"
 #include "pc_config.h"
 #include "region_defs.h"
 #include "RTE_Device.h"
 #include "smpu_config.h"
-#include "tfm_api.h"
 #include "tfm_spm_log.h"
 #include "tfm_hal_its.h"
 #ifdef TFM_PARTITION_PROTECTED_STORAGE
@@ -408,7 +408,7 @@
     }
 
     /* And the address range */
-    if (check_address_range(p, s, address, size) == TFM_SUCCESS) {
+    if (check_address_range(p, s, address, size) == SPM_SUCCESS) {
         if (pc_mismatch) {
             /* Access denied - PC doesn't match */
             p_attr->is_mpu_enabled = true;
diff --git a/platform/ext/target/cypress/psoc64/tfm_hal_isolation.c b/platform/ext/target/cypress/psoc64/tfm_hal_isolation.c
index a484b6a..64b07f8 100644
--- a/platform/ext/target/cypress/psoc64/tfm_hal_isolation.c
+++ b/platform/ext/target/cypress/psoc64/tfm_hal_isolation.c
@@ -11,8 +11,8 @@
 #include "array.h"
 #include "cy_device.h"
 #include "mmio_defs.h"
+#include "internal_status_code.h"
 #include "target_cfg.h"
-#include "tfm_api.h"
 #include "tfm_hal_defs.h"
 #include "tfm_multi_core.h"
 #include "tfm_plat_defs.h"
@@ -51,7 +51,7 @@
                                            size_t size,
                                            uint32_t access_type)
 {
-    enum tfm_status_e status;
+    int32_t status;
     uint32_t flags = 0;
 
     if ((access_type & TFM_HAL_ACCESS_READWRITE) == TFM_HAL_ACCESS_READWRITE) {
@@ -71,7 +71,7 @@
     }
 
     status = tfm_has_access_to_region((const void *)base, size, flags);
-    if (status != TFM_SUCCESS) {
+    if (status != SPM_SUCCESS) {
          return TFM_HAL_ERROR_MEM_FAULT;
     }
 
diff --git a/platform/ext/target/lairdconnectivity/bl5340_dvk_cpuapp/services/include/tfm_ioctl_api.h b/platform/ext/target/lairdconnectivity/bl5340_dvk_cpuapp/services/include/tfm_ioctl_api.h
index 4034849..e62c04a 100644
--- a/platform/ext/target/lairdconnectivity/bl5340_dvk_cpuapp/services/include/tfm_ioctl_api.h
+++ b/platform/ext/target/lairdconnectivity/bl5340_dvk_cpuapp/services/include/tfm_ioctl_api.h
@@ -20,7 +20,6 @@
 
 #include <limits.h>
 #include <stdint.h>
-#include <tfm_api.h>
 #include <tfm_platform_api.h>
 
 /* Include core IOCTL services */
diff --git a/platform/ext/target/nordic_nrf/common/core/services/include/tfm_ioctl_core_api.h b/platform/ext/target/nordic_nrf/common/core/services/include/tfm_ioctl_core_api.h
index 3e9bc31..f24d72a 100644
--- a/platform/ext/target/nordic_nrf/common/core/services/include/tfm_ioctl_core_api.h
+++ b/platform/ext/target/nordic_nrf/common/core/services/include/tfm_ioctl_core_api.h
@@ -19,8 +19,6 @@
  */
 
 #include <limits.h>
-#include <stdint.h>
-#include <tfm_api.h>
 #include <tfm_platform_api.h>
 
 #ifdef __cplusplus
diff --git a/platform/ext/target/nordic_nrf/nrf5340dk_nrf5340_cpuapp/services/include/tfm_ioctl_api.h b/platform/ext/target/nordic_nrf/nrf5340dk_nrf5340_cpuapp/services/include/tfm_ioctl_api.h
index 4034849..e62c04a 100644
--- a/platform/ext/target/nordic_nrf/nrf5340dk_nrf5340_cpuapp/services/include/tfm_ioctl_api.h
+++ b/platform/ext/target/nordic_nrf/nrf5340dk_nrf5340_cpuapp/services/include/tfm_ioctl_api.h
@@ -20,7 +20,6 @@
 
 #include <limits.h>
 #include <stdint.h>
-#include <tfm_api.h>
 #include <tfm_platform_api.h>
 
 /* Include core IOCTL services */
diff --git a/platform/ext/target/nordic_nrf/nrf9160dk_nrf9160/services/include/tfm_ioctl_api.h b/platform/ext/target/nordic_nrf/nrf9160dk_nrf9160/services/include/tfm_ioctl_api.h
index 4034849..e62c04a 100644
--- a/platform/ext/target/nordic_nrf/nrf9160dk_nrf9160/services/include/tfm_ioctl_api.h
+++ b/platform/ext/target/nordic_nrf/nrf9160dk_nrf9160/services/include/tfm_ioctl_api.h
@@ -20,7 +20,6 @@
 
 #include <limits.h>
 #include <stdint.h>
-#include <tfm_api.h>
 #include <tfm_platform_api.h>
 
 /* Include core IOCTL services */
diff --git a/platform/ext/target/nordic_nrf/nrf9161dk_nrf9161/services/include/tfm_ioctl_api.h b/platform/ext/target/nordic_nrf/nrf9161dk_nrf9161/services/include/tfm_ioctl_api.h
index ddf7b12..842e35b 100644
--- a/platform/ext/target/nordic_nrf/nrf9161dk_nrf9161/services/include/tfm_ioctl_api.h
+++ b/platform/ext/target/nordic_nrf/nrf9161dk_nrf9161/services/include/tfm_ioctl_api.h
@@ -20,7 +20,6 @@
 
 #include <limits.h>
 #include <stdint.h>
-#include <tfm_api.h>
 #include <tfm_platform_api.h>
 
 /* Include core IOCTL services */
diff --git a/secure_fw/partitions/crypto/tfm_crypto_api.h b/secure_fw/partitions/crypto/tfm_crypto_api.h
index 6ceb9bc..0edc713 100644
--- a/secure_fw/partitions/crypto/tfm_crypto_api.h
+++ b/secure_fw/partitions/crypto/tfm_crypto_api.h
@@ -15,7 +15,7 @@
 #include <stdint.h>
 #include "tfm_crypto_defs.h"
 #include "tfm_crypto_key.h"
-#include "tfm_api.h"
+#include "psa/client.h"
 
 /**
  * \brief List of possible operation types supported by the TFM based
diff --git a/secure_fw/partitions/firmware_update/bootloader/mcuboot/tfm_mcuboot_fwu.c b/secure_fw/partitions/firmware_update/bootloader/mcuboot/tfm_mcuboot_fwu.c
index 427a35f..c726f09 100644
--- a/secure_fw/partitions/firmware_update/bootloader/mcuboot/tfm_mcuboot_fwu.c
+++ b/secure_fw/partitions/firmware_update/bootloader/mcuboot/tfm_mcuboot_fwu.c
@@ -6,13 +6,13 @@
  */
 #include <string.h>
 #include "psa/crypto.h"
+#include "psa/error.h"
 #include "tfm_sp_log.h"
 #include "bootutil_priv.h"
 #include "bootutil/bootutil.h"
 #include "bootutil/image.h"
 #include "flash_map_backend/flash_map_backend.h"
 #include "sysflash/sysflash.h"
-#include "tfm_api.h"
 #include "tfm_bootloader_fwu_abstraction.h"
 #include "tfm_boot_status.h"
 #include "service_api.h"
@@ -49,7 +49,7 @@
 static tfm_fwu_mcuboot_ctx_t mcuboot_ctx[FWU_COMPONENT_NUMBER];
 static fwu_image_info_data_t __attribute__((aligned(4))) boot_shared_data;
 
-static int fwu_bootloader_get_shared_data(void)
+static psa_status_t fwu_bootloader_get_shared_data(void)
 {
     return tfm_core_get_boot_data(TLV_MAJOR_FWU,
                                   (struct tfm_boot_data *)&boot_shared_data,
@@ -94,7 +94,7 @@
 
 psa_status_t fwu_bootloader_init(void)
 {
-    if (fwu_bootloader_get_shared_data() != TFM_SUCCESS) {
+    if (fwu_bootloader_get_shared_data() != PSA_SUCCESS) {
         return PSA_ERROR_STORAGE_FAILURE;
     }
     /* add Init of specific flash driver */
diff --git a/secure_fw/partitions/firmware_update/tfm_fwu_req_mngr.c b/secure_fw/partitions/firmware_update/tfm_fwu_req_mngr.c
index 34257e0..b37bdc0 100644
--- a/secure_fw/partitions/firmware_update/tfm_fwu_req_mngr.c
+++ b/secure_fw/partitions/firmware_update/tfm_fwu_req_mngr.c
@@ -13,7 +13,6 @@
 #include "tfm_bootloader_fwu_abstraction.h"
 #include "psa/update.h"
 #include "service_api.h"
-#include "tfm_api.h"
 #include "psa/service.h"
 #include "psa_manifest/tfm_firmware_update.h"
 #include "compiler_ext_defs.h"
diff --git a/secure_fw/partitions/initial_attestation/tfm_attest.c b/secure_fw/partitions/initial_attestation/tfm_attest.c
index b7610b6..51eecde 100644
--- a/secure_fw/partitions/initial_attestation/tfm_attest.c
+++ b/secure_fw/partitions/initial_attestation/tfm_attest.c
@@ -5,9 +5,9 @@
  *
  */
 
-#include "tfm_api.h"
 #include "service_api.h"
 #include "attest.h"
+#include "psa/error.h"
 #include "psa/initial_attestation.h"
 #include "tfm_boot_status.h"
 
@@ -31,7 +31,7 @@
     int32_t tfm_res;
 
     tfm_res = tfm_core_get_boot_data(major_type, boot_data, len);
-    if (tfm_res != (int32_t)TFM_SUCCESS) {
+    if (tfm_res != (int32_t)PSA_SUCCESS) {
         attest_res =  PSA_ATTEST_ERR_INIT_FAILED;
     }
 
diff --git a/secure_fw/partitions/lib/runtime/include/service_api.h b/secure_fw/partitions/lib/runtime/include/service_api.h
index 57f3e3d..3c89661 100644
--- a/secure_fw/partitions/lib/runtime/include/service_api.h
+++ b/secure_fw/partitions/lib/runtime/include/service_api.h
@@ -9,6 +9,7 @@
 
 #include <stdint.h>
 #include "tfm_boot_status.h"
+#include "psa/error.h"
 
 /**
  * \brief Retrieve secure partition related data from shared memory area, which
@@ -18,8 +19,8 @@
  * \param[out] boot_data   Pointer to boot data.
  * \param[in]  len         The length of the boot data.
  */
-int32_t tfm_core_get_boot_data(uint8_t major_type,
-                               struct tfm_boot_data *boot_data,
-                               uint32_t len);
+psa_status_t tfm_core_get_boot_data(uint8_t major_type,
+                                    struct tfm_boot_data *boot_data,
+                                    uint32_t len);
 
 #endif /* __SERVICE_API_H__ */
diff --git a/secure_fw/partitions/lib/runtime/service_api.c b/secure_fw/partitions/lib/runtime/service_api.c
index 3e9576d..65bb844 100644
--- a/secure_fw/partitions/lib/runtime/service_api.c
+++ b/secure_fw/partitions/lib/runtime/service_api.c
@@ -12,9 +12,9 @@
 #include "utilities.h"
 
 __attribute__((naked))
-int32_t tfm_core_get_boot_data(uint8_t major_type,
-                               struct tfm_boot_data *boot_status,
-                               uint32_t len)
+psa_status_t tfm_core_get_boot_data(uint8_t major_type,
+                                    struct tfm_boot_data *boot_status,
+                                    uint32_t len)
 {
     __ASM volatile(
         "SVC    "M2S(TFM_SVC_GET_BOOT_DATA)"               \n"
diff --git a/secure_fw/partitions/ns_agent_mailbox/tfm_multi_core_mem_check.c b/secure_fw/partitions/ns_agent_mailbox/tfm_multi_core_mem_check.c
index ba6958d..16b7e29 100644
--- a/secure_fw/partitions/ns_agent_mailbox/tfm_multi_core_mem_check.c
+++ b/secure_fw/partitions/ns_agent_mailbox/tfm_multi_core_mem_check.c
@@ -11,6 +11,7 @@
 #include <stddef.h>
 #include <stdint.h>
 
+#include "internal_status_code.h"
 #include "region.h"
 #include "region_defs.h"
 #include "tfm_hal_multi_core.h"
@@ -28,23 +29,23 @@
     p_attr->is_valid = true;
 
     if (check_address_range(p, s, NS_DATA_START,
-                            NS_DATA_LIMIT) == TFM_SUCCESS) {
+                            NS_DATA_LIMIT) == SPM_SUCCESS) {
         p_attr->is_secure = false;
         return;
     }
 
     if (check_address_range(p, s, NS_CODE_START,
-                            NS_CODE_LIMIT) == TFM_SUCCESS) {
+                            NS_CODE_LIMIT) == SPM_SUCCESS) {
         p_attr->is_secure = false;
         return;
     }
 
-    if (check_address_range(p, s, S_DATA_START, S_DATA_LIMIT) == TFM_SUCCESS) {
+    if (check_address_range(p, s, S_DATA_START, S_DATA_LIMIT) == SPM_SUCCESS) {
         p_attr->is_secure = true;
         return;
     }
 
-    if (check_address_range(p, s, S_CODE_START, S_CODE_LIMIT) == TFM_SUCCESS) {
+    if (check_address_range(p, s, S_CODE_START, S_CODE_LIMIT) == SPM_SUCCESS) {
         p_attr->is_secure = true;
         return;
     }
@@ -72,7 +73,7 @@
     p_attr->is_mpu_enabled = false;
     p_attr->is_valid = true;
 
-    if (check_address_range(p, s, S_DATA_START, S_DATA_LIMIT) == TFM_SUCCESS) {
+    if (check_address_range(p, s, S_DATA_START, S_DATA_LIMIT) == SPM_SUCCESS) {
         p_attr->is_priv_rd_allow = true;
         p_attr->is_priv_wr_allow = true;
         p_attr->is_unpriv_rd_allow = true;
@@ -81,7 +82,7 @@
         return;
     }
 
-    if (check_address_range(p, s, S_CODE_START, S_CODE_LIMIT) == TFM_SUCCESS) {
+    if (check_address_range(p, s, S_CODE_START, S_CODE_LIMIT) == SPM_SUCCESS) {
         p_attr->is_priv_rd_allow = true;
         p_attr->is_priv_wr_allow = false;
         p_attr->is_unpriv_rd_allow = true;
@@ -100,7 +101,7 @@
     /* TFM Core unprivileged code region */
     base = (uintptr_t)&REGION_NAME(Image$$, TFM_UNPRIV_CODE_START, $$RO$$Base);
     limit = (uintptr_t)&REGION_NAME(Image$$, TFM_UNPRIV_CODE_END, $$RO$$Limit) - 1;
-    if (check_address_range(p, s, base, limit) == TFM_SUCCESS) {
+    if (check_address_range(p, s, base, limit) == SPM_SUCCESS) {
         p_attr->is_priv_rd_allow = true;
         p_attr->is_priv_wr_allow = false;
         p_attr->is_unpriv_rd_allow = true;
@@ -113,7 +114,7 @@
     /* TFM partition metadata pointer region */
     base = (uintptr_t)&REGION_NAME(Image$$, TFM_SP_META_PTR, $$ZI$$Base);
     limit = (uintptr_t)&REGION_NAME(Image$$, TFM_SP_META_PTR, $$ZI$$Limit) - 1;
-    if (check_address_range(p, s, base, limit) == TFM_SUCCESS) {
+    if (check_address_range(p, s, base, limit) == SPM_SUCCESS) {
         p_attr->is_priv_rd_allow = true;
         p_attr->is_priv_wr_allow = true;
         p_attr->is_unpriv_rd_allow = true;
@@ -126,7 +127,7 @@
     /* APP RoT partition RO region */
     base = (uintptr_t)&REGION_NAME(Image$$, TFM_APP_CODE_START, $$Base);
     limit = (uintptr_t)&REGION_NAME(Image$$, TFM_APP_CODE_END, $$Base) - 1;
-    if (check_address_range(p, s, base, limit) == TFM_SUCCESS) {
+    if (check_address_range(p, s, base, limit) == SPM_SUCCESS) {
         p_attr->is_priv_rd_allow = true;
         p_attr->is_priv_wr_allow = false;
         p_attr->is_unpriv_rd_allow = true;
@@ -138,7 +139,7 @@
     /* RW, ZI and stack as one region */
     base = (uintptr_t)&REGION_NAME(Image$$, TFM_APP_RW_STACK_START, $$Base);
     limit = (uintptr_t)&REGION_NAME(Image$$, TFM_APP_RW_STACK_END, $$Base) - 1;
-    if (check_address_range(p, s, base, limit) == TFM_SUCCESS) {
+    if (check_address_range(p, s, base, limit) == SPM_SUCCESS) {
         p_attr->is_priv_rd_allow = true;
         p_attr->is_priv_wr_allow = true;
         p_attr->is_unpriv_rd_allow = true;
@@ -153,7 +154,7 @@
      */
     base = (uintptr_t)S_DATA_START;
     limit = (uintptr_t)S_DATA_LIMIT;
-    if (check_address_range(p, s, base, limit) == TFM_SUCCESS) {
+    if (check_address_range(p, s, base, limit) == SPM_SUCCESS) {
         p_attr->is_priv_rd_allow = true;
         p_attr->is_priv_wr_allow = true;
         p_attr->is_unpriv_rd_allow = false;
@@ -164,7 +165,7 @@
 
     base = (uintptr_t)S_CODE_START;
     limit = (uintptr_t)S_CODE_LIMIT;
-    if (check_address_range(p, s, base, limit) == TFM_SUCCESS) {
+    if (check_address_range(p, s, base, limit) == SPM_SUCCESS) {
         p_attr->is_priv_rd_allow = true;
         p_attr->is_priv_wr_allow = false;
         p_attr->is_unpriv_rd_allow = false;
@@ -186,7 +187,7 @@
     p_attr->is_valid = true;
 
     if (check_address_range(p, s, NS_DATA_START,
-                            NS_DATA_LIMIT) == TFM_SUCCESS) {
+                            NS_DATA_LIMIT) == SPM_SUCCESS) {
         p_attr->is_priv_rd_allow = true;
         p_attr->is_priv_wr_allow = true;
         p_attr->is_unpriv_rd_allow = true;
@@ -196,7 +197,7 @@
     }
 
     if (check_address_range(p, s, NS_CODE_START,
-                            NS_CODE_LIMIT) == TFM_SUCCESS) {
+                            NS_CODE_LIMIT) == SPM_SUCCESS) {
         p_attr->is_priv_rd_allow = true;
         p_attr->is_priv_wr_allow = false;
         p_attr->is_unpriv_rd_allow = true;
@@ -247,16 +248,15 @@
  *                   memory region
  * \param[in] flags  The flags indicating the access permissions.
  *
- * \return TFM_SUCCESS if the check passes,
- *         TFM_ERROR_GENERIC otherwise.
+ * \return SPM_SUCCESS if the check passes,
+ *         SPM_ERROR_GENERIC otherwise.
  */
-static enum tfm_status_e security_attr_check(struct security_attr_info_t attr,
-                                             uint8_t flags)
+static int32_t security_attr_check(struct security_attr_info_t attr, uint8_t flags)
 {
     bool secure_access;
 
     if (!attr.is_valid) {
-        return TFM_ERROR_GENERIC;
+        return SPM_ERROR_GENERIC;
     }
 
     secure_access = flags & MEM_CHECK_NONSECURE ? false : true;
@@ -265,10 +265,10 @@
      * Secure service should not directly access non-secure memory region.
      */
     if (secure_access ^ attr.is_secure) {
-        return TFM_ERROR_GENERIC;
+        return SPM_ERROR_GENERIC;
     }
 
-    return TFM_SUCCESS;
+    return SPM_SUCCESS;
 }
 
 /**
@@ -278,11 +278,10 @@
  * \param[in] attr   The mem_attr_info_t containing attributes of memory region
  * \param[in] flags  The flags indicating the access permissions.
  *
- * \return TFM_SUCCESS if the check passes,
- *         TFM_ERROR_GENERIC otherwise.
+ * \return SPM_SUCCESS if the check passes,
+ *         SPM_ERROR_GENERIC otherwise.
  */
-static enum tfm_status_e ns_mem_attr_check(struct mem_attr_info_t attr,
-                                           uint8_t flags)
+static int32_t ns_mem_attr_check(struct mem_attr_info_t attr, uint8_t flags)
 {
     /*
      * Non-secure privileged/unprivileged check is skipped.
@@ -293,15 +292,15 @@
     if ((flags & MEM_CHECK_MPU_READWRITE) &&
         (attr.is_priv_rd_allow || attr.is_unpriv_rd_allow) &&
         (attr.is_priv_wr_allow || attr.is_unpriv_wr_allow)) {
-            return TFM_SUCCESS;
+            return SPM_SUCCESS;
     }
 
     if ((flags & MEM_CHECK_MPU_READ) &&
         (attr.is_priv_rd_allow || attr.is_unpriv_rd_allow)) {
-            return TFM_SUCCESS;
+            return SPM_SUCCESS;
     }
 
-    return TFM_ERROR_GENERIC;
+    return SPM_ERROR_GENERIC;
 }
 
 /**
@@ -311,11 +310,10 @@
  * \param[in] attr   The mem_attr_info_t containing attributes of memory region
  * \param[in] flags  The flags indicating the access permissions.
  *
- * \return TFM_SUCCESS if the check passes,
- *         TFM_ERROR_GENERIC otherwise.
+ * \return SPM_SUCCESS if the check passes,
+ *         SPM_ERROR_GENERIC otherwise.
  */
-static enum tfm_status_e secure_mem_attr_check(struct mem_attr_info_t attr,
-                                               uint8_t flags)
+static int32_t secure_mem_attr_check(struct mem_attr_info_t attr, uint8_t flags)
 {
 #if TFM_ISOLATION_LEVEL == 1
     /* Privileged/unprivileged is ignored in TFM_ISOLATION_LEVEL == 1 */
@@ -323,37 +321,37 @@
     if ((flags & MEM_CHECK_MPU_READWRITE) &&
         (attr.is_priv_rd_allow || attr.is_unpriv_rd_allow) &&
         (attr.is_priv_wr_allow || attr.is_unpriv_wr_allow)) {
-            return TFM_SUCCESS;
+            return SPM_SUCCESS;
     }
 
     if ((flags & MEM_CHECK_MPU_READ) &&
         (attr.is_priv_rd_allow || attr.is_unpriv_rd_allow)) {
-            return TFM_SUCCESS;
+            return SPM_SUCCESS;
     }
 
-    return TFM_ERROR_GENERIC;
+    return SPM_ERROR_GENERIC;
 #else
     if (flags & MEM_CHECK_MPU_UNPRIV) {
         if ((flags & MEM_CHECK_MPU_READWRITE) && attr.is_unpriv_rd_allow &&
             attr.is_unpriv_wr_allow) {
-            return TFM_SUCCESS;
+            return SPM_SUCCESS;
         }
 
         if ((flags & MEM_CHECK_MPU_READ) && attr.is_unpriv_rd_allow) {
-            return TFM_SUCCESS;
+            return SPM_SUCCESS;
         }
     } else {
         if ((flags & MEM_CHECK_MPU_READWRITE) && attr.is_priv_rd_allow &&
             attr.is_priv_wr_allow) {
-            return TFM_SUCCESS;
+            return SPM_SUCCESS;
         }
 
         if ((flags & MEM_CHECK_MPU_READ) && attr.is_priv_rd_allow) {
-            return TFM_SUCCESS;
+            return SPM_SUCCESS;
         }
     }
 
-    return TFM_ERROR_GENERIC;
+    return SPM_ERROR_GENERIC;
 #endif
 }
 
@@ -364,14 +362,13 @@
  * \param[in] attr   The mem_attr_info_t containing memory region attributes
  * \param[in] flags  The flags indicating the access permissions.
  *
- * \return TFM_SUCCESS if the check passes,
- *         TFM_ERROR_GENERIC otherwise.
+ * \return SPM_SUCCESS if the check passes,
+ *         SPM_ERROR_GENERIC otherwise.
  */
-static enum tfm_status_e mem_attr_check(struct mem_attr_info_t attr,
-                                        uint8_t flags)
+static int32_t mem_attr_check(struct mem_attr_info_t attr, uint8_t flags)
 {
     if (!attr.is_valid) {
-        return TFM_ERROR_GENERIC;
+        return SPM_ERROR_GENERIC;
     }
 
     if (flags & MEM_CHECK_NONSECURE) {
@@ -381,23 +378,22 @@
     return secure_mem_attr_check(attr, flags);
 }
 
-enum tfm_status_e tfm_has_access_to_region(const void *p, size_t s,
-                                           uint32_t flags)
+int32_t tfm_has_access_to_region(const void *p, size_t s, uint32_t flags)
 {
     struct security_attr_info_t security_attr;
     struct mem_attr_info_t mem_attr;
 
     /* If size is zero, this indicates an empty buffer and base is ignored */
     if (s == 0) {
-        return TFM_SUCCESS;
+        return SPM_SUCCESS;
     }
 
     if (!p) {
-        return TFM_ERROR_GENERIC;
+        return SPM_ERROR_GENERIC;
     }
 
     if ((uintptr_t)p > (UINTPTR_MAX - s)) {
-        return TFM_ERROR_GENERIC;
+        return SPM_ERROR_GENERIC;
     }
 
     /* Abort if current check doesn't run in PSA RoT */
@@ -410,8 +406,8 @@
     /* Retrieve security attributes of target memory region */
     tfm_hal_get_mem_security_attr(p, s, &security_attr);
 
-    if (security_attr_check(security_attr, flags) != TFM_SUCCESS) {
-        return TFM_ERROR_GENERIC;
+    if (security_attr_check(security_attr, flags) != SPM_SUCCESS) {
+        return SPM_ERROR_GENERIC;
     }
 
     mem_attr_init(&mem_attr);
@@ -434,15 +430,15 @@
     return mem_attr_check(mem_attr, flags);
 }
 
-enum tfm_status_e check_address_range(const void *p, size_t s,
-                                      uintptr_t region_start,
-                                      uintptr_t region_limit)
+int32_t check_address_range(const void *p, size_t s,
+                            uintptr_t region_start,
+                            uintptr_t region_limit)
 {
     int32_t range_in_region;
 
     /* Check for overflow in the range parameters */
     if ((uintptr_t)p > UINTPTR_MAX - s) {
-        return TFM_ERROR_GENERIC;
+        return SPM_ERROR_GENERIC;
     }
 
     /* We trust the region parameters, and don't check for overflow */
@@ -451,8 +447,8 @@
     range_in_region = ((uintptr_t)p >= region_start) &&
                       ((uintptr_t)((char *) p + s - 1) <= region_limit);
     if (range_in_region) {
-        return TFM_SUCCESS;
+        return SPM_SUCCESS;
     } else {
-        return TFM_ERROR_GENERIC;
+        return SPM_ERROR_GENERIC;
     }
 }
diff --git a/secure_fw/partitions/protected_storage/ps_filesystem_interface.c b/secure_fw/partitions/protected_storage/ps_filesystem_interface.c
index 2254efb..eecac9c 100644
--- a/secure_fw/partitions/protected_storage/ps_filesystem_interface.c
+++ b/secure_fw/partitions/protected_storage/ps_filesystem_interface.c
@@ -7,7 +7,6 @@
 
 #include "psa/client.h"
 #include "psa_manifest/sid.h"
-#include "tfm_api.h"
 #include "tfm_its_defs.h"
 #include "psa_manifest/pid.h"
 #include "tfm_internal_trusted_storage.h"
diff --git a/secure_fw/partitions/protected_storage/tfm_ps_req_mngr.c b/secure_fw/partitions/protected_storage/tfm_ps_req_mngr.c
index 755b39e..f10cb75 100644
--- a/secure_fw/partitions/protected_storage/tfm_ps_req_mngr.c
+++ b/secure_fw/partitions/protected_storage/tfm_ps_req_mngr.c
@@ -13,7 +13,6 @@
 
 #include "psa/protected_storage.h"
 
-#include "tfm_api.h"
 #include "tfm_protected_storage.h"
 #include "psa/service.h"
 #include "psa_manifest/tfm_protected_storage.h"
diff --git a/secure_fw/spm/core/agent_api.c b/secure_fw/spm/core/agent_api.c
index 3cff896..2e5ed7f 100644
--- a/secure_fw/spm/core/agent_api.c
+++ b/secure_fw/spm/core/agent_api.c
@@ -10,6 +10,7 @@
 
 #include "ffm/psa_api.h"
 #include "psa/error.h"
+#include "internal_status_code.h"
 #include "tfm_multi_core.h"
 #include "tfm_psa_call_pack.h"
 
@@ -34,7 +35,7 @@
 
         if (tfm_has_access_to_region(invec.base,
                                      invec.len,
-                                     MEM_CHECK_NONSECURE | MEM_CHECK_MPU_READ) != TFM_SUCCESS) {
+                                     MEM_CHECK_NONSECURE | MEM_CHECK_MPU_READ) != SPM_SUCCESS) {
             return PSA_ERROR_PROGRAMMER_ERROR;
         }
     }
@@ -43,7 +44,7 @@
 
         if (tfm_has_access_to_region(outvec.base,
                                      outvec.len,
-                                     MEM_CHECK_NONSECURE | MEM_CHECK_MPU_READWRITE) != TFM_SUCCESS) {
+                                     MEM_CHECK_NONSECURE | MEM_CHECK_MPU_READWRITE) != SPM_SUCCESS) {
             return PSA_ERROR_PROGRAMMER_ERROR;
         }
     }
diff --git a/secure_fw/spm/core/internal_status_code.h b/secure_fw/spm/core/internal_status_code.h
index fbb0b63..77f9685 100644
--- a/secure_fw/spm/core/internal_status_code.h
+++ b/secure_fw/spm/core/internal_status_code.h
@@ -9,6 +9,8 @@
 
 #include "psa/error.h"
 
+#define SPM_SUCCESS                 PSA_SUCCESS
+
 /* SPM implementation status range from -249 to -256. */
 #define SPM_ERROR_BAD_PARAMETERS   ((psa_status_t)-249)
 #define SPM_ERROR_SHORT_BUFFER     ((psa_status_t)-250)
diff --git a/secure_fw/spm/core/main.c b/secure_fw/spm/core/main.c
index eb29267..64bf4e3 100644
--- a/secure_fw/spm/core/main.c
+++ b/secure_fw/spm/core/main.c
@@ -6,13 +6,13 @@
  */
 
 #include "build_config_check.h"
+#include "internal_status_code.h"
 #include "fih.h"
 #include "tfm_boot_data.h"
 #include "memory_symbols.h"
 #include "spm.h"
 #include "tfm_hal_isolation.h"
 #include "tfm_hal_platform.h"
-#include "tfm_api.h"
 #include "tfm_spm_log.h"
 #include "tfm_version.h"
 #include "tfm_plat_otp.h"
@@ -31,7 +31,7 @@
      */
     FIH_CALL(tfm_hal_set_up_static_boundaries, fih_rc, &spm_boundary);
     if (fih_not_eq(fih_rc, fih_int_encode(TFM_HAL_SUCCESS))) {
-        FIH_RET(fih_int_encode(TFM_ERROR_GENERIC));
+        FIH_RET(fih_int_encode(SPM_ERROR_GENERIC));
     }
 #ifdef TFM_FIH_PROFILE_ON
     FIH_CALL(tfm_hal_verify_static_boundaries, fih_rc);
@@ -42,19 +42,19 @@
 
     FIH_CALL(tfm_hal_platform_init, fih_rc);
     if (fih_not_eq(fih_rc, fih_int_encode(TFM_HAL_SUCCESS))) {
-        FIH_RET(fih_int_encode(TFM_ERROR_GENERIC));
+        FIH_RET(fih_int_encode(SPM_ERROR_GENERIC));
     }
 
     plat_err = tfm_plat_otp_init();
     if (plat_err != TFM_PLAT_ERR_SUCCESS) {
-        FIH_RET(fih_int_encode(TFM_ERROR_GENERIC));
+        FIH_RET(fih_int_encode(SPM_ERROR_GENERIC));
     }
 
     /* Perform provisioning. */
     if (tfm_plat_provisioning_is_required()) {
         plat_err = tfm_plat_provisioning_perform();
         if (plat_err != TFM_PLAT_ERR_SUCCESS) {
-            FIH_RET(fih_int_encode(TFM_ERROR_GENERIC));
+            FIH_RET(fih_int_encode(SPM_ERROR_GENERIC));
         }
     } else {
         tfm_plat_provisioning_check_for_dummy_keys();
@@ -78,7 +78,7 @@
 
     tfm_core_validate_boot_data();
 
-    FIH_RET(fih_int_encode(TFM_SUCCESS));
+    FIH_RET(fih_int_encode(SPM_SUCCESS));
 }
 
 int main(void)
@@ -91,7 +91,7 @@
     fih_delay_init();
 
     FIH_CALL(tfm_core_init, fih_rc);
-    if (fih_not_eq(fih_rc, fih_int_encode(TFM_SUCCESS))) {
+    if (fih_not_eq(fih_rc, fih_int_encode(SPM_SUCCESS))) {
         tfm_core_panic();
     }
 
diff --git a/secure_fw/spm/core/psa_api.c b/secure_fw/spm/core/psa_api.c
index 9f7d163..16818d5 100644
--- a/secure_fw/spm/core/psa_api.c
+++ b/secure_fw/spm/core/psa_api.c
@@ -25,7 +25,6 @@
 #include "ffm/backend.h"
 #include "ffm/psa_api.h"
 #include "tfm_rpc.h"
-#include "tfm_api.h"
 #include "tfm_hal_platform.h"
 #include "tfm_psa_call_pack.h"
 #include "tfm_hal_isolation.h"
diff --git a/secure_fw/spm/core/spm.h b/secure_fw/spm/core/spm.h
index f94bf53..a0a7ed2 100644
--- a/secure_fw/spm/core/spm.h
+++ b/secure_fw/spm/core/spm.h
@@ -26,6 +26,9 @@
 #define TFM_HANDLE_STATUS_ACTIVE        1 /* Handle in use              */
 #define TFM_HANDLE_STATUS_TO_FREE       2 /* Free the handle            */
 
+/* The mask used for timeout values */
+#define PSA_TIMEOUT_MASK        PSA_BLOCK
+
 /*
  * Set a number limit for stateless handle.
  * Valid handle must be positive, set client handle minimum value to 1.
@@ -61,6 +64,9 @@
 #define GET_THRD_OWNER(x)        TO_CONTAINER(x, struct partition_t, thrd)
 #define GET_CTX_OWNER(x)         TO_CONTAINER(x, struct partition_t, ctx_ctrl)
 
+/* Checks if the provided client ID is a non-secure client ID */
+#define TFM_CLIENT_ID_IS_NS(client_id)        ((client_id) < 0)
+
 /* RoT connection handle list */
 struct connection_t {
     uint32_t status;                         /*
diff --git a/secure_fw/spm/core/spm_ipc.c b/secure_fw/spm/core/spm_ipc.c
index 6ddd6f3..8982fde 100644
--- a/secure_fw/spm/core/spm_ipc.c
+++ b/secure_fw/spm/core/spm_ipc.c
@@ -21,7 +21,6 @@
 #include "psa/service.h"
 #include "thread.h"
 #include "internal_status_code.h"
-#include "tfm_api.h"
 #include "tfm_arch.h"
 #include "tfm_hal_defs.h"
 #include "tfm_hal_interrupt.h"
diff --git a/secure_fw/spm/core/tfm_boot_data.c b/secure_fw/spm/core/tfm_boot_data.c
index c83a429..cf49595 100644
--- a/secure_fw/spm/core/tfm_boot_data.c
+++ b/secure_fw/spm/core/tfm_boot_data.c
@@ -10,7 +10,6 @@
 #include "array.h"
 #include "tfm_boot_status.h"
 #include "region_defs.h"
-#include "tfm_api.h"
 #include "psa_manifest/pid.h"
 #include "internal_status_code.h"
 #include "utilities.h"
@@ -157,18 +156,18 @@
              curr_partition->boundary, (uintptr_t)buf_start,
              buf_size, TFM_HAL_ACCESS_READWRITE);
     if (fih_not_eq(fih_rc, fih_int_encode(PSA_SUCCESS))) {
-        args[0] = (uint32_t)TFM_ERROR_INVALID_PARAMETER;
+        args[0] = (uint32_t)PSA_ERROR_INVALID_ARGUMENT;
         return;
     }
 
     if (is_boot_data_valid != BOOT_DATA_VALID) {
-        args[0] = (uint32_t)TFM_ERROR_INVALID_PARAMETER;
+        args[0] = (uint32_t)PSA_ERROR_INVALID_ARGUMENT;
         return;
     }
 
     /* Check whether caller has access right to given tlv_major_type */
     if (tfm_core_check_boot_data_access_policy(tlv_major)) {
-        args[0] = (uint32_t)TFM_ERROR_INVALID_PARAMETER;
+        args[0] = (uint32_t)PSA_ERROR_INVALID_ARGUMENT;
         return;
     }
 
@@ -181,7 +180,7 @@
 
     /* Add header to output buffer as well */
     if (buf_size < SHARED_DATA_HEADER_SIZE) {
-        args[0] = (uint32_t)TFM_ERROR_INVALID_PARAMETER;
+        args[0] = (uint32_t)PSA_ERROR_INVALID_ARGUMENT;
         return;
     } else {
         boot_data = (struct tfm_boot_data *)buf_start;
@@ -204,7 +203,7 @@
         if (GET_MAJOR(tlv_entry.tlv_type) == tlv_major) {
             /* Check buffer overflow */
             if (((ptr - buf_start) + next_tlv_offset) > buf_size) {
-                args[0] = (uint32_t)TFM_ERROR_INVALID_PARAMETER;
+                args[0] = (uint32_t)PSA_ERROR_INVALID_ARGUMENT;
                 return;
             }
 
@@ -215,6 +214,6 @@
     }
 #endif /* BOOT_DATA_AVAILABLE */
 
-    args[0] = (uint32_t)TFM_SUCCESS;
+    args[0] = (uint32_t)PSA_SUCCESS;
     return;
 }
diff --git a/secure_fw/spm/core/tfm_multi_core.h b/secure_fw/spm/core/tfm_multi_core.h
index 5f24edf..d6d920f 100644
--- a/secure_fw/spm/core/tfm_multi_core.h
+++ b/secure_fw/spm/core/tfm_multi_core.h
@@ -10,8 +10,6 @@
 
 #include <stdbool.h>
 
-#include "tfm_api.h"
-
 /* Follow CMSE flag definitions */
 #define MEM_CHECK_MPU_READWRITE         (1 << 0x0)
 #define MEM_CHECK_AU_NONSECURE          (1 << 0x1)
@@ -96,11 +94,10 @@
  * \param[in] flags           The memory access types to be checked between
  *                            given memory and boundaries.
  *
- * \return TFM_SUCCESS if the access is allowed,
- *         TFM_ERROR_GENERIC otherwise.
+ * \return SPM_SUCCESS if the access is allowed,
+ *         SPM_ERROR_GENERIC otherwise.
  */
-enum tfm_status_e tfm_has_access_to_region(const void *p, size_t s,
-                                           uint32_t flags);
+int32_t tfm_has_access_to_region(const void *p, size_t s, uint32_t flags);
 
 /**
  * \brief Initialization of the multi core communication.
@@ -120,10 +117,10 @@
  * \param[in] region_limit  The end address of the region, which should contain
  *                          the range
  *
- * \return TFM_SUCCESS if the region contains the range,
- *         TFM_ERROR_GENERIC otherwise.
+ * \return SPM_SUCCESS if the region contains the range,
+ *         SPM_ERROR_GENERIC otherwise.
  */
-enum tfm_status_e check_address_range(const void *p, size_t s,
-                                      uintptr_t region_start,
-                                      uintptr_t region_limit);
+int32_t check_address_range(const void *p, size_t s,
+                            uintptr_t region_start,
+                            uintptr_t region_limit);
 #endif /* __TFM_MULTI_CORE_H__ */
diff --git a/secure_fw/spm/core/tfm_svcalls.c b/secure_fw/spm/core/tfm_svcalls.c
index acbf20e..d05806a 100644
--- a/secure_fw/spm/core/tfm_svcalls.c
+++ b/secure_fw/spm/core/tfm_svcalls.c
@@ -10,7 +10,6 @@
 #include "memory_symbols.h"
 #include "spm.h"
 #include "svc_num.h"
-#include "tfm_api.h"
 #include "tfm_arch.h"
 #include "tfm_core_trustzone.h"
 #include "tfm_svcalls.h"
