
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=" \