[PATCH v2 1/2] dts: add property removal option CONFIG_OF_REMOVE_PROPS
Anatolij Gustschin
agust at denx.de
Sun Jan 12 15:57:42 CET 2020
This can be used for device tree size reduction similar as
CONFIG_OF_SPL_REMOVE_PROPS option. Some boards must pass the
built-in DTB unchanged to the kernel, thus we may not cut it
down unconditionally. Therefore enable the property removal
list option only if CONFIG_OF_DTB_PROPS_REMOVE is selected.
Signed-off-by: Anatolij Gustschin <agust at denx.de>
---
Changes in v2:
- make DT property removal optional (enable it if required
via OF_DTB_PROPS_REMOVE Kconfig option)
- don't touch cmd_shipped, use new cmd_fdt_rm_props instead
- update commit description
- gitlab CI results:
https://gitlab.denx.de/u-boot/custodians/u-boot-video/pipelines/1842
dts/Kconfig | 20 ++++++++++++++++++++
dts/Makefile | 5 +++++
scripts/Makefile.lib | 8 ++++++++
3 files changed, 33 insertions(+)
diff --git a/dts/Kconfig b/dts/Kconfig
index 64c98dd723..d73dfb9549 100644
--- a/dts/Kconfig
+++ b/dts/Kconfig
@@ -311,6 +311,26 @@ config OF_SPL_REMOVE_PROPS
can be discarded. This option defines the list of properties to
discard.
+config OF_DTB_PROPS_REMOVE
+ bool "Enable removal of device tree properties"
+ depends on OF_CONTROL
+ help
+ Some boards have restricted amount of storage for U-Boot image.
+ If the generated binary doesn't fit into available image storage,
+ the built-in device tree could probably be cut down by removing
+ some not required device tree properties to reduce the image size.
+ Enable this option and define the properties to be removed in the
+ CONFIG_OF_REMOVE_PROPS list. Do not enable this option if you must
+ pass the built-in DTB directly to the kernel!
+
+config OF_REMOVE_PROPS
+ string "List of device tree properties to drop"
+ depends on OF_DTB_PROPS_REMOVE
+ default "interrupt-parent interrupts" if PINCTRL
+ help
+ Some properties are not used by U-Boot and can be discarded.
+ This option defines the list of properties to discard.
+
config SPL_OF_PLATDATA
bool "Generate platform data for use in SPL"
depends on SPL_OF_CONTROL
diff --git a/dts/Makefile b/dts/Makefile
index 1f83e615e8..a20930eb9a 100644
--- a/dts/Makefile
+++ b/dts/Makefile
@@ -19,8 +19,13 @@ endif
$(obj)/dt-spl.dtb: $(DTB) $(objtree)/tools/fdtgrep FORCE
$(call if_changed,fdtgrep)
+ifeq ($(CONFIG_OF_DTB_PROPS_REMOVE),y)
+$(obj)/dt.dtb: $(DTB) $(objtree)/tools/fdtgrep FORCE
+ $(call if_changed,fdt_rm_props)
+else
$(obj)/dt.dtb: $(DTB) FORCE
$(call if_changed,shipped)
+endif
targets += dt.dtb dt-spl.dtb
diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib
index 4ea898a421..30f392fdfb 100644
--- a/scripts/Makefile.lib
+++ b/scripts/Makefile.lib
@@ -544,3 +544,11 @@ quiet_cmd_fdtgrep = FDTGREP $@
$(objtree)/tools/fdtgrep -r -O dtb - -o $@ \
-P u-boot,dm-pre-reloc -P u-boot,dm-spl -P u-boot,dm-tpl \
$(addprefix -P ,$(subst $\",,$(CONFIG_OF_SPL_REMOVE_PROPS)))
+
+# fdt_rm_props
+# ---------------------------------------------------------------------------
+# Pass the original device tree file through fdtgrep. This removes various
+# unused properties. The output is typically a smaller device tree file.
+quiet_cmd_fdt_rm_props = FDTGREP $@
+ cmd_fdt_rm_props = cat $< | $(objtree)/tools/fdtgrep -r -O dtb - -o $@ \
+ $(addprefix -P ,$(subst $\",,$(CONFIG_OF_REMOVE_PROPS)))
--
2.17.1
More information about the U-Boot
mailing list