[U-Boot] [PATCH 4/6] efi_loader: Improve .dtb search for arm64

Andreas Färber
2016-07-12T04:21:45Z

On arm64 Linux device trees are organized by SoC vendor. Therefore we
need to search the vendor subdirectory as well.

Since the SoC vendor may be different from ${vendor}, introduce a new
${soc_vendor}. If this is not set, the behavior remains unchanged.

Cc: Alexander Graf <agraf@suse.de>
Signed-off-by: Andreas F?rber <afaerber@suse.de>
---
include/config_distro_bootcmd.h | 18 +++++++++++++++++-
1 file changed, 17 insertions(+), 1 deletion(-)

diff --git a/include/config_distro_bootcmd.h b/include/config_distro_bootcmd.h
index eadec2e..8f14457 100644
--- a/include/config_distro_bootcmd.h
+++ b/include/config_distro_bootcmd.h
@@ -113,6 +113,15 @@
#define BOOTENV_EFI_SET_FDTFILE_FALLBACK
#endif

+#if defined(CONFIG_ARM64)
+#define BOOTENV_EFI_SET_FDTFILE_VENDOR \
+ "if test -n \"${soc_vendor}\"; then " \
+ "setenv efi_dtb_vendor_prefix ${soc_vendor}/; " \
+ "fi; "
+#else
+#define BOOTENV_EFI_SET_FDTFILE_VENDOR
+#endif
+
#define BOOTENV_SHARED_EFI \
"boot_efi_binary=" \
"load ${devtype} ${devnum}:${distro_bootpart} " \
@@ -125,18 +134,25 @@
\
"load_efi_dtb=" \
"load ${devtype} ${devnum}:${efi_bootpart} ${fdt_addr_r} "\
- "${prefix}${dtb_prefix}${efi_fdtfile}\0" \
+ "${prefix}${dtb_prefix}${dtb_vendor_prefix}" \
+ "${efi_fdtfile}\0" \
\
"efi_dtb_prefixes=\"\" dtb/ dtb/current/\0" \
"scan_dev_for_efi_fdt=" \
"for prefix in ${boot_prefixes}; do " \
"for dtb_prefix in ${efi_dtb_prefixes}; do " \
+ BOOTENV_EFI_SET_FDTFILE_VENDOR \
+ "for dtb_vendor_prefix in \"\" " \
+ "${efi_dtb_vendor_prefix}; do " \
"if test -e ${devtype} " \
"${devnum}:${efi_bootpart} " \
"${prefix}${dtb_prefix}" \
+ "${dtb_vendor_prefix}" \
"${efi_fdtfile}; then " \
"run load_efi_dtb; " \
"fi; " \
+ "done; " \
+ "setenv efi_dtb_vendor_prefix; " \
"done; " \
"done\0" \
"scan_dev_for_efi=" \
--
2.6.6