aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/of/base.c43
1 files changed, 1 insertions, 42 deletions
diff --git a/drivers/of/base.c b/drivers/of/base.c
index 10b51106c854..ba195fbce4c6 100644
--- a/drivers/of/base.c
+++ b/drivers/of/base.c
@@ -730,49 +730,13 @@ out:
730} 730}
731EXPORT_SYMBOL(of_find_node_with_property); 731EXPORT_SYMBOL(of_find_node_with_property);
732 732
733static const struct of_device_id *
734of_match_compatible(const struct of_device_id *matches,
735 const struct device_node *node)
736{
737 const char *cp;
738 int cplen, l;
739 const struct of_device_id *m;
740
741 cp = __of_get_property(node, "compatible", &cplen);
742 while (cp && (cplen > 0)) {
743 m = matches;
744 while (m->name[0] || m->type[0] || m->compatible[0]) {
745 /* Only match for the entries without type and name */
746 if (m->name[0] || m->type[0] ||
747 of_compat_cmp(m->compatible, cp,
748 strlen(m->compatible)))
749 m++;
750 else
751 return m;
752 }
753
754 /* Get node's next compatible string */
755 l = strlen(cp) + 1;
756 cp += l;
757 cplen -= l;
758 }
759
760 return NULL;
761}
762
763static 733static
764const struct of_device_id *__of_match_node(const struct of_device_id *matches, 734const struct of_device_id *__of_match_node(const struct of_device_id *matches,
765 const struct device_node *node) 735 const struct device_node *node)
766{ 736{
767 const struct of_device_id *m;
768
769 if (!matches) 737 if (!matches)
770 return NULL; 738 return NULL;
771 739
772 m = of_match_compatible(matches, node);
773 if (m)
774 return m;
775
776 while (matches->name[0] || matches->type[0] || matches->compatible[0]) { 740 while (matches->name[0] || matches->type[0] || matches->compatible[0]) {
777 int match = 1; 741 int match = 1;
778 if (matches->name[0]) 742 if (matches->name[0])
@@ -796,12 +760,7 @@ const struct of_device_id *__of_match_node(const struct of_device_id *matches,
796 * @matches: array of of device match structures to search in 760 * @matches: array of of device match structures to search in
797 * @node: the of device structure to match against 761 * @node: the of device structure to match against
798 * 762 *
799 * Low level utility function used by device matching. We have two ways 763 * Low level utility function used by device matching.
800 * of matching:
801 * - Try to find the best compatible match by comparing each compatible
802 * string of device node with all the given matches respectively.
803 * - If the above method failed, then try to match the compatible by using
804 * __of_device_is_compatible() besides the match in type and name.
805 */ 764 */
806const struct of_device_id *of_match_node(const struct of_device_id *matches, 765const struct of_device_id *of_match_node(const struct of_device_id *matches,
807 const struct device_node *node) 766 const struct device_node *node)