From: Trent Piepho <trent.piepho@igorinstitute.com>
To: Antony Pavlov <antonynpavlov@gmail.com>
Cc: barebox@lists.infradead.org, Sascha Hauer <sha@pengutronix.de>,
Ahmad Fatoum <a.fatoum@pengutronix.de>
Subject: Re: [PATCH v2 1/1] kbuild: dtc: Allow adding device tree fragments via config
Date: Wed, 26 Jan 2022 14:10:10 -0800 [thread overview]
Message-ID: <CAMHeXxOV7bunucQWHCaZBVm8GD-+qpqp9JfShuP-aE6fqz=PFA@mail.gmail.com> (raw)
In-Reply-To: <20220126152945.bb1104efad47e5a22be66fb9@gmail.com>
There are no defconfigs that begin with a digit, but I guess there are
dts names that do.
Should probably just change the macro name from FOO_BOARD_DTS to DTS_FOO_BOARD.
On Wed, Jan 26, 2022 at 4:29 AM Antony Pavlov <antonynpavlov@gmail.com> wrote:
>
> On Wed, 22 Sep 2021 11:13:36 -0700
> Trent Piepho <trent.piepho@igorinstitute.com> wrote:
>
> Hi!
>
> This patch was applied to barebox source tree as
>
> 2ae7ac7ab2 kbuild: dtc: Allow adding device tree fragments via config
>
> With this patch I see build error if device tree file name starts with digit (0-9),
> e.g.:
>
> barebox$ git checkout v2022.01.0
>
> barebox$ make mrproper
>
> barebox$ export ARCH=arm
> barebox$ export CROSS_COMPILE=arm-none-eabi-
> barebox$ sed -i "s/virt2real.dtb/2virt2real.dtb/" arch/arm/dts/Makefile
> barebox$ mv arch/arm/dts/virt2real.dts arch/arm/dts/2virt2real.dts
>
> barebox$ make virt2real_defconfig
> ...
> barebox$ make -s
> <stdin>:1:9: error: macro names must be identifiers make[1]: [scripts/Makefile.lib:352: arch/arm/dts/2virt2real.dtb] Error 1
> make: [Makefile:952: arch/arm/dts] Error 2
>
>
>
>
> > This introduces a config variable that allows adding additional fragments
> > to the Barebox device tree(s).
> >
> > Example uses are adjusting the flash partition layout, adding barebox
> > state variables, or adding an I2C device. These can be now be done with
> > build configuration only, without needing to patch the existing dts
> > files in the Barebox source.
> >
> > The advantage is greater when an external build system, such as Yocto or
> > Buildroot, is being used to build Barebox. The build system can drop in
> > a dts fragment to partition flash and build from unaltered Barebox
> > source. This avoids the need for cumbersome maintenance of patch files
> > to modify Barebox's source for each flash partition layout.
> >
> > Preprocessing the dts file gains another layer, where a generated dts
> > source consisting of an include directive for the original dts source is
> > followed by more includes for each fragment. This is piped to the
> > existing preprocessor call on stdin to avoid another temporary file.
> > cpp/dtc will correctly identify errors in the source files they occur
> > in. The -MT option is used so the cpp auto-dependencies reference the
> > original dts source and not the generated code passed on stdin.
> >
> > A preprocessor macro named after the base dts file, e.g. foo-bar.dts
> > will define foo_bar_dts, will be defined so that the fragments can
> > possibly operate differently based on which image's dts is being built.
> >
> > Signed-off-by: Trent Piepho <trent.piepho@igorinstitute.com>
> > ---
> > Changes from v1:
> > - Remove 2nd config variable for in-tree fragments.
> > - Add macro to preproccessed dts
> >
> > common/Kconfig | 18 ++++++++++++++++++
> > scripts/Makefile.lib | 8 +++++++-
> > 2 files changed, 25 insertions(+), 1 deletion(-)
> >
> > diff --git a/common/Kconfig b/common/Kconfig
> > index a9feae2ae..6fdc14148 100644
> > --- a/common/Kconfig
> > +++ b/common/Kconfig
> > @@ -1091,6 +1091,24 @@ config SYSTEMD_OF_WATCHDOG
> > in the kernel device tree. If the kernel is booted without a device
> > tree or with one that lacks aliases, nothing is added.
> >
> > +config EXTERNAL_DTS_FRAGMENTS
> > + string "external dts file fragments"
> > + depends on OFTREE
> > + help
> > + List of dts fragment files that will be appended to Barebox's device
> > + tree(s) source when building the dtb file(s). If multiple files are
> > + listed, they will be appended in order. Relative filenames will use
> > + the dtc include search path.
> > +
> > + A preprocessor macro based on the name of the main dts will be
> > + defined, which allows the dts fragments to based on which image of a
> > + multi image build they are being used in.
> > +
> > + It not intended that this be put into into Barebox defconfig files.
> > + Instead, it's an external build system, like Yocto or buildroot, to
> > + add dts fragments from outside the Barebox source tree into the
> > + Barebox build.
> > +
> > menu "OP-TEE loading"
> >
> > config OPTEE_SIZE
> > diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib
> > index 80d76b177..4496f1a70 100644
> > --- a/scripts/Makefile.lib
> > +++ b/scripts/Makefile.lib
> > @@ -201,6 +201,7 @@ cpp_flags = -Wp,-MD,$(depfile) $(NOSTDINC_FLAGS) $(__cpp_flags)
> > ld_flags = $(KBUILD_LDFLAGS) $(ldflags-y)
> >
> > dtc_cpp_flags = -Wp,-MD,$(depfile).pre -nostdinc \
> > + -Wp,-MT,$(basename $(notdir $@)).o \
> > -I$(srctree)/arch/$(SRCARCH)/dts/include \
> > -I$(srctree)/dts/include \
> > -I$(srctree)/include \
> > @@ -335,8 +336,13 @@ cmd_dt_S_dtb = $(srctree)/scripts/gen-dtb-s $(subst -,_,$(*F)) $< $(CONFIG_IMD)
> > $(obj)/%.dtb.S: $(obj)/%.dtb $(srctree)/scripts/gen-dtb-s FORCE
> > $(call if_changed,dt_S_dtb)
> >
> > +dts-frags = $(subst $(quote),,$(CONFIG_EXTERNAL_DTS_FRAGMENTS))
> > quiet_cmd_dtc = DTC $@
> > -cmd_dtc = $(CPP) $(dtc_cpp_flags) -x assembler-with-cpp -o $(dtc-tmp) $< ; \
> > +# For compatibility between make 4.2 and 4.3
> > +H := \#
> > +cmd_dtc = /bin/echo -e '$(H)define $(subst -,_,$(*F))_dts 1\n'$(foreach f,$< $(dts-frags),'$(H)include "$(f)"\n') | \
> > + $(CPP) $(dtc_cpp_flags) -x assembler-with-cpp -o $(dtc-tmp) - ; \
> > $(objtree)/scripts/dtc/dtc -O dtb -o $@ -b 0 \
> > -i $(srctree)/arch/$(SRCARCH)/dts $(DTC_FLAGS) \
> > -i $(srctree)/dts/src/$(SRCARCH) \
> > --
> > 2.31.1
> >
> >
> > _______________________________________________
> > barebox mailing list
> > barebox@lists.infradead.org
> > http://lists.infradead.org/mailman/listinfo/barebox
>
>
> --
> Best regards,
> Antony Pavlov
_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox
prev parent reply other threads:[~2022-01-26 22:12 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-09-22 18:13 Trent Piepho
2021-10-01 12:52 ` Sascha Hauer
2022-01-26 12:29 ` Antony Pavlov
2022-01-26 22:10 ` Trent Piepho [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='CAMHeXxOV7bunucQWHCaZBVm8GD-+qpqp9JfShuP-aE6fqz=PFA@mail.gmail.com' \
--to=trent.piepho@igorinstitute.com \
--cc=a.fatoum@pengutronix.de \
--cc=antonynpavlov@gmail.com \
--cc=barebox@lists.infradead.org \
--cc=sha@pengutronix.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox