[U-Boot-Users] Can U-boot Autodetect arch/ppcversusarch/powerpc from info in the uImage?

Jerry Van Baren gerald.vanbaren at ge.com
Fri Dec 7 14:14:37 CET 2007


Joakim Tjernlund wrote:

[snip]

>>  Jocke
>>> As far as I understand your request, this offers all the 
>> same options
>>> you can get with a compiled in device tree blob, but with  
>> the  added
>>> benefit of allowing many more things at the same time, too.
>>>
>>> Maybe I'm missing something?
> 
> Yes, here are some things to consider.
> 
> The extension I made can just as easily be a function that returns a dev. tree.
> 
> - One can have a dev. tree update procedure similar to
>   rendundant env. The funktion then selects which dev. tree is valid and passes
>   that back.
> 
> - The function can construct a dev. tree from builtin rules/code.
> 
> - One can even make it tftp a tree at boot and pass that back. Great
>   in a development env. especially if you are debugging the dev. tree.
> 
> and the kicker is that you can still override this tree at runtime by passing
> a dev. tree argument to bootm.
> 
> All this will be possible by the simple patch I posted earlier, included
> below.
> 
> [PATCH] Make it possible to use a builtin OF tree.
> Signed-off-by: Joakim Tjernlund <Joakim.Tjernlund at transmode.se>
> ---
>  common/cmd_bootm.c |    5 ++++-
>  1 files changed, 4 insertions(+), 1 deletions(-)
> 
> diff --git a/common/cmd_bootm.c b/common/cmd_bootm.c
> index d816349..8405de7 100644
> --- a/common/cmd_bootm.c
> +++ b/common/cmd_bootm.c
> @@ -507,6 +507,9 @@ fixup_silent_linux ()
>  #endif /* CONFIG_SILENT_CONSOLE */
>  
>  #ifdef CONFIG_PPC
> +#ifndef DEFAULT_OF_TREE
> + #define DEFAULT_OF_TREE NULL
> +#endif
>  static void  __attribute__((noinline))
>  do_bootm_linux (cmd_tbl_t *cmdtp, int flag,
>  		int	argc, char *argv[],
> @@ -527,7 +530,7 @@ do_bootm_linux (cmd_tbl_t *cmdtp, int flag,
>  	void	(*kernel)(bd_t *, ulong, ulong, ulong, ulong);
>  	image_header_t *hdr = &header;
>  #if defined(CONFIG_OF_FLAT_TREE) || defined(CONFIG_OF_LIBFDT)
> -	char	*of_flat_tree = NULL;
> +	char	*of_flat_tree = DEFAULT_OF_TREE;
>  	ulong	of_data = 0;
>  #endif

FWIIW, while I appreciate and agree with Wolfgang's points, I don't see 
why we cannot add Joakim's configuration tweak.  It is a pretty minor 
issue and, if he finds it useful, perhaps it would be useful to others.

Having said that, the patch could be made better by IMHO using the 
#ifdef logic embedded rather than defining DEFAULT_OF_TREE to NULL if it 
isn't already defined:

#if defined(CONFIG_OF_FLAT_TREE) || defined(CONFIG_OF_LIBFDT)
#ifdef DEFAULT_OF_TREE
	char	*of_flat_tree = DEFAULT_OF_TREE;
#else
	char	*of_flat_tree = NULL;
#endif
	ulong	of_data = 0;
#endif

Also, we should have an update to the README to explain that 
DEFAULT_OF_TREE can be defined in the board-specific config file to be 
the address of a FDT embedded in u-boot or a function that 
builds/modifies a FDT and returns the address.

This should probably go somewhere in the section on LIBFDT line 332 ff. 
(I would put it at line 342, your line numbers may vary).
<http://www.denx.de/cgi-bin/gitweb.cgi?p=u-boot/u-boot-fdt.git;a=blob;f=README;h=09eb76fe4528dfedca027b119ac760fce2570e35;hb=HEAD#l341>

Best regards,
gvb




More information about the U-Boot mailing list