Commit 7d9439d5 authored by David S. Miller's avatar David S. Miller

sparc: Move create_node() and friends into prom_common.c

Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 06c0db72
...@@ -15,6 +15,7 @@ extern void irq_trans_init(struct device_node *dp); ...@@ -15,6 +15,7 @@ extern void irq_trans_init(struct device_node *dp);
extern unsigned int prom_unique_id; extern unsigned int prom_unique_id;
extern struct property * __init build_prop_list(phandle node); extern struct device_node * __init create_node(phandle node,
struct device_node *parent);
#endif /* __PROM_H */ #endif /* __PROM_H */
...@@ -196,44 +196,6 @@ static char * __init build_full_name(struct device_node *dp) ...@@ -196,44 +196,6 @@ static char * __init build_full_name(struct device_node *dp)
return n; return n;
} }
static char * __init get_one_property(phandle node, const char *name)
{
char *buf = "<NULL>";
int len;
len = prom_getproplen(node, name);
if (len > 0) {
buf = prom_early_alloc(len);
len = prom_getproperty(node, name, buf, len);
}
return buf;
}
static struct device_node * __init create_node(phandle node, struct device_node *parent)
{
struct device_node *dp;
if (!node)
return NULL;
dp = prom_early_alloc(sizeof(*dp));
dp->unique_id = prom_unique_id++;
dp->parent = parent;
kref_init(&dp->kref);
dp->name = get_one_property(node, "name");
dp->type = get_one_property(node, "device_type");
dp->node = node;
/* Build interrupts later... */
dp->properties = build_prop_list(node);
return dp;
}
static struct device_node * __init build_tree(struct device_node *parent, phandle node, struct device_node ***nextp) static struct device_node * __init build_tree(struct device_node *parent, phandle node, struct device_node ***nextp)
{ {
struct device_node *dp; struct device_node *dp;
......
...@@ -399,44 +399,6 @@ static char * __init build_full_name(struct device_node *dp) ...@@ -399,44 +399,6 @@ static char * __init build_full_name(struct device_node *dp)
return n; return n;
} }
static char * __init get_one_property(phandle node, const char *name)
{
char *buf = "<NULL>";
int len;
len = prom_getproplen(node, name);
if (len > 0) {
buf = prom_early_alloc(len);
len = prom_getproperty(node, name, buf, len);
}
return buf;
}
static struct device_node * __init create_node(phandle node, struct device_node *parent)
{
struct device_node *dp;
if (!node)
return NULL;
dp = prom_early_alloc(sizeof(*dp));
dp->unique_id = prom_unique_id++;
dp->parent = parent;
kref_init(&dp->kref);
dp->name = get_one_property(node, "name");
dp->type = get_one_property(node, "device_type");
dp->node = node;
dp->properties = build_prop_list(node);
irq_trans_init(dp);
return dp;
}
static struct device_node * __init build_tree(struct device_node *parent, phandle node, struct device_node ***nextp) static struct device_node * __init build_tree(struct device_node *parent, phandle node, struct device_node ***nextp)
{ {
struct device_node *ret = NULL, *prev_sibling = NULL; struct device_node *ret = NULL, *prev_sibling = NULL;
......
...@@ -184,7 +184,7 @@ static struct property * __init build_one_prop(phandle node, char *prev, ...@@ -184,7 +184,7 @@ static struct property * __init build_one_prop(phandle node, char *prev,
return p; return p;
} }
struct property * __init build_prop_list(phandle node) static struct property * __init build_prop_list(phandle node)
{ {
struct property *head, *tail; struct property *head, *tail;
...@@ -201,3 +201,42 @@ struct property * __init build_prop_list(phandle node) ...@@ -201,3 +201,42 @@ struct property * __init build_prop_list(phandle node)
return head; return head;
} }
static char * __init get_one_property(phandle node, const char *name)
{
char *buf = "<NULL>";
int len;
len = prom_getproplen(node, name);
if (len > 0) {
buf = prom_early_alloc(len);
len = prom_getproperty(node, name, buf, len);
}
return buf;
}
struct device_node * __init create_node(phandle node,
struct device_node *parent)
{
struct device_node *dp;
if (!node)
return NULL;
dp = prom_early_alloc(sizeof(*dp));
dp->unique_id = prom_unique_id++;
dp->parent = parent;
kref_init(&dp->kref);
dp->name = get_one_property(node, "name");
dp->type = get_one_property(node, "device_type");
dp->node = node;
/* Build interrupts later... */
dp->properties = build_prop_list(node);
return dp;
}
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