18 #include <linux/kernel.h>
19 #include <linux/module.h>
20 #include <linux/errno.h>
22 #include <linux/slab.h>
32 #if defined(CONFIG_SPARC)
35 #define of_pdt_incr_unique_id(p) do { \
36 (p)->unique_id = of_pdt_unique_id++; \
47 ourlen =
strlen(dp->path_component_name);
48 len = ourlen + plen + 2;
52 if (!of_node_is_root(dp->
parent)) {
56 strcpy(n + plen, dp->path_component_name);
63 static inline void of_pdt_incr_unique_id(
void *
p) { }
68 static int failsafe_id = 0;
72 if (of_pdt_prom_ops->pkg2path(dp->
phandle,
NULL, 0, &len))
76 if (of_pdt_prom_ops->pkg2path(dp->
phandle, buf, len, &len))
84 of_node_is_root(dp->
parent) ?
"" : dp->
parent->full_name,
85 dp->
name, failsafe_id++);
86 pr_err(
"%s: pkg2path failed; assigning %s\n", __func__, buf);
103 memset(p, 0,
sizeof(*p) + 32);
107 of_pdt_incr_unique_id(p);
110 p->
name = (
char *) (p + 1);
117 err = of_pdt_prom_ops->nextprop(node, prev, p->
name);
122 p->
length = of_pdt_prom_ops->getproplen(node, p->
name);
129 len = of_pdt_prom_ops->getproperty(node, p->
name,
143 head = tail = of_pdt_build_one_prop(node,
NULL,
144 ".node", &node,
sizeof(node));
149 tail->
next = of_pdt_build_one_prop(node, tail->
name,
159 char *buf =
"<NULL>";
162 len = of_pdt_prom_ops->getproplen(node, name);
165 len = of_pdt_prom_ops->getproperty(node, name, buf, len);
180 of_pdt_incr_unique_id(dp);
183 kref_init(&dp->
kref);
185 dp->
name = of_pdt_get_one_property(node,
"name");
186 dp->
type = of_pdt_get_one_property(node,
"device_type");
189 dp->
properties = of_pdt_build_prop_list(node);
204 dp = of_pdt_create_node(node, parent);
209 prev_sibling->sibling =
dp;
218 dp->
full_name = of_pdt_build_full_name(dp);
220 dp->
child = of_pdt_build_tree(dp,
221 of_pdt_prom_ops->getchild(node),
nextp);
226 node = of_pdt_prom_ops->getsibling(node);
242 of_pdt_prom_ops = ops;
245 #if defined(CONFIG_SPARC)