[U-Boot-Users] builtin OF tree dtb gone

Joakim Tjernlund joakim.tjernlund at transmode.se
Sat Dec 30 14:10:18 CET 2006


Ping.

Didn't you like this either or no time to look at it?

 Jocke

> -----Original Message-----
> From: u-boot-users-bounces at lists.sourceforge.net 
> [mailto:u-boot-users-bounces at lists.sourceforge.net] On Behalf 
> Of Joakim Tjernlund
> Sent: den 18 december 2006 15:39
> To: Wolfgang Denk
> Cc: 'Grant Likely'; u-boot-users at lists.sourceforge.net
> Subject: Re: [U-Boot-Users] builtin OF tree dtb gone
> 
> On Mon, 2006-12-18 at 00:56 +0100, Wolfgang Denk wrote:
> > Dear Joakim,
> > 
> > in message 
> <1166378632.30422.98.camel at gentoo-jocke.transmode.se> you wrote:
> > >
> > > how about this patch:
> > 
> > Sorry, but there are two things I don't like:
> > 
> > > Make it possible to use a OF tree embedded in u-boot.
> > > Also make sure OF tree is below 8MB.
> > > 
> > > Signed-off-by: Joakim Tjernlund <Joakim.Tjernlund at transmode.se>
> > > 
> > > diff --git a/common/cmd_bootm.c b/common/cmd_bootm.c
> > > index 7aae8a6..78f8d15 100644
> > > --- a/common/cmd_bootm.c
> > > +++ b/common/cmd_bootm.c
> > > @@ -531,8 +531,12 @@ do_bootm_linux (cmd_tbl_t *cmdtp, int fl
> > >  	image_header_t *hdr = &header;
> > >  #ifdef CONFIG_OF_FLAT_TREE
> > >  	char	*of_flat_tree = NULL;
> > > +#ifdef CFG_EMBEDDED_FLAT_TREE
> > 
> > I don't want to have another #ifdef here. It should be 
> possible to do
> > this (for example in the linker script) without this.
> 
> Can't figure out how some linker magic would solve this. Somehow
> this function needs a handle to where a default tree is stored.
> Moved around the code a bit, hope you like this better.
> 
> > 
> > > -#ifndef CFG_NO_FLASH
> > > -			if (addr2info((ulong)of_flat_tree) != NULL)
> > > +		   if (of_flat_tree >= (char *) (8*1024*1024))
> > 
> > And  I  definitely  reject  such  hard-wired  and  
> uncommented  magic
> > constants which are wrong on most of the systems.
> 
> Right, redid this part. If you don't like this either, we can skip
> this part for now.
> 
>   Regards
>           Jocke
> 
> diff --git a/common/cmd_bootm.c b/common/cmd_bootm.c
> index 7aae8a6..b3654ee 100644
> --- a/common/cmd_bootm.c
> +++ b/common/cmd_bootm.c
> @@ -510,6 +510,23 @@ fixup_silent_linux ()
>  #endif /* CONFIG_SILENT_CONSOLE */
>  
>  #ifdef CONFIG_PPC
> +
> +/* Define oftree_dtb to point to you own built in
> + * OF tree if you need one.
> + */
> +#ifndef oftree_dtb
> + #define oftree_dtb 0
> +#endif
> +/* Early in the linux boot process most ppc systems
> + * can only access the first few MB of RAM. If the
> + * OF tree is located higher up in memory than
> + * LINUX_INITIAL_MEMORY, it will be copied to a
> + * lower address where the kernel can access it.
> + */
> +#ifndef LINUX_INITIAL_MEMORY
> + #define LINUX_INITIAL_MEMORY (8*1024*1024) /* 8MB */
> +#endif
> +
>  static void  __attribute__((noinline))
>  do_bootm_linux (cmd_tbl_t *cmdtp, int flag,
>  		int	argc, char *argv[],
> @@ -531,7 +548,7 @@ do_bootm_linux (cmd_tbl_t *cmdtp, int fl
>  	image_header_t *hdr = &header;
>  #ifdef CONFIG_OF_FLAT_TREE
>  	char	*of_flat_tree = NULL;
> -	ulong	of_data = 0;
> +	ulong	of_data = (ulong)oftree_dtb;
>  #endif
>  
>  	if ((s = getenv ("initrd_high")) != NULL) {
> @@ -745,10 +762,8 @@ do_bootm_linux (cmd_tbl_t *cmdtp, int fl
>  		hdr = (image_header_t *)of_flat_tree;
>  
>  		if  (*(ulong *)of_flat_tree == OF_DT_HEADER) {
> -#ifndef CFG_NO_FLASH
> -			if (addr2info((ulong)of_flat_tree) != NULL)
> +			if (of_flat_tree >= (char *) 
> LINUX_INITIAL_MEMORY)
>  				of_data = (ulong)of_flat_tree;
> -#endif
>  		} else if (ntohl(hdr->ih_magic) == IH_MAGIC) {
>  			printf("## Flat Device Tree Image at 
> %08lX\n", hdr);
>  			print_image_hdr(hdr);





More information about the U-Boot mailing list