Message ID | 20200401232855.494797-2-pbrobinson@gmail.com |
---|---|
State | Accepted |
Commit | fe669925cb4276b881a0b444e660378293585093 |
Headers | show |
Series | [1/2] arm: tegra: define fdtfile option for distro boot | expand |
On 4/1/20 5:28 PM, Peter Robinson wrote: > Upstream linux DT naming doesn't align with the U-Boot DT, which may > not always be the case so this allows using BOOTENV_EFI_SET_FDTFILE_FALLBACK > where it might be appropriate for some boards. > > Signed-off-by: Peter Robinson <pbrobinson at gmail.com> > --- > > This is a bit of a hack for the Jetson TX2 because the U-Boot config > using a different naming for the DT naming to upstream Linux, I'm not > sure what naming L4T uses, and whether the 000/500 variants are widely > enough available or whether they use differnet DTs in L4T. > > Welcome to suggestions of a better way to fix this one but it works > for booting the TX2 on Fedora using UEFI.. Does the default fdtfile value set up in patch 1 work in even a majority of cases? In other words, is there a list of boards where the DT names do match and where they don't? > include/config_distro_bootcmd.h | 2 ++ > include/configs/tegra186-common.h | 7 ++++++- For T186, rather than adding fdtfile in patch 1, then removing it in patch 2, shouldn't we drop the T186 changes from patch 1 and go direct to the final solution in patch 2? For downstream SW stacks at least, the best approach is to pass through the cboot-supplied DTB to the kernel rather than loading a new one. This is the only way we have at present to cater for: - Different HW revisions. - Runtime-generated data like memory settings, carve-out locations, ... - Optional daughter boards detected at run-time. - HW modifications/configurations indicated by NV-custom "ODMDATA" values in the BCT. That said, the upstream SW stacks don't currently support or use any of that information, and only support a single specific HW revision of each board (or the common subset between revisions), so perhaps this aspect isn't too relevant.
diff --git a/include/config_distro_bootcmd.h b/include/config_distro_bootcmd.h index fc0935fa21..fd1c5f5afa 100644 --- a/include/config_distro_bootcmd.h +++ b/include/config_distro_bootcmd.h @@ -118,8 +118,10 @@ "setenv efi_fdtfile ${soc}-${board}${boardver}.dtb; " \ "fi; " #else +#ifndef BOOTENV_EFI_SET_FDTFILE_FALLBACK #define BOOTENV_EFI_SET_FDTFILE_FALLBACK #endif +#endif #define BOOTENV_SHARED_EFI \ diff --git a/include/configs/tegra186-common.h b/include/configs/tegra186-common.h index 5c3ad35c76..d5f21e0907 100644 --- a/include/configs/tegra186-common.h +++ b/include/configs/tegra186-common.h @@ -20,6 +20,12 @@ /* Generic Interrupt Controller */ #define CONFIG_GICV2 +#undef FDTFILE +#define BOOTENV_EFI_SET_FDTFILE_FALLBACK \ + "if test -z \"${fdtfile}\" -a -n \"${soc}\"; then " \ + "setenv efi_fdtfile ${vendor}/${soc}-${board}${boardver}.dtb; " \ + "fi; " + /* * Memory layout for where various images get loaded by boot scripts: * @@ -49,7 +55,6 @@ "scriptaddr=0x90000000\0" \ "pxefile_addr_r=0x90100000\0" \ "kernel_addr_r=" __stringify(CONFIG_LOADADDR) "\0" \ - "fdtfile=" FDTFILE "\0" \ "fdt_addr_r=0x82000000\0" \ "ramdisk_addr_r=0x82100000\0"
Upstream linux DT naming doesn't align with the U-Boot DT, which may not always be the case so this allows using BOOTENV_EFI_SET_FDTFILE_FALLBACK where it might be appropriate for some boards. Signed-off-by: Peter Robinson <pbrobinson at gmail.com> --- This is a bit of a hack for the Jetson TX2 because the U-Boot config using a different naming for the DT naming to upstream Linux, I'm not sure what naming L4T uses, and whether the 000/500 variants are widely enough available or whether they use differnet DTs in L4T. Welcome to suggestions of a better way to fix this one but it works for booting the TX2 on Fedora using UEFI.. include/config_distro_bootcmd.h | 2 ++ include/configs/tegra186-common.h | 7 ++++++- 2 files changed, 8 insertions(+), 1 deletion(-)