dts: add property removal option CONFIG_OF_REMOVE_PROPS
authorAnatolij Gustschin <agust@denx.de>
Sun, 12 Jan 2020 14:57:42 +0000 (15:57 +0100)
committerTom Rini <trini@konsulko.com>
Tue, 28 Jan 2020 00:54:20 +0000 (19:54 -0500)
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@denx.de>
dts/Kconfig
dts/Makefile
scripts/Makefile.lib

index d3313dd08fdf039c26165d63b35aa1b786b88dc1..046a54a17366fc3b194b1941092f1ac353b659c7 100644 (file)
@@ -314,6 +314,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
index 1f83e615e8aa9a07c97e6589a6ae87e25a874569..a20930eb9a5e656bbdedf924e4f754c7da7552e4 100644 (file)
@@ -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
 
index 4ea898a421ce488254b7ea57a973c8ae294980a5..30f392fdfb08ce52d3bf8818da13b6b98aaf8523 100644 (file)
@@ -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)))