aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/of/fdt.c67
-rw-r--r--include/linux/of_fdt.h3
2 files changed, 0 insertions, 70 deletions
diff --git a/drivers/of/fdt.c b/drivers/of/fdt.c
index 63bdcee473fa..9c8535291909 100644
--- a/drivers/of/fdt.c
+++ b/drivers/of/fdt.c
@@ -671,73 +671,6 @@ struct fdt_scan_status {
671 void *data; 671 void *data;
672}; 672};
673 673
674/**
675 * fdt_scan_node_by_path - iterator for of_scan_flat_dt_by_path function
676 */
677static int __init fdt_scan_node_by_path(unsigned long node, const char *uname,
678 int depth, void *data)
679{
680 struct fdt_scan_status *st = data;
681
682 /*
683 * if scan at the requested fdt node has been completed,
684 * return -ENXIO to abort further scanning
685 */
686 if (depth <= st->depth)
687 return -ENXIO;
688
689 /* requested fdt node has been found, so call iterator function */
690 if (st->found)
691 return st->iterator(node, uname, depth, st->data);
692
693 /* check if scanning automata is entering next level of fdt nodes */
694 if (depth == st->depth + 1 &&
695 strncmp(st->name, uname, st->namelen) == 0 &&
696 uname[st->namelen] == 0) {
697 st->depth += 1;
698 if (st->name[st->namelen] == 0) {
699 st->found = 1;
700 } else {
701 const char *next = st->name + st->namelen + 1;
702 st->name = next;
703 st->namelen = strcspn(next, "/");
704 }
705 return 0;
706 }
707
708 /* scan next fdt node */
709 return 0;
710}
711
712/**
713 * of_scan_flat_dt_by_path - scan flattened tree blob and call callback on each
714 * child of the given path.
715 * @path: path to start searching for children
716 * @it: callback function
717 * @data: context data pointer
718 *
719 * This function is used to scan the flattened device-tree starting from the
720 * node given by path. It is used to extract information (like reserved
721 * memory), which is required on ealy boot before we can unflatten the tree.
722 */
723int __init of_scan_flat_dt_by_path(const char *path,
724 int (*it)(unsigned long node, const char *name, int depth, void *data),
725 void *data)
726{
727 struct fdt_scan_status st = {path, 0, -1, 0, it, data};
728 int ret = 0;
729
730 if (initial_boot_params)
731 ret = of_scan_flat_dt(fdt_scan_node_by_path, &st);
732
733 if (!st.found)
734 return -ENOENT;
735 else if (ret == -ENXIO) /* scan has been completed */
736 return 0;
737 else
738 return ret;
739}
740
741const char * __init of_flat_dt_get_machine_name(void) 674const char * __init of_flat_dt_get_machine_name(void)
742{ 675{
743 const char *name; 676 const char *name;
diff --git a/include/linux/of_fdt.h b/include/linux/of_fdt.h
index d4d0efe534b9..991ec74b4e11 100644
--- a/include/linux/of_fdt.h
+++ b/include/linux/of_fdt.h
@@ -93,9 +93,6 @@ extern void *of_get_flat_dt_prop(unsigned long node, const char *name,
93extern int of_flat_dt_is_compatible(unsigned long node, const char *name); 93extern int of_flat_dt_is_compatible(unsigned long node, const char *name);
94extern int of_flat_dt_match(unsigned long node, const char *const *matches); 94extern int of_flat_dt_match(unsigned long node, const char *const *matches);
95extern unsigned long of_get_flat_dt_root(void); 95extern unsigned long of_get_flat_dt_root(void);
96extern int of_scan_flat_dt_by_path(const char *path,
97 int (*it)(unsigned long node, const char *name, int depth, void *data),
98 void *data);
99 96
100extern int early_init_dt_scan_chosen(unsigned long node, const char *uname, 97extern int early_init_dt_scan_chosen(unsigned long node, const char *uname,
101 int depth, void *data); 98 int depth, void *data);