spl: dm: Kconfig: split OF_CONTROL and OF_PLATDATA between SPL and TPL
authorPhilipp Tomsich <philipp.tomsich@theobroma-systems.com>
Thu, 29 Jun 2017 09:11:21 +0000 (11:11 +0200)
committerPhilipp Tomsich <philipp.tomsich@theobroma-systems.com>
Sun, 13 Aug 2017 15:12:20 +0000 (17:12 +0200)
For the RK3368, we want to use OF_PLATDATA in TPL, but full OF_CONTROL
in SPL: this requires the introduction of a new family of
configuration options to decouple SPL_OF_CONTROL and SPL_OF_PLATDATA
from TPL.

Consequently, Makefile.spl needs to be adjusted to test for these
configuration items through the $(SPL_TPL_) macro instead of
hard-coding the SPL variant.

Signed-off-by: Philipp Tomsich <philipp.tomsich@theobroma-systems.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Tom Rini <trini@konsulko.com>
Makefile
dts/Kconfig
scripts/Makefile.spl

index 50a002e72f1c7756d86a8236243611787feb2758..e1b0b13456bf95acca992065f5c5cbafb9ce15e3 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1400,7 +1400,8 @@ u-boot.lds: $(LDSCRIPT) prepare FORCE
 spl/u-boot-spl.bin: spl/u-boot-spl
        @:
 spl/u-boot-spl: tools prepare \
-               $(if $(CONFIG_OF_SEPARATE)$(CONFIG_SPL_OF_PLATDATA),dts/dt.dtb)
+               $(if $(CONFIG_OF_SEPARATE)$(CONFIG_SPL_OF_PLATDATA),dts/dt.dtb) \
+               $(if $(CONFIG_OF_SEPARATE)$(CONFIG_TPL_OF_PLATDATA),dts/dt.dtb)
        $(Q)$(MAKE) obj=spl -f $(srctree)/scripts/Makefile.spl all
 
 spl/sunxi-spl.bin: spl/u-boot-spl
index 1bc9656faee6565563bac204a29e6efac2320ac1..b4b7ddc1444a0b0b16e275fa0365322f5c05b1c0 100644 (file)
@@ -32,6 +32,14 @@ config SPL_OF_CONTROL
          which is not enough to support device tree. Enable this option to
          allow such boards to be supported by U-Boot SPL.
 
+config TPL_OF_CONTROL
+       bool "Enable run-time configuration via Device Tree in TPL"
+       depends on TPL && OF_CONTROL
+       help
+         Some boards use device tree in U-Boot but only have 4KB of SRAM
+         which is not enough to support device tree. Enable this option to
+         allow such boards to be supported by U-Boot TPL.
+
 config OF_LIVE
        bool "Enable use of a live tree"
        depends on OF_CONTROL
@@ -136,4 +144,25 @@ config SPL_OF_PLATDATA
          declarations for each node. See README.platdata for more
          information.
 
+config TPL_OF_PLATDATA
+       bool "Generate platform data for use in TPL"
+       depends on TPL_OF_CONTROL
+       help
+         For very constrained SPL environments the overhead of decoding
+         device tree nodes and converting their contents into platform data
+         is too large. This overhead includes libfdt code as well as the
+         device tree contents itself. The latter is fairly compact, but the
+         former can add 3KB or more to a Thumb 2 Image.
+
+         This option enables generation of platform data from the device
+         tree as C code. This code creates devices using U_BOOT_DEVICE()
+         declarations. The benefit is that it allows driver code to access
+         the platform data directly in C structures, avoidin the libfdt
+         overhead.
+
+         This option works by generating C structure declarations for each
+         compatible string, then adding platform data and U_BOOT_DEVICE
+         declarations for each node. See README.platdata for more
+         information.
+
 endmenu
index ac3c2c7f1342dedf6e72d674481350fc8a42d0ac..3e35cd610b4e13f7ac70d6c6ba78fc08591e0018 100644 (file)
@@ -98,7 +98,7 @@ endif
 
 u-boot-spl-init := $(head-y)
 u-boot-spl-main := $(libs-y)
-ifdef CONFIG_SPL_OF_PLATDATA
+ifdef CONFIG_$(SPL_TPL_)OF_PLATDATA
 u-boot-spl-platdata := $(obj)/dts/dt-platdata.o
 endif
 
@@ -202,7 +202,7 @@ cmd_cat = cat $(filter-out $(PHONY), $^) > $@
 quiet_cmd_copy = COPY    $@
       cmd_copy = cp $< $@
 
-ifeq ($(CONFIG_SPL_OF_CONTROL)$(CONFIG_OF_SEPARATE)$(CONFIG_SPL_OF_PLATDATA),yy)
+ifeq ($(CONFIG_$(SPL_TPL_)OF_CONTROL)$(CONFIG_OF_SEPARATE)$(CONFIG_$(SPL_TPL_)OF_PLATDATA),yy)
 $(obj)/$(SPL_BIN)-dtb.bin: $(obj)/$(SPL_BIN)-nodtb.bin \
                $(if $(CONFIG_SPL_SEPARATE_BSS),,$(obj)/$(SPL_BIN)-pad.bin) \
                $(obj)/$(SPL_BIN).dtb FORCE