summaryrefslogtreecommitdiffstats
path: root/common
diff options
context:
space:
mode:
authorTrent Piepho <trent.piepho@igorinstitute.com>2021-09-22 11:13:36 -0700
committerSascha Hauer <s.hauer@pengutronix.de>2021-10-05 09:03:39 +0200
commit2ae7ac7ab2f11e2ae7541749d8496ef0bc282c89 (patch)
treea8760e8e2be4a58587ccc527f942c288601bd05e /common
parent866e6e41cda21de6704fef3dae0c8e9c93436968 (diff)
downloadbarebox-2ae7ac7ab2f11e2ae7541749d8496ef0bc282c89.tar.gz
barebox-2ae7ac7ab2f11e2ae7541749d8496ef0bc282c89.tar.xz
kbuild: dtc: Allow adding device tree fragments via config
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> Link: https://lore.barebox.org/20210922181336.1350460-1-trent.piepho@igorinstitute.com Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'common')
-rw-r--r--common/Kconfig24
1 files changed, 24 insertions, 0 deletions
diff --git a/common/Kconfig b/common/Kconfig
index a9feae2ae8..506b1dd39a 100644
--- a/common/Kconfig
+++ b/common/Kconfig
@@ -1091,6 +1091,30 @@ 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. Given the dts filename
+ used for a board is "foo-board.dts" the external dts usage can be
+ limited to that board with
+
+ #ifdef foo_board_dts
+ ...
+ #endif
+
+ 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