diff mbox

[U-Boot,09/10] kconfig: move CONFIG_OF_* to Kconfig

Message ID 1410079409-28450-10-git-send-email-yamada.m@jp.panasonic.com
State Superseded
Headers show

Commit Message

Masahiro Yamada Sept. 7, 2014, 8:43 a.m. UTC
This commit moves:
  CONFIG_OF_CONTROL
  CONFIG_OF_SEPARATE
  CONFIG_OF_EMBED
  CONFIG_OF_HOSTFILE

Because these options are currently not supported for SPL,
the "Device Tree Control" menu does not appear in the SPL
configuration.

Note:
zynq-common.h should be adjusted so as not to change the
default value of CONFIG_SPL_FAT_LOAD_PAYLOAD_NAME.

Signed-off-by: Masahiro Yamada <yamada.m@jp.panasonic.com>
Cc: Simon Glass <sjg@chromium.org>
Cc: Stephen Warren <swarren@nvidia.com>
Cc: Minkyu Kang <mk7.kang@samsung.com>
Cc: Michal Simek <michal.simek@xilinx.com>
---

 Kconfig                                  |  2 ++
 configs/am335x_boneblack_vboot_defconfig |  1 +
 configs/arndale_defconfig                |  1 +
 configs/beaver_defconfig                 |  1 +
 configs/cardhu_defconfig                 |  1 +
 configs/colibri_t20_iris_defconfig       |  1 +
 configs/colibri_t30_defconfig            |  1 +
 configs/coreboot-x86_defconfig           |  1 +
 configs/dalmore_defconfig                |  1 +
 configs/harmony_defconfig                |  1 +
 configs/jetson-tk1_defconfig             |  1 +
 configs/medcom-wide_defconfig            |  1 +
 configs/microblaze-generic_defconfig     |  2 ++
 configs/origen_defconfig                 |  1 +
 configs/paz00_defconfig                  |  1 +
 configs/peach-pit_defconfig              |  1 +
 configs/plutux_defconfig                 |  1 +
 configs/s5pc210_universal_defconfig      |  1 +
 configs/sandbox_defconfig                |  1 +
 configs/seaboard_defconfig               |  1 +
 configs/smdk5250_defconfig               |  1 +
 configs/smdk5420_defconfig               |  1 +
 configs/snow_defconfig                   |  1 +
 configs/tec-ng_defconfig                 |  1 +
 configs/tec_defconfig                    |  1 +
 configs/trats2_defconfig                 |  1 +
 configs/trats_defconfig                  |  1 +
 configs/trimslice_defconfig              |  1 +
 configs/venice2_defconfig                |  1 +
 configs/ventana_defconfig                |  1 +
 configs/whistler_defconfig               |  1 +
 configs/zynq_microzed_defconfig          |  1 +
 configs/zynq_zc70x_defconfig             |  1 +
 configs/zynq_zc770_xm010_defconfig       |  1 +
 configs/zynq_zc770_xm012_defconfig       |  1 +
 configs/zynq_zc770_xm013_defconfig       |  1 +
 configs/zynq_zed_defconfig               |  1 +
 dts/Kconfig                              | 46 ++++++++++++++++++++++++++++++++
 include/configs/am335x_evm.h             |  2 --
 include/configs/arndale.h                |  2 --
 include/configs/beaver.h                 |  2 --
 include/configs/cardhu.h                 |  2 --
 include/configs/colibri_t20_iris.h       |  2 --
 include/configs/colibri_t30.h            |  2 --
 include/configs/coreboot.h               |  2 --
 include/configs/dalmore.h                |  2 --
 include/configs/exynos4-dt.h             |  2 --
 include/configs/exynos5-dt.h             |  2 --
 include/configs/harmony.h                |  2 --
 include/configs/jetson-tk1.h             |  2 --
 include/configs/medcom-wide.h            |  2 --
 include/configs/microblaze-generic.h     |  2 --
 include/configs/mx6qsabreauto.h          |  1 -
 include/configs/paz00.h                  |  2 --
 include/configs/plutux.h                 |  2 --
 include/configs/sandbox.h                |  2 --
 include/configs/seaboard.h               |  2 --
 include/configs/tec-ng.h                 |  2 --
 include/configs/tec.h                    |  2 --
 include/configs/tegra-common-post.h      |  1 -
 include/configs/trimslice.h              |  2 --
 include/configs/venice2.h                |  2 --
 include/configs/ventana.h                |  2 --
 include/configs/whistler.h               |  2 --
 include/configs/zynq-common.h            |  9 +------
 65 files changed, 86 insertions(+), 58 deletions(-)
 create mode 100644 dts/Kconfig

Comments

Stephen Warren Sept. 8, 2014, 3:04 p.m. UTC | #1
On 09/07/2014 02:43 AM, Masahiro Yamada wrote:
> This commit moves:
>    CONFIG_OF_CONTROL
>    CONFIG_OF_SEPARATE
>    CONFIG_OF_EMBED
>    CONFIG_OF_HOSTFILE
>
> Because these options are currently not supported for SPL,
> the "Device Tree Control" menu does not appear in the SPL
> configuration.
>
> Note:
> zynq-common.h should be adjusted so as not to change the
> default value of CONFIG_SPL_FAT_LOAD_PAYLOAD_NAME.

I don't believe this is the correct approach; CONFIG_OF_CONTROL isn't a 
user-configurable option, and hence shouldn't show up in *_defconfig. 
"select OF_CONTROL" in a Kconfig file probably makes sense though.
Masahiro Yamada Sept. 8, 2014, 3:57 p.m. UTC | #2
Hi Stephen,



2014-09-09 0:04 GMT+09:00 Stephen Warren <swarren@wwwdotorg.org>:

> I don't believe this is the correct approach; CONFIG_OF_CONTROL isn't a
> user-configurable option, and hence shouldn't show up in *_defconfig.
> "select OF_CONTROL" in a Kconfig file probably makes sense though.


I think it depends on the board (SoC).

In my understanding,  Zynq boards should work with/without Device Tree control.
(Moreover, Zynq boards work with/without  SPL)

At least as for Zynq,
CONFIG_OF_CONTROL  ( and CONFIG_SPL too) is a user-configurable option.

(Michal, please correct me if I am wrong.)


I am not familiar with Tegra SoCs, but
do Tegra boards always Device Tree? ( and only work with SPL ?)

If so,

config TEGRA
        select SPL
        select OF_CONTROL

looks better?
Stephen Warren Sept. 8, 2014, 3:58 p.m. UTC | #3
On 09/08/2014 09:57 AM, Masahiro YAMADA wrote:
> Hi Stephen,
>
>
>
> 2014-09-09 0:04 GMT+09:00 Stephen Warren <swarren@wwwdotorg.org>:
>
>> I don't believe this is the correct approach; CONFIG_OF_CONTROL isn't a
>> user-configurable option, and hence shouldn't show up in *_defconfig.
>> "select OF_CONTROL" in a Kconfig file probably makes sense though.
>
>
> I think it depends on the board (SoC).
>
> In my understanding,  Zynq boards should work with/without Device Tree control.
> (Moreover, Zynq boards work with/without  SPL)
>
> At least as for Zynq,
> CONFIG_OF_CONTROL  ( and CONFIG_SPL too) is a user-configurable option.
>
> (Michal, please correct me if I am wrong.)
>
>
> I am not familiar with Tegra SoCs, but
> do Tegra boards always Device Tree? ( and only work with SPL ?)
>
> If so,
>
> config TEGRA
>          select SPL
>          select OF_CONTROL
>
> looks better?

That looks correct for Tegra.
Masahiro Yamada Sept. 8, 2014, 4:10 p.m. UTC | #4
Hi Stephen,


2014-09-09 0:58 GMT+09:00 Stephen Warren <swarren@wwwdotorg.org>:
> On 09/08/2014 09:57 AM, Masahiro YAMADA wrote:
>>
>> Hi Stephen,
>>
>>
>>
>> 2014-09-09 0:04 GMT+09:00 Stephen Warren <swarren@wwwdotorg.org>:
>>
>>> I don't believe this is the correct approach; CONFIG_OF_CONTROL isn't a
>>> user-configurable option, and hence shouldn't show up in *_defconfig.
>>> "select OF_CONTROL" in a Kconfig file probably makes sense though.
>>
>>
>>
>> I think it depends on the board (SoC).
>>
>> In my understanding,  Zynq boards should work with/without Device Tree
>> control.
>> (Moreover, Zynq boards work with/without  SPL)
>>
>> At least as for Zynq,
>> CONFIG_OF_CONTROL  ( and CONFIG_SPL too) is a user-configurable option.
>>
>> (Michal, please correct me if I am wrong.)
>>
>>
>> I am not familiar with Tegra SoCs, but
>> do Tegra boards always Device Tree? ( and only work with SPL ?)
>>
>> If so,
>>
>> config TEGRA
>>          select SPL
>>          select OF_CONTROL
>>
>> looks better?
>
>
> That looks correct for Tegra.
>

OK.  I will send v2.
CONFIG_OF_CONTROL in tegra defconfigs will go away.


(BTW, I forgot to mention a famous board; beaglebone black.

am335_boneblack_defconfig disables CONFIG_OF_CONTROL,
whereas am335_boneblack_vboot_defconfig enables it. )
Masahiro Yamada Sept. 8, 2014, 4:25 p.m. UTC | #5
Hi  Samsung developers,
Simon Glass,


2014-09-09 1:10 GMT+09:00 Masahiro YAMADA <yamada.m@jp.panasonic.com>:
> Hi Stephen,
>
>
> 2014-09-09 0:58 GMT+09:00 Stephen Warren <swarren@wwwdotorg.org>:
>> On 09/08/2014 09:57 AM, Masahiro YAMADA wrote:
>>>
>>> Hi Stephen,
>>>
>>>
>>>
>>> 2014-09-09 0:04 GMT+09:00 Stephen Warren <swarren@wwwdotorg.org>:
>>>
>>>> I don't believe this is the correct approach; CONFIG_OF_CONTROL isn't a
>>>> user-configurable option, and hence shouldn't show up in *_defconfig.
>>>> "select OF_CONTROL" in a Kconfig file probably makes sense though.
>>>
>>>
>>>
>>> I think it depends on the board (SoC).
>>>
>>> In my understanding,  Zynq boards should work with/without Device Tree
>>> control.
>>> (Moreover, Zynq boards work with/without  SPL)
>>>
>>> At least as for Zynq,
>>> CONFIG_OF_CONTROL  ( and CONFIG_SPL too) is a user-configurable option.
>>>
>>> (Michal, please correct me if I am wrong.)
>>>
>>>
>>> I am not familiar with Tegra SoCs, but
>>> do Tegra boards always Device Tree? ( and only work with SPL ?)
>>>
>>> If so,
>>>
>>> config TEGRA
>>>          select SPL
>>>          select OF_CONTROL
>>>
>>> looks better?
>>
>>
>> That looks correct for Tegra.
>>
>
> OK.  I will send v2.
> CONFIG_OF_CONTROL in tegra defconfigs will go away.
>
>
> (BTW, I forgot to mention a famous board; beaglebone black.
>
> am335_boneblack_defconfig disables CONFIG_OF_CONTROL,
> whereas am335_boneblack_vboot_defconfig enables it. )
>

Before posting v2 of this series,
please let me ask the same question on Exynos and Sandbox


Do Exynos boards always need Device Tree to run U-Boot?
(that is,  CONFIG_OF_CONTROL must be "select"ed.)

or

Do they work with/without Device Tree?
(that is, users can enable/disable via "make menuconfig" or friends.)


What about Sandbox?




Best Regards
Masahiro Yamada
Daniel Schwierzeck Sept. 8, 2014, 7:23 p.m. UTC | #6
Hi Masahiro,

On 07.09.2014 10:43, Masahiro Yamada wrote:
> This commit moves:
>   CONFIG_OF_CONTROL
>   CONFIG_OF_SEPARATE
>   CONFIG_OF_EMBED
>   CONFIG_OF_HOSTFILE
> 
> Because these options are currently not supported for SPL,
> the "Device Tree Control" menu does not appear in the SPL
> configuration.
> 
> Note:
> zynq-common.h should be adjusted so as not to change the
> default value of CONFIG_SPL_FAT_LOAD_PAYLOAD_NAME.
> 
> Signed-off-by: Masahiro Yamada <yamada.m@jp.panasonic.com>
> Cc: Simon Glass <sjg@chromium.org>
> Cc: Stephen Warren <swarren@nvidia.com>
> Cc: Minkyu Kang <mk7.kang@samsung.com>
> Cc: Michal Simek <michal.simek@xilinx.com>
> ---

[...]

> diff --git a/dts/Kconfig b/dts/Kconfig
> new file mode 100644
> index 0000000..98b2357
> --- /dev/null
> +++ b/dts/Kconfig
> @@ -0,0 +1,46 @@
> +#
> +# Device Tree Control
> +#
> +# TODO:
> +#   This feature is not currently supported for SPL,
> +#    but this restriction should be removed in the future.
> +
> +menu "Device Tree Control"
> +	depends on !SPL_BUILD
> +	depends on ARM || MICROBLAZE || SANDBOX || X86

I suggest to use boolean symbols HAS_* or SUPPORTS_* like the kernel
does. For example:

config SUPPORTS_OF_CONTROL
        bool

menu "Device Tree Control"
        depends on !SPL_BUILD
        depends on SUPPORTS_OF_CONTROL


arch/Kconfig:
config ARM
        bool "ARM architecture"
        select SUPPORTS_OF_CONTROL


> +
> +config OF_CONTROL
> +	bool "Run-time configuration via Device Tree"
> +	help
> +	  This feature provides for run-time configuration of U-Boot
> +	  via a flattened device tree.
> +
> +choice
> +	prompt "Provider of DTB for DT control"
> +	depends on OF_CONTROL
> +	default OF_HOSTFILE if SANDBOX
> +	default OF_SEPARATE
> +
> +config OF_SEPARATE
> +	bool "Separate DTB for DT control"
> +	help
> +	  If this option is enabled, the device tree will be built and
> +	  placed as a separate u-boot.dtb file alongside the U-Boot image.
> +
> +config OF_EMBED
> +	bool "Embedded DTB for DT control"
> +	help
> +	  If this option is enabled, the device tree will be picked up and
> +	  built into the U-Boot image.
> +
> +config OF_HOSTFILE
> +	bool "Host filed DTB for DT control"
> +	depends on SANDBOX
> +	help
> +	  If this option is enabled, DTB will be read from a file on startup.
> +	  This is only useful for Sandbox.  Use the -d flag to U-Boot to
> +	  specify the file to read.
> +
> +endchoice
> +
> +endmenu
>
Masahiro Yamada Sept. 9, 2014, 2:45 a.m. UTC | #7
Hi Daniel,


On Mon, 08 Sep 2014 21:23:05 +0200
Daniel Schwierzeck <daniel.schwierzeck@gmail.com> wrote:

> 
> > diff --git a/dts/Kconfig b/dts/Kconfig
> > new file mode 100644
> > index 0000000..98b2357
> > --- /dev/null
> > +++ b/dts/Kconfig
> > @@ -0,0 +1,46 @@
> > +#
> > +# Device Tree Control
> > +#
> > +# TODO:
> > +#   This feature is not currently supported for SPL,
> > +#    but this restriction should be removed in the future.
> > +
> > +menu "Device Tree Control"
> > +	depends on !SPL_BUILD
> > +	depends on ARM || MICROBLAZE || SANDBOX || X86
> 
> I suggest to use boolean symbols HAS_* or SUPPORTS_* like the kernel
> does. For example:
> 
> config SUPPORTS_OF_CONTROL
>         bool
> 
> menu "Device Tree Control"
>         depends on !SPL_BUILD
>         depends on SUPPORTS_OF_CONTROL
> 
> 
> arch/Kconfig:
> config ARM
>         bool "ARM architecture"
>         select SUPPORTS_OF_CONTROL
> 

Good idea,
altough HAVE_* seems more common:

In Linux 3.17-rc4,

$ find . -name 'Kconfig*' | xargs grep HAVE_ | wc
   1332    4394   71649
$ find . -name 'Kconfig*' | xargs grep HAS_ | wc
    760    2744   40496
$ find . -name 'Kconfig*' | xargs grep SUPPORTS_ | wc
    487    1571   26996


Besides, Documentation/kbuild/kconfig-language.txt
suggests to do so.

---------------------------8<---------------------------

Adding common features and make the usage configurable
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
It is a common idiom to implement a feature/functionality that are
relevant for some architectures but not all.
The recommended way to do so is to use a config variable named HAVE_*
that is defined in a common Kconfig file and selected by the relevant
architectures.
An example is the generic IOMAP functionality.

We would in lib/Kconfig see:

# Generic IOMAP is used to ...
config HAVE_GENERIC_IOMAP

config GENERIC_IOMAP
        depends on HAVE_GENERIC_IOMAP && FOO

And in lib/Makefile we would see:
obj-$(CONFIG_GENERIC_IOMAP) += iomap.o

For each architecture using the generic IOMAP functionality we would see:

config X86
        select ...
        select HAVE_GENERIC_IOMAP
        select ...

Note: we use the existing config option and avoid creating a new
config variable to select HAVE_GENERIC_IOMAP.

Note: the use of the internal config variable HAVE_GENERIC_IOMAP, it is
introduced to overcome the limitation of select which will force a
config option to 'y' no matter the dependencies.
The dependencies are moved to the symbol GENERIC_IOMAP and we avoid the
situation where select forces a symbol equals to 'y'.

---------------------------->8----------------------------



I was also thinking to add  HAVE_SPL_SUPPORT.


config SPL
        bool "Enable SPL"
        depends on HAVE_SPL_SUPPORT




Best Regards
Masahiro Yamada
Michal Simek Sept. 16, 2014, 12:05 p.m. UTC | #8
On 09/08/2014 05:57 PM, Masahiro YAMADA wrote:
> Hi Stephen,
> 
> 
> 
> 2014-09-09 0:04 GMT+09:00 Stephen Warren <swarren@wwwdotorg.org>:
> 
>> I don't believe this is the correct approach; CONFIG_OF_CONTROL isn't a
>> user-configurable option, and hence shouldn't show up in *_defconfig.
>> "select OF_CONTROL" in a Kconfig file probably makes sense though.
> 
> 
> I think it depends on the board (SoC).
> 
> In my understanding,  Zynq boards should work with/without Device Tree control.
> (Moreover, Zynq boards work with/without  SPL)
> 
> At least as for Zynq,
> CONFIG_OF_CONTROL  ( and CONFIG_SPL too) is a user-configurable option.
> 
> (Michal, please correct me if I am wrong.)

I don't want to restrict people with thing which they want to do that's why
both options are just there.

Thanks,
Michal
diff mbox

Patch

diff --git a/Kconfig b/Kconfig
index fc5e7cd..e0c8992 100644
--- a/Kconfig
+++ b/Kconfig
@@ -106,6 +106,8 @@  source "arch/Kconfig"
 
 source "common/Kconfig"
 
+source "dts/Kconfig"
+
 source "net/Kconfig"
 
 source "drivers/Kconfig"
diff --git a/configs/am335x_boneblack_vboot_defconfig b/configs/am335x_boneblack_vboot_defconfig
index 00317c4..af7ceca 100644
--- a/configs/am335x_boneblack_vboot_defconfig
+++ b/configs/am335x_boneblack_vboot_defconfig
@@ -2,3 +2,4 @@  CONFIG_SPL=y
 CONFIG_SYS_EXTRA_OPTIONS="SERIAL1,CONS_INDEX=1,EMMC_BOOT,ENABLE_VBOOT"
 +S:CONFIG_ARM=y
 +S:CONFIG_TARGET_AM335X_EVM=y
+CONFIG_OF_CONTROL=y
diff --git a/configs/arndale_defconfig b/configs/arndale_defconfig
index 7ea5c0d..737bb3e 100644
--- a/configs/arndale_defconfig
+++ b/configs/arndale_defconfig
@@ -2,3 +2,4 @@  CONFIG_SPL=y
 +S:CONFIG_ARM=y
 +S:CONFIG_ARCH_EXYNOS=y
 +S:CONFIG_TARGET_ARNDALE=y
+CONFIG_OF_CONTROL=y
diff --git a/configs/beaver_defconfig b/configs/beaver_defconfig
index 7c9d94b..9427faf 100644
--- a/configs/beaver_defconfig
+++ b/configs/beaver_defconfig
@@ -2,3 +2,4 @@ 
 +S:CONFIG_TEGRA=y
 +S:CONFIG_TEGRA30=y
 +S:CONFIG_TARGET_BEAVER=y
+CONFIG_OF_CONTROL=y
diff --git a/configs/cardhu_defconfig b/configs/cardhu_defconfig
index bb042b4..232a778 100644
--- a/configs/cardhu_defconfig
+++ b/configs/cardhu_defconfig
@@ -2,3 +2,4 @@ 
 +S:CONFIG_TEGRA=y
 +S:CONFIG_TEGRA30=y
 +S:CONFIG_TARGET_CARDHU=y
+CONFIG_OF_CONTROL=y
diff --git a/configs/colibri_t20_iris_defconfig b/configs/colibri_t20_iris_defconfig
index b2a21e1..094fb9f 100644
--- a/configs/colibri_t20_iris_defconfig
+++ b/configs/colibri_t20_iris_defconfig
@@ -2,3 +2,4 @@ 
 +S:CONFIG_TEGRA=y
 +S:CONFIG_TEGRA20=y
 +S:CONFIG_TARGET_COLIBRI_T20_IRIS=y
+CONFIG_OF_CONTROL=y
diff --git a/configs/colibri_t30_defconfig b/configs/colibri_t30_defconfig
index abb41f3..5f35fa1 100644
--- a/configs/colibri_t30_defconfig
+++ b/configs/colibri_t30_defconfig
@@ -2,3 +2,4 @@ 
 +S:CONFIG_TEGRA=y
 +S:CONFIG_TEGRA30=y
 +S:CONFIG_TARGET_COLIBRI_T30=y
+CONFIG_OF_CONTROL=y
diff --git a/configs/coreboot-x86_defconfig b/configs/coreboot-x86_defconfig
index a06c527..3cc034a 100644
--- a/configs/coreboot-x86_defconfig
+++ b/configs/coreboot-x86_defconfig
@@ -1,3 +1,4 @@ 
 CONFIG_SYS_EXTRA_OPTIONS="SYS_TEXT_BASE=0x01110000"
 CONFIG_X86=y
 CONFIG_TARGET_COREBOOT=y
+CONFIG_OF_CONTROL=y
diff --git a/configs/dalmore_defconfig b/configs/dalmore_defconfig
index 70677aa..ca6b664 100644
--- a/configs/dalmore_defconfig
+++ b/configs/dalmore_defconfig
@@ -2,3 +2,4 @@ 
 +S:CONFIG_TEGRA=y
 +S:CONFIG_TEGRA114=y
 +S:CONFIG_TARGET_DALMORE=y
+CONFIG_OF_CONTROL=y
diff --git a/configs/harmony_defconfig b/configs/harmony_defconfig
index a52231b..d29e8d2 100644
--- a/configs/harmony_defconfig
+++ b/configs/harmony_defconfig
@@ -2,3 +2,4 @@ 
 +S:CONFIG_TEGRA=y
 +S:CONFIG_TEGRA20=y
 +S:CONFIG_TARGET_HARMONY=y
+CONFIG_OF_CONTROL=y
diff --git a/configs/jetson-tk1_defconfig b/configs/jetson-tk1_defconfig
index 00eac92..1c385a6 100644
--- a/configs/jetson-tk1_defconfig
+++ b/configs/jetson-tk1_defconfig
@@ -2,3 +2,4 @@ 
 +S:CONFIG_TEGRA=y
 +S:CONFIG_TEGRA124=y
 +S:CONFIG_TARGET_JETSON_TK1=y
+CONFIG_OF_CONTROL=y
diff --git a/configs/medcom-wide_defconfig b/configs/medcom-wide_defconfig
index e9a3930..5674e9b 100644
--- a/configs/medcom-wide_defconfig
+++ b/configs/medcom-wide_defconfig
@@ -2,3 +2,4 @@ 
 +S:CONFIG_TEGRA=y
 +S:CONFIG_TEGRA20=y
 +S:CONFIG_TARGET_MEDCOM_WIDE=y
+CONFIG_OF_CONTROL=y
diff --git a/configs/microblaze-generic_defconfig b/configs/microblaze-generic_defconfig
index 7f23786..1dc7441 100644
--- a/configs/microblaze-generic_defconfig
+++ b/configs/microblaze-generic_defconfig
@@ -1,3 +1,5 @@ 
 CONFIG_SPL=y
 +S:CONFIG_MICROBLAZE=y
 +S:CONFIG_TARGET_MICROBLAZE_GENERIC=y
+CONFIG_OF_CONTROL=y
+CONFIG_OF_EMBED=y
diff --git a/configs/origen_defconfig b/configs/origen_defconfig
index aa92381..1d712e8 100644
--- a/configs/origen_defconfig
+++ b/configs/origen_defconfig
@@ -2,3 +2,4 @@  CONFIG_SPL=y
 +S:CONFIG_ARM=y
 +S:CONFIG_ARCH_EXYNOS=y
 +S:CONFIG_TARGET_ORIGEN=y
+CONFIG_OF_CONTROL=y
diff --git a/configs/paz00_defconfig b/configs/paz00_defconfig
index 05974eb..a682f4c 100644
--- a/configs/paz00_defconfig
+++ b/configs/paz00_defconfig
@@ -2,3 +2,4 @@ 
 +S:CONFIG_TEGRA=y
 +S:CONFIG_TEGRA20=y
 +S:CONFIG_TARGET_PAZ00=y
+CONFIG_OF_CONTROL=y
diff --git a/configs/peach-pit_defconfig b/configs/peach-pit_defconfig
index 797d5e0..9f3530a 100644
--- a/configs/peach-pit_defconfig
+++ b/configs/peach-pit_defconfig
@@ -2,3 +2,4 @@  CONFIG_SPL=y
 +S:CONFIG_ARM=y
 +S:CONFIG_ARCH_EXYNOS=y
 +S:CONFIG_TARGET_PEACH_PIT=y
+CONFIG_OF_CONTROL=y
diff --git a/configs/plutux_defconfig b/configs/plutux_defconfig
index 60e80ff..03374fe 100644
--- a/configs/plutux_defconfig
+++ b/configs/plutux_defconfig
@@ -2,3 +2,4 @@ 
 +S:CONFIG_TEGRA=y
 +S:CONFIG_TEGRA20=y
 +S:CONFIG_TARGET_PLUTUX=y
+CONFIG_OF_CONTROL=y
diff --git a/configs/s5pc210_universal_defconfig b/configs/s5pc210_universal_defconfig
index a9a3446..0a3ad0d 100644
--- a/configs/s5pc210_universal_defconfig
+++ b/configs/s5pc210_universal_defconfig
@@ -1,3 +1,4 @@ 
 CONFIG_ARM=y
 CONFIG_ARCH_EXYNOS=y
 CONFIG_TARGET_S5PC210_UNIVERSAL=y
+CONFIG_OF_CONTROL=y
diff --git a/configs/sandbox_defconfig b/configs/sandbox_defconfig
index e69de29..dd84281 100644
--- a/configs/sandbox_defconfig
+++ b/configs/sandbox_defconfig
@@ -0,0 +1 @@ 
+CONFIG_OF_CONTROL=y
diff --git a/configs/seaboard_defconfig b/configs/seaboard_defconfig
index 516e760..9e2028b 100644
--- a/configs/seaboard_defconfig
+++ b/configs/seaboard_defconfig
@@ -2,3 +2,4 @@ 
 +S:CONFIG_TEGRA=y
 +S:CONFIG_TEGRA20=y
 +S:CONFIG_TARGET_SEABOARD=y
+CONFIG_OF_CONTROL=y
diff --git a/configs/smdk5250_defconfig b/configs/smdk5250_defconfig
index 465a75a..5cdfa63 100644
--- a/configs/smdk5250_defconfig
+++ b/configs/smdk5250_defconfig
@@ -2,3 +2,4 @@  CONFIG_SPL=y
 +S:CONFIG_ARM=y
 +S:CONFIG_ARCH_EXYNOS=y
 +S:CONFIG_TARGET_SMDK5250=y
+CONFIG_OF_CONTROL=y
diff --git a/configs/smdk5420_defconfig b/configs/smdk5420_defconfig
index 9dc43f2..4619c62 100644
--- a/configs/smdk5420_defconfig
+++ b/configs/smdk5420_defconfig
@@ -2,3 +2,4 @@  CONFIG_SPL=y
 +S:CONFIG_ARM=y
 +S:CONFIG_ARCH_EXYNOS=y
 +S:CONFIG_TARGET_SMDK5420=y
+CONFIG_OF_CONTROL=y
diff --git a/configs/snow_defconfig b/configs/snow_defconfig
index 2d59046..c201c84 100644
--- a/configs/snow_defconfig
+++ b/configs/snow_defconfig
@@ -2,3 +2,4 @@  CONFIG_SPL=y
 +S:CONFIG_ARM=y
 +S:CONFIG_ARCH_EXYNOS=y
 +S:CONFIG_TARGET_SNOW=y
+CONFIG_OF_CONTROL=y
diff --git a/configs/tec-ng_defconfig b/configs/tec-ng_defconfig
index e4a31cc..501d449 100644
--- a/configs/tec-ng_defconfig
+++ b/configs/tec-ng_defconfig
@@ -2,3 +2,4 @@ 
 +S:CONFIG_TEGRA=y
 +S:CONFIG_TEGRA30=y
 +S:CONFIG_TARGET_TEC_NG=y
+CONFIG_OF_CONTROL=y
diff --git a/configs/tec_defconfig b/configs/tec_defconfig
index 62a9542..fe743f9 100644
--- a/configs/tec_defconfig
+++ b/configs/tec_defconfig
@@ -2,3 +2,4 @@ 
 +S:CONFIG_TEGRA=y
 +S:CONFIG_TEGRA20=y
 +S:CONFIG_TARGET_TEC=y
+CONFIG_OF_CONTROL=y
diff --git a/configs/trats2_defconfig b/configs/trats2_defconfig
index fa82724..666011c 100644
--- a/configs/trats2_defconfig
+++ b/configs/trats2_defconfig
@@ -1,3 +1,4 @@ 
 CONFIG_ARM=y
 CONFIG_ARCH_EXYNOS=y
 CONFIG_TARGET_TRATS2=y
+CONFIG_OF_CONTROL=y
diff --git a/configs/trats_defconfig b/configs/trats_defconfig
index f888a51..6ef4b33 100644
--- a/configs/trats_defconfig
+++ b/configs/trats_defconfig
@@ -1,3 +1,4 @@ 
 CONFIG_ARM=y
 CONFIG_ARCH_EXYNOS=y
 CONFIG_TARGET_TRATS=y
+CONFIG_OF_CONTROL=y
diff --git a/configs/trimslice_defconfig b/configs/trimslice_defconfig
index 94f23e3..8b1a13e 100644
--- a/configs/trimslice_defconfig
+++ b/configs/trimslice_defconfig
@@ -2,3 +2,4 @@ 
 +S:CONFIG_TEGRA=y
 +S:CONFIG_TEGRA20=y
 +S:CONFIG_TARGET_TRIMSLICE=y
+CONFIG_OF_CONTROL=y
diff --git a/configs/venice2_defconfig b/configs/venice2_defconfig
index dfc5407..3897862 100644
--- a/configs/venice2_defconfig
+++ b/configs/venice2_defconfig
@@ -2,3 +2,4 @@ 
 +S:CONFIG_TEGRA=y
 +S:CONFIG_TEGRA124=y
 +S:CONFIG_TARGET_VENICE2=y
+CONFIG_OF_CONTROL=y
diff --git a/configs/ventana_defconfig b/configs/ventana_defconfig
index 845e241..7398d11 100644
--- a/configs/ventana_defconfig
+++ b/configs/ventana_defconfig
@@ -2,3 +2,4 @@ 
 +S:CONFIG_TEGRA=y
 +S:CONFIG_TEGRA20=y
 +S:CONFIG_TARGET_VENTANA=y
+CONFIG_OF_CONTROL=y
diff --git a/configs/whistler_defconfig b/configs/whistler_defconfig
index 8c07c18..a275005 100644
--- a/configs/whistler_defconfig
+++ b/configs/whistler_defconfig
@@ -2,3 +2,4 @@ 
 +S:CONFIG_TEGRA=y
 +S:CONFIG_TEGRA20=y
 +S:CONFIG_TARGET_WHISTLER=y
+CONFIG_OF_CONTROL=y
diff --git a/configs/zynq_microzed_defconfig b/configs/zynq_microzed_defconfig
index 3aedb35..9767863 100644
--- a/configs/zynq_microzed_defconfig
+++ b/configs/zynq_microzed_defconfig
@@ -2,3 +2,4 @@  CONFIG_SPL=y
 +S:CONFIG_ARM=y
 +S:CONFIG_ZYNQ=y
 +S:CONFIG_TARGET_ZYNQ_MICROZED=y
+CONFIG_OF_CONTROL=y
diff --git a/configs/zynq_zc70x_defconfig b/configs/zynq_zc70x_defconfig
index 04c8def..d303f97 100644
--- a/configs/zynq_zc70x_defconfig
+++ b/configs/zynq_zc70x_defconfig
@@ -2,3 +2,4 @@  CONFIG_SPL=y
 +S:CONFIG_ARM=y
 +S:CONFIG_ZYNQ=y
 +S:CONFIG_TARGET_ZYNQ_ZC70X=y
+CONFIG_OF_CONTROL=y
diff --git a/configs/zynq_zc770_xm010_defconfig b/configs/zynq_zc770_xm010_defconfig
index 1178b40..4e6660f 100644
--- a/configs/zynq_zc770_xm010_defconfig
+++ b/configs/zynq_zc770_xm010_defconfig
@@ -3,3 +3,4 @@  CONFIG_SYS_EXTRA_OPTIONS="ZC770_XM010"
 +S:CONFIG_ARM=y
 +S:CONFIG_ZYNQ=y
 +S:CONFIG_TARGET_ZYNQ_ZC770=y
+CONFIG_OF_CONTROL=y
diff --git a/configs/zynq_zc770_xm012_defconfig b/configs/zynq_zc770_xm012_defconfig
index 52c2121..16d62e6 100644
--- a/configs/zynq_zc770_xm012_defconfig
+++ b/configs/zynq_zc770_xm012_defconfig
@@ -3,3 +3,4 @@  CONFIG_SYS_EXTRA_OPTIONS="ZC770_XM012"
 +S:CONFIG_ARM=y
 +S:CONFIG_ZYNQ=y
 +S:CONFIG_TARGET_ZYNQ_ZC770=y
+CONFIG_OF_CONTROL=y
diff --git a/configs/zynq_zc770_xm013_defconfig b/configs/zynq_zc770_xm013_defconfig
index 836809a..7343a64 100644
--- a/configs/zynq_zc770_xm013_defconfig
+++ b/configs/zynq_zc770_xm013_defconfig
@@ -3,3 +3,4 @@  CONFIG_SYS_EXTRA_OPTIONS="ZC770_XM013"
 +S:CONFIG_ARM=y
 +S:CONFIG_ZYNQ=y
 +S:CONFIG_TARGET_ZYNQ_ZC770=y
+CONFIG_OF_CONTROL=y
diff --git a/configs/zynq_zed_defconfig b/configs/zynq_zed_defconfig
index 2337906..38d5fa6 100644
--- a/configs/zynq_zed_defconfig
+++ b/configs/zynq_zed_defconfig
@@ -2,3 +2,4 @@  CONFIG_SPL=y
 +S:CONFIG_ARM=y
 +S:CONFIG_ZYNQ=y
 +S:CONFIG_TARGET_ZYNQ_ZED=y
+CONFIG_OF_CONTROL=y
diff --git a/dts/Kconfig b/dts/Kconfig
new file mode 100644
index 0000000..98b2357
--- /dev/null
+++ b/dts/Kconfig
@@ -0,0 +1,46 @@ 
+#
+# Device Tree Control
+#
+# TODO:
+#   This feature is not currently supported for SPL,
+#    but this restriction should be removed in the future.
+
+menu "Device Tree Control"
+	depends on !SPL_BUILD
+	depends on ARM || MICROBLAZE || SANDBOX || X86
+
+config OF_CONTROL
+	bool "Run-time configuration via Device Tree"
+	help
+	  This feature provides for run-time configuration of U-Boot
+	  via a flattened device tree.
+
+choice
+	prompt "Provider of DTB for DT control"
+	depends on OF_CONTROL
+	default OF_HOSTFILE if SANDBOX
+	default OF_SEPARATE
+
+config OF_SEPARATE
+	bool "Separate DTB for DT control"
+	help
+	  If this option is enabled, the device tree will be built and
+	  placed as a separate u-boot.dtb file alongside the U-Boot image.
+
+config OF_EMBED
+	bool "Embedded DTB for DT control"
+	help
+	  If this option is enabled, the device tree will be picked up and
+	  built into the U-Boot image.
+
+config OF_HOSTFILE
+	bool "Host filed DTB for DT control"
+	depends on SANDBOX
+	help
+	  If this option is enabled, DTB will be read from a file on startup.
+	  This is only useful for Sandbox.  Use the -d flag to U-Boot to
+	  specify the file to read.
+
+endchoice
+
+endmenu
diff --git a/include/configs/am335x_evm.h b/include/configs/am335x_evm.h
index df1a6fc..47a173f 100644
--- a/include/configs/am335x_evm.h
+++ b/include/configs/am335x_evm.h
@@ -23,8 +23,6 @@ 
 # define CONFIG_TIMESTAMP
 # define CONFIG_LZO
 # ifdef CONFIG_ENABLE_VBOOT
-#  define CONFIG_OF_CONTROL
-#  define CONFIG_OF_SEPARATE
 #  define CONFIG_DEFAULT_DEVICE_TREE am335x-boneblack
 #  define CONFIG_FIT_SIGNATURE
 #  define CONFIG_RSA
diff --git a/include/configs/arndale.h b/include/configs/arndale.h
index 75f9933..7f06907 100644
--- a/include/configs/arndale.h
+++ b/include/configs/arndale.h
@@ -22,8 +22,6 @@ 
 #define CONFIG_DISPLAY_CPUINFO
 #define CONFIG_DISPLAY_BOARDINFO
 
-#define CONFIG_OF_CONTROL
-#define CONFIG_OF_SEPARATE
 
 /* Allow tracing to be enabled */
 #define CONFIG_TRACE
diff --git a/include/configs/beaver.h b/include/configs/beaver.h
index d8ed717..4c7cf5f 100644
--- a/include/configs/beaver.h
+++ b/include/configs/beaver.h
@@ -26,8 +26,6 @@ 
 
 /* Enable fdt support for Beaver. Flash the image in u-boot-dtb.bin */
 #define CONFIG_DEFAULT_DEVICE_TREE	tegra30-beaver
-#define CONFIG_OF_CONTROL
-#define CONFIG_OF_SEPARATE
 
 /* High-level configuration options */
 #define V_PROMPT		"Tegra30 (Beaver) # "
diff --git a/include/configs/cardhu.h b/include/configs/cardhu.h
index 59f429c..1616a54 100644
--- a/include/configs/cardhu.h
+++ b/include/configs/cardhu.h
@@ -26,8 +26,6 @@ 
 
 /* Enable fdt support for Cardhu. Flash the image in u-boot-dtb.bin */
 #define CONFIG_DEFAULT_DEVICE_TREE	tegra30-cardhu
-#define CONFIG_OF_CONTROL
-#define CONFIG_OF_SEPARATE
 
 /* High-level configuration options */
 #define V_PROMPT		"Tegra30 (Cardhu) # "
diff --git a/include/configs/colibri_t20_iris.h b/include/configs/colibri_t20_iris.h
index 6f9e08c..3ce1f9b 100644
--- a/include/configs/colibri_t20_iris.h
+++ b/include/configs/colibri_t20_iris.h
@@ -11,8 +11,6 @@ 
 
 /* Enable FDT support */
 #define CONFIG_DEFAULT_DEVICE_TREE	tegra20-colibri_t20_iris
-#define CONFIG_OF_CONTROL
-#define CONFIG_OF_SEPARATE
 
 /* High-level configuration options */
 #define V_PROMPT                   "Tegra20 (Colibri) # "
diff --git a/include/configs/colibri_t30.h b/include/configs/colibri_t30.h
index eacff5b..d9e2d86 100644
--- a/include/configs/colibri_t30.h
+++ b/include/configs/colibri_t30.h
@@ -12,8 +12,6 @@ 
 #include "tegra30-common.h"
 
 #define CONFIG_DEFAULT_DEVICE_TREE	tegra30-colibri
-#define CONFIG_OF_CONTROL
-#define CONFIG_OF_SEPARATE
 
 #define V_PROMPT			"Colibri T30 # "
 #define CONFIG_TEGRA_BOARD_STRING	"Toradex Colibri T30"
diff --git a/include/configs/coreboot.h b/include/configs/coreboot.h
index a1a63a0..915245e 100644
--- a/include/configs/coreboot.h
+++ b/include/configs/coreboot.h
@@ -28,8 +28,6 @@ 
 
 #define CONFIG_LMB
 #define CONFIG_OF_LIBFDT
-#define CONFIG_OF_CONTROL
-#define CONFIG_OF_SEPARATE
 #define CONFIG_DEFAULT_DEVICE_TREE	link
 
 #define CONFIG_BOOTSTAGE
diff --git a/include/configs/dalmore.h b/include/configs/dalmore.h
index fd774a3..e3bb27f 100644
--- a/include/configs/dalmore.h
+++ b/include/configs/dalmore.h
@@ -23,8 +23,6 @@ 
 
 /* Enable fdt support for Dalmore. Flash the image in u-boot-dtb.bin */
 #define CONFIG_DEFAULT_DEVICE_TREE	tegra114-dalmore
-#define CONFIG_OF_CONTROL
-#define CONFIG_OF_SEPARATE
 
 /* High-level configuration options */
 #define V_PROMPT		"Tegra114 (Dalmore) # "
diff --git a/include/configs/exynos4-dt.h b/include/configs/exynos4-dt.h
index 7dac1a3..27e32da 100644
--- a/include/configs/exynos4-dt.h
+++ b/include/configs/exynos4-dt.h
@@ -23,8 +23,6 @@ 
 #define CONFIG_SYS_GENERIC_BOARD
 
 /* Enable fdt support */
-#define CONFIG_OF_CONTROL
-#define CONFIG_OF_SEPARATE
 
 #define CONFIG_SYS_CACHELINE_SIZE	32
 
diff --git a/include/configs/exynos5-dt.h b/include/configs/exynos5-dt.h
index a7c6292..5488363 100644
--- a/include/configs/exynos5-dt.h
+++ b/include/configs/exynos5-dt.h
@@ -25,8 +25,6 @@ 
 #define CONFIG_EXYNOS_SPL
 
 /* Enable fdt support for Exynos5250 */
-#define CONFIG_OF_CONTROL
-#define CONFIG_OF_SEPARATE
 
 /* Allow tracing to be enabled */
 #define CONFIG_TRACE
diff --git a/include/configs/harmony.h b/include/configs/harmony.h
index 3ec0e41..97db202 100644
--- a/include/configs/harmony.h
+++ b/include/configs/harmony.h
@@ -13,8 +13,6 @@ 
 
 /* Enable fdt support for Harmony. Flash the image in u-boot-dtb.bin */
 #define CONFIG_DEFAULT_DEVICE_TREE	tegra20-harmony
-#define CONFIG_OF_CONTROL
-#define CONFIG_OF_SEPARATE
 
 /* High-level configuration options */
 #define V_PROMPT		"Tegra20 (Harmony) # "
diff --git a/include/configs/jetson-tk1.h b/include/configs/jetson-tk1.h
index d03a66c..dc7e324 100644
--- a/include/configs/jetson-tk1.h
+++ b/include/configs/jetson-tk1.h
@@ -14,8 +14,6 @@ 
 
 /* Enable fdt support for Jetson TK1. Flash the image in u-boot-dtb.bin */
 #define CONFIG_DEFAULT_DEVICE_TREE	tegra124-jetson-tk1
-#define CONFIG_OF_CONTROL
-#define CONFIG_OF_SEPARATE
 
 /* High-level configuration options */
 #define V_PROMPT			"Tegra124 (Jetson TK1) # "
diff --git a/include/configs/medcom-wide.h b/include/configs/medcom-wide.h
index 40155c3..5e52574 100644
--- a/include/configs/medcom-wide.h
+++ b/include/configs/medcom-wide.h
@@ -14,8 +14,6 @@ 
 
 /* Enable fdt support for Medcom-Wide. Flash the image in u-boot-dtb.bin */
 #define CONFIG_DEFAULT_DEVICE_TREE	tegra20-medcom-wide
-#define CONFIG_OF_CONTROL
-#define CONFIG_OF_SEPARATE
 
 /* High-level configuration options */
 #define V_PROMPT			"Tegra20 (Medcom-Wide) # "
diff --git a/include/configs/microblaze-generic.h b/include/configs/microblaze-generic.h
index 1a82a57..f5e83ff 100644
--- a/include/configs/microblaze-generic.h
+++ b/include/configs/microblaze-generic.h
@@ -15,8 +15,6 @@ 
 #define	MICROBLAZE_V5		1
 
 /* Open Firmware DTS */
-#define CONFIG_OF_CONTROL	1
-#define CONFIG_OF_EMBED		1
 #define CONFIG_DEFAULT_DEVICE_TREE microblaze-generic
 
 /* linear and spi flash memory */
diff --git a/include/configs/mx6qsabreauto.h b/include/configs/mx6qsabreauto.h
index d1639c4..95f4600 100644
--- a/include/configs/mx6qsabreauto.h
+++ b/include/configs/mx6qsabreauto.h
@@ -45,7 +45,6 @@ 
 #define CONFIG_SYS_I2C_MXC
 #define CONFIG_SYS_I2C_SPEED		100000
 
-#define CONFIG_OF_SEPARATE
 #define CONFIG_DEFAULT_DEVICE_TREE   imx6q-sabreauto
 
 #endif                         /* __MX6QSABREAUTO_CONFIG_H */
diff --git a/include/configs/paz00.h b/include/configs/paz00.h
index dd0abf8..01cb649 100644
--- a/include/configs/paz00.h
+++ b/include/configs/paz00.h
@@ -22,8 +22,6 @@ 
 
 /* Enable fdt support for Paz00. Flash the image in u-boot-dtb.bin */
 #define CONFIG_DEFAULT_DEVICE_TREE	tegra20-paz00
-#define CONFIG_OF_CONTROL
-#define CONFIG_OF_SEPARATE
 
 /* High-level configuration options */
 #define V_PROMPT		"Tegra20 (Paz00) MOD # "
diff --git a/include/configs/plutux.h b/include/configs/plutux.h
index a473f23..719d81a 100644
--- a/include/configs/plutux.h
+++ b/include/configs/plutux.h
@@ -14,8 +14,6 @@ 
 
 /* Enable fdt support for Plutux. Flash the image in u-boot-dtb.bin */
 #define CONFIG_DEFAULT_DEVICE_TREE	tegra20-plutux
-#define CONFIG_OF_CONTROL
-#define CONFIG_OF_SEPARATE
 
 /* High-level configuration options */
 #define V_PROMPT			"Tegra20 (Plutux) # "
diff --git a/include/configs/sandbox.h b/include/configs/sandbox.h
index bf2d25c..4998152 100644
--- a/include/configs/sandbox.h
+++ b/include/configs/sandbox.h
@@ -35,8 +35,6 @@ 
 /* Number of bits in a C 'long' on this architecture */
 #define CONFIG_SANDBOX_BITS_PER_LONG	64
 
-#define CONFIG_OF_CONTROL
-#define CONFIG_OF_HOSTFILE
 #define CONFIG_OF_LIBFDT
 #define CONFIG_LMB
 #define CONFIG_FIT
diff --git a/include/configs/seaboard.h b/include/configs/seaboard.h
index fc4f976..e61811d 100644
--- a/include/configs/seaboard.h
+++ b/include/configs/seaboard.h
@@ -21,8 +21,6 @@ 
 
 /* Enable fdt support for Seaboard. Flash the image in u-boot-dtb.bin */
 #define CONFIG_DEFAULT_DEVICE_TREE	tegra20-seaboard
-#define CONFIG_OF_CONTROL
-#define CONFIG_OF_SEPARATE
 
 /* High-level configuration options */
 #define V_PROMPT		"Tegra20 (SeaBoard) # "
diff --git a/include/configs/tec-ng.h b/include/configs/tec-ng.h
index 13baa76..5b4c255 100644
--- a/include/configs/tec-ng.h
+++ b/include/configs/tec-ng.h
@@ -12,8 +12,6 @@ 
 
 /* Enable fdt support for tec-ng. Flash the image in u-boot-dtb.bin */
 #define CONFIG_DEFAULT_DEVICE_TREE	tegra30-tec-ng
-#define CONFIG_OF_CONTROL
-#define CONFIG_OF_SEPARATE
 
 /* High-level configuration options */
 #define V_PROMPT			"Tegra30 (TEC-NG) # "
diff --git a/include/configs/tec.h b/include/configs/tec.h
index 90e7b7a..0598d5d 100644
--- a/include/configs/tec.h
+++ b/include/configs/tec.h
@@ -14,8 +14,6 @@ 
 
 /* Enable fdt support for TEC. Flash the image in u-boot-dtb.bin */
 #define CONFIG_DEFAULT_DEVICE_TREE	tegra20-tec
-#define CONFIG_OF_CONTROL
-#define CONFIG_OF_SEPARATE
 
 /* High-level configuration options */
 #define V_PROMPT			"Tegra20 (TEC) # "
diff --git a/include/configs/tegra-common-post.h b/include/configs/tegra-common-post.h
index c337e30..23e3c8a 100644
--- a/include/configs/tegra-common-post.h
+++ b/include/configs/tegra-common-post.h
@@ -69,7 +69,6 @@ 
 
 /* remove devicetree support */
 #ifdef CONFIG_OF_CONTROL
-#undef CONFIG_OF_CONTROL
 #endif
 
 /* remove I2C support */
diff --git a/include/configs/trimslice.h b/include/configs/trimslice.h
index f81cfa2..2ef010c 100644
--- a/include/configs/trimslice.h
+++ b/include/configs/trimslice.h
@@ -13,8 +13,6 @@ 
 
 /* Enable fdt support for TrimSlice. Flash the image in u-boot-dtb.bin */
 #define CONFIG_DEFAULT_DEVICE_TREE	tegra20-trimslice
-#define CONFIG_OF_CONTROL
-#define CONFIG_OF_SEPARATE
 
 /* High-level configuration options */
 #define V_PROMPT		"Tegra20 (TrimSlice) # "
diff --git a/include/configs/venice2.h b/include/configs/venice2.h
index 6d4e999..b516d92 100644
--- a/include/configs/venice2.h
+++ b/include/configs/venice2.h
@@ -14,8 +14,6 @@ 
 
 /* Enable fdt support for Venice2. Flash the image in u-boot-dtb.bin */
 #define CONFIG_DEFAULT_DEVICE_TREE	tegra124-venice2
-#define CONFIG_OF_CONTROL
-#define CONFIG_OF_SEPARATE
 
 /* High-level configuration options */
 #define V_PROMPT			"Tegra124 (Venice2) # "
diff --git a/include/configs/ventana.h b/include/configs/ventana.h
index edf3720..3b9d142 100644
--- a/include/configs/ventana.h
+++ b/include/configs/ventana.h
@@ -13,8 +13,6 @@ 
 
 /* Enable fdt support for Ventana. Flash the image in u-boot-dtb.bin */
 #define CONFIG_DEFAULT_DEVICE_TREE	tegra20-ventana
-#define CONFIG_OF_CONTROL
-#define CONFIG_OF_SEPARATE
 
 /* High-level configuration options */
 #define V_PROMPT		"Tegra20 (Ventana) # "
diff --git a/include/configs/whistler.h b/include/configs/whistler.h
index 9e09f03..f3bf806 100644
--- a/include/configs/whistler.h
+++ b/include/configs/whistler.h
@@ -13,8 +13,6 @@ 
 
 /* Enable fdt support for Whistler. Flash the image in u-boot-dtb.bin */
 #define CONFIG_DEFAULT_DEVICE_TREE	tegra20-whistler
-#define CONFIG_OF_CONTROL
-#define CONFIG_OF_SEPARATE
 
 /* High-level configuration options */
 #define V_PROMPT		"Tegra20 (Whistler) # "
diff --git a/include/configs/zynq-common.h b/include/configs/zynq-common.h
index 875cb43..5d6472f 100644
--- a/include/configs/zynq-common.h
+++ b/include/configs/zynq-common.h
@@ -227,8 +227,6 @@ 
 #define CONFIG_IMAGE_FORMAT_LEGACY /* enable also legacy image format */
 
 /* FDT support */
-#define CONFIG_OF_CONTROL
-#define CONFIG_OF_SEPARATE
 #define CONFIG_DISPLAY_BOARDINFO_LATE
 
 /* RSA support */
@@ -273,18 +271,13 @@ 
 #define CONFIG_SYS_MMC_SD_FAT_BOOT_PARTITION    1
 #define CONFIG_SPL_LIBDISK_SUPPORT
 #define CONFIG_SPL_FAT_SUPPORT
-#if defined(CONFIG_OF_CONTROL) && defined(CONFIG_OF_SEPARATE)
-# define CONFIG_SPL_FAT_LOAD_PAYLOAD_NAME     "u-boot-dtb.img"
-#else
-# define CONFIG_SPL_FAT_LOAD_PAYLOAD_NAME     "u-boot.img"
-#endif
+#define CONFIG_SPL_FAT_LOAD_PAYLOAD_NAME     "u-boot-dtb.img"
 #endif
 
 /* Disable dcache for SPL just for sure */
 #ifdef CONFIG_SPL_BUILD
 #define CONFIG_SYS_DCACHE_OFF
 #undef CONFIG_FPGA
-#undef CONFIG_OF_CONTROL
 #endif
 
 /* Address in RAM where the parameters must be copied by SPL. */