diff mbox series

[2/2] arm: tegra: add options for BOOTENV_EFI_SET_FDTFILE_FALLBACK for tegra186

Message ID 20200401232855.494797-2-pbrobinson@gmail.com
State New
Delegated to: Tom Warren
Headers show
Series [1/2] arm: tegra: define fdtfile option for distro boot | expand

Commit Message

Peter Robinson April 1, 2020, 11:28 p.m. UTC
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@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(-)

Comments

Stephen Warren April 2, 2020, 6:01 p.m. UTC | #1
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@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 mbox series

Patch

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"