[PATCH] ARM: Distro boot: document the need for fdtfile variable to be set

Dennis Gilmore dennis at ausil.us
Thu Sep 3 22:14:02 CEST 2020


On Thu, Sep 3, 2020 at 2:15 PM Stephen Warren <swarren at wwwdotorg.org> wrote:
>
> On 9/3/20 10:40 AM, Dennis Gilmore wrote:
> > When testing builds provided in https://github.com/openwrt/openwrt/pull/3360
> > I discovered that fdtfile was not set and as a result the firmware was not
> > functional. So I am documenting what is needed.
> >
> > Signed-off-by: Dennis Gilmore <dennis at ausil.us>
> >
> > Cc: Atish Patra <atish.patra at wdc.com>
> > Cc: Lukas Auer <lukas.auer at aisec.fraunhofer.de>
> > Cc: Tom Rini <trini at konsulko.com>
> > Cc: Masahiro Yamada <yamada.masahiro at socionext.com>
> > Cc: Vagrant Cascadian <vagrant at debian.org>
> > Cc: Stephen Warren <swarren at nvidia.com>
> > Cc: Karsten Merker <merker at debian.org>
> > ---
> >  doc/README.distro | 8 ++++++++
> >  1 file changed, 8 insertions(+)
> >
> > diff --git a/doc/README.distro b/doc/README.distro
> > index 5076bebd18..3eb70aeb14 100644
> > --- a/doc/README.distro
> > +++ b/doc/README.distro
> > @@ -224,6 +224,14 @@ fdt_addr_r:
> >
> >    A size of 1MB for the FDT/DTB seems reasonable.
> >
> > +fdtfile:
> > +
> > +  Mandatory. the name of the DTB file for the specific board for instance
> > +  the espressobin v5 board the value is "marvell/armada-3720-espressobin.dtb"
> > +  while on a clearfog pro it is "armada-388-clearfog-pro.dtb" in the case of
> > +  a board providing its firmware based DTB this value can be used to override
> > +  the DTB with a different DTB.
>
> IIRC this variable isn't mandatory; if the DT filename follows expected
> ${soc}-${board}.dtb naming, then U-Boot has a default value that will
> work without the user or U-Boot author having to manually set this variable.
>
> So it's certainly mandatory that U-Boot know this value at runtime, but
> perhaps the text should be expanded to indicate that sometimes U-Boot
> can provide the value itself, but sometimes the variable needs to be set?

in include/config_distro_bootcmd.h we have the following
/*
 * On 32bit ARM systems there is a reasonable number of systems that follow
 * the $soc-$board$boardver.dtb name scheme for their device trees. Use that
 * scheme if we don't have an explicit fdtfile variable.
 */
#define BOOTENV_EFI_SET_FDTFILE_FALLBACK                                  \
        "if test -z \"${fdtfile}\" -a -n \"${soc}\"; then "               \
          "setenv efi_fdtfile ${soc}-${board}${boardver}.dtb; "           \
        "fi; "
#else
#define BOOTENV_EFI_SET_FDTFILE_FALLBACK
#endif

that schema is not true on AArch64 and the method only works with efi
booting. I will update the text to list out the conditions you could
get away with not setting the variable

Dennis


More information about the U-Boot mailing list