Skip to contentSkip to conversation

of: Add device_type access helper functions

PATCH In review Rob Herring 2 participants 3 messages Aug 30, 2018 – Sep 5, 2018 Device tree

lore
Share & tools
lore

Rob Herring

author maintainer
#0 lore raw

PATCH 1/1 of: Add device_type access helper functions

In preparation to remove direct access to device_node.type, add of_node_is_type() and of_node_get_device_type() helpers to check and retrieve the device type.

---
 include/linux/of.h | 12 ++++++++++++
 1 file changed, 12 insertions(+)
include/linux/of.h +12 -0
index a40f63a36afa..506beca9588d 100644
@@ -980,6 +980,18 @@ static inline struct device_node *of_find_matching_node(
 	return of_find_matching_node_and_match(from, matches, NULL);
 }
 
+static inline const char *of_node_get_device_type(const struct device_node *np)
+{
+	return of_get_property(np, "type", NULL);
+}
+
+static inline bool of_node_is_type(const struct device_node *np, const char *type)
+{
+	const char *match = of_node_get_device_type(np);
+
+	return np && match && type && !of_prop_cmp(match, type);
+}
+
 /**
  * of_property_count_u8_elems - Count the number of u8 elements in a property
  *
Signature · 1 line
2.17.1
#1 lore raw
Quoted 15 lines · Rob Herring

In preparation to remove direct access to device_node.type, add of_node_is_type() and of_node_get_device_type() helpers to check and retrieve the device type.

---
 include/linux/of.h | 12 ++++++++++++
 1 file changed, 12 insertions(+)
include/linux/of.h +0 -0
index a40f63a36afa..506beca9588d 100644

include/linux/of.h static inline struct device_node *of_find_matching_node( · line 985

Quoted 6 lines
include/linux/of.h +3 -0
@@ -980,6 +980,18 @@ static inline struct device_node *of_find_matching_node(
 	return of_find_matching_node_and_match(from, matches, NULL);
 }
 
+static inline const char *of_node_get_device_type(const struct device_node *np)
+{
+	return of_get_property(np, "type", NULL);

I'm a little confused. The patch comment says "remove direct access to device_node.type. device_node.type is set to the value of the property "device_type" in populate_node(), but of_node_get_device_type() is looking for property "type".

include/linux/of.h static inline struct device_node *of_find_matching_node( · line 997

Quoted 12 lines
include/linux/of.h +8 -0
+}> +
+static inline bool of_node_is_type(const struct device_node *np, const char *type)
+{
+	const char *match = of_node_get_device_type(np);
+
+	return np && match && type && !of_prop_cmp(match, type);
+}
+
 /**
  * of_property_count_u8_elems - Count the number of u8 elements in a property
  *

I'd like to see one or two examples of how you plan to use of_node_get_device_type() (outside of of_node_is_type()) and examples of planned use of of_node_is_type() so I can better understand anticipated usage. Complete, clean patches not needed for the examples, just enough text for me to see the resulting code change where the helpers are used.

-Frank

author maintainer
#2 lore raw
Quoted 20 lines · Frank Rowand
Quoted 18 lines · Rob Herring

In preparation to remove direct access to device_node.type, add of_node_is_type() and of_node_get_device_type() helpers to check and retrieve the device type.

---
 include/linux/of.h | 12 ++++++++++++
 1 file changed, 12 insertions(+)
include/linux/of.h +0 -0
index a40f63a36afa..506beca9588d 100644
@@ -980,6 +980,18 @@ static inline struct device_node *of_find_matching_node(
      return of_find_matching_node_and_match(from, matches, NULL);
 }
 
Quoted 7 lines

include/linux/of.h static inline struct device_node *of_find_matching_node( · line 985

Quoted 3 lines
include/linux/of.h +3 -0
+static inline const char *of_node_get_device_type(const struct device_node *np)
+{
+     return of_get_property(np, "type", NULL);

I'm a little confused. The patch comment says "remove direct access to device_node.type. device_node.type is set to the value of the property "device_type" in populate_node(), but of_node_get_device_type() is looking for property "type".

Crap. That should be device_type.

Quoted 11 lines
Quoted 11 lines
include/linux/of.h +8 -0
+}> +
+static inline bool of_node_is_type(const struct device_node *np, const char *type)
+{
+     const char *match = of_node_get_device_type(np);
+
+     return np && match && type && !of_prop_cmp(match, type);
+}
+
 /**
  * of_property_count_u8_elems - Count the number of u8 elements in a property
Quoted 8 lines

include/linux/of.h static inline struct device_node *of_find_matching_node( · line 996

Quoted 2 lines
include/linux/of.h +0 -0
  *

I'd like to see one or two examples of how you plan to use of_node_get_device_type() (outside of of_node_is_type()) and examples of planned use of of_node_is_type() so I can better understand anticipated usage. Complete, clean patches not needed for the examples, just enough text for me to see the resulting code change where the helpers are used.

See my dt/testing branch. Most cases are of_node_is_type which replaces strcmp's of node->type. I'll be sending out the patches soon.

Rob