diff mbox

[U-Boot,v2] spl_nor.c: Support devicetree sizes different from 16k

Message ID 1469511247-9323-1-git-send-email-mike.looijmans@topic.nl
State Accepted
Commit 5aa79f26762d197324866a0d0c2b31601a7fc8ee
Delegated to: Tom Rini
Headers show

Commit Message

Mike Looijmans July 26, 2016, 5:34 a.m. UTC
The devicetrees for various platforms already exceed 16k. Add a define
CONFIG_SYS_FDT_SIZE to specify the FDT size, and set to 16k for the
two boards that define this CONFIG_SYS_FDT_BASE parameter. This
allows platforms with larger devicetree blobs to boot from NOR.

Signed-off-by: Mike Looijmans <mike.looijmans@topic.nl>
---
v2: Instead of a default, just specify the value for the two boards that use it.
 common/spl/spl_nor.c                 | 4 ++--
 include/configs/a3m071.h             | 1 +
 include/configs/microblaze-generic.h | 1 +
 3 files changed, 4 insertions(+), 2 deletions(-)

Comments

Tom Rini July 26, 2016, 12:10 p.m. UTC | #1
On Tue, Jul 26, 2016 at 07:34:07AM +0200, Mike Looijmans wrote:

> The devicetrees for various platforms already exceed 16k. Add a define
> CONFIG_SYS_FDT_SIZE to specify the FDT size, and set to 16k for the
> two boards that define this CONFIG_SYS_FDT_BASE parameter. This
> allows platforms with larger devicetree blobs to boot from NOR.
> 
> Signed-off-by: Mike Looijmans <mike.looijmans@topic.nl>
> ---
> v2: Instead of a default, just specify the value for the two boards that use it.
>  common/spl/spl_nor.c                 | 4 ++--
>  include/configs/a3m071.h             | 1 +
>  include/configs/microblaze-generic.h | 1 +

This misses a few boards:
$ git grep SPL_NOR_SUPPORT include/configs
include/configs/a3m071.h:#define CONFIG_SPL_NOR_SUPPORT
include/configs/edminiv2.h:#define CONFIG_SPL_NOR_SUPPORT
include/configs/microblaze-generic.h:# define CONFIG_SPL_NOR_SUPPORT
include/configs/uniphier.h:#define CONFIG_SPL_NOR_SUPPORT
include/configs/x600.h:#define CONFIG_SPL_NOR_SUPPORT

Please update, thanks!
Mike Looijmans July 26, 2016, 12:24 p.m. UTC | #2

Tom Rini July 26, 2016, 12:27 p.m. UTC | #3
On Tue, Jul 26, 2016 at 8:24 AM, Mike Looijmans <mike.looijmans@topic.nl> wrote:
>
> On 26-07-16 14:10, Tom Rini wrote:
> > On Tue, Jul 26, 2016 at 07:34:07AM +0200, Mike Looijmans wrote:
> >
> >> The devicetrees for various platforms already exceed 16k. Add a define
> >> CONFIG_SYS_FDT_SIZE to specify the FDT size, and set to 16k for the
> >> two boards that define this CONFIG_SYS_FDT_BASE parameter. This
> >> allows platforms with larger devicetree blobs to boot from NOR.
> >>
> >> Signed-off-by: Mike Looijmans <mike.looijmans@topic.nl>
> >> ---
> >> v2: Instead of a default, just specify the value for the two boards that use it.
> >>   common/spl/spl_nor.c                 | 4 ++--
> >>   include/configs/a3m071.h             | 1 +
> >>   include/configs/microblaze-generic.h | 1 +
> >
> > This misses a few boards:
> > $ git grep SPL_NOR_SUPPORT include/configs
> > include/configs/a3m071.h:#define CONFIG_SPL_NOR_SUPPORT
> > include/configs/edminiv2.h:#define CONFIG_SPL_NOR_SUPPORT
> > include/configs/microblaze-generic.h:# define CONFIG_SPL_NOR_SUPPORT
> > include/configs/uniphier.h:#define CONFIG_SPL_NOR_SUPPORT
> > include/configs/x600.h:#define CONFIG_SPL_NOR_SUPPORT
> >
> > Please update, thanks!
> >
>
> Only boards that define "CONFIG_SYS_FDT_BASE" need to set
> "CONFIG_SYS_FDT_SIZE", since CONFIG_SYS_FDT_BASE is required as second arg for
> the memcpy call, boards that don't define it apparently don't support booting
> directly from NOR. Apparently, of the five boards with SPL_NOR support, only
> these two boards support booting into a kernel directly:
>
> $ grep -r CONFIG_SYS_FDT_BASE *
> common/spl/spl_nor.c:          (void *)(CONFIG_SYS_FDT_BASE),
> include/configs/a3m071.h:#define CONFIG_SYS_FDT_BASE 0xfc1e0000
> include/configs/a3m071.h: "fdt_addr=" __stringify(CONFIG_SYS_FDT_BASE) "\0"  \
> include/configs/microblaze-generic.h:#define CONFIG_SYS_FDT_BASE
> (CONFIG_SYS_FLASH_BASE + \

Ah, OK, thanks!
Tom Rini Aug. 10, 2016, 12:45 a.m. UTC | #4
On Tue, Jul 26, 2016 at 07:34:07AM +0200, Mike Looijmans wrote:

> The devicetrees for various platforms already exceed 16k. Add a define
> CONFIG_SYS_FDT_SIZE to specify the FDT size, and set to 16k for the
> two boards that define this CONFIG_SYS_FDT_BASE parameter. This
> allows platforms with larger devicetree blobs to boot from NOR.
> 
> Signed-off-by: Mike Looijmans <mike.looijmans@topic.nl>

Applied to u-boot/master, thanks!
diff mbox

Patch

diff --git a/common/spl/spl_nor.c b/common/spl/spl_nor.c
index da2422f..8ea874c 100644
--- a/common/spl/spl_nor.c
+++ b/common/spl/spl_nor.c
@@ -40,11 +40,11 @@  int spl_nor_load_image(void)
 
 			/*
 			 * Copy DT blob (fdt) to SDRAM. Passing pointer to
-			 * flash doesn't work (16 KiB should be enough for DT)
+			 * flash doesn't work
 			 */
 			memcpy((void *)CONFIG_SYS_SPL_ARGS_ADDR,
 			       (void *)(CONFIG_SYS_FDT_BASE),
-			       (16 << 10));
+			       CONFIG_SYS_FDT_SIZE);
 
 			return 0;
 		} else {
diff --git a/include/configs/a3m071.h b/include/configs/a3m071.h
index 8f17dd1..ab2477c 100644
--- a/include/configs/a3m071.h
+++ b/include/configs/a3m071.h
@@ -334,6 +334,7 @@ 
 
 #define CONFIG_SYS_OS_BASE	0xfc200000
 #define CONFIG_SYS_FDT_BASE	0xfc1e0000
+#define CONFIG_SYS_FDT_SIZE	(16<<10)
 
 #define	CONFIG_EXTRA_ENV_SETTINGS					\
 	"netdev=eth0\0"							\
diff --git a/include/configs/microblaze-generic.h b/include/configs/microblaze-generic.h
index 047e756..e5bf700 100644
--- a/include/configs/microblaze-generic.h
+++ b/include/configs/microblaze-generic.h
@@ -305,6 +305,7 @@ 
 					 0x60000)
 #define CONFIG_SYS_FDT_BASE		(CONFIG_SYS_FLASH_BASE + \
 					 0x40000)
+#define CONFIG_SYS_FDT_SIZE		(16<<10)
 #define CONFIG_SYS_SPL_ARGS_ADDR	(CONFIG_SYS_TEXT_BASE + \
 					 0x1000000)