SPM: Change partition platform data binding

- Rename the long name 'tfm_spm_partition_platform_data_t'
  to 'platform_data_t'.
- Platform data list is now part of partition static data.
- Update related init logic related to this name and position
  change.

Change-Id: I1676f35b53f9c3074a70ab4fb68673a347bd422f
Signed-off-by: Ken Liu <Ken.Liu@arm.com>
diff --git a/secure_fw/spm/cmsis_func/include/spm_func.h b/secure_fw/spm/cmsis_func/include/spm_func.h
index a70da00..1ffe943 100644
--- a/secure_fw/spm/cmsis_func/include/spm_func.h
+++ b/secure_fw/spm/cmsis_func/include/spm_func.h
@@ -119,7 +119,7 @@
     struct spm_partition_runtime_data_t runtime_data;
     const struct spm_partition_static_data_t *static_data;
     /** A list of platform_data pointers */
-    const struct tfm_spm_partition_platform_data_t **platform_data_list;
+    const struct platform_data_t **platform_data_list;
 };
 
 struct spm_partition_db_t {
diff --git a/secure_fw/spm/cmsis_func/spm_func.c b/secure_fw/spm/cmsis_func/spm_func.c
index c1bd5c2..72ec0ff 100644
--- a/secure_fw/spm/cmsis_func/spm_func.c
+++ b/secure_fw/spm/cmsis_func/spm_func.c
@@ -1222,7 +1222,7 @@
     int32_t args[4] = {0};
     int32_t fail_cnt = 0;
     uint32_t idx;
-    const struct tfm_spm_partition_platform_data_t **platform_data_p;
+    const struct platform_data_t **platform_data_p;
 
     /* Call the init function for each partition */
     for (idx = 0; idx < g_spm_partition_db.partition_count; ++idx) {
diff --git a/secure_fw/spm/cmsis_func/tfm_spm_db_func.inc.template b/secure_fw/spm/cmsis_func/tfm_spm_db_func.inc.template
index f60b9e4..9044249 100644
--- a/secure_fw/spm/cmsis_func/tfm_spm_db_func.inc.template
+++ b/secure_fw/spm/cmsis_func/tfm_spm_db_func.inc.template
@@ -179,7 +179,7 @@
         {% if partition.attr.conditional %}
 #ifdef {{partition.attr.conditional}}
         {% endif %}
-const struct tfm_spm_partition_platform_data_t *
+const struct platform_data_t *
     platform_data_list_{{partition.manifest.name}}[] =
 {
         {% for region in partition.manifest.mmio_regions %}
@@ -199,7 +199,7 @@
 
     {% endif %}
 {% endfor %}
-const struct tfm_spm_partition_platform_data_t **platform_data_list_list[] =
+const struct platform_data_t **platform_data_list_list[] =
 {
     NULL,
     NULL,
diff --git a/secure_fw/spm/cmsis_psa/spm_ipc.c b/secure_fw/spm/cmsis_psa/spm_ipc.c
index 983d5d4..177268c 100644
--- a/secure_fw/spm/cmsis_psa/spm_ipc.c
+++ b/secure_fw/spm/cmsis_psa/spm_ipc.c
@@ -640,7 +640,7 @@
     uint32_t i, j, num;
     struct partition_t *partition;
     struct tfm_core_thread_t *pth, *p_ns_entry_thread = NULL;
-    const struct tfm_spm_partition_platform_data_t **platform_data_p;
+    const struct platform_data_t **platform_data_p;
 
     tfm_pool_init(conn_handle_pool,
                   POOL_BUFFER_SIZE(conn_handle_pool),
@@ -666,7 +666,8 @@
             continue;
         }
 
-        platform_data_p = partition->platform_data_list;
+        platform_data_p =
+            (const struct platform_data_t **)partition->p_static->platform_data;
         if (platform_data_p != NULL) {
             while ((*platform_data_p) != NULL) {
                 if (tfm_spm_hal_configure_default_isolation(i,
@@ -1016,8 +1017,6 @@
 
     for (i = 0; i < g_spm_partition_db.partition_count; i++) {
         g_spm_partition_db.partitions[i].p_static = &static_data_list[i];
-        g_spm_partition_db.partitions[i].platform_data_list =
-                                                     platform_data_list_list[i];
         g_spm_partition_db.partitions[i].memory_data = &memory_data_list[i];
     }
     g_spm_partition_db.is_init = 1;
diff --git a/secure_fw/spm/cmsis_psa/spm_ipc.h b/secure_fw/spm/cmsis_psa/spm_ipc.h
index 303c543..8d23c52 100644
--- a/secure_fw/spm/cmsis_psa/spm_ipc.h
+++ b/secure_fw/spm/cmsis_psa/spm_ipc.h
@@ -92,6 +92,7 @@
     size_t stack_size;                  /* Stack size of the partition      */
     uintptr_t heap_base_addr;           /* Heap base of the partition       */
     size_t heap_size;                   /* Heap size of the partition       */
+    uintptr_t platform_data;            /* Platform specific data           */
     uint32_t ndeps;                     /* Numbers of depended services     */
     uint32_t *deps;                     /* Pointer to dependency arrays     */
 };
@@ -112,7 +113,6 @@
     uint32_t signals_waiting;
     uint32_t signals_asserted;
     /** A list of platform_data pointers */
-    const struct tfm_spm_partition_platform_data_t **platform_data_list;
     const struct tfm_spm_partition_memory_data_t *memory_data;
 };
 
diff --git a/secure_fw/spm/cmsis_psa/tfm_spm_db_ipc.inc.template b/secure_fw/spm/cmsis_psa/tfm_spm_db_ipc.inc.template
index 4d36797..59c5168 100644
--- a/secure_fw/spm/cmsis_psa/tfm_spm_db_ipc.inc.template
+++ b/secure_fw/spm/cmsis_psa/tfm_spm_db_ipc.inc.template
@@ -95,6 +95,36 @@
 
     {% endif %}
 {% endfor %}
+
+/**************************************************************************/
+/** The platform data of the partition list */
+/**************************************************************************/
+{% for partition in partitions %}
+    {% if partition.manifest.mmio_regions %}
+        {% if partition.attr.conditional %}
+#ifdef {{partition.attr.conditional}}
+        {% endif %}
+const struct platform_data_t *
+    platform_data_list_{{partition.manifest.name}}[] =
+{
+        {% for region in partition.manifest.mmio_regions %}
+            {% if region.conditional %}
+#ifdef {{region.conditional}}
+            {% endif %}
+    {{region.name}},
+            {% if region.conditional %}
+#endif /* {{region.conditional}} */
+            {% endif %}
+        {% endfor %}
+    NULL
+};
+        {% if partition.attr.conditional %}
+#endif /* {{partition.attr.conditional}} */
+        {% endif %}
+
+    {% endif %}
+{% endfor %}
+
 /**************************************************************************/
 /** The static data of the partition list */
 /**************************************************************************/
@@ -142,6 +172,11 @@
         .entry                = {{partition.manifest.entry_point}},
         .stack_base_addr      = 0,
         .stack_size           = 0,
+    {% if partition.manifest.mmio_regions %}
+        .platform_data        = (uintptr_t)platform_data_list_{{partition.manifest.name}},
+    {% else %}{# if partition.manifest.mmio_regions #}
+        .platform_data        = 0,
+    {% endif %}{# if partition.manifest.mmio_regions #}
         .ndeps                = {{partition.manifest.dependencies | length()}},
     {% if partition.manifest.dependencies %}
         .deps                 = dependencies_{{partition.manifest.name}},
@@ -157,54 +192,6 @@
 };
 
 /**************************************************************************/
-/** The platform data of the partition list */
-/**************************************************************************/
-{% for partition in partitions %}
-    {% if partition.manifest.mmio_regions %}
-        {% if partition.attr.conditional %}
-#ifdef {{partition.attr.conditional}}
-        {% endif %}
-const struct tfm_spm_partition_platform_data_t *
-    platform_data_list_{{partition.manifest.name}}[] =
-{
-        {% for region in partition.manifest.mmio_regions %}
-            {% if region.conditional %}
-#ifdef {{region.conditional}}
-            {% endif %}
-    {{region.name}},
-            {% if region.conditional %}
-#endif /* {{region.conditional}} */
-            {% endif %}
-        {% endfor %}
-    NULL
-};
-        {% if partition.attr.conditional %}
-#endif /* {{partition.attr.conditional}} */
-        {% endif %}
-
-    {% endif %}
-{% endfor %}
-const struct tfm_spm_partition_platform_data_t **platform_data_list_list[] =
-{
-    NULL,
-
-{% for partition in partitions %}
-    {% if partition.attr.conditional %}
-#ifdef {{partition.attr.conditional}}
-    {% endif %}
-    {% if partition.manifest.mmio_regions %}
-    platform_data_list_{{partition.manifest.name}},
-    {% else %}{# if partition.manifest.mmio_regions #}
-    NULL,
-    {% endif %}{# if partition.manifest.mmio_regions #}
-    {% if partition.attr.conditional %}
-#endif /* {{partition.attr.conditional}} */
-    {% endif %}
-
-{% endfor %}
-};
-
-/**************************************************************************/
 /** The memory data of the partition list */
 /**************************************************************************/
 const struct tfm_spm_partition_memory_data_t memory_data_list[] =