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.g...@linaro.org>
---

Changes since V1:
* Fix the typo in the commit message about raw capsules being
  generated as part of the build, and not signed capsules.

 arch/sandbox/dts/sandbox.dts                  |   4 +
 arch/sandbox/dts/sandbox_capsule.dtsi         | 169 ++++++++++++++++++
 arch/sandbox/dts/test.dts                     |   4 +
 .../test_efi_capsule/capsule_gen_binman.dts   | 167 +----------------
 test/py/tests/test_efi_capsule/conftest.py    |   1 +
 5 files changed, 185 insertions(+), 160 deletions(-)
 create mode 100644 arch/sandbox/dts/sandbox_capsule.dtsi

diff --git a/arch/sandbox/dts/sandbox.dts b/arch/sandbox/dts/sandbox.dts
index 12d3eff5fa..8392206eea 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 0000000000..34d29916b3
--- /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 e264b29554..a012f5c4c9 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 e8a1858509..1a62c26047 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 dd41da9284..80b12977d6 100644
--- a/test/py/tests/test_efi_capsule/conftest.py
+++ b/test/py/tests/test_efi_capsule/conftest.py
@@ -85,6 +85,7 @@ def efi_capsule_data(request, u_boot_config):
         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
-- 
2.34.1

Reply via email to