aboutsummaryrefslogtreecommitdiff
path: root/arch/powerpc/boot/flatdevtree_misc.c
diff options
context:
space:
mode:
authorDavid Gibson <david@gibson.dropbear.id.au>2006-11-21 11:37:37 +1100
committerPaul Mackerras <paulus@samba.org>2006-12-04 20:39:34 +1100
commit35af89eb491a0741005e474626053266e6e635b7 (patch)
tree6813c0457dedacd221a2014bda37d0c892c328cd /arch/powerpc/boot/flatdevtree_misc.c
parentf79e083c2fab601a1c382282344f5a251557dbac (diff)
[POWERPC] Cleanup zImage handling of kernel entry with flat device tree
This makes 2 changes to clean up the flat device tree handling logic in the zImage wrapper. First, there were two callbacks from the dt_ops structure used for producing a final flat tree to pass to the kerne: dt_ops.ft_pack() which packed the flat tree (possibly a no-op) and dt_ops.ft_addr() which retreived the address of the final blob. Since they were only ever called together, this patch combines the two into a single new callback, dt_ops.finalize(). This new callback does whatever platform-dependent things are necessary to produce a final flat device tree blob, and returns the blob's addres. Second, the current logic calls the kernel with a flat device tree if one is build into the zImage wrapper, otherwise it boots the kernel with a PROM pointer, expecting the kernel to copy the OF device tree itself. This approach precludes the possibility of the platform wrapper code building a flat device tree from whatever platform-specific information firmware provides. Thus, this patch takes the more sensible approach of invoking the kernel with a flat tree if the dt_ops.finalize callback provides one (by whatever means). So, the dt_ops.finalize callback can be NULL, or can be a function which returns NULL. In either case, the zImage wrapper logic assumes that this is a platform with OF and invokes the kernel accordingly. Signed-off-by: David Gibson <dwg@au1.ibm.com> Signed-off-by: Paul Mackerras <paulus@samba.org>
Diffstat (limited to 'arch/powerpc/boot/flatdevtree_misc.c')
-rw-r--r--arch/powerpc/boot/flatdevtree_misc.c9
1 files changed, 2 insertions, 7 deletions
diff --git a/arch/powerpc/boot/flatdevtree_misc.c b/arch/powerpc/boot/flatdevtree_misc.c
index c7f9adbf827..04da38fa477 100644
--- a/arch/powerpc/boot/flatdevtree_misc.c
+++ b/arch/powerpc/boot/flatdevtree_misc.c
@@ -33,13 +33,9 @@ static int ft_setprop(const void *phandle, const char *propname,
return ft_set_prop(&cxt, phandle, propname, buf, buflen);
}
-static void ft_pack(void)
+static unsigned long ft_finalize(void)
{
ft_end_tree(&cxt);
-}
-
-static unsigned long ft_addr(void)
-{
return (unsigned long)cxt.bph;
}
@@ -48,8 +44,7 @@ int ft_init(void *dt_blob, unsigned int max_size, unsigned int max_find_device)
dt_ops.finddevice = ft_finddevice;
dt_ops.getprop = ft_getprop;
dt_ops.setprop = ft_setprop;
- dt_ops.ft_pack = ft_pack;
- dt_ops.ft_addr = ft_addr;
+ dt_ops.finalize = ft_finalize;
return ft_open(&cxt, dt_blob, max_size, max_find_device,
platform_ops.realloc);