Commit 834d97d4 authored by Josh Boyer's avatar Josh Boyer Committed by Paul Mackerras

[POWERPC] Add of_device_is_available function

IEEE 1275 defined a standard "status" property to indicate the operational
status of a device.  The property has four possible values: okay, disabled,
fail, fail-xxx.  The absence of this property means the operational status
of the device is unknown or okay.

This adds a function called of_device_is_available that checks the state
of the status property of a device.  If the property is absent or set to
either "okay" or "ok", it returns 1.  Otherwise it returns 0.
Signed-off-by: default avatarJosh Boyer <jwboyer@linux.vnet.ibm.com>
Signed-off-by: default avatarPaul Mackerras <paulus@samba.org>
parent 6ccf61f9
...@@ -116,6 +116,32 @@ int of_device_is_compatible(const struct device_node *device, ...@@ -116,6 +116,32 @@ int of_device_is_compatible(const struct device_node *device,
} }
EXPORT_SYMBOL(of_device_is_compatible); EXPORT_SYMBOL(of_device_is_compatible);
/**
* of_device_is_available - check if a device is available for use
*
* @device: Node to check for availability
*
* Returns 1 if the status property is absent or set to "okay" or "ok",
* 0 otherwise
*/
int of_device_is_available(const struct device_node *device)
{
const char *status;
int statlen;
status = of_get_property(device, "status", &statlen);
if (status == NULL)
return 1;
if (statlen > 0) {
if (!strcmp(status, "okay") || !strcmp(status, "ok"))
return 1;
}
return 0;
}
EXPORT_SYMBOL(of_device_is_available);
/** /**
* of_get_parent - Get a node's parent if any * of_get_parent - Get a node's parent if any
* @node: Node to get parent * @node: Node to get parent
......
...@@ -62,6 +62,7 @@ extern struct property *of_find_property(const struct device_node *np, ...@@ -62,6 +62,7 @@ extern struct property *of_find_property(const struct device_node *np,
int *lenp); int *lenp);
extern int of_device_is_compatible(const struct device_node *device, extern int of_device_is_compatible(const struct device_node *device,
const char *); const char *);
extern int of_device_is_available(const struct device_node *device);
extern const void *of_get_property(const struct device_node *node, extern const void *of_get_property(const struct device_node *node,
const char *name, const char *name,
int *lenp); int *lenp);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment