Build: Add MMIO config group

MMIOVEC is a new feature in TF-M.
Add a config group to have it covered in Open CI.

Signed-off-by: Xinyu Zhang <xinyu.zhang@arm.com>
Change-Id: I1ec5da36e0bdade4e01905b5b719366d5bbe9552
diff --git a/build_helper/build_helper_configs.py b/build_helper/build_helper_configs.py
index 3f80996..ae0925a 100755
--- a/build_helper/build_helper_configs.py
+++ b/build_helper/build_helper_configs.py
@@ -41,7 +41,8 @@
                    "with_ns",
                    "profile",
                    "partition_ps",
-                   "nsce"],
+                   "nsce",
+                   "mmio"],
 
     # Keys for the templace will come from the combinations of parameters
     # provided in the seed dictionary.
@@ -64,6 +65,7 @@
         "-DTFM_PROFILE=%(profile)s " + \
         "-DTFM_PARTITION_PROTECTED_STORAGE=%(partition_ps)s " + \
         "-DTFM_NS_MANAGE_NSID=%(nsce)s " + \
+        "-DCONFIG_TFM_ENABLE_MM_IOVEC=%(mmio)s " + \
         "%(codebase_root_dir)s",
 
     # A small subset of  string substitution params is allowed in commands.
@@ -132,90 +134,90 @@
 # List of all build configs that are impossible under all circumstances
 _common_tfm_invalid_configs = [
     # LR_CODE size exceeds limit on MUSCA_B1 & MUSCA_S1 with regression tests in Debug mode built with ARMCLANG
-    ("arm/musca_b1/sse_200", "toolchain_ARMCLANG.cmake", "*", "*", True, "OFF", "Debug", "*", "*", "*", "", "*", "*"),
-    ("arm/musca_s1", "toolchain_ARMCLANG.cmake", "*", "*", True, "OFF", "Debug", "*", "*", "*", "", "*", "*"),
+    ("arm/musca_b1/sse_200", "toolchain_ARMCLANG.cmake", "*", "*", True, "OFF", "Debug", "*", "*", "*", "", "*", "*", "*"),
+    ("arm/musca_s1", "toolchain_ARMCLANG.cmake", "*", "*", True, "OFF", "Debug", "*", "*", "*", "", "*", "*", "*"),
     # Load range overlap on Musca for IPC Debug type: T895
-    ("arm/musca_b1/sse_200", "toolchain_ARMCLANG.cmake", "*", "*", "*", "IPC", "Debug", "*", "*", "*", "*", "*", "*"),
-    ("arm/musca_s1", "toolchain_ARMCLANG.cmake", "*", "*", "*", "IPC", "Debug", "*", "*", "*", "*", "*", "*"),
+    ("arm/musca_b1/sse_200", "toolchain_ARMCLANG.cmake", "*", "*", "*", "IPC", "Debug", "*", "*", "*", "*", "*", "*", "*"),
+    ("arm/musca_s1", "toolchain_ARMCLANG.cmake", "*", "*", "*", "IPC", "Debug", "*", "*", "*", "*", "*", "*", "*"),
     # LVL2 and LVL3 requires IPC model
-    ("*", "*", True, "2", "*", "*", "*", "*", "*", "*", "*", "*", "*"),
-    ("*", "*", True, "3", "*", "*", "*", "*", "*", "*", "*", "*", "*"),
+    ("*", "*", True, "2", "*", "*", "*", "*", "*", "*", "*", "*", "*", "*"),
+    ("*", "*", True, "3", "*", "*", "*", "*", "*", "*", "*", "*", "*", "*"),
     # Regression requires NS
-    ("*", "*", "*", "*", True, "*", "*", "*", "*", False, "*", "*", "*"),
+    ("*", "*", "*", "*", True, "*", "*", "*", "*", False, "*", "*", "*", "*"),
     # psoc64 requires IPC model
-    ("cypress/psoc64", "*", True, "*", "*", "*", "*",  "*", "*", "*", "*", "*", "*"),
+    ("cypress/psoc64", "*", True, "*", "*", "*", "*",  "*", "*", "*", "*", "*", "*", "*"),
     # No PSA_ACK with regression
-    ("*", "*", "*", "*", True, "IPC", "*", "*", "*", "*", "*", "*", "*"),
-    ("*", "*", "*", "*", True, "CRYPTO", "*", "*", "*", "*", "*", "*", "*"),
-    ("*", "*", "*", "*", True, "INITIAL_ATTESTATION", "*", "*", "*", "*", "*", "*", "*"),
-    ("*", "*", "*", "*", True, "STORAGE", "*", "*", "*", "*", "*", "*", "*"),
+    ("*", "*", "*", "*", True, "IPC", "*", "*", "*", "*", "*", "*", "*", "*"),
+    ("*", "*", "*", "*", True, "CRYPTO", "*", "*", "*", "*", "*", "*", "*", "*"),
+    ("*", "*", "*", "*", True, "INITIAL_ATTESTATION", "*", "*", "*", "*", "*", "*", "*", "*"),
+    ("*", "*", "*", "*", True, "STORAGE", "*", "*", "*", "*", "*", "*", "*", "*"),
     # PSA_ACK requires NS
-    ("*", "*", "*", "*", "*", "IPC", "*", "*", "*", False, "*", "*", "*"),
-    ("*", "*", "*", "*", "*", "CRYPTO", "*", "*", "*", False, "*", "*", "*"),
-    ("*", "*", "*", "*", "*", "INITIAL_ATTESTATION", "*", "*", "*", False, "*", "*", "*"),
-    ("*", "*", "*", "*", "*", "STORAGE", "*", "*", "*", False, "*", "*", "*"),
+    ("*", "*", "*", "*", "*", "IPC", "*", "*", "*", False, "*", "*", "*", "*"),
+    ("*", "*", "*", "*", "*", "CRYPTO", "*", "*", "*", False, "*", "*", "*", "*"),
+    ("*", "*", "*", "*", "*", "INITIAL_ATTESTATION", "*", "*", "*", False, "*", "*", "*", "*"),
+    ("*", "*", "*", "*", "*", "STORAGE", "*", "*", "*", False, "*", "*", "*", "*"),
     # PSA_ACK IPC (FF) does not support LVL3
-    ("*", "*", "*", "3", "*", "IPC", "*", "*", "*", "*", "*", "*", "*"),
+    ("*", "*", "*", "3", "*", "IPC", "*", "*", "*", "*", "*", "*", "*", "*"),
     # Musca requires BL2
-    ("arm/musca_b1/sse_200", "*", "*", "*", "*", "*", "*",  "*", False, "*", "*", "*", "*"),
-    ("arm/musca_s1", "*", "*", "*", "*", "*", "*",  "*", False, "*", "*", "*", "*"),
+    ("arm/musca_b1/sse_200", "*", "*", "*", "*", "*", "*",  "*", False, "*", "*", "*", "*", "*"),
+    ("arm/musca_s1", "*", "*", "*", "*", "*", "*",  "*", False, "*", "*", "*", "*", "*"),
     # psoc64 cannot use BL2
-    ("cypress/psoc64", "*", "*", "*", "*", "*", "*",  "*", True, "*", "*", "*", "*"),
+    ("cypress/psoc64", "*", "*", "*", "*", "*", "*",  "*", True, "*", "*", "*", "*", "*"),
     # psoc64 does not support Debug build type
-    ("cypress/psoc64", "*", "*", "*", "*", "*", "Debug",  "*", "*", "*", "*", "*", "*"),
+    ("cypress/psoc64", "*", "*", "*", "*", "*", "Debug",  "*", "*", "*", "*", "*", "*", "*"),
     # Musca b1 SSE 200 does not support Profile S
-    ("arm/musca_b1/sse_200", "*", "*", "*", "*", "*", "*",  "*", "*", "*", "profile_small", "*", "*"),
+    ("arm/musca_b1/sse_200", "*", "*", "*", "*", "*", "*",  "*", "*", "*", "profile_small", "*", "*", "*"),
     # Musca B1 Secure Enclave requires IPC model, BL2, and supports only Isolation Level 1
-    ("arm/musca_b1/secure_enclave", "*", True, "*", "*", "*", "*", "*", "*", "*", "*", "*", "*"),
-    ("arm/musca_b1/secure_enclave", "*", "*", "*", "*", "*", "*",  "*", False, "*", "*", "*", "*"),
-    ("arm/musca_b1/secure_enclave", "*", "*", "2", "*", "*", "*", "*", "*", "*", "*", "*", "*"),
+    ("arm/musca_b1/secure_enclave", "*", True, "*", "*", "*", "*", "*", "*", "*", "*", "*", "*", "*"),
+    ("arm/musca_b1/secure_enclave", "*", "*", "*", "*", "*", "*",  "*", False, "*", "*", "*", "*", "*"),
+    ("arm/musca_b1/secure_enclave", "*", "*", "2", "*", "*", "*", "*", "*", "*", "*", "*", "*", "*"),
     # Musca B1 Secure Enclave does not support tests, profiles, NS side building
-    ("arm/musca_b1/secure_enclave", "*", "*", "*", True, "*", "*", "*", "*", "*", "*", "*", "*"),
-    ("arm/musca_b1/secure_enclave", "*", "*", "*", "*", "IPC", "*", "*", "*", "*", "*", "*", "*"),
-    ("arm/musca_b1/secure_enclave", "*", "*", "*", "*", "CRYPTO", "*", "*", "*", "*", "*", "*", "*"),
-    ("arm/musca_b1/secure_enclave", "*", "*", "*", "*", "INITIAL_ATTESTATION", "*", "*", "*", "*", "*", "*", "*"),
-    ("arm/musca_b1/secure_enclave", "*", "*", "*", "*", "STORAGE", "*", "*", "*", "*", "*", "*", "*"),
-    ("arm/musca_b1/secure_enclave", "*", "*", "*", "*", "*", "*", "*", "*", "*", "profile_small", "*", "*"),
-    ("arm/musca_b1/secure_enclave", "*", "*", "*", "*", "*", "*", "*", "*", "*", "profile_medium", "*", "*"),
-    ("arm/musca_b1/secure_enclave", "*", "*", "*", "*", "*", "*", "*", "*", "*", "profile_large", "*", "*"),
-    ("arm/musca_b1/secure_enclave", "*", "*", "*", "*", "*", "*", "*", "*", True, "*", "*", "*"),
+    ("arm/musca_b1/secure_enclave", "*", "*", "*", True, "*", "*", "*", "*", "*", "*", "*", "*", "*"),
+    ("arm/musca_b1/secure_enclave", "*", "*", "*", "*", "IPC", "*", "*", "*", "*", "*", "*", "*", "*"),
+    ("arm/musca_b1/secure_enclave", "*", "*", "*", "*", "CRYPTO", "*", "*", "*", "*", "*", "*", "*", "*"),
+    ("arm/musca_b1/secure_enclave", "*", "*", "*", "*", "INITIAL_ATTESTATION", "*", "*", "*", "*", "*", "*", "*", "*"),
+    ("arm/musca_b1/secure_enclave", "*", "*", "*", "*", "STORAGE", "*", "*", "*", "*", "*", "*", "*", "*"),
+    ("arm/musca_b1/secure_enclave", "*", "*", "*", "*", "*", "*", "*", "*", "*", "profile_small", "*", "*", "*"),
+    ("arm/musca_b1/secure_enclave", "*", "*", "*", "*", "*", "*", "*", "*", "*", "profile_medium", "*", "*", "*"),
+    ("arm/musca_b1/secure_enclave", "*", "*", "*", "*", "*", "*", "*", "*", "*", "profile_large", "*", "*", "*"),
+    ("arm/musca_b1/secure_enclave", "*", "*", "*", "*", "*", "*", "*", "*", True, "*", "*", "*", "*"),
     # PARTITION_PS could be OFF only for Profile S and M
-    ("*", "*", "*", "*", "*", "*", "*", "*", "*", "*", "", "OFF", "*"),
-    ("*", "*", "*", "*", "*", "*", "*", "*", "*", "*", "profile_large", "OFF", "*"),
+    ("*", "*", "*", "*", "*", "*", "*", "*", "*", "*", "", "OFF", "*", "*"),
+    ("*", "*", "*", "*", "*", "*", "*", "*", "*", "*", "profile_large", "OFF", "*", "*"),
     # PARTITION_PS should be OFF for Profile S
-    ("*", "*", "*", "*", "*", "*", "*", "*", "*", "*", "profile_small", "ON", "*"),
+    ("*", "*", "*", "*", "*", "*", "*", "*", "*", "*", "profile_small", "ON", "*", "*"),
     # Proile M only support for IPC model
-    ("*", "*", True, "*", "*", "*", "*", "*", "*", "*", "profile_medium", "*", "*"),
+    ("*", "*", True, "*", "*", "*", "*", "*", "*", "*", "profile_medium", "*", "*", "*"),
     # Profile M only support for Isolation Level 2
-    ("*", "*", "*", "1", "*", "*", "*",  "*", "*", "*", "profile_medium", "*", "*"),
-    ("*", "*", "*", "3", "*", "*", "*",  "*", "*", "*", "profile_medium", "*", "*"),
+    ("*", "*", "*", "1", "*", "*", "*",  "*", "*", "*", "profile_medium", "*", "*", "*"),
+    ("*", "*", "*", "3", "*", "*", "*",  "*", "*", "*", "profile_medium", "*", "*", "*"),
     # Profile L only support for Isolation Level 3
-    ("*", "*", "*", "1", "*", "*", "*",  "*", "*", "*", "profile_large", "*", "*"),
-    ("*", "*", "*", "2", "*", "*", "*",  "*", "*", "*", "profile_large", "*", "*"),
+    ("*", "*", "*", "1", "*", "*", "*",  "*", "*", "*", "profile_large", "*", "*", "*"),
+    ("*", "*", "*", "2", "*", "*", "*",  "*", "*", "*", "profile_large", "*", "*", "*"),
     # Profile S does not support IPC model
-    ("*", "*", False, "*", "*", "*", "*",  "*", "*", "*", "profile_small", "*", "*"),
+    ("*", "*", False, "*", "*", "*", "*",  "*", "*", "*", "profile_small", "*", "*", "*"),
     # Profile S only supports Isolation Level 1
-    ("*", "*", "*", "2", "*", "*", "*",  "*", "*", "*", "profile_small", "*", "*"),
-    ("*", "*", "*", "3", "*", "*", "*",  "*", "*", "*", "profile_small", "*", "*"),
+    ("*", "*", "*", "2", "*", "*", "*",  "*", "*", "*", "profile_small", "*", "*", "*"),
+    ("*", "*", "*", "3", "*", "*", "*",  "*", "*", "*", "profile_small", "*", "*", "*"),
     # Only AN521 and MUSCA_B1 support Isolation Level 3
-    ("arm/mps2/an519", "*", "*", "3", "*", "*", "*",  "*", "*", "*", "*", "*", "*"),
-    ("arm/mps3/an524", "*", "*", "3", "*", "*", "*",  "*", "*", "*", "*", "*", "*"),
-    ("arm/musca_s1", "*", "*", "3", "*", "*", "*",  "*", "*", "*", "*", "*", "*"),
-    ("cypress/psoc64", "*", "*", "3", "*", "*", "*",  "*", "*", "*", "*", "*", "*"),
-    ("arm/musca_b1/secure_enclave", "*", "*", "3", "*", "*", "*",  "*", "*", "*", "*", "*", "*"),
+    ("arm/mps2/an519", "*", "*", "3", "*", "*", "*",  "*", "*", "*", "*", "*", "*", "*"),
+    ("arm/mps3/an524", "*", "*", "3", "*", "*", "*",  "*", "*", "*", "*", "*", "*", "*"),
+    ("arm/musca_s1", "*", "*", "3", "*", "*", "*",  "*", "*", "*", "*", "*", "*", "*"),
+    ("cypress/psoc64", "*", "*", "3", "*", "*", "*",  "*", "*", "*", "*", "*", "*", "*"),
+    ("arm/musca_b1/secure_enclave", "*", "*", "3", "*", "*", "*",  "*", "*", "*", "*", "*", "*", "*"),
     # stm/stm32l562e_dk uses BL2
-    ("stm/stm32l562e_dk", "*", "*", "*", "*", "*", "*",  "*", False, "*", "*", "*", "*"),
+    ("stm/stm32l562e_dk", "*", "*", "*", "*", "*", "*",  "*", False, "*", "*", "*", "*", "*"),
     # stm/stm32l562e_dk does not support Debug build type
-    ("stm/stm32l562e_dk", "*", "*", "*", "*", "*", "Debug",  "*", "*", "*", "*", "*", "*"),
+    ("stm/stm32l562e_dk", "*", "*", "*", "*", "*", "Debug",  "*", "*", "*", "*", "*", "*", "*"),
     # nxp/lpcxpresso55s69 only build with GCC
-    ("nxp/lpcxpresso55s69", "toolchain_ARMCLANG.cmake", "*", "*", "*", "*", "*",  "*", "*", "*", "*", "*", "*"),
+    ("nxp/lpcxpresso55s69", "toolchain_ARMCLANG.cmake", "*", "*", "*", "*", "*",  "*", "*", "*", "*", "*", "*", "*"),
     # nxp/lpcxpresso55s69 only build Profile M
-    ("nxp/lpcxpresso55s69", "*", "*", "*", "*", "*", "*",  "*", "*", "*", "profile_small", "*", "*"),
-    ("nxp/lpcxpresso55s69", "*", "*", "*", "*", "*", "*",  "*", "*", "*", "profile_large", "*", "*"),
+    ("nxp/lpcxpresso55s69", "*", "*", "*", "*", "*", "*",  "*", "*", "*", "profile_small", "*", "*", "*"),
+    ("nxp/lpcxpresso55s69", "*", "*", "*", "*", "*", "*",  "*", "*", "*", "profile_large", "*", "*", "*"),
     # nxp/lpcxpresso55s69 have to turn off BL2 when build regression test
-    ("nxp/lpcxpresso55s69", "*", "*", "*", "True", "*", "*",  "*", "True", "*", "*", "*", "*"),
+    ("nxp/lpcxpresso55s69", "*", "*", "*", "True", "*", "*",  "*", "True", "*", "*", "*", "*", "*"),
     # NSID does not support multi core
-    ("cypress/psoc64", "*", "*", "*", "*", "*", "*",  "*", "*", "*", "*", "*", "ON"),
+    ("cypress/psoc64", "*", "*", "*", "*", "*", "*",  "*", "*", "*", "*", "*", "ON", "*"),
     ]
 
 # Configure build manager to build several combinations
@@ -234,6 +236,7 @@
                 "profile":          [""],
                 "partition_ps":     ["ON"],
                 "nsce":             ["OFF"],
+                "mmio":             ["OFF"],
                 },
                 "common_params": _common_tfm_builder_cfg,
                 "invalid": _common_tfm_invalid_configs + []
@@ -254,6 +257,7 @@
                 "profile":          [""],
                 "partition_ps":     ["ON"],
                 "nsce":             ["OFF"],
+                "mmio":             ["OFF"],
                 },
                 "common_params": _common_tfm_builder_cfg,
                 "invalid": _common_tfm_invalid_configs + []
@@ -277,6 +281,7 @@
                 "profile":          [""],
                 "partition_ps":     ["ON"],
                 "nsce":             ["OFF"],
+                "mmio":             ["OFF"],
                 },
                 "common_params": _common_tfm_builder_cfg,
                 "invalid": _common_tfm_invalid_configs + []
@@ -298,6 +303,7 @@
                 "profile":          [""],
                 "partition_ps":     ["ON"],
                 "nsce":             ["OFF"],
+                "mmio":             ["OFF"],
                 },
                 "common_params": _common_tfm_builder_cfg,
                 "invalid": _common_tfm_invalid_configs + []
@@ -320,6 +326,7 @@
                 "profile":          [""],
                 "partition_ps":     ["ON"],
                 "nsce":             ["OFF"],
+                "mmio":             ["OFF"],
                 },
                 "common_params": _common_tfm_builder_cfg,
                 "invalid": _common_tfm_invalid_configs + []
@@ -340,6 +347,7 @@
                 "profile":          [""],
                 "partition_ps":     ["ON"],
                 "nsce":             ["OFF"],
+                "mmio":             ["OFF"],
                 },
                 "common_params": _common_tfm_builder_cfg,
                 "invalid": _common_tfm_invalid_configs + []
@@ -360,6 +368,7 @@
                 "profile":          [""],
                 "partition_ps":     ["ON"],
                 "nsce":             ["OFF"],
+                "mmio":             ["OFF"],
                 },
                 "common_params": _common_tfm_builder_cfg,
                 "invalid": _common_tfm_invalid_configs + []
@@ -380,6 +389,7 @@
                 "profile":          [""],
                 "partition_ps":     ["ON"],
                 "nsce":             ["OFF"],
+                "mmio":             ["OFF"],
                 },
                 "common_params": _common_tfm_builder_cfg,
                 "invalid": _common_tfm_invalid_configs + []
@@ -399,6 +409,7 @@
                 "profile":          ["profile_medium"],
                 "partition_ps":     ["ON"],
                 "nsce":             ["OFF"],
+                "mmio":             ["OFF"],
                 },
                 "common_params": _common_tfm_builder_cfg,
                 "invalid": _common_tfm_invalid_configs + []
@@ -418,6 +429,7 @@
                 "profile":          [""],
                 "partition_ps":     ["ON"],
                 "nsce":             ["OFF"],
+                "mmio":             ["OFF"],
                 },
                 "common_params": _common_tfm_builder_cfg,
                 "invalid": _common_tfm_invalid_configs + []
@@ -438,6 +450,7 @@
                 "profile":          [""],
                 "partition_ps":     ["ON"],
                 "nsce":             ["OFF"],
+                "mmio":             ["OFF"],
                 },
                 "common_params": _common_tfm_builder_cfg,
                 "invalid": _common_tfm_invalid_configs + []
@@ -459,6 +472,7 @@
                "profile":          [""],
                "partition_ps":     ["ON"],
                "nsce":             ["OFF"],
+               "mmio":             ["OFF"],
                },
               "common_params": _common_tfm_builder_cfg,
               "invalid": _common_tfm_invalid_configs + []
@@ -484,21 +498,22 @@
                "profile":          [""],
                "partition_ps":     ["ON"],
                "nsce":             ["OFF"],
+               "mmio":             ["OFF"],
                },
                "common_params": _common_tfm_builder_cfg,
                "invalid": _common_tfm_invalid_configs + [
                    ("cypress/psoc64", "*", "*", "*",
-                    "*", "*", "Debug",  "*", "*", "*", "*", "*", "*"),
+                    "*", "*", "Debug",  "*", "*", "*", "*", "*", "*", "*"),
                    ("cypress/psoc64", "*", "*", "*",
-                    "*", "*", "*",  "*", True, True, "*", "*", "*"),
+                    "*", "*", "*",  "*", True, True, "*", "*", "*", "*"),
                    ("arm/mps2/an521", "*", "*", "*",
-                    "*", "*", "RelWithDebInfo",  "*", "*", "*", "*", "*", "*"),
+                    "*", "*", "RelWithDebInfo",  "*", "*", "*", "*", "*", "*", "*"),
                    ("arm/mps2/an519", "*", "*", "*",
-                    "*", "*", "RelWithDebInfo",  "*", "*", "*", "*", "*", "*"),
+                    "*", "*", "RelWithDebInfo",  "*", "*", "*", "*", "*", "*", "*"),
                    ("arm/musca_b1/sse_200", "*", "*", "*",
-                    "*", "*", "RelWithDebInfo",  "*", "*", "*", "*", "*", "*"),
+                    "*", "*", "RelWithDebInfo",  "*", "*", "*", "*", "*", "*", "*"),
                    ("arm/mps3/an524", "*", "*", "*",
-                    "*", "*", "RelWithDebInfo",  "*", "*", "*", "*", "*", "*"),
+                    "*", "*", "RelWithDebInfo",  "*", "*", "*", "*", "*", "*", "*"),
                ]
                }
 
@@ -518,6 +533,7 @@
                 "profile":          [""],
                 "partition_ps":     ["ON"],
                 "nsce":             ["OFF"],
+                "mmio":             ["OFF"],
                 },
                 "common_params": _common_tfm_builder_cfg,
                 "invalid": _common_tfm_invalid_configs + []
@@ -538,11 +554,12 @@
                 "profile":          [""],
                 "partition_ps":     ["ON"],
                 "nsce":             ["OFF"],
+                "mmio":             ["OFF"],
                 },
                 "common_params": _common_tfm_builder_cfg,
                 "invalid": _common_tfm_invalid_configs + [
                     ("arm/mps2/an519", "toolchain_GNUARM.cmake", "*",
-                     "*", "*", "*", "Minsizerel", "*", "*", "*", "*", "*", "*"),
+                     "*", "*", "*", "Minsizerel", "*", "*", "*", "*", "*", "*", "*"),
                 ]
                 }
 
@@ -562,16 +579,17 @@
                 "profile":          ["profile_small", "profile_medium", "profile_large"],
                 "partition_ps":     ["ON", "OFF"],
                 "nsce":             ["OFF"],
+                "mmio":             ["OFF"],
                 },
                 "common_params": _common_tfm_builder_cfg,
                 "invalid": _common_tfm_invalid_configs + [
                     ("arm/mps2/an519", "toolchain_GNUARM.cmake", "*",
-                     "*", "*", "*", "Minsizerel", "*", "*", "*", "*", "*", "*"),
+                     "*", "*", "*", "Minsizerel", "*", "*", "*", "*", "*", "*", "*"),
                     # Profile Large is only supported by AN521
                     ("arm/mps2/an519", "*", "*",
-                     "*", "*", "*", "*", "*", "*", "*", "profile_large", "*", "*"),
+                     "*", "*", "*", "*", "*", "*", "*", "profile_large", "*", "*", "*"),
                     ("arm/musca_b1/sse_200", "*", "*",
-                     "*", "*", "*", "*", "*", "*", "*", "profile_large", "*", "*"),
+                     "*", "*", "*", "*", "*", "*", "*", "profile_large", "*", "*", "*"),
                 ]
                 }
 
@@ -590,6 +608,7 @@
                 "profile":          [""],
                 "partition_ps":     ["ON"],
                 "nsce":             ["OFF"],
+                "mmio":             ["OFF"],
                 },
                 "common_params": _common_tfm_builder_cfg,
                 "invalid": _common_tfm_invalid_configs + []
@@ -610,6 +629,7 @@
                 "profile":          [""],
                 "partition_ps":     ["ON"],
                 "nsce":             ["OFF"],
+                "mmio":             ["OFF"],
                 },
                 "common_params": _common_tfm_builder_cfg,
                 "invalid": _common_tfm_invalid_configs + []
@@ -630,6 +650,7 @@
                 "profile":          [""],
                 "partition_ps":     ["ON"],
                 "nsce":             ["OFF"],
+                "mmio":             ["OFF"],
                 },
                 "common_params": _common_tfm_builder_cfg,
                 "invalid": _common_tfm_invalid_configs + []
@@ -650,6 +671,7 @@
                 "profile":          [""],
                 "partition_ps":     ["ON"],
                 "nsce":             ["OFF"],
+                "mmio":             ["OFF"],
                 },
                 "common_params": _common_tfm_builder_cfg,
                 "invalid": _common_tfm_invalid_configs + []
@@ -672,11 +694,12 @@
                 "profile":          [""],
                 "partition_ps":     ["ON"],
                 "nsce":             ["OFF"],
+                "mmio":             ["OFF"],
                 },
                 "common_params": _common_tfm_builder_cfg,
                 "invalid": _common_tfm_invalid_configs + [
                     ("arm/mps2/an519", "toolchain_GNUARM.cmake", "*",
-                     "*", "*", "*", "Minsizerel", "*", "*", "*", "*", "*", "*"),
+                     "*", "*", "*", "Minsizerel", "*", "*", "*", "*", "*", "*", "*"),
                 ]
                 }
 
@@ -700,11 +723,12 @@
                 "profile":          [""],
                 "partition_ps":     ["ON"],
                 "nsce":             ["OFF"],
+                "mmio":             ["OFF"],
                 },
                 "common_params": _common_tfm_builder_cfg,
                 "invalid": _common_tfm_invalid_configs + [
                     ("arm/mps2/an519", "toolchain_GNUARM.cmake", "*",
-                     "*", "*", "*", "Minsizerel", "*", "*", "*", "*", "*", "*"),
+                     "*", "*", "*", "Minsizerel", "*", "*", "*", "*", "*", "*", "*"),
                 ]
                 }
 
@@ -724,11 +748,12 @@
                 "profile":          [""],
                 "partition_ps":     ["ON"],
                 "nsce":             ["OFF"],
+                "mmio":             ["OFF"],
                 },
                 "common_params": _common_tfm_builder_cfg,
                 "invalid": _common_tfm_invalid_configs + [
                     ("arm/mps2/an519", "toolchain_GNUARM.cmake", "*",
-                     "*", "*", "*", "Minsizerel", "*", "*", "*", "*", "*", "*"),
+                     "*", "*", "*", "Minsizerel", "*", "*", "*", "*", "*", "*", "*"),
                 ]
                 }
 
@@ -750,25 +775,26 @@
                 "profile":          [""],
                 "partition_ps":     ["ON"],
                 "nsce":             ["OFF"],
+                "mmio":             ["OFF"],
                 },
                 "common_params": _common_tfm_builder_cfg,
                 "invalid": _common_tfm_invalid_configs + [
                     ("arm/mps2/an519", "toolchain_GNUARM.cmake", "*",
-                     "*", "*", "*", "Minsizerel", "*", "*", "*", "*", "*", "*"),
+                     "*", "*", "*", "Minsizerel", "*", "*", "*", "*", "*", "*", "*"),
                     ("cypress/psoc64", "*", "*", "*",
-                     "*", "*", "Debug",  "*", "*", "*", "*", "*", "*"),
+                     "*", "*", "Debug",  "*", "*", "*", "*", "*", "*", "*"),
                     ("cypress/psoc64", "*", "*", "*",
-                     "*", "*", "*",  "*", True, True, "*", "*", "*"),
+                     "*", "*", "*",  "*", True, True, "*", "*", "*", "*"),
                     ("arm/mps2/an521", "*", "*", "*",
-                     "*", "*", "RelWithDebInfo",  "*", "*", "*", "*", "*", "*"),
+                     "*", "*", "RelWithDebInfo",  "*", "*", "*", "*", "*", "*", "*"),
                     ("arm/mps2/an519", "*", "*", "*",
-                     "*", "*", "RelWithDebInfo",  "*", "*", "*", "*", "*", "*"),
+                     "*", "*", "RelWithDebInfo",  "*", "*", "*", "*", "*", "*", "*"),
                     ("arm/musca_b1/sse_200", "*", "*", "*",
-                     "*", "*", "RelWithDebInfo",  "*", "*", "*", "*", "*", "*"),
+                     "*", "*", "RelWithDebInfo",  "*", "*", "*", "*", "*", "*", "*"),
                     ("arm/musca_s1", "*", "*", "*",
-                     "*", "*", "RelWithDebInfo",  "*", "*", "*", "*", "*", "*"),
+                     "*", "*", "RelWithDebInfo",  "*", "*", "*", "*", "*", "*", "*"),
                     ("arm/mps3/an524", "*", "*", "*",
-                     "*", "*", "RelWithDebInfo",  "*", "*", "*", "*", "*", "*"),
+                     "*", "*", "RelWithDebInfo",  "*", "*", "*", "*", "*", "*", "*"),
                 ]
                 }
 
@@ -787,6 +813,28 @@
                 "profile":          [""],
                 "partition_ps":     ["ON"],
                 "nsce":             ["ON"],
+                "mmio":             ["OFF"],
+                },
+                "common_params": _common_tfm_builder_cfg,
+                "invalid": _common_tfm_invalid_configs + []
+                }
+
+config_nightly_mmio = {"seed_params": {
+               "tfm_platform":      ["arm/mps2/an521"],
+                "toolchain_file":   ["toolchain_GNUARM.cmake",
+                                     "toolchain_ARMCLANG.cmake"],
+                "lib_model":        [False],
+                "isolation_level":  ["1"],
+                "test_regression":  [True],
+                "test_psa_api":     ["OFF"],
+                "cmake_build_type": ["Debug", "Release", "Minsizerel"],
+                "with_otp":         ["off"],
+                "with_bl2":         [True],
+                "with_ns":          [True],
+                "profile":          [""],
+                "partition_ps":     ["ON"],
+                "nsce":             ["OFF"],
+                "mmio":             ["ON"],
                 },
                 "common_params": _common_tfm_builder_cfg,
                 "invalid": _common_tfm_invalid_configs + []
@@ -808,16 +856,17 @@
                 "profile":          ["profile_small", "profile_medium", "profile_large"],
                 "partition_ps":     ["ON", "OFF"],
                 "nsce":             ["OFF"],
+                "mmio":             ["OFF"],
                 },
                 "common_params": _common_tfm_builder_cfg,
                 "invalid": _common_tfm_invalid_configs + [
                     ("arm/mps2/an519", "toolchain_GNUARM.cmake", "*",
-                     "*", "*", "*", "Minsizerel", "*", "*", "*", "*", "*", "*"),
+                     "*", "*", "*", "Minsizerel", "*", "*", "*", "*", "*", "*", "*"),
                     # Profile Large is only supported by AN521
                     ("arm/mps2/an519", "*", "*",
-                     "*", "*", "*", "*", "*", "*", "*", "profile_large", "*", "*"),
+                     "*", "*", "*", "*", "*", "*", "*", "profile_large", "*", "*", "*"),
                     ("arm/musca_b1/sse_200", "*", "*",
-                     "*", "*", "*", "*", "*", "*", "*", "profile_large", "*", "*"),
+                     "*", "*", "*", "*", "*", "*", "*", "profile_large", "*", "*", "*"),
                 ]
                 }
 
@@ -839,6 +888,7 @@
                 "profile":          [""],
                 "partition_ps":     ["ON"],
                 "nsce":             ["OFF"],
+                "mmio":             ["OFF"],
                 },
                 "common_params": _common_tfm_builder_cfg,
                 "invalid": _common_tfm_invalid_configs + []
@@ -860,6 +910,7 @@
                 "profile":          [""],
                 "partition_ps":     ["ON"],
                 "nsce":             ["OFF"],
+                "mmio":             ["OFF"],
                 },
                 "common_params": _common_tfm_builder_cfg,
                 "invalid": _common_tfm_invalid_configs + []
@@ -880,6 +931,7 @@
                 "profile":          [""],
                 "partition_ps":     ["ON"],
                 "nsce":             ["OFF"],
+                "mmio":             ["OFF"],
                 },
                 "common_params": _common_tfm_builder_cfg,
                 "invalid": _common_tfm_invalid_configs + []
@@ -900,6 +952,7 @@
                 "profile":          [""],
                 "partition_ps":     ["ON"],
                 "nsce":             ["OFF"],
+                "mmio":             ["OFF"],
                 },
                 "common_params": _common_tfm_builder_cfg,
                 "invalid": _common_tfm_invalid_configs + []
@@ -920,6 +973,7 @@
                 "profile":          [""],
                 "partition_ps":     ["ON"],
                 "nsce":             ["OFF"],
+                "mmio":             ["OFF"],
                 },
                 "common_params": _common_tfm_builder_cfg,
                 "invalid": _common_tfm_invalid_configs + []
@@ -939,6 +993,7 @@
                 "profile":          ["profile_medium"],
                 "partition_ps":     ["ON"],
                 "nsce":             ["OFF"],
+                "mmio":             ["OFF"],
                 },
                 "common_params": _common_tfm_builder_cfg,
                 "invalid": _common_tfm_invalid_configs + []
@@ -960,76 +1015,77 @@
                 "profile":          ["", "profile_small", "profile_medium"],
                 "partition_ps":     ["ON", "OFF"],
                 "nsce":             ["OFF"],
+                "mmio":             ["OFF"],
                 },
                 "common_params": _common_tfm_builder_cfg,
                 "valid": [
                     ("arm/mps2/an521", "toolchain_GNUARM.cmake",
                      True, "1", False, "OFF", "Debug",
-                     "off", True, True, "", "ON", "OFF"),
+                     "off", True, True, "", "ON", "OFF", "OFF"),
                     ("arm/mps2/an521", "toolchain_ARMCLANG.cmake",
                      False, "2", False, "OFF", "Debug",
-                     "off", True, True, "", "ON", "OFF"),
+                     "off", True, True, "", "ON", "OFF", "OFF"),
                     ("arm/mps2/an521", "toolchain_ARMCLANG.cmake",
                      False, "3", False, "OFF", "Release",
-                     "off", True, True, "", "ON", "OFF"),
+                     "off", True, True, "", "ON", "OFF", "OFF"),
                     ("arm/mps2/an521", "toolchain_GNUARM.cmake",
                      False, "2", False, "OFF", "Debug",
-                     "off", True, True, "profile_medium", "ON", "OFF"),
+                     "off", True, True, "profile_medium", "ON", "OFF", "OFF"),
                     ("arm/mps2/an521", "toolchain_GNUARM.cmake",
                      False, "3", False, "OFF", "Debug",
-                     "off", True, True, "profile_large", "ON", "OFF"),
+                     "off", True, True, "profile_large", "ON", "OFF", "OFF"),
                     # AN521_GNUARM_IPC_2_REG_Release_BL2_NS_MEDIUM_PSOFF
                     ("arm/mps2/an521", "toolchain_GNUARM.cmake",
                      False, "2", True, "OFF", "Release",
-                     "off", True, True, "profile_medium", "OFF", "OFF"),
+                     "off", True, True, "profile_medium", "OFF", "OFF", "OFF"),
                     # MUSCA_B1_GNUARM_LIB_1_REG_Minsizerel_BL2_NS
                     ("arm/musca_b1/sse_200", "toolchain_GNUARM.cmake",
                      True, "1", True, "OFF", "Minsizerel",
-                     "off", True, True, "", "ON", "OFF"),
+                     "off", True, True, "", "ON", "OFF", "OFF"),
                     # stm32l562e_dk_ARMCLANG_IPC_1_REG_Release_BL2_NS
                     ("stm/stm32l562e_dk", "toolchain_ARMCLANG.cmake",
                      False, "1", True, "OFF", "Release",
-                     "off", True, True, "", "ON", "OFF"),
+                     "off", True, True, "", "ON", "OFF", "OFF"),
                     # stm32l562e_dk_GNUARM_IPC_2_REG_Release_BL2_NS
                     ("stm/stm32l562e_dk", "toolchain_GNUARM.cmake",
                      False, "2", True, "OFF", "Release",
-                     "off", True, True, "", "ON", "OFF"),
+                     "off", True, True, "", "ON", "OFF", "OFF"),
                     # stm32l562e_dk_GNUARM_IPC_3_REG_Release_BL2_NS
                     ("stm/stm32l562e_dk", "toolchain_GNUARM.cmake",
                      False, "3", True, "OFF", "Release",
-                     "off", True, True, "", "ON", "OFF"),
+                     "off", True, True, "", "ON", "OFF", "OFF"),
                 ],
                 "invalid": _common_tfm_invalid_configs + [
                     # invalid configs that are not supported by TF-M
                     ("arm/musca_s1", "*", "*", "*", "*", "*",
-                     "*",  "*", "*", "*", "profile_medium", "*", "*"),
+                     "*",  "*", "*", "*", "profile_medium", "*", "*", "*"),
                     # valid configs supported by TF-M but not needed in per-patch
                     ("*", "*", "*", "1", "*", "*", "Release",
-                     "*", "*", "*", "*", "*", "*"),
+                     "*", "*", "*", "*", "*", "*", "*"),
                     ("*", "*", "*", "1", "*", "*", "Minsizerel",
-                     "*", "*", "*", "*", "*", "*"),
+                     "*", "*", "*", "*", "*", "*", "*"),
                     ("*", "*", "*", "2", "*", "*", "Debug",
-                     "*", "*", "*", "*", "*", "*"),
+                     "*", "*", "*", "*", "*", "*", "*"),
                     ("*", "*", "*", "2", "*", "*", "Minsizerel",
-                     "*", "*", "*", "*", "*", "*"),
+                     "*", "*", "*", "*", "*", "*", "*"),
                     ("*", "*", "*", "3", "*", "*", "Debug",
-                     "*", "*", "*", "*", "*", "*"),
+                     "*", "*", "*", "*", "*", "*", "*"),
                     ("*", "*", "*", "3", "*", "*", "Release",
-                     "*", "*", "*", "*", "*", "*"),
+                     "*", "*", "*", "*", "*", "*", "*"),
                     ("arm/mps2/an519", "*", "*", "*", "*", "*",
-                     "*",  "*", "*", "*", "profile_small", "*", "*"),
+                     "*",  "*", "*", "*", "profile_small", "*", "*", "*"),
                     ("arm/musca_s1", "*", "*", "*", "*", "*",
-                     "*",  "*", "*", "*", "profile_small", "*", "*"),
+                     "*",  "*", "*", "*", "profile_small", "*", "*", "*"),
                     ("arm/mps2/an519", "*", "*", "*", "*", "*",
-                     "*",  "*", "*", "*", "profile_medium", "*", "*"),
+                     "*",  "*", "*", "*", "profile_medium", "*", "*", "*"),
                     ("arm/mps2/an521", "*", "*", "*", "*", "*",
-                     "*",  "*", "*", "*", "profile_medium", "*", "*"),
+                     "*",  "*", "*", "*", "profile_medium", "*", "*", "*"),
                     ("*", "toolchain_GNUARM.cmake", "*", "*", "*", "*",
-                     "*",  "*", "*", "*", "profile_small", "*", "*"),
+                     "*",  "*", "*", "*", "profile_small", "*", "*", "*"),
                     ("*", "toolchain_ARMCLANG.cmake", "*", "*", "*", "*",
-                     "*",  "*", "*", "*", "profile_medium", "*", "*"),
+                     "*",  "*", "*", "*", "profile_medium", "*", "*", "*"),
                     ("*", "toolchain_ARMCLANG.cmake", True, "*", "*", "*",
-                     "*",  "*", "*", "*", "*", "*", "*"),
+                     "*",  "*", "*", "*", "*", "*", "*", "*"),
                 ]
                 }
 
@@ -1047,6 +1103,7 @@
                 "profile":          [""],
                 "partition_ps":     ["ON"],
                 "nsce":             ["OFF"],
+                "mmio":             ["OFF"],
                 },
                 "common_params": _common_tfm_builder_cfg,
                 "invalid": _common_tfm_invalid_configs + []
@@ -1070,6 +1127,7 @@
                 "profile":          [""],
                 "partition_ps":     ["ON"],
                 "nsce":             ["OFF"],
+                "mmio":             ["OFF"],
                 },
                 "common_params": _common_tfm_builder_cfg,
                 "invalid": _common_tfm_invalid_configs + []
@@ -1089,6 +1147,7 @@
                 "profile":          [""],
                 "partition_ps":     ["ON"],
                 "nsce":             ["OFF"],
+                "mmio":             ["OFF"],
                 },
                 "common_params": _common_tfm_builder_cfg,
                 "invalid": _common_tfm_invalid_configs + []
@@ -1108,6 +1167,7 @@
                 "profile":          ["", "profile_small", "profile_medium"],
                 "partition_ps":     ["ON", "OFF"],
                 "nsce":             ["OFF"],
+                "mmio":             ["OFF"],
                 },
                 "common_params": _common_tfm_builder_cfg,
                 "invalid": _common_tfm_invalid_configs + []
@@ -1127,6 +1187,7 @@
                 "profile":          ["", "profile_small", "profile_medium", "profile_large"],
                 "partition_ps":     ["ON", "OFF"],
                 "nsce":             ["OFF"],
+                "mmio":             ["OFF"],
                 },
                 "common_params": _common_tfm_builder_cfg,
                 "invalid": _common_tfm_invalid_configs + []
@@ -1163,6 +1224,7 @@
                 "profile":          [""],
                 "partition_ps":     ["ON"],
                 "nsce":             ["OFF"],
+                "mmio":             ["OFF"],
                 },
                 "common_params": _common_tfm_builder_cfg,
                 "invalid": _common_tfm_invalid_configs + []
@@ -1184,13 +1246,14 @@
                 "profile":          [""],
                 "partition_ps":     ["ON"],
                 "nsce":             ["OFF"],
+                "mmio":             ["OFF"],
                 },
                 "common_params": _common_tfm_builder_cfg,
                 "invalid": _common_tfm_invalid_configs + [
                     ("*", "toolchain_ARMCLANG.cmake", False, "*", "*", "*",
-                     "*",  "*", "*", "*", "*", "*", "*"),
+                     "*",  "*", "*", "*", "*", "*", "*", "*"),
                     ("*", "toolchain_ARMCLANG.cmake", True, "1", "*", "*",
-                     "*",  "*", False, "*", "*", "*", "*"),
+                     "*",  "*", False, "*", "*", "*", "*", "*"),
                 ]
                 }
 
@@ -1208,11 +1271,12 @@
                 "profile":          [""],
                 "partition_ps":     ["ON"],
                 "nsce":             ["OFF"],
+                "mmio":             ["OFF"],
                 },
                 "common_params": _common_tfm_builder_cfg,
                 "invalid": _common_tfm_invalid_configs + [
                     ("arm/mps2/an521", "toolchain_GNUARM.cmake", False, "2", "*", "*",
-                     "*",  "*", True, "*", "*", "*", "*")
+                     "*",  "*", True, "*", "*", "*", "*", "*")
                 ]
                 }
 
@@ -1233,6 +1297,7 @@
                     #nightly test group
                     "nightly_test": config_nightly,
                     "nightly_nsce": config_nightly_nsce,
+                    "nightly_mmio": config_nightly_mmio,
                     "nightly_profile": config_nightly_profile,
                     "nightly_psa_api": config_nightly_PSA_API,
                     "nightly_ff": config_nightly_PSA_FF,
diff --git a/tfm_ci_pylib/tfm_build_manager.py b/tfm_ci_pylib/tfm_build_manager.py
index 322a2f3..ddc1f64 100644
--- a/tfm_ci_pylib/tfm_build_manager.py
+++ b/tfm_ci_pylib/tfm_build_manager.py
@@ -127,7 +127,8 @@
             "NS={}",
             "PROFILE={}",
             "PARTITION_PS={}",
-            "NSCE={}"
+            "NSCE={}",
+            "MMIO={}"
         ]
         print(
             "\n".join(argument_list)
@@ -145,7 +146,8 @@
                 config_details.with_ns,
                 "N.A" if not config_details.profile else config_details.profile,
                 config_details.partition_ps,
-                config_details.nsce
+                config_details.nsce,
+                config_details.mmio
             )
             .strip()
         )
@@ -404,7 +406,8 @@
                             "with_ns": i.with_ns,
                             "profile": "" if i.profile=="N.A" else i.profile,
                             "partition_ps": i.partition_ps,
-                            "nsce": i.nsce}
+                            "nsce": i.nsce,
+                            "mmio": i.mmio}
         if i.test_psa_api == "IPC":
             overwrite_params["test_psa_api"] += " -DINCLUDE_PANIC_TESTS=1"
             if i.tfm_platform == "arm/musca_b1/sse_200":
@@ -593,6 +596,8 @@
                 config_param.append("PSOFF")
             if list(i)[12] == "ON":
                 config_param.append("NSCE")
+            if list(i)[13] == "ON":
+                config_param.append("MMIO")
             i_str = "_".join(config_param)
             ret_cfg[i_str] = i
         return ret_cfg