arm64: zynqmp: Add support for u-boot.itb generation without ATF
authorMichal Simek <michal.simek@xilinx.com>
Mon, 23 Mar 2020 13:40:52 +0000 (14:40 +0100)
committerMichal Simek <michal.simek@xilinx.com>
Mon, 6 Apr 2020 10:52:45 +0000 (12:52 +0200)
If ATF doesn't exist generate u-boot.itb without it and let U-Boot run in
EL3. Still keep warning to let user know that ATF/BL31 is missing.

Signed-off-by: Michal Simek <michal.simek@xilinx.com>
arch/arm/mach-zynqmp/mkimage_fit_atf.sh

index 1e770ba111d318fa375dc6fcb141706025c99c93..92e31849f88d3bb593178de035826df6a8634a16 100755 (executable)
@@ -29,11 +29,8 @@ else
 fi
 
 if [ ! -f $BL31 ]; then
-       echo "WARNING: BL31 file $BL31 NOT found, resulting binary is non-functional" >&2
+       echo "WARNING: BL31 file $BL31 NOT found, U-Boot will run in EL3" >&2
        BL31=/dev/null
-       # But U-Boot proper could be loaded in EL3 by specifying
-       # firmware = "uboot";
-       # instead of "atf" in config node
 fi
 
 cat << __HEADER_EOF
@@ -58,6 +55,10 @@ cat << __HEADER_EOF
                                algo = "md5";
                        };
                };
+__HEADER_EOF
+
+if [ -f $BL31 ]; then
+cat << __ATF
                atf {
                        description = "ARM Trusted Firmware";
                        data = /incbin/("$BL31");
@@ -71,7 +72,8 @@ cat << __HEADER_EOF
                                algo = "md5";
                        };
                };
-__HEADER_EOF
+__ATF
+fi
 
 DEFAULT=1
 cnt=1
@@ -106,6 +108,15 @@ __CONF_HEADER_EOF
 cnt=1
 for dtname in $DT
 do
+if [ ! -f $BL31 ]; then
+cat << __CONF_SECTION1_EOF
+               config_$cnt {
+                       description = "$(basename $dtname .dtb)";
+                       firmware = "uboot";
+                       fdt = "fdt_$cnt";
+               };
+__CONF_SECTION1_EOF
+else
 cat << __CONF_SECTION1_EOF
                config_$cnt {
                        description = "$(basename $dtname .dtb)";
@@ -114,6 +125,8 @@ cat << __CONF_SECTION1_EOF
                        fdt = "fdt_$cnt";
                };
 __CONF_SECTION1_EOF
+fi
+
 cnt=$((cnt+1))
 done