Thread (1 message) 1 message, 1 author, 2012-06-13

Re: [PATCH] of: match by compatible property first

From: Thierry Reding <hidden>
Date: 2012-06-13 07:01:39

On Fri, Apr 20, 2012 at 03:28:40PM +0200, Thierry Reding wrote:
* Rob Herring wrote:
quoted
On 04/20/2012 05:21 AM, Thierry Reding wrote:
[...]
quoted
quoted
+const struct of_device_id *of_match_compat(const struct of_device_id *matches,
+					   const char *compat)
+{
+	while (matches->name[0] || matches->type[0] || matches->compatible[0]) {
You are not using name or type here, so you can remove.
They are still required so we don't stop early. A match table could well have
a first entry that has name and/or type set but not compatible, followed by a
second entry with only compatible set.
quoted
quoted
 	while (matches->name[0] || matches->type[0] || matches->compatible[0]) {
You don't need to check compatible ptr here.
For similar reasons as above this check needs to stay in.
quoted
quoted
 		int match = 1;
 		if (matches->name[0])
@@ -532,10 +558,7 @@ const struct of_device_id *of_match_node(const struct of_device_id *matches,
 		if (matches->type[0])
 			match &= node->type
 				&& !strcmp(matches->type, node->type);
-		if (matches->compatible[0])
-			match &= of_device_is_compatible(node,
-						matches->compatible);
-		if (match)
+		if (match && !matches->compatible[0])
 			return matches;
 		matches++;
 	}
diff --git a/include/linux/of.h b/include/linux/of.h
index bd52d83..23b5061 100644
--- a/include/linux/of.h
+++ b/include/linux/of.h
@@ -231,6 +231,8 @@ extern const void *of_get_property(const struct device_node *node,
 
 extern int of_n_addr_cells(struct device_node *np);
 extern int of_n_size_cells(struct device_node *np);
+extern const struct of_device_id *of_match_compat(
+	const struct of_device_id *matches, const char *compat);
Why does this need to be a public function?
It doesn't. I just thought it might be handy to have. I can make it static if
you don't think it's useful generally.

Thierry
Rob,

Do you have further comments on this?

Thierry
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help