diff options
-rw-r--r-- | drivers/of/fdt.c | 67 | ||||
-rw-r--r-- | include/linux/of_fdt.h | 3 |
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 | */ | ||
677 | static 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 | */ | ||
723 | int __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 | |||
741 | const char * __init of_flat_dt_get_machine_name(void) | 674 | const 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, | |||
93 | extern int of_flat_dt_is_compatible(unsigned long node, const char *name); | 93 | extern int of_flat_dt_is_compatible(unsigned long node, const char *name); |
94 | extern int of_flat_dt_match(unsigned long node, const char *const *matches); | 94 | extern int of_flat_dt_match(unsigned long node, const char *const *matches); |
95 | extern unsigned long of_get_flat_dt_root(void); | 95 | extern unsigned long of_get_flat_dt_root(void); |
96 | extern 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 | ||
100 | extern int early_init_dt_scan_chosen(unsigned long node, const char *uname, | 97 | extern int early_init_dt_scan_chosen(unsigned long node, const char *uname, |
101 | int depth, void *data); | 98 | int depth, void *data); |