Expand OpenFirmware API with ofw_bus_node_status_okay
method Method could be used before we can access device_t structure. As per simple phandle_t handle we can access FDT to check if specified node has been enabled. It will be used in Marvell's common configuration code. Submitted by: Konrad Adamczyk <ka@semihalf.com> Obtained from: Semihalf Sponsored by: Stormshield Reviewed by: zbb, meloun-miracle-cz Differential revision: https://reviews.freebsd.org/D9218
This commit is contained in:
parent
fdd5dc9c11
commit
5b53c99092
@ -46,6 +46,7 @@ __FBSDID("$FreeBSD$");
|
||||
#include "ofw_bus_if.h"
|
||||
|
||||
#define OFW_COMPAT_LEN 255
|
||||
#define OFW_STATUS_LEN 16
|
||||
|
||||
int
|
||||
ofw_bus_gen_setup_devinfo(struct ofw_bus_devinfo *obd, phandle_t node)
|
||||
@ -179,6 +180,24 @@ ofw_bus_status_okay(device_t dev)
|
||||
return (0);
|
||||
}
|
||||
|
||||
int
|
||||
ofw_bus_node_status_okay(phandle_t node)
|
||||
{
|
||||
char status[OFW_STATUS_LEN];
|
||||
int len;
|
||||
|
||||
len = OF_getproplen(node, "status");
|
||||
if (len <= 0)
|
||||
return (1);
|
||||
|
||||
OF_getprop(node, "status", status, OFW_STATUS_LEN);
|
||||
if ((len == 5 && (bcmp(status, "okay", len) == 0)) ||
|
||||
(len == 3 && (bcmp(status, "ok", len))))
|
||||
return (1);
|
||||
|
||||
return (0);
|
||||
}
|
||||
|
||||
static int
|
||||
ofw_bus_node_is_compatible_int(const char *compat, int len,
|
||||
const char *onecompat)
|
||||
|
@ -100,6 +100,7 @@ int ofw_bus_intr_by_rid(device_t, phandle_t, int, phandle_t *, int *,
|
||||
/* Helper to get device status property */
|
||||
const char *ofw_bus_get_status(device_t dev);
|
||||
int ofw_bus_status_okay(device_t dev);
|
||||
int ofw_bus_node_status_okay(phandle_t node);
|
||||
|
||||
/* Helper to get node's interrupt parent */
|
||||
phandle_t ofw_bus_find_iparent(phandle_t);
|
||||
|
Loading…
Reference in New Issue
Block a user