Skip to content

Commit 71c5498

Browse files
haokexinglikely
authored andcommitted
Revert "of: search the best compatible match first in __of_match_node()"
This reverts commit 06b29e7. As pointed out by Grant Likely, we should also take the type and name into account when searching the best compatible match. That means the match with compatible, type and name should be better than the match just with the same compatible string. So revert this and we will implement another method to find the best match entry. Signed-off-by: Kevin Hao <[email protected]> Signed-off-by: Grant Likely <[email protected]>
1 parent 60f76ea commit 71c5498

File tree

1 file changed

+1
-42
lines changed

1 file changed

+1
-42
lines changed

drivers/of/base.c

Lines changed: 1 addition & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -730,49 +730,13 @@ struct device_node *of_find_node_with_property(struct device_node *from,
730730
}
731731
EXPORT_SYMBOL(of_find_node_with_property);
732732

733-
static const struct of_device_id *
734-
of_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-
763733
static
764734
const struct of_device_id *__of_match_node(const struct of_device_id *matches,
765735
const struct device_node *node)
766736
{
767-
const struct of_device_id *m;
768-
769737
if (!matches)
770738
return NULL;
771739

772-
m = of_match_compatible(matches, node);
773-
if (m)
774-
return m;
775-
776740
while (matches->name[0] || matches->type[0] || matches->compatible[0]) {
777741
int match = 1;
778742
if (matches->name[0])
@@ -796,12 +760,7 @@ const struct of_device_id *__of_match_node(const struct of_device_id *matches,
796760
* @matches: array of of device match structures to search in
797761
* @node: the of device structure to match against
798762
*
799-
* Low level utility function used by device matching. We have two ways
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.
763+
* Low level utility function used by device matching.
805764
*/
806765
const struct of_device_id *of_match_node(const struct of_device_id *matches,
807766
const struct device_node *node)

0 commit comments

Comments
 (0)