sandbox: capsule: binman: generate some capsules as part of build

Currently, all the capsules for the sandbox platform are generated at
the time of running the capsule tests. To showcase generation of
capsules through binman, generate all raw(non FIT payload) capsules
needed for the sandbox platform as part of the build. This acts as an
illustrative example for generating capsules as part of a platform's
build.

Make corresponding change in the capsule test's configuration to get
these capsules from the build directory.

Signed-off-by: Sughosh Ganu <sughosh.ganu@linaro.org>
diff --git a/arch/sandbox/dts/sandbox.dts b/arch/sandbox/dts/sandbox.dts
index 12d3eff..8392206 100644
--- a/arch/sandbox/dts/sandbox.dts
+++ b/arch/sandbox/dts/sandbox.dts
@@ -106,3 +106,7 @@
 #if IS_ENABLED(CONFIG_SUPPORT_VPL)
 #include "sandbox_vpl.dtsi"
 #endif
+
+#if IS_ENABLED(CONFIG_EFI_HAVE_CAPSULE_SUPPORT)
+#include "sandbox_capsule.dtsi"
+#endif
diff --git a/arch/sandbox/dts/sandbox_capsule.dtsi b/arch/sandbox/dts/sandbox_capsule.dtsi
new file mode 100644
index 0000000..34d2991
--- /dev/null
+++ b/arch/sandbox/dts/sandbox_capsule.dtsi
@@ -0,0 +1,169 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * Devicetree file with binman nodes needed for generating EFI
+ * capsules.
+ *
+ */
+
+#include <sandbox_efi_capsule.h>
+
+/ {
+	binman: binman {
+		multiple-images;
+	};
+};
+
+&binman {
+	capsule1 {
+		filename = "Test01";
+		efi-capsule {
+			image-index = <0x1>;
+			image-guid = SANDBOX_UBOOT_IMAGE_GUID;
+
+			text {
+				text = "u-boot:New";
+			};
+		};
+	};
+
+	capsule2 {
+		filename = "Test02";
+		efi-capsule {
+			image-index = <0x2>;
+			image-guid = SANDBOX_UBOOT_ENV_IMAGE_GUID;
+
+			text {
+				text = "u-boot-env:New";
+			};
+		};
+	};
+
+	capsule3 {
+		filename = "Test03";
+		efi-capsule {
+			image-index = <0x1>;
+			image-guid = SANDBOX_INCORRECT_GUID;
+
+			text {
+				text = "u-boot:New";
+			};
+		};
+	};
+
+	capsule4 {
+		filename = "Test101";
+		efi-capsule {
+			image-index = <0x1>;
+			fw-version = <0x5>;
+			image-guid = SANDBOX_UBOOT_IMAGE_GUID;
+
+			text {
+				text = "u-boot:New";
+			};
+		};
+	};
+
+	capsule5 {
+		filename = "Test102";
+		efi-capsule {
+			image-index = <0x2>;
+			fw-version = <0xa>;
+			image-guid = SANDBOX_UBOOT_ENV_IMAGE_GUID;
+
+			text {
+				text = "u-boot-env:New";
+			};
+		};
+	};
+
+	capsule6 {
+		filename = "Test103";
+		efi-capsule {
+			image-index = <0x1>;
+			fw-version = <0x2>;
+			image-guid = SANDBOX_UBOOT_IMAGE_GUID;
+
+			text {
+				text = "u-boot:New";
+			};
+		};
+	};
+
+	capsule7 {
+		filename = "Test11";
+		efi-capsule {
+			image-index = <0x1>;
+			image-guid = SANDBOX_UBOOT_IMAGE_GUID;
+			private-key = CAPSULE_PRIV_KEY;
+			public-key-cert = CAPSULE_PUB_KEY;
+			monotonic-count = <0x1>;
+
+			text {
+				text = "u-boot:New";
+			};
+		};
+	};
+
+	capsule8 {
+		filename = "Test12";
+		efi-capsule {
+			image-index = <0x1>;
+			image-guid = SANDBOX_UBOOT_IMAGE_GUID;
+			private-key = CAPSULE_INVAL_KEY;
+			public-key-cert = CAPSULE_INVAL_PUB_KEY;
+			monotonic-count = <0x1>;
+
+			text {
+				text = "u-boot:New";
+			};
+		};
+	};
+
+	capsule9 {
+		filename = "Test111";
+		efi-capsule {
+			image-index = <0x1>;
+			fw-version = <0x5>;
+			image-guid = SANDBOX_UBOOT_IMAGE_GUID;
+			private-key = CAPSULE_PRIV_KEY;
+			public-key-cert = CAPSULE_PUB_KEY;
+			monotonic-count = <0x1>;
+
+			text {
+				text = "u-boot:New";
+			};
+		};
+	};
+
+	capsule10 {
+		filename = "Test112";
+		efi-capsule {
+			image-index = <0x2>;
+			fw-version = <0xa>;
+			image-guid = SANDBOX_UBOOT_ENV_IMAGE_GUID;
+			private-key = CAPSULE_PRIV_KEY;
+			public-key-cert = CAPSULE_PUB_KEY;
+			monotonic-count = <0x1>;
+
+			text {
+				text = "u-boot-env:New";
+			};
+		};
+	};
+
+	capsule11 {
+		filename = "Test113";
+		efi-capsule {
+			image-index = <0x1>;
+			fw-version = <0x2>;
+			image-guid = SANDBOX_UBOOT_IMAGE_GUID;
+			private-key = CAPSULE_PRIV_KEY;
+			public-key-cert = CAPSULE_PUB_KEY;
+			monotonic-count = <0x1>;
+
+			text {
+				text = "u-boot:New";
+			};
+		};
+	};
+};
diff --git a/arch/sandbox/dts/test.dts b/arch/sandbox/dts/test.dts
index e264b29..a012f5c 100644
--- a/arch/sandbox/dts/test.dts
+++ b/arch/sandbox/dts/test.dts
@@ -1990,4 +1990,8 @@
 #include "sandbox_vpl.dtsi"
 #endif
 
+#if IS_ENABLED(CONFIG_EFI_HAVE_CAPSULE_SUPPORT)
+#include "sandbox_capsule.dtsi"
+#endif
+
 #include "cedit.dtsi"
diff --git a/test/py/tests/test_efi_capsule/capsule_gen_binman.dts b/test/py/tests/test_efi_capsule/capsule_gen_binman.dts
index e8a1858..1a62c26 100644
--- a/test/py/tests/test_efi_capsule/capsule_gen_binman.dts
+++ b/test/py/tests/test_efi_capsule/capsule_gen_binman.dts
@@ -55,42 +55,6 @@
 	};
 
 	capsule1 {
-		filename = "Test01";
-		efi-capsule {
-			image-index = <0x1>;
-			image-guid = SANDBOX_UBOOT_IMAGE_GUID;
-
-			text {
-				text = "u-boot:New";
-			};
-		};
-	};
-
-	capsule2 {
-		filename = "Test02";
-		efi-capsule {
-			image-index = <0x2>;
-			image-guid = SANDBOX_UBOOT_ENV_IMAGE_GUID;
-
-			text {
-				text = "u-boot-env:New";
-			};
-		};
-	};
-
-	capsule3 {
-		filename = "Test03";
-		efi-capsule {
-			image-index = <0x1>;
-			image-guid = SANDBOX_INCORRECT_GUID;
-
-			text {
-				text = "u-boot:New";
-			};
-		};
-	};
-
-	capsule4 {
 		filename = "Test04";
 		efi-capsule {
 			image-index = <0x1>;
@@ -102,7 +66,7 @@
 		};
 	};
 
-	capsule5 {
+	capsule2 {
 		filename = "Test05";
 		efi-capsule {
 			image-index = <0x1>;
@@ -114,46 +78,7 @@
 		};
 	};
 
-	capsule6 {
-		filename = "Test101";
-		efi-capsule {
-			image-index = <0x1>;
-			fw-version = <0x5>;
-			image-guid = SANDBOX_UBOOT_IMAGE_GUID;
-
-			text {
-				text = "u-boot:New";
-			};
-		};
-	};
-
-	capsule7 {
-		filename = "Test102";
-		efi-capsule {
-			image-index = <0x2>;
-			fw-version = <0xa>;
-			image-guid = SANDBOX_UBOOT_ENV_IMAGE_GUID;
-
-			text {
-				text = "u-boot-env:New";
-			};
-		};
-	};
-
-	capsule8 {
-		filename = "Test103";
-		efi-capsule {
-			image-index = <0x1>;
-			fw-version = <0x2>;
-			image-guid = SANDBOX_UBOOT_IMAGE_GUID;
-
-			text {
-				text = "u-boot:New";
-			};
-		};
-	};
-
-	capsule9 {
+	capsule3 {
 		filename = "Test104";
 		efi-capsule {
 			image-index = <0x1>;
@@ -166,7 +91,7 @@
 		};
 	};
 
-	capsule10 {
+	capsule4 {
 		filename = "Test105";
 		efi-capsule {
 			image-index = <0x1>;
@@ -179,37 +104,7 @@
 		};
 	};
 
-	capsule11 {
-		filename = "Test11";
-		efi-capsule {
-			image-index = <0x1>;
-			image-guid = SANDBOX_UBOOT_IMAGE_GUID;
-			private-key = CAPSULE_PRIV_KEY;
-			public-key-cert = CAPSULE_PUB_KEY;
-			monotonic-count = <0x1>;
-
-			text {
-				text = "u-boot:New";
-			};
-		};
-	};
-
-	capsule12 {
-		filename = "Test12";
-		efi-capsule {
-			image-index = <0x1>;
-			image-guid = SANDBOX_UBOOT_IMAGE_GUID;
-			private-key = CAPSULE_INVAL_KEY;
-			public-key-cert = CAPSULE_INVAL_PUB_KEY;
-			monotonic-count = <0x1>;
-
-			text {
-				text = "u-boot:New";
-			};
-		};
-	};
-
-	capsule13 {
+	capsule5 {
 		filename = "Test13";
 		efi-capsule {
 			image-index = <0x1>;
@@ -224,7 +119,7 @@
 		};
 	};
 
-	capsule14 {
+	capsule6 {
 		filename = "Test14";
 		efi-capsule {
 			image-index = <0x1>;
@@ -239,55 +134,7 @@
 		};
 	};
 
-	capsule15 {
-		filename = "Test111";
-		efi-capsule {
-			image-index = <0x1>;
-			fw-version = <0x5>;
-			image-guid = SANDBOX_UBOOT_IMAGE_GUID;
-			private-key = CAPSULE_PRIV_KEY;
-			public-key-cert = CAPSULE_PUB_KEY;
-			monotonic-count = <0x1>;
-
-			text {
-				text = "u-boot:New";
-			};
-		};
-	};
-
-	capsule16 {
-		filename = "Test112";
-		efi-capsule {
-			image-index = <0x2>;
-			fw-version = <0xa>;
-			image-guid = SANDBOX_UBOOT_ENV_IMAGE_GUID;
-			private-key = CAPSULE_PRIV_KEY;
-			public-key-cert = CAPSULE_PUB_KEY;
-			monotonic-count = <0x1>;
-
-			text {
-				text = "u-boot-env:New";
-			};
-		};
-	};
-
-	capsule17 {
-		filename = "Test113";
-		efi-capsule {
-			image-index = <0x1>;
-			fw-version = <0x2>;
-			image-guid = SANDBOX_UBOOT_IMAGE_GUID;
-			private-key = CAPSULE_PRIV_KEY;
-			public-key-cert = CAPSULE_PUB_KEY;
-			monotonic-count = <0x1>;
-
-			text {
-				text = "u-boot:New";
-			};
-		};
-	};
-
-	capsule18 {
+	capsule7 {
 		filename = "Test114";
 		efi-capsule {
 			image-index = <0x1>;
@@ -303,7 +150,7 @@
 		};
 	};
 
-	capsule19 {
+	capsule8 {
 		filename = "Test115";
 		efi-capsule {
 			image-index = <0x1>;
diff --git a/test/py/tests/test_efi_capsule/conftest.py b/test/py/tests/test_efi_capsule/conftest.py
index dd41da9..80b1297 100644
--- a/test/py/tests/test_efi_capsule/conftest.py
+++ b/test/py/tests/test_efi_capsule/conftest.py
@@ -85,6 +85,7 @@
         check_call('cd %s; '
                    './tools/binman/binman --toolpath %s/tools build -u -d %s/capsule_binman.dtb -O %s -m --allow-missing -I %s -I ./board/sandbox -I ./arch/sandbox/dts'
                    % (u_boot_config.source_dir, u_boot_config.build_dir, data_dir, data_dir, data_dir), shell=True)
+        check_call('cp %s/Test* %s' % (u_boot_config.build_dir, data_dir), shell=True)
         os.environ['PYTHONPATH'] = pythonpath
 
         # Create a disk image with EFI system partition