mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-06-20 13:41:30 +00:00
Consolidate of_device_is_compatible
The only difference here is that Sparc uses strncmp to match compatibility names while PowerPC uses strncasecmp. Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au> Acked-by: Paul Mackerras <paulus@samba.org> Acked-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
97e873e5c8
commit
0081cbc373
7 changed files with 30 additions and 67 deletions
|
@ -1057,31 +1057,6 @@ void __init early_init_devtree(void *params)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/** Checks if the given "compat" string matches one of the strings in
|
|
||||||
* the device's "compatible" property
|
|
||||||
*/
|
|
||||||
int of_device_is_compatible(const struct device_node *device,
|
|
||||||
const char *compat)
|
|
||||||
{
|
|
||||||
const char* cp;
|
|
||||||
int cplen, l;
|
|
||||||
|
|
||||||
cp = of_get_property(device, "compatible", &cplen);
|
|
||||||
if (cp == NULL)
|
|
||||||
return 0;
|
|
||||||
while (cplen > 0) {
|
|
||||||
if (strncasecmp(cp, compat, strlen(compat)) == 0)
|
|
||||||
return 1;
|
|
||||||
l = strlen(cp) + 1;
|
|
||||||
cp += l;
|
|
||||||
cplen -= l;
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
EXPORT_SYMBOL(of_device_is_compatible);
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Indicates whether the root node has a given value in its
|
* Indicates whether the root node has a given value in its
|
||||||
* compatible property.
|
* compatible property.
|
||||||
|
|
|
@ -32,27 +32,6 @@ static struct device_node *allnodes;
|
||||||
*/
|
*/
|
||||||
static DEFINE_RWLOCK(devtree_lock);
|
static DEFINE_RWLOCK(devtree_lock);
|
||||||
|
|
||||||
int of_device_is_compatible(const struct device_node *device,
|
|
||||||
const char *compat)
|
|
||||||
{
|
|
||||||
const char* cp;
|
|
||||||
int cplen, l;
|
|
||||||
|
|
||||||
cp = of_get_property(device, "compatible", &cplen);
|
|
||||||
if (cp == NULL)
|
|
||||||
return 0;
|
|
||||||
while (cplen > 0) {
|
|
||||||
if (strncmp(cp, compat, strlen(compat)) == 0)
|
|
||||||
return 1;
|
|
||||||
l = strlen(cp) + 1;
|
|
||||||
cp += l;
|
|
||||||
cplen -= l;
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
EXPORT_SYMBOL(of_device_is_compatible);
|
|
||||||
|
|
||||||
struct device_node *of_get_parent(const struct device_node *node)
|
struct device_node *of_get_parent(const struct device_node *node)
|
||||||
{
|
{
|
||||||
struct device_node *np;
|
struct device_node *np;
|
||||||
|
|
|
@ -37,27 +37,6 @@ static struct device_node *allnodes;
|
||||||
*/
|
*/
|
||||||
static DEFINE_RWLOCK(devtree_lock);
|
static DEFINE_RWLOCK(devtree_lock);
|
||||||
|
|
||||||
int of_device_is_compatible(const struct device_node *device,
|
|
||||||
const char *compat)
|
|
||||||
{
|
|
||||||
const char* cp;
|
|
||||||
int cplen, l;
|
|
||||||
|
|
||||||
cp = of_get_property(device, "compatible", &cplen);
|
|
||||||
if (cp == NULL)
|
|
||||||
return 0;
|
|
||||||
while (cplen > 0) {
|
|
||||||
if (strncmp(cp, compat, strlen(compat)) == 0)
|
|
||||||
return 1;
|
|
||||||
l = strlen(cp) + 1;
|
|
||||||
cp += l;
|
|
||||||
cplen -= l;
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
EXPORT_SYMBOL(of_device_is_compatible);
|
|
||||||
|
|
||||||
struct device_node *of_get_parent(const struct device_node *node)
|
struct device_node *of_get_parent(const struct device_node *node)
|
||||||
{
|
{
|
||||||
struct device_node *np;
|
struct device_node *np;
|
||||||
|
|
|
@ -63,3 +63,27 @@ const void *of_get_property(const struct device_node *np, const char *name,
|
||||||
return pp ? pp->value : NULL;
|
return pp ? pp->value : NULL;
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(of_get_property);
|
EXPORT_SYMBOL(of_get_property);
|
||||||
|
|
||||||
|
/** Checks if the given "compat" string matches one of the strings in
|
||||||
|
* the device's "compatible" property
|
||||||
|
*/
|
||||||
|
int of_device_is_compatible(const struct device_node *device,
|
||||||
|
const char *compat)
|
||||||
|
{
|
||||||
|
const char* cp;
|
||||||
|
int cplen, l;
|
||||||
|
|
||||||
|
cp = of_get_property(device, "compatible", &cplen);
|
||||||
|
if (cp == NULL)
|
||||||
|
return 0;
|
||||||
|
while (cplen > 0) {
|
||||||
|
if (of_compat_cmp(cp, compat, strlen(compat)) == 0)
|
||||||
|
return 1;
|
||||||
|
l = strlen(cp) + 1;
|
||||||
|
cp += l;
|
||||||
|
cplen -= l;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL(of_device_is_compatible);
|
||||||
|
|
|
@ -24,6 +24,8 @@
|
||||||
#define OF_ROOT_NODE_ADDR_CELLS_DEFAULT 1
|
#define OF_ROOT_NODE_ADDR_CELLS_DEFAULT 1
|
||||||
#define OF_ROOT_NODE_SIZE_CELLS_DEFAULT 1
|
#define OF_ROOT_NODE_SIZE_CELLS_DEFAULT 1
|
||||||
|
|
||||||
|
#define of_compat_cmp(s1, s2, l) strncasecmp((s1), (s2), (l))
|
||||||
|
|
||||||
/* Definitions used by the flattened device tree */
|
/* Definitions used by the flattened device tree */
|
||||||
#define OF_DT_HEADER 0xd00dfeed /* marker */
|
#define OF_DT_HEADER 0xd00dfeed /* marker */
|
||||||
#define OF_DT_BEGIN_NODE 0x1 /* Start of node, full name */
|
#define OF_DT_BEGIN_NODE 0x1 /* Start of node, full name */
|
||||||
|
|
|
@ -23,6 +23,8 @@
|
||||||
#define OF_ROOT_NODE_ADDR_CELLS_DEFAULT 2
|
#define OF_ROOT_NODE_ADDR_CELLS_DEFAULT 2
|
||||||
#define OF_ROOT_NODE_SIZE_CELLS_DEFAULT 1
|
#define OF_ROOT_NODE_SIZE_CELLS_DEFAULT 1
|
||||||
|
|
||||||
|
#define of_compat_cmp(s1, s2, l) strncmp((s1), (s2), (l))
|
||||||
|
|
||||||
typedef u32 phandle;
|
typedef u32 phandle;
|
||||||
typedef u32 ihandle;
|
typedef u32 ihandle;
|
||||||
|
|
||||||
|
|
|
@ -23,6 +23,8 @@
|
||||||
#define OF_ROOT_NODE_ADDR_CELLS_DEFAULT 2
|
#define OF_ROOT_NODE_ADDR_CELLS_DEFAULT 2
|
||||||
#define OF_ROOT_NODE_SIZE_CELLS_DEFAULT 1
|
#define OF_ROOT_NODE_SIZE_CELLS_DEFAULT 1
|
||||||
|
|
||||||
|
#define of_compat_cmp(s1, s2, l) strncmp((s1), (s2), (l))
|
||||||
|
|
||||||
typedef u32 phandle;
|
typedef u32 phandle;
|
||||||
typedef u32 ihandle;
|
typedef u32 ihandle;
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue