diff options
-rw-r--r-- | drivers/of/base.c | 26 | ||||
-rw-r--r-- | include/linux/of.h | 1 |
2 files changed, 27 insertions, 0 deletions
diff --git a/drivers/of/base.c b/drivers/of/base.c index 80c9deca5f35..9bd7c4a31253 100644 --- a/drivers/of/base.c +++ b/drivers/of/base.c | |||
@@ -117,6 +117,32 @@ int of_device_is_compatible(const struct device_node *device, | |||
117 | EXPORT_SYMBOL(of_device_is_compatible); | 117 | EXPORT_SYMBOL(of_device_is_compatible); |
118 | 118 | ||
119 | /** | 119 | /** |
120 | * of_device_is_available - check if a device is available for use | ||
121 | * | ||
122 | * @device: Node to check for availability | ||
123 | * | ||
124 | * Returns 1 if the status property is absent or set to "okay" or "ok", | ||
125 | * 0 otherwise | ||
126 | */ | ||
127 | int of_device_is_available(const struct device_node *device) | ||
128 | { | ||
129 | const char *status; | ||
130 | int statlen; | ||
131 | |||
132 | status = of_get_property(device, "status", &statlen); | ||
133 | if (status == NULL) | ||
134 | return 1; | ||
135 | |||
136 | if (statlen > 0) { | ||
137 | if (!strcmp(status, "okay") || !strcmp(status, "ok")) | ||
138 | return 1; | ||
139 | } | ||
140 | |||
141 | return 0; | ||
142 | } | ||
143 | EXPORT_SYMBOL(of_device_is_available); | ||
144 | |||
145 | /** | ||
120 | * of_get_parent - Get a node's parent if any | 146 | * of_get_parent - Get a node's parent if any |
121 | * @node: Node to get parent | 147 | * @node: Node to get parent |
122 | * | 148 | * |
diff --git a/include/linux/of.h b/include/linux/of.h index 6981016dcc25..59a61bdc98b6 100644 --- a/include/linux/of.h +++ b/include/linux/of.h | |||
@@ -62,6 +62,7 @@ extern struct property *of_find_property(const struct device_node *np, | |||
62 | int *lenp); | 62 | int *lenp); |
63 | extern int of_device_is_compatible(const struct device_node *device, | 63 | extern int of_device_is_compatible(const struct device_node *device, |
64 | const char *); | 64 | const char *); |
65 | extern int of_device_is_available(const struct device_node *device); | ||
65 | extern const void *of_get_property(const struct device_node *node, | 66 | extern const void *of_get_property(const struct device_node *node, |
66 | const char *name, | 67 | const char *name, |
67 | int *lenp); | 68 | int *lenp); |