diff options
author | Simon Glass <sjg@chromium.org> | 2015-02-27 22:06:41 -0700 |
---|---|---|
committer | Simon Glass <sjg@chromium.org> | 2015-04-23 09:05:54 -0600 |
commit | b2b0d3e7129d4e59be1a016ad4fb05db87b8c5b4 (patch) | |
tree | 11b52db0f2c46af8db1c1ac3f4d8c297a213088c | |
parent | 1d76bf226ac1660ec00c4a2cb276bd000ad37a5a (diff) |
dm: core: Select device tree control correctly for SPL
Some boards will not use device tree for SPL even with driver model. Add
the logic to support this.
Signed-off-by: Simon Glass <sjg@chromium.org>
-rw-r--r-- | drivers/core/root.c | 14 | ||||
-rw-r--r-- | include/fdtdec.h | 10 |
2 files changed, 18 insertions, 6 deletions
diff --git a/drivers/core/root.c b/drivers/core/root.c index 9b5c6bb10cb..12d046051fd 100644 --- a/drivers/core/root.c +++ b/drivers/core/root.c @@ -197,13 +197,15 @@ int dm_init_and_scan(bool pre_reloc_only) debug("dm_scan_platdata() failed: %d\n", ret); return ret; } -#ifdef CONFIG_OF_CONTROL - ret = dm_scan_fdt(gd->fdt_blob, pre_reloc_only); - if (ret) { - debug("dm_scan_fdt() failed: %d\n", ret); - return ret; + + if (OF_CONTROL) { + ret = dm_scan_fdt(gd->fdt_blob, pre_reloc_only); + if (ret) { + debug("dm_scan_fdt() failed: %d\n", ret); + return ret; + } } -#endif + ret = dm_scan_other(pre_reloc_only); if (ret) return ret; diff --git a/include/fdtdec.h b/include/fdtdec.h index 0d3e6d9711d..659047097a1 100644 --- a/include/fdtdec.h +++ b/include/fdtdec.h @@ -41,6 +41,16 @@ struct fdt_memory { fdt_addr_t end; }; +#ifdef CONFIG_OF_CONTROL +# if defined(CONFIG_SPL_BUILD) && defined(SPL_DISABLE_OF_CONTROL) +# define OF_CONTROL 0 +# else +# define OF_CONTROL 1 +# endif +#else +# define OF_CONTROL 0 +#endif + /* * Information about a resource. start is the first address of the resource * and end is the last address (inclusive). The length of the resource will |