RSE: Add test run on TC2 FVP

Signed-off-by: Jamie Fox <jamie.fox@arm.com>
Change-Id: Ia5861f5d5a1735e1a559fc31fd0b5ae10e8ad41d
diff --git a/build_helper/build_helper_configs.py b/build_helper/build_helper_configs.py
index bd124e0..1a0d3f7 100755
--- a/build_helper/build_helper_configs.py
+++ b/build_helper/build_helper_configs.py
@@ -111,6 +111,21 @@
                                     "-fill 0xFF 0xA020000 0xA200000 "
                                     "-o %(ci_build_root_dir)s/"
                                     "spe/bin/tfm.hex -Intel"),
+                    "arm/rse/tc": ("srec_cat "
+                                   "%(ci_build_root_dir)s/spe/bin/bl1_1.bin -Binary -offset 0x0 "
+                                   "%(ci_build_root_dir)s/spe/bin/rom_dma_ics.bin -Binary -offset 0x1F000 "
+                                   "-o %(ci_build_root_dir)s/spe/bin/rom.bin -Binary;"
+                                   "curl --fail --no-progress-meter --connect-timeout 10 --retry 6 -LS -o fiptool https://downloads.trustedfirmware.org/tf-m/rse/tc/fiptool;"
+                                   "chmod 755 fiptool;"
+                                   "curl --fail --no-progress-meter --connect-timeout 10 --retry 6 -LS -o fip.bin https://downloads.trustedfirmware.org/tf-m/rse/tc/fip.bin;"
+                                   "./fiptool update "
+                                   "--align 8192 --rss-bl2 %(ci_build_root_dir)s/spe/bin/bl2_signed.bin "
+                                   "--align 8192 --rss-s %(ci_build_root_dir)s/spe/bin/tfm_s_encrypted.bin "
+                                   "--align 8192 --rss-ns %(ci_build_root_dir)s/nspe/bin/tfm_ns_encrypted.bin "
+                                   "--align 8192 --rss-sic-tables-s %(ci_build_root_dir)s/spe/bin/tfm_s_sic_tables_signed.bin "
+                                   "--align 8192 --rss-sic-tables-ns %(ci_build_root_dir)s/nspe/bin/tfm_ns_sic_tables_signed.bin "
+                                   "--out %(ci_build_root_dir)s/spe/bin/host_flash.bin "
+                                   "fip.bin"),
                    "stm/stm32l562e_dk": ("echo 'STM32L562E-DK board post process';"
                                           "%(ci_build_root_dir)s/spe/api_ns/postbuild.sh;"
                                           "pushd %(ci_build_root_dir)s/spe/api_ns;"
@@ -205,7 +220,12 @@
                            "%(ci_build_root_dir)s/spe/bin/"
                            "bl2.bin",
                            "%(ci_build_root_dir)s/spe/bin/"
-                           "tfm_sign.bin"]
+                           "tfm_sign.bin"],
+                           "arm/rse/tc": [
+                           "%(ci_build_root_dir)s/spe/bin/rom.bin",
+                           "%(ci_build_root_dir)s/spe/bin/encrypted_cm_provisioning_bundle_0.bin",
+                           "%(ci_build_root_dir)s/spe/bin/encrypted_dm_provisioning_bundle_0.bin",
+                           "%(ci_build_root_dir)s/spe/bin/host_flash.bin"]
                            }
 }
 
diff --git a/lava_helper/jinja2_templates/fvp_rse_tc.jinja2 b/lava_helper/jinja2_templates/fvp_rse_tc.jinja2
new file mode 100644
index 0000000..49d4373
--- /dev/null
+++ b/lava_helper/jinja2_templates/fvp_rse_tc.jinja2
@@ -0,0 +1,80 @@
+{#------------------------------------------------------------------------------
+# Copyright (c) 2018-2024, Arm Limited and Contributors. All rights reserved.
+#
+# SPDX-License-Identifier: BSD-3-Clause
+#
+#-----------------------------------------------------------------------------#}
+{% extends 'jinja2_templates/base.jinja2' %}
+{% block metadata %}
+{{ super() }}
+{% endblock %}
+{% block base %}
+{{ super() }}
+{% endblock %}
+{% block actions %}
+context:
+  kernel_start_message: ''
+
+actions:
+- deploy:
+    namespace: docker
+    to: fvp
+    images:
+      rom:
+        url: {{ rom_url }}
+      cm_provisioning_bundle:
+        url: {{ cm_provisioning_bundle_url }}
+      dm_provisioning_bundle:
+        url: {{ dm_provisioning_bundle_url }}
+      flash:
+        url: {{ flash_url }}
+- boot:
+    failure_retry: 3
+    namespace: docker
+    method: fvp
+    docker:
+      name: {{ docker_prefix }}/fvp:fvp_tc2_11.25_15_linux64
+      local: true
+    prompts:
+    - 'root@lava '
+    image: /opt/model/FVP_TC2/models/Linux64_GCC-9.3/FVP_TC2
+    timeout:
+      minutes: 5
+    console_string: 'terminal_s1: Listening for serial connection on port (?P<PORT>\d+)'
+    license_variable: '{{ license_variable }}'
+    use_telnet: False
+    arguments:
+    -  "--simlimit 900"
+    -  "-C css.rss.rom.raw_image={ROM}"
+    -  "--data css.rss.sram0={CM_PROVISIONING_BUNDLE}@0x400"
+    -  "--data css.rss.sram1={DM_PROVISIONING_BUNDLE}@0x0"
+    -  "-C board.flashloader0.fname={FLASH}"
+    -  "-C displayController=2"
+    -  "-C css.rss.sic.SIC_AUTH_ENABLE=1"
+    -  "-C css.rss.sic.SIC_DECRYPT_ENABLE=1"
+    -  "-C css.rss.VMADDRWIDTH=16"
+    -  "-C css.rss.intchecker.ICBC_RESET_VALUE=0x0000011B"
+    -  "-C soc.pl011_uart1.shutdown_on_eot=1"
+    -  "-C 'soc.pl011_uart1.out_file=-'"
+    -  "-C disable_visualisation=1"
+
+    prompts:
+    - '(.*)'
+
+- test:
+    namespace: target
+    monitors:
+    {%- for monitor in monitors %}
+    - name: "{{monitor.name}}"
+      start: "{{monitor.start}}"
+      end: "{{monitor.end}}"
+      pattern: "{{monitor.pattern}}"
+      fixupdict:
+         '{{monitor.fixup.pass}}': pass
+         '{{monitor.fixup.fail}}': fail
+         {%- if monitor.fixup.skip %}
+         '{{monitor.fixup.skip}}': skip
+         {%- endif %}
+    {%- endfor %}
+
+{% endblock %}
diff --git a/lava_helper/lava_helper_configs.py b/lava_helper/lava_helper_configs.py
index ef8f1f9..7482a0a 100644
--- a/lava_helper/lava_helper_configs.py
+++ b/lava_helper/lava_helper_configs.py
@@ -8,7 +8,7 @@
 
 __copyright__ = """
 /*
- * Copyright (c) 2018-2023, Arm Limited. All rights reserved.
+ * Copyright (c) 2018-2024, Arm Limited. All rights reserved.
  *
  * SPDX-License-Identifier: BSD-3-Clause
  *
@@ -206,6 +206,27 @@
     }
 }
 
+# RSE on TC FVP
+fvp_rse_tc = {
+    "templ": "fvp_rse_tc.jinja2",
+    "job_name": "fvp_rse_tc",
+    "device_type": "fvp",
+    "job_timeout": 15,
+    "action_timeout": 10,
+    "monitor_timeout": 15,
+    "poweroff_timeout": 1,
+    "platforms": {"arm/rse/tc": ""},
+    "binaries": {
+        "rom": "spe/bin/rom.bin",
+        "cm_provisioning_bundle": "spe/bin/encrypted_cm_provisioning_bundle_0.bin",
+        "dm_provisioning_bundle": "spe/bin/encrypted_dm_provisioning_bundle_0.bin",
+        "flash": "spe/bin/host_flash.bin"
+    },
+    "monitors": {
+        'no_reg_tests': no_reg_tests_monitors,
+        'reg_tests': reg_tests_monitors,
+    }
+}
 
 # QEMU for AN521 with BL2 bootloader
 qemu_mps2_bl2 = {
@@ -349,6 +370,7 @@
     "fvp_mps2_an521_bl2": fvp_mps2_an521_bl2,
     "fvp_mps2_an519_bl2": fvp_mps2_an519_bl2,
     "fvp_corstone1000": fvp_corstone1000,
+    "fvp_rse_tc": fvp_rse_tc,
     "qemu_mps2_bl2": qemu_mps2_bl2,
     "musca_b1": musca_b1_bl2,
     "stm32l562e_dk": stm32l562e_dk,