diff --git a/app/CMakeLists.txt b/app/CMakeLists.txt
index 97fd3c5..19ccca7 100755
--- a/app/CMakeLists.txt
+++ b/app/CMakeLists.txt
@@ -1,6 +1,6 @@
 #-------------------------------------------------------------------------------
 # Copyright (c) 2020-2022, Arm Limited. All rights reserved.
-# Copyright (c) 2022 Cypress Semiconductor Corporation (an Infineon company)
+# Copyright (c) 2022-2023 Cypress Semiconductor Corporation (an Infineon company)
 # or an affiliate of Cypress Semiconductor Corporation. All rights reserved.
 #
 # SPDX-License-Identifier: BSD-3-Clause
@@ -115,8 +115,8 @@
 
 target_sources(tfm_api_ns PRIVATE
     $<$<BOOL:${CONFIG_TFM_USE_TRUSTZONE}>:${INTERFACE_SRC_DIR}/tfm_psa_ns_api.c>
-    # NS specific implementation of NS interface dispacther
-    $<$<BOOL:${CONFIG_TFM_USE_TRUSTZONE}>:${CMAKE_CURRENT_SOURCE_DIR}/tfm_ns_interface.c>
+    # NS specific implementation of NS interface dispatcher
+    $<$<BOOL:${CONFIG_TFM_USE_TRUSTZONE}>:${INTERFACE_SRC_DIR}/os_wrapper/tfm_ns_interface_rtos.c>
 )
 
 target_link_libraries(tfm_api_ns
diff --git a/app/tfm_ns_interface.c b/app/tfm_ns_interface.c
deleted file mode 100644
index 3bd401b..0000000
--- a/app/tfm_ns_interface.c
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Copyright (c) 2017-2021, Arm Limited. All rights reserved.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- *
- */
-#include <stdint.h>
-
-#include "os_wrapper/mutex.h"
-
-#include "tfm_ns_interface.h"
-
-/**
- * \brief the ns_lock ID
- */
-static void *ns_lock_handle = NULL;
-
-int32_t tfm_ns_interface_dispatch(veneer_fn fn,
-                                  uint32_t arg0, uint32_t arg1,
-                                  uint32_t arg2, uint32_t arg3)
-{
-    int32_t result;
-
-    /* TFM request protected by NS lock */
-    while (os_wrapper_mutex_acquire(ns_lock_handle, OS_WRAPPER_WAIT_FOREVER)
-            != OS_WRAPPER_SUCCESS);
-
-    result = fn(arg0, arg1, arg2, arg3);
-
-    while (os_wrapper_mutex_release(ns_lock_handle) != OS_WRAPPER_SUCCESS);
-
-    return result;
-}
-
-uint32_t tfm_ns_interface_init(void)
-{
-    void *handle;
-
-    handle = os_wrapper_mutex_create();
-    if (!handle) {
-        return OS_WRAPPER_ERROR;
-    }
-
-    ns_lock_handle = handle;
-    return OS_WRAPPER_SUCCESS;
-}
diff --git a/ns_interface/os_wrapper/common.h b/ns_interface/os_wrapper/common.h
deleted file mode 100644
index 6494723..0000000
--- a/ns_interface/os_wrapper/common.h
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * Copyright (c) 2017-2019, Arm Limited. All rights reserved.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- *
- */
-
-#ifndef __OS_WRAPPER_COMMON_H__
-#define __OS_WRAPPER_COMMON_H__
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <stdint.h>
-
-#define OS_WRAPPER_SUCCESS            (0x0)
-#define OS_WRAPPER_ERROR              (0xFFFFFFFFU)
-#define OS_WRAPPER_WAIT_FOREVER       (0xFFFFFFFFU)
-#define OS_WRAPPER_DEFAULT_STACK_SIZE (-1)
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __OS_WRAPPER_COMMON_H__ */
diff --git a/ns_interface/os_wrapper/delay.h b/ns_interface/os_wrapper/delay.h
index 4242b81..7e73459 100644
--- a/ns_interface/os_wrapper/delay.h
+++ b/ns_interface/os_wrapper/delay.h
@@ -1,5 +1,7 @@
 /*
  * Copyright (c) 2022, Arm Limited. All rights reserved.
+ * Copyright (c) 2023 Cypress Semiconductor Corporation (an Infineon company)
+ * or an affiliate of Cypress Semiconductor Corporation. All rights reserved.
  *
  * SPDX-License-Identifier: BSD-3-Clause
  *
@@ -12,7 +14,7 @@
 extern "C" {
 #endif
 
-#include "common.h"
+#include "os_wrapper/common.h"
 
 /**
  * \brief Waits for a time period specified in kernel ticks.
diff --git a/ns_interface/os_wrapper/msg_queue.h b/ns_interface/os_wrapper/msg_queue.h
index ac69773..4c9e362 100644
--- a/ns_interface/os_wrapper/msg_queue.h
+++ b/ns_interface/os_wrapper/msg_queue.h
@@ -1,5 +1,7 @@
 /*
  * Copyright (c) 2020-2021, Arm Limited. All rights reserved.
+ * Copyright (c) 2023 Cypress Semiconductor Corporation (an Infineon company)
+ * or an affiliate of Cypress Semiconductor Corporation. All rights reserved.
  *
  * SPDX-License-Identifier: BSD-3-Clause
  *
@@ -14,7 +16,7 @@
 
 #include <stddef.h>
 
-#include "common.h"
+#include "os_wrapper/common.h"
 
 /**
  * \brief Create and initialize a message queue
diff --git a/ns_interface/os_wrapper/mutex.h b/ns_interface/os_wrapper/mutex.h
deleted file mode 100644
index e55ef70..0000000
--- a/ns_interface/os_wrapper/mutex.h
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * Copyright (c) 2017-2019, Arm Limited. All rights reserved.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- *
- */
-
-#ifndef __OS_WRAPPER_MUTEX_H__
-#define __OS_WRAPPER_MUTEX_H__
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include "common.h"
-
-/**
- * \brief Creates a mutex for mutual exclusion of resources
- *
- * \return The handle of the created mutex on success or NULL on error
- */
-void *os_wrapper_mutex_create(void);
-
-/**
- * \brief Acquires a mutex that is created by \ref os_wrapper_mutex_create()
- *
- * \param[in] handle   The handle of the mutex to acquire. Should be one of the
- *                     handles returned by \ref os_wrapper_mutex_create()
- * \param[in] timeout  The maximum amount of time(in tick periods) for the
- *                     thread to wait for the mutex to be available.
- *                     If timeout is zero, the function will return immediately.
- *                     Setting timeout to \ref OS_WRAPPER_WAIT_FOREVER will
- *                     cause the thread to wait indefinitely
- *
- * \return \ref OS_WRAPPER_SUCCESS on success or \ref OS_WRAPPER_ERROR on error
- */
-uint32_t os_wrapper_mutex_acquire(void *handle, uint32_t timeout);
-
-/**
- * \brief Releases the mutex acquired previously
- *
-
- * \param[in] handle The handle of the mutex that has been acquired
- *
- * \return \ref OS_WRAPPER_SUCCESS on success or \ref OS_WRAPPER_ERROR on error
- */
-uint32_t os_wrapper_mutex_release(void *handle);
-
-/**
- * \brief Deletes a mutex that is created by \ref os_wrapper_mutex_create()
- *
- * \param[in] handle The handle of the mutex to be deleted
- *
- * \return \ref OS_WRAPPER_SUCCESS on success or \ref OS_WRAPPER_ERROR on error
- */
-uint32_t os_wrapper_mutex_delete(void *handle);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __OS_WRAPPER_MUTEX_H__ */
diff --git a/ns_interface/os_wrapper/semaphore.h b/ns_interface/os_wrapper/semaphore.h
index 83d88ca..ce5aa04 100644
--- a/ns_interface/os_wrapper/semaphore.h
+++ b/ns_interface/os_wrapper/semaphore.h
@@ -1,5 +1,7 @@
 /*
  * Copyright (c) 2017-2020, Arm Limited. All rights reserved.
+ * Copyright (c) 2023 Cypress Semiconductor Corporation (an Infineon company)
+ * or an affiliate of Cypress Semiconductor Corporation. All rights reserved.
  *
  * SPDX-License-Identifier: BSD-3-Clause
  *
@@ -12,7 +14,7 @@
 extern "C" {
 #endif
 
-#include "common.h"
+#include "os_wrapper/common.h"
 
 /**
  * \brief Creates a new semaphore
diff --git a/ns_interface/os_wrapper/thread.h b/ns_interface/os_wrapper/thread.h
index a493593..83633a6 100644
--- a/ns_interface/os_wrapper/thread.h
+++ b/ns_interface/os_wrapper/thread.h
@@ -1,5 +1,7 @@
 /*
  * Copyright (c) 2017-2020, Arm Limited. All rights reserved.
+ * Copyright (c) 2023 Cypress Semiconductor Corporation (an Infineon company)
+ * or an affiliate of Cypress Semiconductor Corporation. All rights reserved.
  *
  * SPDX-License-Identifier: BSD-3-Clause
  *
@@ -12,7 +14,7 @@
 extern "C" {
 #endif
 
-#include "common.h"
+#include "os_wrapper/common.h"
 
 /* prototype for the thread entry function */
 typedef void (*os_wrapper_thread_func) (void *argument);
diff --git a/ns_interface/os_wrapper/tick.h b/ns_interface/os_wrapper/tick.h
index b377b0e..de7d2f5 100644
--- a/ns_interface/os_wrapper/tick.h
+++ b/ns_interface/os_wrapper/tick.h
@@ -1,5 +1,7 @@
 /*
  * Copyright (c) 2020, Arm Limited. All rights reserved.
+ * Copyright (c) 2023 Cypress Semiconductor Corporation (an Infineon company)
+ * or an affiliate of Cypress Semiconductor Corporation. All rights reserved.
  *
  * SPDX-License-Identifier: BSD-3-Clause
  *
@@ -12,7 +14,7 @@
 extern "C" {
 #endif
 
-#include "common.h"
+#include "os_wrapper/common.h"
 
 /**
  * \brief Return RTOS current tick count
