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

Joakim Tjernlund joakim.tjernlund at transmode.se
Sun Dec 17 19:03:52 CET 2006


On Sun, 2006-12-17 at 18:13 +0100, Wolfgang Denk wrote:
> In message <009301c721f5$69b25ef0$1e67a8c0 at Jocke> you wrote:
> >
> > Ahh, found it. It is the addr2info check that relocates the OF tree.
> > addr2info checks if an address is in flash, if so it will relocate it
> > to lower RAM. But since I got my OF tree in high RAM that won't
> > happen.
> > The same would happen if one loaded a OF tree via tftp and placed
> > it high up in RAM.
> > I think that the addr2info check should be replaced with something
> > else that will move the tree to a low enough address if needed.
> > 
> > What would be a good test?
> 
> Probably the "initrd_high" code should be generalized here.
> 
> Best regards,
> 
> Wolfgang Denk
> 
Wolfgang,
how about this patch:

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
+	ulong	of_data = (ulong)oftree_dtb;
+#else
 	ulong	of_data = 0;
 #endif
+#endif
 
 	if ((s = getenv ("initrd_high")) != NULL) {
 		/* a value of "no" or a similar string will act like 0,
@@ -745,10 +749,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 *) (8*1024*1024))
 				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);
diff --git a/common/ft_build.c b/common/ft_build.c





More information about the U-Boot mailing list