Add binman configuration to meson-gx-u-boot.dtsi to automate building
bootable images using amlimage.

Reviewed-by: Neil Armstrong <[email protected]>
Signed-off-by: Ferass El Hafidi <[email protected]>
---
 arch/arm/dts/meson-gx-u-boot.dtsi   | 125 ++++++++++++++++++++++++++++++++++++
 arch/arm/dts/meson-gxbb-u-boot.dtsi |  20 ++++++
 arch/arm/dts/meson-gxl-u-boot.dtsi  |  20 ++++++
 3 files changed, 165 insertions(+)

diff --git a/arch/arm/dts/meson-gx-u-boot.dtsi 
b/arch/arm/dts/meson-gx-u-boot.dtsi
index 9e0620f395e..cef7f90fcd4 100644
--- a/arch/arm/dts/meson-gx-u-boot.dtsi
+++ b/arch/arm/dts/meson-gx-u-boot.dtsi
@@ -2,6 +2,7 @@
 /*
  * Copyright (c) 2019 BayLibre, SAS.
  * Author: Maxime Jourdan <[email protected]>
+ * Copyright (c) 2023 Ferass El Hafidi <[email protected]>
  */
 
 / {
@@ -15,6 +16,12 @@
        soc {
                bootph-all;
        };
+
+#if defined(CONFIG_BINMAN)
+       binman: binman {
+               multiple-images;
+       };
+#endif
 };
 
 &vpu {
@@ -30,3 +37,121 @@
              <0x0 0xc883c000 0x0 0x1000>;
        reg-names = "hdmitx", "hhi";
 };
+
+#if defined(CONFIG_BINMAN)
+/* binman configuration on GXBB and GXL */
+
+&binman {
+       u-boot-amlogic {
+               filename = "u-boot-meson-with-spl.bin";
+               pad-byte = <0xff>;
+
+               mkimage {
+                       filename = "spl/u-boot-spl-signed.bin";
+                       /* args are per-SoC, and defined in 
meson-(gxbb/gxl)-u-boot.dtsi */
+
+                       u-boot-spl {
+                       };
+               };
+
+               fit: fit {
+                       description = "ATF and U-Boot images";
+                       #address-cells = <1>;
+                       fit,fdt-list = "of-list";
+                       fit,external-offset = <CONFIG_FIT_EXTERNAL_OFFSET>;
+                       fit,align = <512>;
+                       offset = <CONFIG_SPL_PAD_TO>;
+
+                       images {
+                               u-boot {
+                                       description = "U-Boot";
+                                       type = "standalone";
+                                       os = "u-boot";
+                                       arch = "arm64";
+                                       compression = "none";
+                                       load = <CONFIG_TEXT_BASE>;
+                                       entry = <CONFIG_TEXT_BASE>;
+
+                                       u-boot-nodtb {
+                                       };
+
+#if CONFIG_IS_ENABLED(FIT_SIGNATURE) && CONFIG_IS_ENABLED(SHA256)
+                                       hash {
+                                               algo = "sha256";
+                                       };
+#endif
+                               };
+
+                               atf {
+                                       description = "ARM Trusted Firmware";
+                                       type = "firmware";
+                                       os = "arm-trusted-firmware";
+                                       arch = "arm64";
+                                       compression = "none";
+                                       /*
+                                        * load and entry are SoC-specific, and 
thus
+                                        * defined in 
meson-(gxbb/gxl)-u-boot.dtsi
+                                        */
+
+                                       atf-bl31 {
+                                               filename = "bl31.bin";
+                                       };
+
+#if CONFIG_IS_ENABLED(FIT_SIGNATURE) && CONFIG_IS_ENABLED(SHA256)
+                                       hash {
+                                               algo = "sha256";
+                                       };
+#endif
+                               };
+
+                               scp {
+                                       description = "SCP BL30 Firmware";
+                                       type = "scp";
+                                       arch = "arm"; /* The Cortex-M core is 
used as SCP */
+                                       compression = "none";
+                                       /*
+                                        * On GXBB the base address of the SCP 
firmware doesn't matter as SPL will
+                                        * send the firmware to the SCP anyway, 
and can get the base address from the
+                                        * FIT. On GXL it matters, as BL31 is 
supposed to send the firmware, so set the
+                                        * base address to what GXL BL2 would 
load the binary to.
+                                        */
+                                       load = <0x13c0000>;
+
+                                       scp {
+                                               filename = "scp.bin";
+                                       };
+                                       hash {
+                                               /*
+                                                * The hash is used by the SCP 
and passed to it
+                                                * by U-Boot SPL.
+                                                */
+                                               algo = "sha256";
+                                       };
+                               };
+
+                               @fdt-SEQ {
+                                       description = "NAME";
+                                       type = "flat_dt";
+                                       compression = "none";
+
+#if CONFIG_IS_ENABLED(FIT_SIGNATURE) && CONFIG_IS_ENABLED(SHA256)
+                                       hash {
+                                               algo = "sha256";
+                                       };
+#endif
+                               };
+
+                       };
+                       configurations {
+                               default = "@config-DEFAULT-SEQ";
+                               @config-SEQ {
+                                       description = "NAME.dtb";
+                                       fdt = "fdt-SEQ";
+                                       firmware = "atf";
+                                       loadables = "scp", "u-boot";
+                               };
+                       };
+               };
+       };
+};
+#endif
diff --git a/arch/arm/dts/meson-gxbb-u-boot.dtsi 
b/arch/arm/dts/meson-gxbb-u-boot.dtsi
index c35158d7e9e..a4dc1c136f1 100644
--- a/arch/arm/dts/meson-gxbb-u-boot.dtsi
+++ b/arch/arm/dts/meson-gxbb-u-boot.dtsi
@@ -5,3 +5,23 @@
  */
 
 #include "meson-gx-u-boot.dtsi"
+
+#if defined(CONFIG_BINMAN)
+/* GXBB-specific binman configuration */
+&binman {
+       u-boot-amlogic {
+               mkimage {
+                       args = "-n", "gxbb", "-T", "amlimage";
+               };
+
+               fit: fit {
+                       images {
+                               atf {
+                                       load = <0x10100000>;
+                                       entry = <0x10100000>;
+                               };
+                       };
+               };
+       };
+};
+#endif
diff --git a/arch/arm/dts/meson-gxl-u-boot.dtsi 
b/arch/arm/dts/meson-gxl-u-boot.dtsi
index c35158d7e9e..3f1bbc1038f 100644
--- a/arch/arm/dts/meson-gxl-u-boot.dtsi
+++ b/arch/arm/dts/meson-gxl-u-boot.dtsi
@@ -5,3 +5,23 @@
  */
 
 #include "meson-gx-u-boot.dtsi"
+
+#if defined(CONFIG_BINMAN)
+/* GXL-specific binman configuration */
+&binman {
+       u-boot-amlogic {
+               mkimage {
+                       args = "-n", "gxl", "-T", "amlimage";
+               };
+
+               fit: fit {
+                       images {
+                               atf {
+                                       load = <0x5100000>;
+                                       entry = <0x5100000>;
+                               };
+                       };
+               };
+       };
+};
+#endif

-- 
2.51.2

Reply via email to