On Thu, Nov 18, 2010 at 03:55:01PM -0800, Stephen Neuendorffer wrote: > Move unflatten_dt_node to be grouped with non-__init functions. > > Signed-off-by: Stephen Neuendorffer <stephen.neuendorf...@xilinx.com>
Merged, thanks. g. > --- > drivers/of/fdt.c | 218 > +++++++++++++++++++++++++++--------------------------- > 1 files changed, 109 insertions(+), 109 deletions(-) > > diff --git a/drivers/of/fdt.c b/drivers/of/fdt.c > index a07fd1a..236a8c9 100644 > --- a/drivers/of/fdt.c > +++ b/drivers/of/fdt.c > @@ -97,115 +97,6 @@ int of_fdt_is_compatible(struct boot_param_header *blob, > return 0; > } > > -/* Everything below here references initial_boot_params directly. */ > -int __initdata dt_root_addr_cells; > -int __initdata dt_root_size_cells; > - > -struct boot_param_header *initial_boot_params; > - > -#ifdef CONFIG_EARLY_FLATTREE > - > -/** > - * of_scan_flat_dt - scan flattened tree blob and call callback on each. > - * @it: callback function > - * @data: context data pointer > - * > - * This function is used to scan the flattened device-tree, it is > - * used to extract the memory information at boot before we can > - * unflatten the tree > - */ > -int __init of_scan_flat_dt(int (*it)(unsigned long node, > - const char *uname, int depth, > - void *data), > - void *data) > -{ > - unsigned long p = ((unsigned long)initial_boot_params) + > - be32_to_cpu(initial_boot_params->off_dt_struct); > - int rc = 0; > - int depth = -1; > - > - do { > - u32 tag = be32_to_cpup((__be32 *)p); > - char *pathp; > - > - p += 4; > - if (tag == OF_DT_END_NODE) { > - depth--; > - continue; > - } > - if (tag == OF_DT_NOP) > - continue; > - if (tag == OF_DT_END) > - break; > - if (tag == OF_DT_PROP) { > - u32 sz = be32_to_cpup((__be32 *)p); > - p += 8; > - if (be32_to_cpu(initial_boot_params->version) < 0x10) > - p = ALIGN(p, sz >= 8 ? 8 : 4); > - p += sz; > - p = ALIGN(p, 4); > - continue; > - } > - if (tag != OF_DT_BEGIN_NODE) { > - pr_err("Invalid tag %x in flat device tree!\n", tag); > - return -EINVAL; > - } > - depth++; > - pathp = (char *)p; > - p = ALIGN(p + strlen(pathp) + 1, 4); > - if ((*pathp) == '/') { > - char *lp, *np; > - for (lp = NULL, np = pathp; *np; np++) > - if ((*np) == '/') > - lp = np+1; > - if (lp != NULL) > - pathp = lp; > - } > - rc = it(p, pathp, depth, data); > - if (rc != 0) > - break; > - } while (1); > - > - return rc; > -} > - > -/** > - * of_get_flat_dt_root - find the root node in the flat blob > - */ > -unsigned long __init of_get_flat_dt_root(void) > -{ > - unsigned long p = ((unsigned long)initial_boot_params) + > - be32_to_cpu(initial_boot_params->off_dt_struct); > - > - while (be32_to_cpup((__be32 *)p) == OF_DT_NOP) > - p += 4; > - BUG_ON(be32_to_cpup((__be32 *)p) != OF_DT_BEGIN_NODE); > - p += 4; > - return ALIGN(p + strlen((char *)p) + 1, 4); > -} > - > -/** > - * of_get_flat_dt_prop - Given a node in the flat blob, return the property > ptr > - * > - * This function can be used within scan_flattened_dt callback to get > - * access to properties > - */ > -void *__init of_get_flat_dt_prop(unsigned long node, const char *name, > - unsigned long *size) > -{ > - return of_fdt_get_property(initial_boot_params, node, name, size); > -} > - > -/** > - * of_flat_dt_is_compatible - Return true if given node has compat in > compatible list > - * @node: node to test > - * @compat: compatible string to compare with compatible list. > - */ > -int __init of_flat_dt_is_compatible(unsigned long node, const char *compat) > -{ > - return of_fdt_is_compatible(initial_boot_params, node, compat); > -} > - > static void *unflatten_dt_alloc(unsigned long *mem, unsigned long size, > unsigned long align) > { > @@ -421,6 +312,115 @@ unsigned long unflatten_dt_node(struct > boot_param_header *blob, > return mem; > } > > +/* Everything below here references initial_boot_params directly. */ > +int __initdata dt_root_addr_cells; > +int __initdata dt_root_size_cells; > + > +struct boot_param_header *initial_boot_params; > + > +#ifdef CONFIG_EARLY_FLATTREE > + > +/** > + * of_scan_flat_dt - scan flattened tree blob and call callback on each. > + * @it: callback function > + * @data: context data pointer > + * > + * This function is used to scan the flattened device-tree, it is > + * used to extract the memory information at boot before we can > + * unflatten the tree > + */ > +int __init of_scan_flat_dt(int (*it)(unsigned long node, > + const char *uname, int depth, > + void *data), > + void *data) > +{ > + unsigned long p = ((unsigned long)initial_boot_params) + > + be32_to_cpu(initial_boot_params->off_dt_struct); > + int rc = 0; > + int depth = -1; > + > + do { > + u32 tag = be32_to_cpup((__be32 *)p); > + char *pathp; > + > + p += 4; > + if (tag == OF_DT_END_NODE) { > + depth--; > + continue; > + } > + if (tag == OF_DT_NOP) > + continue; > + if (tag == OF_DT_END) > + break; > + if (tag == OF_DT_PROP) { > + u32 sz = be32_to_cpup((__be32 *)p); > + p += 8; > + if (be32_to_cpu(initial_boot_params->version) < 0x10) > + p = ALIGN(p, sz >= 8 ? 8 : 4); > + p += sz; > + p = ALIGN(p, 4); > + continue; > + } > + if (tag != OF_DT_BEGIN_NODE) { > + pr_err("Invalid tag %x in flat device tree!\n", tag); > + return -EINVAL; > + } > + depth++; > + pathp = (char *)p; > + p = ALIGN(p + strlen(pathp) + 1, 4); > + if ((*pathp) == '/') { > + char *lp, *np; > + for (lp = NULL, np = pathp; *np; np++) > + if ((*np) == '/') > + lp = np+1; > + if (lp != NULL) > + pathp = lp; > + } > + rc = it(p, pathp, depth, data); > + if (rc != 0) > + break; > + } while (1); > + > + return rc; > +} > + > +/** > + * of_get_flat_dt_root - find the root node in the flat blob > + */ > +unsigned long __init of_get_flat_dt_root(void) > +{ > + unsigned long p = ((unsigned long)initial_boot_params) + > + be32_to_cpu(initial_boot_params->off_dt_struct); > + > + while (be32_to_cpup((__be32 *)p) == OF_DT_NOP) > + p += 4; > + BUG_ON(be32_to_cpup((__be32 *)p) != OF_DT_BEGIN_NODE); > + p += 4; > + return ALIGN(p + strlen((char *)p) + 1, 4); > +} > + > +/** > + * of_get_flat_dt_prop - Given a node in the flat blob, return the property > ptr > + * > + * This function can be used within scan_flattened_dt callback to get > + * access to properties > + */ > +void *__init of_get_flat_dt_prop(unsigned long node, const char *name, > + unsigned long *size) > +{ > + return of_fdt_get_property(initial_boot_params, node, name, size); > +} > + > +/** > + * of_flat_dt_is_compatible - Return true if given node has compat in > compatible list > + * @node: node to test > + * @compat: compatible string to compare with compatible list. > + */ > +int __init of_flat_dt_is_compatible(unsigned long node, const char *compat) > +{ > + return of_fdt_is_compatible(initial_boot_params, node, compat); > +} > + > #ifdef CONFIG_BLK_DEV_INITRD > /** > * early_init_dt_check_for_initrd - Decode initrd location from flat tree > -- > 1.5.6.6 > > > > This email and any attachments are intended for the sole use of the named > recipient(s) and contain(s) confidential information that may be proprietary, > privileged or copyrighted under applicable law. If you are not the intended > recipient, do not read, copy, or forward this email message or any > attachments. Delete this email message and any attachments immediately. > > _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev