Enhancements : Memory usage, clean up and new build option
        1. const qualifier added at appropriate places.
        2. Cleaned redundant code.
        3. New Storage build option introduced.
		-DSUITE=STORAGE to build ITS and PS as single archive
		-DSUITE=INTERNAL_TRUSTED_STORAGE to build ITS only
		-DSUITE=PROTECTED_STORAGE to build PS only

Signed-off-by: Vinay Kumar Kotegowder <vinaykumar.kotegowder@arm.com>
diff --git a/api-tests/val/common/val.h b/api-tests/val/common/val.h
index f7ba5f0..1fb6266 100644
--- a/api-tests/val/common/val.h
+++ b/api-tests/val/common/val.h
@@ -85,9 +85,8 @@
 #define VAL_MAX_TEST_PER_COMP                200
 #define VAL_FF_BASE                            0
 #define VAL_CRYPTO_BASE                        1
-#define VAL_PROTECTED_STORAGE_BASE             2
-#define VAL_INTERNAL_TRUSTED_STORAGE_BASE      3
-#define VAL_INITIAL_ATTESTATION_BASE           4
+#define VAL_STORAGE_BASE                       2
+#define VAL_INITIAL_ATTESTATION_BASE           3
 
 #define VAL_GET_COMP_NUM(test_id)      \
    ((test_id - (test_id % VAL_MAX_TEST_PER_COMP)) / VAL_MAX_TEST_PER_COMP)
diff --git a/api-tests/val/common/val_target.h b/api-tests/val/common/val_target.h
index b450a33..1d4f421 100644
--- a/api-tests/val/common/val_target.h
+++ b/api-tests/val/common/val_target.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -48,7 +48,6 @@
 typedef enum _GROUP_CONFIG_ID_ {
   GROUP_SOC_PERIPHERAL      = 0x1,
   GROUP_MEMORY              = 0x2,
-  GROUP_MISCELLANEOUS       = 0x3,
   GROUP_MAX                 = 0xFF,
 } group_cfg_id_t;
 
@@ -68,11 +67,6 @@
   MEMORY_DRIVER_PARTITION_MMIO    = 0x5,
 } memory_cfg_id_t;
 
-typedef enum _MISCELLANEOUS_CONFIG_ID_ {
-  MISCELLANEOUS_BOOT         = 0x1,
-  MISCELLANEOUS_DUT          = 0x2
-} miscellaneous_cfg_id_t;
-
 /**
   Assign group type to each system component
 **/
@@ -84,8 +78,6 @@
   NSPE_MMIO                = GROUP_MEMORY,
   SERVER_PARTITION_MMIO    = GROUP_MEMORY,
   DRIVER_PARTITION_MMIO    = GROUP_MEMORY,
-  BOOT                     = GROUP_MISCELLANEOUS,
-  DUT                      = GROUP_MISCELLANEOUS,
 } comp_group_assign_t;
 
 /**
@@ -174,22 +166,6 @@
   dev_attr_t  attribute;
 } soc_peripheral_desc_t;
 
-/**
-  System Miscellaneous Information
-**/
-
-typedef struct _MISCELLANEOUS_INFO_HDR_ {
-    cfg_type_t cfg_type;
-    uint32_t   num;
-} miscellaneous_hdr_t;
-
-typedef struct _MISCELLANEOUS_INFO_DESC_ {
-    cfg_type_t              cfg_type;
-    addr_t                  ns_start_addr_of_combine_test_binary;
-    is_available_t          combine_test_binary_in_ram;
-    addr_t                  ns_test_addr;
-} miscellaneous_desc_t;
-
 /*val target config read apis */
 #ifdef VAL_NSPE_BUILD
 STATIC_DECLARE val_status_t val_target_get_config(cfg_id_t cfg_id, uint8_t **data, uint32_t *size);
diff --git a/api-tests/val/nspe/pal_interfaces_ns.h b/api-tests/val/nspe/pal_interfaces_ns.h
index e017d19..55f8796 100644
--- a/api-tests/val/nspe/pal_interfaces_ns.h
+++ b/api-tests/val/nspe/pal_interfaces_ns.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -22,73 +22,6 @@
 #include <stdarg.h>
 
 /**
-    @brief    - This function will read peripherals using SPI commands
-    @param    - addr : address of the peripheral
-              - data : read buffer
-              - len  : length of the read buffer in bytes
-    @return   - error status
-**/
-int pal_spi_read(addr_t addr, uint8_t *data, uint32_t len);
-
-/**
- * @brief    - Retrieve the version of the PSA Framework API that is implemented.
- *             This is a wrapper API for psa_framework_version API.
- * @param    - void
- * @return   - The PSA Framework API version.
- *             Note - Return PAL_STATUS_ERROR if PSA IPC is not implemented.
- */
-uint32_t pal_ipc_framework_version(void);
-
-/**
- * @brief    - Retrieve the version of a Root of Trust Service by its SID.
- *             This is a wrapper API for the psa_version API.
- * @param    - sid The Root of Trust Service ID
- * @return   - Version of Root of Trust Service or PSA_VERSION_NONE if Root of Trust Service
- *             not present on the system.
- *             Note - Return PAL_STATUS_ERROR if PSA IPC is not implemented.
- */
-uint32_t pal_ipc_version(uint32_t sid);
-
-/**
- * @brief   - Connect to given sid.
- *            This is a wrapper API for the psa_connect API.
- * @param   - sid : RoT service id
- *          - version : version of RoT service
- * @return  - psa_handle_t : return connection handle
- *            Note - Return PSA_NULL_HANDLE if PSA IPC is not implemented.
- */
-psa_handle_t pal_ipc_connect(uint32_t sid, uint32_t version);
-
-/**
- * @brief  - Call a connected Root of Trust Service.
- *          This is a wrapper API for the psa_call API. The caller must provide an array of
- *          psa_invec_t structures as the input payload.
- * @param  - handle:   Handle for the connection.
- *         - type:     Request type
- *         - in_vec:   Array of psa_invec structures.
- *         - in_len:   Number of psa_invec structures in in_vec.
- *         - out_vec:  Array of psa_outvec structures for optional Root of Trust Service response.
- *         - out_len:  Number of psa_outvec structures in out_vec.
- * @return - psa_status_t
- */
-
-psa_status_t pal_ipc_call(psa_handle_t handle,
-                          int32_t type,
-                          const psa_invec *in_vec,
-                          size_t in_len,
-                          psa_outvec *out_vec,
-                          size_t out_len);
-
-/**
- * @brief - Close a connection to a Root of Trust Service.
- *          This is a wrapper API for the psa_close API.
- *          Sends the PSA_IPC_DISCONNECT message to the Root of Trust Service
- *          so it can clean up resources.
- * @param - handle Handle for the connection.
- * @return - void
- */
-void pal_ipc_close(psa_handle_t handle);
-/**
     @brief    - This function initializes the UART
     @param    - uart base addr
     @return   - SUCCESS/FAILURE
@@ -102,7 +35,7 @@
  *   @return   - SUCCESS/FAILURE
 **/
 
-int pal_print_ns(char *str, int32_t data);
+int pal_print_ns(const char *str, int32_t data);
 
 /**
  *   @brief           - Initializes an hardware watchdog timer
@@ -186,4 +119,11 @@
  *   @return   - void
 **/
 void pal_terminate_simulation(void);
+
+/**
+ *   @brief    - Resets the system.
+ *   @param    - void
+ *   @return   - SUCCESS/FAILURE
+**/
+int pal_system_reset(void);
 #endif
diff --git a/api-tests/val/nspe/val_dispatcher.c b/api-tests/val/nspe/val_dispatcher.c
index d6a2f1a..8debcac 100644
--- a/api-tests/val/nspe/val_dispatcher.c
+++ b/api-tests/val/nspe/val_dispatcher.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -26,98 +26,6 @@
 
 /* gloabls */
 addr_t          g_test_info_addr;
-uint32_t        combine_test_binary_in_ram;
-addr_t          combine_test_binary_addr;
-
-#if !defined(TEST_COMBINE_ARCHIVE)
-static const unsigned char elf_magic_header[ELF_IDENT] = {
-    /* 0x7f, 'E', 'L', 'F' */
-    0x7f, 0x45, 0x4c, 0x46,
-    /* Only 32-bit objects  */
-    0x01,
-    /* Only LSB data. */
-    0x01,
-    /* Only ELF version 1. */
-    0x01,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0
-};
-
-/**
-    @brief    - This API will copy the length of data from addr to *data
-    @param    - addr : address to be read
-                data pointer : address to which data will be copied
-                len  : length of data to be copy in bytes
-    @return   - error status
-**/
-val_status_t val_mem_copy(addr_t addr, uint8_t *data, uint32_t len)
-{
-    if (combine_test_binary_in_ram)
-    {
-        memcpy((void*)data, (void *)addr, len);
-        return VAL_STATUS_SUCCESS;
-    }
-    else
-    {
-        return val_spi_read(addr, data, len);
-    }
-}
-
-
-/**
-    @brief    - This function parses ELF header, entry address(test info addreess)
-                and program headers. Copies the loadable segments to system memory.
-    @return   - Returns Success/Failure
-**/
-int val_copy_elf(uint32_t saddr, uint32_t *info_addr)
-{
-    elf_header_t     test_elfh;
-    elf_pheader_t    test_ph;
-    int              i;
-
-    if (0 != val_mem_copy(saddr, (uint8_t *)&test_elfh, sizeof(elf_header_t)))
-    {
-        val_print(PRINT_ERROR, "Error: read failure for Test ELF header\n", 0);
-        return -1;
-    }
-
-    /* validate ELF header */
-    if (0 != memcmp(&test_elfh.e_ident, &elf_magic_header, ELF_IDENT))
-    {
-        val_print(PRINT_ERROR, "Fail: Test ELF header validation\n", 0);
-        return -1;
-    }
-
-    for (i = 0; i < test_elfh.e_phnum; i++)
-    {
-        /* Read the program header */
-        if (0 != val_mem_copy((saddr + test_elfh.e_phoff + (sizeof(elf_pheader_t)*i)),
-                            (uint8_t *)&test_ph, sizeof(elf_pheader_t)))
-        {
-            val_print(PRINT_ERROR, "Error: reading Test program header\n", 0);
-            return -1;
-        }
-
-        /* Load the program to physical RAM */
-        if (0 != val_mem_copy((saddr + test_ph.p_offset),
-                            (uint8_t *)test_ph.p_paddr, test_ph.p_filesz))
-        {
-            val_print(PRINT_ERROR, "Error: reading Test program header\n", 0);
-            return -1;
-        }
-    }
-
-    *info_addr = test_elfh.e_entry;
-    return 0;
-}
-#endif
 
 /**
     @brief        - This function reads the test ELFs from RAM or secondary storage and loads into
@@ -128,98 +36,6 @@
 **/
 val_status_t val_test_load(test_id_t *test_id, test_id_t test_id_prev)
 {
-#if !defined(TEST_COMBINE_ARCHIVE)
-    test_header_t   test_header;
-    addr_t          flash_addr = combine_test_binary_addr;
-
-    /*
-     * The combined Test ELF binary:
-     *
-     * ----------------------
-     * | Custom Test Header*|
-     * |--------------------|
-     * | Test-1 Image       |
-     * ----------------------
-     * | Custom Test Header*|
-     * ----------------------
-     * | Test-2 Image       |
-     * |--------------------|
-     * | Custom Test Header*|
-     *          :
-     *          :
-     * ----------------------
-     * | END Marker         |
-     * ----------------------
-     *
-     */
-
-    if (test_id_prev != VAL_INVALID_TEST_ID)
-    {
-        /* Jump to last test run + 1 */
-        do
-        {
-            if (val_mem_copy(flash_addr, (uint8_t *)&test_header, sizeof(test_header_t)))
-            {
-                val_print(PRINT_ERROR, "Error: reading Test program header\n", 0);
-                return VAL_STATUS_LOAD_ERROR;
-            }
-
-            if (test_header.start_marker == VAL_TEST_END_MARKER)
-            {
-                val_print(PRINT_DEBUG, "\n\nNo more valid tests found. Exiting..", 0);
-                *test_id = VAL_INVALID_TEST_ID;
-                return VAL_STATUS_SUCCESS;
-            }
-
-            if (test_header.start_marker != VAL_TEST_START_MARKER)
-            {
-                flash_addr += 0x4;
-                continue;
-            }
-
-            if ((test_header.start_marker == VAL_TEST_START_MARKER)
-                    && (test_header.test_id == test_id_prev))
-            {
-                flash_addr += (sizeof(test_header_t) + test_header.elf_size);
-                break;
-            }
-
-            flash_addr += (sizeof(test_header_t) + test_header.elf_size);
-        } while(1);
-    }
-
-    if (val_mem_copy(flash_addr, (uint8_t *)&test_header, sizeof(test_header_t)))
-    {
-        val_print(PRINT_ERROR, "\n\nError: reading custom Test header", 0);
-        return VAL_STATUS_LOAD_ERROR;
-    }
-
-    if (test_header.start_marker == VAL_TEST_END_MARKER)
-    {
-        val_print(PRINT_DEBUG, "\n\nNo more valid tests found. Exiting.", 0);
-        *test_id = VAL_INVALID_TEST_ID;
-        return VAL_STATUS_SUCCESS;
-    }
-
-    if (test_header.start_marker != VAL_TEST_START_MARKER)
-    {
-        val_print(PRINT_ERROR, "\n\nError: No valid test binary found. Exiting.", 0);
-        *test_id = VAL_INVALID_TEST_ID;
-        return VAL_STATUS_LOAD_ERROR;
-    }
-
-    flash_addr += sizeof(test_header_t);
-    if (val_copy_elf(flash_addr, &g_test_info_addr))
-    {
-        val_print(PRINT_ERROR, "Error: loading Test program\n", 0);
-        return VAL_STATUS_LOAD_ERROR;
-    }
-
-    *test_id = test_header.test_id;
-    return VAL_STATUS_SUCCESS;
-
-#else /* TEST_COMBINE_ARCHIVE */
-
     int             i;
     val_test_info_t test_list[] = {
 #include "test_entry_list.inc"
@@ -251,7 +67,6 @@
     *test_id = VAL_INVALID_TEST_ID;
     val_print(PRINT_ERROR, "\n\nError: No more valid tests found. Exiting.", 0);
     return VAL_STATUS_LOAD_ERROR;
-#endif /* TEST_COMBINE_ARCHIVE */
 }
 
 /**
@@ -262,11 +77,7 @@
 **/
 val_status_t val_get_test_entry_addr(addr_t *paddr)
 {
-#if !defined(TEST_COMBINE_ARCHIVE)
-    *paddr = (addr_t)(((val_test_info_t *)g_test_info_addr)->entry_addr);
-#else
     *paddr = g_test_info_addr;
-#endif
     return VAL_STATUS_SUCCESS;
 }
 
@@ -298,10 +109,8 @@
             return "IPC Suite";
         case VAL_CRYPTO_BASE:
             return "Crypto Suite";
-        case VAL_PROTECTED_STORAGE_BASE:
-            return "Protected Storage Suite";
-        case VAL_INTERNAL_TRUSTED_STORAGE_BASE:
-            return "Internal Trusted Storage Suite";
+        case VAL_STORAGE_BASE:
+            return "Storage Suite";
         case VAL_INITIAL_ATTESTATION_BASE:
             return "Attestation Suite";
         default:
@@ -320,23 +129,10 @@
 
     test_id_t            test_id;
     val_status_t         status;
-    miscellaneous_desc_t *misc_desc;
     boot_t               boot;
     test_count_t         test_count;
     uint32_t             test_result;
 
-    status = val_target_get_config(TARGET_CONFIG_CREATE_ID(GROUP_MISCELLANEOUS,
-                                    MISCELLANEOUS_DUT, 0),
-                                   (uint8_t **)&misc_desc,
-                                   (uint32_t *)sizeof(miscellaneous_desc_t));
-    if (VAL_ERROR(status))
-    {
-        val_print(PRINT_ERROR, "\n\ttarget config read failed", 0);
-        return status;
-    }
-
-    combine_test_binary_addr   = misc_desc->ns_start_addr_of_combine_test_binary;
-    combine_test_binary_in_ram = misc_desc->combine_test_binary_in_ram;
     do
     {
         status = val_get_boot_flag(&boot.state);
diff --git a/api-tests/val/nspe/val_framework.c b/api-tests/val/nspe/val_framework.c
index 322f166..2438912 100644
--- a/api-tests/val/nspe/val_framework.c
+++ b/api-tests/val/nspe/val_framework.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -28,6 +28,7 @@
 /* globals */
 test_status_buffer_t    g_status_buffer;
 
+#ifdef IPC
 /**
  * @brief Connect to given sid
    @param  -sid : RoT service id
@@ -37,7 +38,7 @@
  */
 val_status_t val_ipc_connect(uint32_t sid, uint32_t version, psa_handle_t *handle )
 {
-    *handle = pal_ipc_connect(sid, version);
+    *handle = psa_connect(sid, version);
 
     if (*handle > 0)
         return VAL_STATUS_SUCCESS;
@@ -66,7 +67,7 @@
 {
     psa_status_t call_status = PSA_SUCCESS;
 
-    call_status = pal_ipc_call(handle, type, in_vec, in_len, out_vec, out_len);
+    call_status = psa_call(handle, type, in_vec, in_len, out_vec, out_len);
 
     if (call_status != PSA_SUCCESS)
     {
@@ -85,8 +86,10 @@
  */
 void val_ipc_close(psa_handle_t handle)
 {
-    pal_ipc_close(handle);
+    psa_close(handle);
 }
+#endif
+
 /**
     @brief    - This function executes given list of tests from non-secure sequentially
                 This covers non-secure to secure IPC API scenario
@@ -95,17 +98,19 @@
     @param    - server_hs  : Initiate a server handshake
     @return   - val_status_t
 **/
-val_status_t val_execute_non_secure_tests(uint32_t test_num, client_test_t *tests_list,
+val_status_t val_execute_non_secure_tests(uint32_t test_num, const client_test_t *tests_list,
                                           bool_t server_hs)
 {
     val_status_t          status = VAL_STATUS_SUCCESS;
     val_status_t          test_status = VAL_STATUS_SUCCESS;
     boot_t                boot;
-    psa_handle_t          handle;
     uint32_t              i = 1;
+#ifdef IPC
+    psa_handle_t          handle;
     test_info_t           test_info;
 
     test_info.test_num = test_num;
+#endif
 
     status = val_get_boot_flag(&boot.state);
     if (VAL_ERROR(status))
@@ -142,7 +147,7 @@
 
             if (i == 1)
                 val_print(PRINT_TEST,"[Info] Executing tests from non-secure\n", 0);
-
+#ifdef IPC
             if (server_hs == TRUE)
             {
                 /* Handshake with server tests */
@@ -160,16 +165,16 @@
                     val_print(PRINT_DEBUG, "[Check %d] START\n", i);
                 }
             }
-
+#endif
             /* Execute client tests */
             test_status = tests_list[i](CALLER_NONSECURE);
-
+#ifdef IPC
             if (server_hs == TRUE)
             {
                 /* Retrive Server test status */
                 status = val_get_secure_test_result(&handle);
             }
-
+#endif
             status = test_status ? test_status:status;
             if (IS_TEST_SKIP(status))
             {
@@ -206,6 +211,8 @@
    }
    return status;
 }
+
+#ifdef IPC
 /**
     @brief    - This function is used to switch to client_partition.c
                 where client tests will be executed to cover secure to secure
@@ -296,19 +303,19 @@
     val_status_t    status = VAL_STATUS_SUCCESS;
     psa_status_t    status_of_call = PSA_SUCCESS;
 
-    *handle = pal_ipc_connect(sid, 1);
+    *handle = psa_connect(sid, 1);
     if (*handle > 0)
     {
         test_data = ((uint32_t)(test_info.test_num) |((uint32_t)(test_info.block_num) << BLOCK_NUM_POS)
                     | ((uint32_t)(TEST_EXECUTE_FUNC) << ACTION_POS));
         psa_invec data[1] = {{&test_data, sizeof(test_data)}};
 
-        status_of_call = pal_ipc_call(*handle, 0, data, 1, NULL, 0);
+        status_of_call = psa_call(*handle, 0, data, 1, NULL, 0);
         if (status_of_call != PSA_SUCCESS)
         {
             status = VAL_STATUS_CALL_FAILED;
             val_print(PRINT_ERROR, "Call to dispatch SF failed. Status=%x\n", status_of_call);
-            pal_ipc_close(*handle);
+            psa_close(*handle);
         }
     }
     else
@@ -337,17 +344,17 @@
     psa_outvec resp = {&status, sizeof(status)};
     psa_invec data[1] = {{&test_data, sizeof(test_data)}};
 
-    status_of_call = pal_ipc_call(*handle, 0, data, 1, &resp, 1);
+    status_of_call = psa_call(*handle, 0, data, 1, &resp, 1);
     if (status_of_call != PSA_SUCCESS)
     {
         status = VAL_STATUS_CALL_FAILED;
         val_print(PRINT_ERROR, "Call to dispatch SF failed. Status=%x\n", status_of_call);
     }
 
-    pal_ipc_close(*handle);
+    psa_close(*handle);
     return status;
 }
-
+#endif
 
 /**
     @brief    - Parses input status for a given test and
@@ -367,31 +374,31 @@
     {
         case TEST_START:
             state = TEST_FAIL;
-            val_print(PRINT_ALWAYS, "TEST RESULT: FAILED (Error Code=0x%x)\n",
+            val_print(PRINT_ALWAYS, "\nTEST RESULT: FAILED (Error Code=0x%x)\n",
                                                     VAL_STATUS_INIT_FAILED);
             break;
 
         case TEST_END:
             state = TEST_PASS;
-            val_print(PRINT_ALWAYS, "TEST RESULT: PASSED \n", 0);
+            val_print(PRINT_ALWAYS, "\nTEST RESULT: PASSED\n", 0);
             break;
 
         case TEST_FAIL:
-            val_print(PRINT_ALWAYS, "TEST RESULT: FAILED (Error Code=0x%x) \n", status);
+            val_print(PRINT_ALWAYS, "\nTEST RESULT: FAILED (Error Code=0x%x)\n", status);
             break;
 
         case TEST_SKIP:
             state = TEST_SKIP;
-            val_print(PRINT_ALWAYS, "TEST RESULT: SKIPPED (Skip Code=0x%x)\n", status);
+            val_print(PRINT_ALWAYS, "\nTEST RESULT: SKIPPED (Skip Code=0x%x)\n", status);
             break;
 
         case TEST_PENDING:
-            val_print(PRINT_ALWAYS, "TEST RESULT: SIM ERROR (Error Code=0x%x)\n", status);
+            val_print(PRINT_ALWAYS, "\nTEST RESULT: SIM ERROR (Error Code=0x%x)\n", status);
             break;
 
         default:
             state = TEST_FAIL;
-            val_print(PRINT_ALWAYS, "TEST RESULT: FAILED(Error Code=0x%x)\n", VAL_STATUS_INVALID);
+            val_print(PRINT_ALWAYS, "\nTEST RESULT: FAILED(Error Code=0x%x)\n", VAL_STATUS_INVALID);
             break;
 
     }
diff --git a/api-tests/val/nspe/val_framework.h b/api-tests/val/nspe/val_framework.h
index 7e13fb6..01b537b 100644
--- a/api-tests/val/nspe/val_framework.h
+++ b/api-tests/val/nspe/val_framework.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -32,7 +32,7 @@
 void         val_test_exit(void);
 val_status_t val_get_last_run_test_id(test_id_t *test_id);
 val_status_t val_execute_non_secure_tests(uint32_t test_num,
-                                          client_test_t *tests_list,
+                                          const client_test_t *tests_list,
                                           bool_t server_hs);
 val_status_t val_switch_to_secure_client(uint32_t test_num);
 val_status_t val_execute_secure_test_func(psa_handle_t *handle,
diff --git a/api-tests/val/nspe/val_interfaces.c b/api-tests/val/nspe/val_interfaces.c
index 719f4b0..ca7ba08 100644
--- a/api-tests/val/nspe/val_interfaces.c
+++ b/api-tests/val/nspe/val_interfaces.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -21,8 +21,7 @@
 #include "val_peripherals.h"
 #include "val_target.h"
 #include "val_crypto.h"
-#include "val_internal_trusted_storage.h"
-#include "val_protected_storage.h"
+#include "val_storage.h"
 #include "val_attestation.h"
 
 /*VAL APIs to be used by test */
@@ -35,12 +34,21 @@
     .err_check_set             = val_err_check_set,
     .target_get_config         = val_target_get_config,
     .execute_non_secure_tests  = val_execute_non_secure_tests,
+#ifdef IPC
     .switch_to_secure_client   = val_switch_to_secure_client,
     .execute_secure_test_func  = val_execute_secure_test_func,
     .get_secure_test_result    = val_get_secure_test_result,
     .ipc_connect               = val_ipc_connect,
     .ipc_call                  = val_ipc_call,
     .ipc_close                 = val_ipc_close,
+#else
+    .switch_to_secure_client   = NULL,
+    .execute_secure_test_func  = NULL,
+    .get_secure_test_result    = NULL,
+    .ipc_connect               = NULL,
+    .ipc_call                  = NULL,
+    .ipc_close                 = NULL,
+#endif
     .nvmem_read                = val_nvmem_read,
     .nvmem_write               = val_nvmem_write,
     .wd_timer_init             = val_wd_timer_init,
@@ -50,15 +58,22 @@
     .set_boot_flag             = val_set_boot_flag,
     .get_boot_flag             = val_get_boot_flag,
     .crypto_function           = val_crypto_function,
-    .its_function              = val_its_function,
-    .ps_function               = val_ps_function,
+    .storage_function          = val_storage_function,
     .attestation_function      = val_attestation_function,
 };
 
 const psa_api_t psa_api = {
-    .framework_version     = pal_ipc_framework_version,
-    .version               = pal_ipc_version,
-    .connect               = pal_ipc_connect,
-    .call                  = pal_ipc_call,
-    .close                 = pal_ipc_close,
+#ifdef IPC
+    .framework_version     = psa_framework_version,
+    .version               = psa_version,
+    .connect               = psa_connect,
+    .call                  = psa_call,
+    .close                 = psa_close,
+#else
+    .framework_version     = NULL,
+    .version               = NULL,
+    .connect               = NULL,
+    .call                  = NULL,
+    .close                 = NULL,
+#endif
 };
diff --git a/api-tests/val/nspe/val_interfaces.h b/api-tests/val/nspe/val_interfaces.h
index 944d4b1..503769f 100644
--- a/api-tests/val/nspe/val_interfaces.h
+++ b/api-tests/val/nspe/val_interfaces.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,7 +25,7 @@
 /* typedef's */
 typedef struct {
     val_status_t     (*print)                     (print_verbosity_t verbosity,
-                                                   char *string, int32_t data);
+                                                   const char *string, int32_t data);
     val_status_t     (*set_status)                (uint32_t status);
     uint32_t         (*get_status)                (void);
     void             (*test_init)                 (uint32_t test_num,  char8_t *desc,
@@ -33,8 +33,9 @@
     void             (*test_exit)                 (void);
     val_status_t     (*err_check_set)             (uint32_t checkpoint, val_status_t status);
     val_status_t     (*target_get_config)         (cfg_id_t cfg_id, uint8_t **data, uint32_t *size);
-    val_status_t     (*execute_non_secure_tests)  (uint32_t test_num, client_test_t *tests_list,
-                                                                                bool_t server_hs);
+    val_status_t     (*execute_non_secure_tests)  (uint32_t test_num,
+                                                   const client_test_t *tests_list,
+                                                   bool_t server_hs);
     val_status_t     (*switch_to_secure_client)   (uint32_t test_num);
     val_status_t     (*execute_secure_test_func)  (psa_handle_t *handle, test_info_t test_info,
                                                    uint32_t sid);
@@ -57,8 +58,7 @@
     val_status_t     (*set_boot_flag)             (boot_state_t state);
     val_status_t     (*get_boot_flag)             (boot_state_t *state);
     int32_t          (*crypto_function)           (int type, ...);
-    uint32_t         (*its_function)              (int type, ...);
-    uint32_t         (*ps_function)               (int type, ...);
+    int32_t          (*storage_function)          (int type, ...);
     int32_t          (*attestation_function)      (int type, ...);
 } val_api_t;
 
@@ -82,6 +82,40 @@
     test_fptr_t   entry_addr;
 } val_test_info_t;
 
+typedef enum {
+    VAL_TEST_IDX0    = 0x0,
+    VAL_TEST_IDX1    = 0x1,
+    VAL_TEST_IDX2    = 0x2,
+    VAL_TEST_IDX3    = 0x3,
+    VAL_TEST_IDX4    = 0x4,
+    VAL_TEST_IDX5    = 0x5,
+    VAL_TEST_IDX6    = 0x6,
+    VAL_TEST_IDX7    = 0x7,
+    VAL_TEST_IDX8    = 0x8,
+    VAL_TEST_IDX9    = 0x9,
+    VAL_TEST_IDX10   = 0xA,
+    VAL_TEST_IDX11   = 0xB,
+    VAL_TEST_IDX12   = 0xC,
+    VAL_TEST_IDX13   = 0xD,
+    VAL_TEST_IDX14   = 0xE,
+    VAL_TEST_IDX15   = 0xF,
+    VAL_TEST_IDX16   = 0x10,
+    VAL_TEST_IDX17   = 0x11,
+    VAL_TEST_IDX18   = 0x12,
+    VAL_TEST_IDX19   = 0x13,
+    VAL_TEST_IDX20   = 0x14,
+    VAL_TEST_IDX21   = 0x15,
+    VAL_TEST_IDX22   = 0x16,
+    VAL_TEST_IDX23   = 0x17,
+    VAL_TEST_IDX24   = 0x18,
+    VAL_TEST_IDX25   = 0x19,
+    VAL_TEST_IDX26   = 0x1A,
+    VAL_TEST_IDX27   = 0x1B,
+    VAL_TEST_IDX28   = 0x1C,
+    VAL_TEST_IDX29   = 0x1D,
+    VAL_TEST_IDX30   = 0x1E,
+} val_test_index_t;
+
 #include "test_entry_fn_declare_list.inc"
 
 void test_entry(val_api_t *val, psa_api_t *psa);
diff --git a/api-tests/val/nspe/val_internal_trusted_storage.c b/api-tests/val/nspe/val_internal_trusted_storage.c
deleted file mode 100644
index 5c910fd..0000000
--- a/api-tests/val/nspe/val_internal_trusted_storage.c
+++ /dev/null
@@ -1,43 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#include "val_target.h"
-#include "pal_interfaces_ns.h"
-#include "val_framework.h"
-#include "val_client_defs.h"
-#include "val_internal_trusted_storage.h"
-
-/**
-    @brief    - This API will call the requested internal trusted storage function
-    @param    - type : function code
-                ...  : variable number of arguments
-    @return   - Error status
-**/
-uint32_t val_its_function(int type, ...)
-{
-#ifdef INTERNAL_TRUSTED_STORAGE
-    va_list      valist;
-    uint32_t status;
-
-    va_start(valist, type);
-    status = pal_its_function(type, valist);
-    va_end(valist);
-    return status;
-#else
-    return VAL_STATUS_ERROR;
-#endif
-}
diff --git a/api-tests/val/nspe/val_internal_trusted_storage.h b/api-tests/val/nspe/val_internal_trusted_storage.h
deleted file mode 100644
index 2f9384d..0000000
--- a/api-tests/val/nspe/val_internal_trusted_storage.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#ifndef _VAL_INTERNAL_TRUSTED_STORAGE_H_
-#define _VAL_INTERNAL_TRUSTED_STORAGE_H_
-
-#include "val.h"
-
-#define UID_BASE_VALUE  0
-#define BYTES_TO_BITS(byte)             (byte * 8)
-
-enum its_function_code {
-    VAL_ITS_SET                         = 0x1,
-    VAL_ITS_GET                         = 0x2,
-    VAL_ITS_GET_INFO                    = 0x3,
-    VAL_ITS_REMOVE                      = 0x4,
-};
-
-uint32_t val_its_function(int type, ...);
-#endif /* _VAL_INTERNAL_TRUSTED_STORAGE_H_ */
diff --git a/api-tests/val/nspe/val_peripherals.c b/api-tests/val/nspe/val_peripherals.c
index e7674f5..40388c1 100644
--- a/api-tests/val/nspe/val_peripherals.c
+++ b/api-tests/val/nspe/val_peripherals.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -56,7 +56,7 @@
               - data     : Value for format specifier
     @return   - val_status_t
 **/
-val_status_t val_print(print_verbosity_t verbosity, char *string, int32_t data)
+val_status_t val_print(print_verbosity_t verbosity, const char *string, int32_t data)
 {
     if ((is_uart_init_done == 0) || (verbosity < VERBOSE))
     {
@@ -65,18 +65,6 @@
     return pal_print_ns(string, data);
 }
 
-/**
-    @brief    - This API will read from slave address via SPI
-    @param    - addr : Slave address
-                data : value read from Slave address
-                len  : length of data to be read in bytes
-    @return   - error status
-**/
-val_status_t val_spi_read(addr_t addr, uint8_t *data, uint32_t len)
-{
-        return pal_spi_read(addr, data, len);
-}
-
 /* Watchdog APIs */
 /**
     @brief    - Initializes the WatchDog Timer instance. This is client interface API of
diff --git a/api-tests/val/nspe/val_peripherals.h b/api-tests/val/nspe/val_peripherals.h
index d1b7538..b90ef34 100644
--- a/api-tests/val/nspe/val_peripherals.h
+++ b/api-tests/val/nspe/val_peripherals.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -21,8 +21,7 @@
 #include "val.h"
 
 val_status_t val_uart_init(void);
-val_status_t val_print(print_verbosity_t verbosity, char *string, int32_t data);
-val_status_t val_spi_read(addr_t addr, uint8_t *data, uint32_t len);
+val_status_t val_print(print_verbosity_t verbosity, const char *string, int32_t data);
 val_status_t val_nvmem_read(uint32_t offset, void *buffer, int size);
 val_status_t val_nvmem_write(uint32_t offset, void *buffer, int size);
 val_status_t val_wd_timer_init(wd_timeout_type_t timeout_type);
diff --git a/api-tests/val/nspe/val_protected_storage.c b/api-tests/val/nspe/val_protected_storage.c
deleted file mode 100644
index f3869de..0000000
--- a/api-tests/val/nspe/val_protected_storage.c
+++ /dev/null
@@ -1,43 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#include "val_target.h"
-#include "pal_interfaces_ns.h"
-#include "val_framework.h"
-#include "val_client_defs.h"
-#include "val_protected_storage.h"
-
-/**
-    @brief    - This API will call the requested protected storage function
-    @param    - type : function code
-                ...  : variable number of arguments
-    @return   - Error status
-**/
-uint32_t val_ps_function(int type, ...)
-{
-#ifdef PROTECTED_STORAGE
-    va_list      valist;
-    uint32_t status;
-
-    va_start(valist, type);
-    status = pal_ps_function(type, valist);
-    va_end(valist);
-    return status;
-#else
-    return VAL_STATUS_ERROR;
-#endif
-}
diff --git a/api-tests/val/nspe/val_protected_storage.h b/api-tests/val/nspe/val_protected_storage.h
deleted file mode 100644
index 7f05cea..0000000
--- a/api-tests/val/nspe/val_protected_storage.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/** @file
- * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
- * SPDX-License-Identifier : Apache-2.0
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-**/
-
-#ifndef _VAL_PROTECTED_STORAGE_H_
-#define _VAL_PROTECTED_STORAGE_H_
-
-#include "val.h"
-
-#define UID_BASE_VALUE 0
-#define BYTES_TO_BITS(byte)             (byte * 8)
-
-enum ps_function_code {
-    VAL_PS_SET                          = 0x1,
-    VAL_PS_GET                          = 0x2,
-    VAL_PS_GET_INFO                     = 0x3,
-    VAL_PS_REMOVE                       = 0x4,
-    VAL_PS_CREATE                       = 0x5,
-    VAL_PS_SET_EXTENDED                 = 0x6,
-    VAL_PS_GET_SUPPORT                  = 0x7,
-};
-
-uint32_t val_ps_function(int type, ...);
-#endif /* _VAL_PROTECTED_STORAGE_H_ */
diff --git a/api-tests/val/nspe/val_storage.c b/api-tests/val/nspe/val_storage.c
new file mode 100644
index 0000000..bc2cc2d
--- /dev/null
+++ b/api-tests/val/nspe/val_storage.c
@@ -0,0 +1,68 @@
+/** @file
+ * Copyright (c) 2020, Arm Limited or its affiliates. All rights reserved.
+ * SPDX-License-Identifier : Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+**/
+
+#include "val_target.h"
+#include "pal_interfaces_ns.h"
+#include "val_framework.h"
+#include "val_client_defs.h"
+#include "val_peripherals.h"
+#include "val_storage.h"
+
+/**
+    @brief    - This API will call the requested internal trusted storage function
+    @param    - type : function code
+                ...  : variable number of arguments
+    @return   - Error status
+**/
+int32_t val_storage_function(int type, ...)
+{
+#if defined(STORAGE) || defined(INTERNAL_TRUSTED_STORAGE) || defined(PROTECTED_STORAGE)
+    va_list valist;
+    int32_t status;
+
+    va_start(valist, type);
+    switch (type)
+    {
+#if defined(STORAGE) || defined(INTERNAL_TRUSTED_STORAGE)
+        case VAL_ITS_SET:
+        case VAL_ITS_GET:
+        case VAL_ITS_GET_INFO:
+        case VAL_ITS_REMOVE:
+            status = pal_its_function(type, valist);
+            break;
+#endif
+#if defined(STORAGE) || defined(PROTECTED_STORAGE)
+        case VAL_PS_SET:
+        case VAL_PS_GET:
+        case VAL_PS_GET_INFO:
+        case VAL_PS_REMOVE:
+        case VAL_PS_CREATE:
+        case VAL_PS_SET_EXTENDED:
+        case VAL_PS_GET_SUPPORT:
+            status = pal_ps_function(type, valist);
+            break;
+#endif
+        default:
+            val_print(PRINT_ERROR, "\n\nError: Not a valid ITS or PS function code!", 0);
+            return VAL_STATUS_ERROR;
+    }
+    va_end(valist);
+    return status;
+#else
+    return VAL_STATUS_ERROR;
+#endif
+}
diff --git a/api-tests/val/nspe/val_storage.h b/api-tests/val/nspe/val_storage.h
new file mode 100644
index 0000000..f1f2be2
--- /dev/null
+++ b/api-tests/val/nspe/val_storage.h
@@ -0,0 +1,48 @@
+/** @file
+ * Copyright (c) 2020, Arm Limited or its affiliates. All rights reserved.
+ * SPDX-License-Identifier : Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+**/
+
+#ifndef _VAL_STORAGE_H_
+#define _VAL_STORAGE_H_
+
+#include "val.h"
+
+#define UID_BASE_VALUE  0
+#define BYTES_TO_BITS(byte)             (byte * 8)
+
+typedef enum {
+    VAL_ITS_SET                         = 0x1,
+    VAL_ITS_GET                         = 0x2,
+    VAL_ITS_GET_INFO                    = 0x3,
+    VAL_ITS_REMOVE                      = 0x4,
+    VAL_PS_SET                          = 0x5,
+    VAL_PS_GET                          = 0x6,
+    VAL_PS_GET_INFO                     = 0x7,
+    VAL_PS_REMOVE                       = 0x8,
+    VAL_PS_CREATE                       = 0x9,
+    VAL_PS_SET_EXTENDED                 = 0xA,
+    VAL_PS_GET_SUPPORT                  = 0xB,
+    VAL_API_UNUSED                      = 0xC,
+} storage_function_type_t;
+
+typedef enum {
+    VAL_ITS_FUNCTION                    = 0x0,
+    VAL_PS_FUNCTION                     = 0x1,
+} storage_function_code_t;
+
+int32_t val_storage_function(int type, ...);
+
+#endif /* _VAL_STORAGE_H_ */
diff --git a/api-tests/val/spe/pal_interfaces_s.h b/api-tests/val/spe/pal_interfaces_s.h
index 2ca9e28..19dc925 100644
--- a/api-tests/val/spe/pal_interfaces_s.h
+++ b/api-tests/val/spe/pal_interfaces_s.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -37,7 +37,7 @@
                - data           : Value for Format specifier
     @return    - void
  */
-void pal_print(char *str, int32_t data);
+void pal_print(const char *str, int32_t data);
 
 /**
     @brief           - Initializes an hardware watchdog timer
diff --git a/api-tests/val/spe/val_driver_service_apis.c b/api-tests/val/spe/val_driver_service_apis.c
index 05b14fd..40638d1 100644
--- a/api-tests/val/spe/val_driver_service_apis.c
+++ b/api-tests/val/spe/val_driver_service_apis.c
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -42,7 +42,7 @@
                - data            : Value for Format specifier
     @return    - error status
  */
-val_status_t val_print_sf(char *string, int32_t data)
+val_status_t val_print_sf(const char *string, int32_t data)
 {
     if (is_uart_init_done == 1)
     {
diff --git a/api-tests/val/spe/val_driver_service_apis.h b/api-tests/val/spe/val_driver_service_apis.h
index 251a065..69de030 100644
--- a/api-tests/val/spe/val_driver_service_apis.h
+++ b/api-tests/val/spe/val_driver_service_apis.h
@@ -1,5 +1,5 @@
 /** @file
- * Copyright (c) 2018-2019, Arm Limited or its affiliates. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved.
  * SPDX-License-Identifier : Apache-2.0
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -26,7 +26,7 @@
 #include "val_service_defs.h"
 
 val_status_t val_uart_init_sf(addr_t uart_base_addr);
-val_status_t val_print_sf(char *string, int32_t data);
+val_status_t val_print_sf(const char *string, int32_t data);
 val_status_t val_wd_timer_init_sf(addr_t base_addr, uint32_t time_us, uint32_t timer_tick_us);
 val_status_t val_wd_timer_enable_sf(addr_t base_addr);
 val_status_t val_wd_timer_disable_sf(addr_t base_addr);
diff --git a/api-tests/val/val_nspe.cmake b/api-tests/val/val_nspe.cmake
index 4494ed2..355ca68 100644
--- a/api-tests/val/val_nspe.cmake
+++ b/api-tests/val/val_nspe.cmake
@@ -1,5 +1,5 @@
 #/** @file
-# * Copyright (c) 2019, Arm Limited or its affiliates. All rights reserved.
+# * Copyright (c) 2019-2020, Arm Limited or its affiliates. All rights reserved.
 # * SPDX-License-Identifier : Apache-2.0
 # *
 # * Licensed under the Apache License, Version 2.0 (the "License");
@@ -24,9 +24,8 @@
 	${PSA_ROOT_DIR}/val/nspe/val_interfaces.c
 	${PSA_ROOT_DIR}/val/nspe/val_peripherals.c
 	${PSA_ROOT_DIR}/val/common/val_target.c
-	${PSA_ROOT_DIR}/val/nspe/val_protected_storage.c
-	${PSA_ROOT_DIR}/val/nspe/val_internal_trusted_storage.c
 	${PSA_ROOT_DIR}/val/nspe/val_attestation.c
+	${PSA_ROOT_DIR}/val/nspe/val_storage.c
 )
 
 # Create VAL NSPE library
@@ -49,16 +48,12 @@
 	${PSA_ROOT_DIR}/val/common
 	${PSA_ROOT_DIR}/val/nspe
 	${PSA_ROOT_DIR}/val/spe
+	${PSA_ROOT_DIR}/platform/targets/common/nspe
+	${PSA_ROOT_DIR}/platform/targets/common/nspe/crypto
 	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe
-	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/common
-	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/crypto
 )
 
 if(${WATCHDOG_AVAILABLE} EQUAL 1)
 	target_compile_definitions(${PSA_TARGET_VAL_NSPE_LIB} PRIVATE WATCHDOG_AVAILABLE)
 endif()
-if(${TEST_COMBINE_ARCHIVE} EQUAL 1)
-	target_compile_definitions(${PSA_TARGET_VAL_NSPE_LIB} PRIVATE TEST_COMBINE_ARCHIVE)
-endif()
 target_compile_definitions(${PSA_TARGET_VAL_NSPE_LIB} PRIVATE VAL_NSPE_BUILD)
-target_compile_definitions(${PSA_TARGET_VAL_NSPE_LIB} PRIVATE TEST_COMBINE_ARCHIVE)
diff --git a/api-tests/val/val_spe.cmake b/api-tests/val/val_spe.cmake
index be1e550..37b8888 100644
--- a/api-tests/val/val_spe.cmake
+++ b/api-tests/val/val_spe.cmake
@@ -58,8 +58,8 @@
 	${PSA_ROOT_DIR}/val/common
 	${PSA_ROOT_DIR}/val/spe
 	${PSA_ROOT_DIR}/ff/partition
-	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/common
-	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/crypto
+	${PSA_ROOT_DIR}/platform/targets/common/nspe
+	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe
 )
 
 # Include paths from platform for driver partition build
@@ -72,16 +72,16 @@
 	${PSA_ROOT_DIR}/val/common
 	${PSA_ROOT_DIR}/val/nspe
 	${PSA_ROOT_DIR}/val/spe
-	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/common
-	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/crypto
+	${PSA_ROOT_DIR}/platform/targets/common/nspe
+	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe
 	${PSA_ROOT_DIR}/ff/partition
 )
 target_include_directories(${PSA_TARGET_SERVER_PARTITION_LIB} PRIVATE
 	${CMAKE_CURRENT_BINARY_DIR}
 	${PSA_ROOT_DIR}/val/common
 	${PSA_ROOT_DIR}/val/spe
-	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/common
-	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe/crypto
+	${PSA_ROOT_DIR}/platform/targets/common/nspe
+	${PSA_ROOT_DIR}/platform/targets/${TARGET}/nspe
 	${PSA_ROOT_DIR}/ff/partition
 )