Skip to content

Commit

Permalink
[POWERPC] Add of_device_is_available function
Browse files Browse the repository at this point in the history
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: Josh Boyer <[email protected]>
Signed-off-by: Paul Mackerras <[email protected]>
  • Loading branch information
Josh Boyer authored and paulusmack committed Apr 7, 2008
1 parent 6ccf61f commit 834d97d
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 0 deletions.
26 changes: 26 additions & 0 deletions drivers/of/base.c
Original file line number Diff line number Diff line change
Expand Up @@ -116,6 +116,32 @@ int of_device_is_compatible(const struct device_node *device,
}
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
* @node: Node to get parent
Expand Down
1 change: 1 addition & 0 deletions include/linux/of.h
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,7 @@ extern struct property *of_find_property(const struct device_node *np,
int *lenp);
extern int of_device_is_compatible(const struct device_node *device,
const char *);
extern int of_device_is_available(const struct device_node *device);
extern const void *of_get_property(const struct device_node *node,
const char *name,
int *lenp);
Expand Down

0 comments on commit 834d97d

Please sign in to comment.