From mboxrd@z Thu Jan 1 00:00:00 1970 From: Simon Glass Date: Wed, 26 Feb 2020 07:33:15 -0800 Subject: [PATCH 1/2] Makefile: Add environment variable DEVICE_TREE to header In-Reply-To: <65fe3fb4b7f682b4a292b261f0140b1f89f4610e.1582041753.git.michal.simek@xilinx.com> References: <65fe3fb4b7f682b4a292b261f0140b1f89f4610e.1582041753.git.michal.simek@xilinx.com> Message-ID: List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Hi Michal, On Tue, 18 Feb 2020 at 09:02, Michal Simek wrote: > > Users have option to overwrite default device tree > (CONFIG_DEFAULT_DEVICE_TREE) via environment variable DEVICE_TREE. > > Feature has been added long time ago by commit 74de8c9a1672 > ("dts/Makefile: Build the user specified dts") for a little bit different > reason. > > But this variable can be also used for different purpose like choosing > proper configuration from FIT image in SPL. > And this is the functionality I would like to use on Xilinx Zynq devices > that current u-boot.img can be composed in the same way based on OF_LIST > and different configuration is taken based on platform specific SPL. > SPL requires low level ps7_init_gpl configuration that's why different > boards require different SPL with fixed board_fit_config_name_match(). > > Signed-off-by: Michal Simek > --- > > I have done it in this way but maybe there is any smarter way how this can > be done. Also macro name can change if you want. Can you please add a bit of documentation to doc/README.fdt-control ? > --- > Makefile | 14 +++++++++++++- > arch/arm/mach-zynq/spl.c | 8 ++++++-- > 2 files changed, 19 insertions(+), 3 deletions(-) > > diff --git a/Makefile b/Makefile > index 0af89e0a7881..15f7cce445f6 100644 > --- a/Makefile > +++ b/Makefile > @@ -483,6 +483,7 @@ endif > version_h := include/generated/version_autogenerated.h > timestamp_h := include/generated/timestamp_autogenerated.h > defaultenv_h := include/generated/defaultenv_autogenerated.h > +dt_h := include/generated/dt.h > > no-dot-config-targets := clean clobber mrproper distclean \ > help %docs check% coccicheck \ > @@ -1768,7 +1769,7 @@ endif > # prepare2 creates a makefile if using a separate output directory > prepare2: prepare3 outputmakefile cfg > > -prepare1: prepare2 $(version_h) $(timestamp_h) \ > +prepare1: prepare2 $(version_h) $(timestamp_h) $(dt_h) \ > include/config/auto.conf > ifeq ($(wildcard $(LDSCRIPT)),) > @echo >&2 " Could not find linker script." > @@ -1834,12 +1835,23 @@ define filechk_defaultenv.h > xxd -i ; echo ", 0x00" ; ) > endef > > +define filechk_dt.h > + (if test -n "$${DEVICE_TREE}"; then \ I think this can be: ifneq($(DEVICE_TREE),) > + echo \#define DEVICE_TREE \"$(DEVICE_TREE)\"; \ > + else \ > + echo \#define DEVICE_TREE CONFIG_DEFAULT_DEVICE_TREE; \ > + fi) > +endef > + > $(version_h): include/config/uboot.release FORCE > $(call filechk,version.h) > > $(timestamp_h): $(srctree)/Makefile FORCE > $(call filechk,timestamp.h) > > +$(dt_h): $(srctree)/Makefile FORCE > + $(call filechk,dt.h) > + > $(defaultenv_h): $(CONFIG_DEFAULT_ENV_FILE:"%"=%) FORCE > $(call filechk,defaultenv.h) > > diff --git a/arch/arm/mach-zynq/spl.c b/arch/arm/mach-zynq/spl.c > index 96ba90fb7a76..e89e46c1038d 100644 > --- a/arch/arm/mach-zynq/spl.c > +++ b/arch/arm/mach-zynq/spl.c > @@ -6,6 +6,7 @@ > #include > #include > #include > +#include > > #include > #include > @@ -89,8 +90,11 @@ void spl_board_prepare_for_boot(void) > int board_fit_config_name_match(const char *name) > { > /* Just empty function now - can't decide what to choose */ > - debug("%s: %s\n", __func__, name); > + debug("%s: Check %s, default %s\n", __func__, name, DEVICE_TREE); > > - return 0; > + if (!strcmp(name, DEVICE_TREE)) > + return 0; > + > + return -1; > } > #endif > -- > 2.25.0 > Regards, Simon