SPM: Improve code quality

This patch fixes the following things:
* avoid implicit casting by using matching types or casting when it is
safe.
* check the returning value of functions
* add const keyword when mutability is not required
* cast unused parameters to void to be more explicit
* add parenthesis around amcro parameters
* encapsulate function-like macros into a function to avoid name clashes

Change-Id: Ia23e859a9008be705df4424d9cc7d09e45537994
Signed-off-by: Hugues de Valon <hugues.devalon@arm.com>
diff --git a/secure_fw/spm/spm_api.c b/secure_fw/spm/spm_api.c
index e08230a..02b3f07 100644
--- a/secure_fw/spm/spm_api.c
+++ b/secure_fw/spm/spm_api.c
@@ -33,7 +33,7 @@
  * returned.
  */
 static void tfm_spm_partition_err_handler(
-    struct spm_partition_desc_t *partition,
+    const struct spm_partition_desc_t *partition,
     sp_error_type_t err_type,
     int32_t err_code)
 {
@@ -42,17 +42,32 @@
         printf("Partition init failed for partition id 0x%08X\r\n",
                 partition->static_data.partition_id);
     } else {
-        printf("Unknown partition error %d for partition id 0x%08X\r\n",
-            err_type, partition->static_data.partition_id);
+        printf(
+            "Unknown partition error %d (code: %d) for partition id 0x%08X\r\n",
+            err_type, err_code, partition->static_data.partition_id);
     }
+#else
+    (void)err_type;
+    (void)err_code;
 #endif
     tfm_spm_partition_set_state(partition->static_data.partition_id,
             SPM_PARTITION_STATE_CLOSED);
 }
 
+/*
+ * This function prevents name clashes between the variable names accessibles in
+ * the scope of where tfm_partition_list.inc is included and the varaible names
+ * defined inside tfm_partition_list.inc file.
+ */
+static inline enum spm_err_t add_user_defined_partitions(void) {
+    #include "secure_fw/services/tfm_partition_list.inc"
+
+    return SPM_ERR_OK;
+}
+
 uint32_t get_partition_idx(uint32_t partition_id)
 {
-    int i;
+    uint32_t i;
 
     if (partition_id == INVALID_PARTITION_ID) {
         return SPM_INVALID_PARTITION_IDX;
@@ -70,8 +85,9 @@
 enum spm_err_t tfm_spm_db_init(void)
 {
     struct spm_partition_desc_t *part_ptr;
+    enum spm_err_t err;
 
-    tfm_memset (&g_spm_partition_db, 0, sizeof(g_spm_partition_db));
+    (void)tfm_memset (&g_spm_partition_db, 0, sizeof(g_spm_partition_db));
 
     /* This function initialises partition db */
     g_spm_partition_db.running_partition_idx = SPM_INVALID_PARTITION_IDX;
@@ -121,8 +137,10 @@
     part_ptr->runtime_data.partition_state = SPM_PARTITION_STATE_UNINIT;
     ++g_spm_partition_db.partition_count;
 
-    /* Add user-defined secure partitions */
-    #include "secure_fw/services/tfm_partition_list.inc"
+    err = add_user_defined_partitions();
+    if (err != SPM_ERR_OK) {
+        return err;
+    }
 
     g_spm_partition_db.is_init = 1;
 
@@ -154,7 +172,7 @@
             int32_t res;
 
             desc.args = args;
-            desc.ns_caller = 0;
+            desc.ns_caller = 0U;
             desc.iovec_api = TFM_SFN_API_IOVEC;
             desc.sfn = (sfn_t)part->static_data.partition_init;
             desc.sp_id = part->static_data.partition_id;
@@ -314,20 +332,25 @@
     return ret;
 }
 
-void tfm_spm_partition_set_iovec(uint32_t partition_idx, int32_t *args)
+enum spm_err_t tfm_spm_partition_set_iovec(uint32_t partition_idx,
+                                           const int32_t *args)
 {
     struct spm_partition_runtime_data_t *runtime_data =
             &g_spm_partition_db.partitions[partition_idx].runtime_data;
-    int32_t i;
+    size_t i;
 
-    runtime_data->iovec_args.in_len = args[1];
-    for (i = 0; i < runtime_data->iovec_args.in_len; ++i) {
+    if ((args[1] < 0) || (args[3] < 0)) {
+        return SPM_ERR_INVALID_PARAMETER;
+    }
+
+    runtime_data->iovec_args.in_len = (size_t)args[1];
+    for (i = 0U; i < runtime_data->iovec_args.in_len; ++i) {
         runtime_data->iovec_args.in_vec[i].base =
                                                  ((psa_invec *)args[0])[i].base;
         runtime_data->iovec_args.in_vec[i].len = ((psa_invec *)args[0])[i].len;
     }
-    runtime_data->iovec_args.out_len = args[3];
-    for (i = 0; i < runtime_data->iovec_args.out_len; ++i) {
+    runtime_data->iovec_args.out_len = (size_t)args[3];
+    for (i = 0U; i < runtime_data->iovec_args.out_len; ++i) {
         runtime_data->iovec_args.out_vec[i].base =
                                                 ((psa_outvec *)args[2])[i].base;
         runtime_data->iovec_args.out_vec[i].len =
@@ -335,6 +358,8 @@
     }
     runtime_data->orig_outvec = (psa_outvec *)args[2];
     runtime_data->iovec_api = 1;
+
+    return SPM_ERR_OK;
 }
 
 uint32_t tfm_spm_partition_get_running_partition_idx(void)