Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
L
linux-davinci-2.6.23
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Redmine
Redmine
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
linux
linux-davinci-2.6.23
Commits
87b385da
Commit
87b385da
authored
Jun 25, 2006
by
David S. Miller
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[SPARC]: Add unique device_node IDs and a ".node" property.
Signed-off-by:
David S. Miller
<
davem@davemloft.net
>
parent
fb7cd9d9
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
75 additions
and
36 deletions
+75
-36
arch/sparc/kernel/prom.c
arch/sparc/kernel/prom.c
+35
-18
arch/sparc64/kernel/prom.c
arch/sparc64/kernel/prom.c
+36
-18
include/asm-sparc/prom.h
include/asm-sparc/prom.h
+2
-0
include/asm-sparc64/prom.h
include/asm-sparc64/prom.h
+2
-0
No files found.
arch/sparc/kernel/prom.c
View file @
87b385da
...
...
@@ -407,7 +407,9 @@ static char * __init build_full_name(struct device_node *dp)
return
n
;
}
static
struct
property
*
__init
build_one_prop
(
phandle
node
,
char
*
prev
)
static
unsigned
int
unique_id
;
static
struct
property
*
__init
build_one_prop
(
phandle
node
,
char
*
prev
,
char
*
special_name
,
void
*
special_val
,
int
special_len
)
{
static
struct
property
*
tmp
=
NULL
;
struct
property
*
p
;
...
...
@@ -417,25 +419,34 @@ static struct property * __init build_one_prop(phandle node, char *prev)
p
=
tmp
;
memset
(
p
,
0
,
sizeof
(
*
p
)
+
32
);
tmp
=
NULL
;
}
else
}
else
{
p
=
prom_early_alloc
(
sizeof
(
struct
property
)
+
32
);
p
->
unique_id
=
unique_id
++
;
}
p
->
name
=
(
char
*
)
(
p
+
1
);
if
(
prev
==
NULL
)
{
prom_firstprop
(
node
,
p
->
name
);
if
(
special_name
)
{
p
->
length
=
special_len
;
p
->
value
=
prom_early_alloc
(
special_len
);
memcpy
(
p
->
value
,
special_val
,
special_len
);
}
else
{
prom_nextprop
(
node
,
prev
,
p
->
name
);
}
if
(
strlen
(
p
->
name
)
==
0
)
{
tmp
=
p
;
return
NULL
;
}
p
->
length
=
prom_getproplen
(
node
,
p
->
name
);
if
(
p
->
length
<=
0
)
{
p
->
length
=
0
;
}
else
{
p
->
value
=
prom_early_alloc
(
p
->
length
);
len
=
prom_getproperty
(
node
,
p
->
name
,
p
->
value
,
p
->
length
);
if
(
prev
==
NULL
)
{
prom_firstprop
(
node
,
p
->
name
);
}
else
{
prom_nextprop
(
node
,
prev
,
p
->
name
);
}
if
(
strlen
(
p
->
name
)
==
0
)
{
tmp
=
p
;
return
NULL
;
}
p
->
length
=
prom_getproplen
(
node
,
p
->
name
);
if
(
p
->
length
<=
0
)
{
p
->
length
=
0
;
}
else
{
p
->
value
=
prom_early_alloc
(
p
->
length
+
1
);
prom_getproperty
(
node
,
p
->
name
,
p
->
value
,
p
->
length
);
((
unsigned
char
*
)
p
->
value
)[
p
->
length
]
=
'\0'
;
}
}
return
p
;
}
...
...
@@ -444,9 +455,14 @@ static struct property * __init build_prop_list(phandle node)
{
struct
property
*
head
,
*
tail
;
head
=
tail
=
build_one_prop
(
node
,
NULL
);
head
=
tail
=
build_one_prop
(
node
,
NULL
,
".node"
,
&
node
,
sizeof
(
node
));
tail
->
next
=
build_one_prop
(
node
,
NULL
,
NULL
,
NULL
,
0
);
tail
=
tail
->
next
;
while
(
tail
)
{
tail
->
next
=
build_one_prop
(
node
,
tail
->
name
);
tail
->
next
=
build_one_prop
(
node
,
tail
->
name
,
NULL
,
NULL
,
0
);
tail
=
tail
->
next
;
}
...
...
@@ -475,6 +491,7 @@ static struct device_node * __init create_node(phandle node)
return
NULL
;
dp
=
prom_early_alloc
(
sizeof
(
*
dp
));
dp
->
unique_id
=
unique_id
++
;
kref_init
(
&
dp
->
kref
);
...
...
arch/sparc64/kernel/prom.c
View file @
87b385da
...
...
@@ -584,7 +584,9 @@ static char * __init build_full_name(struct device_node *dp)
return
n
;
}
static
struct
property
*
__init
build_one_prop
(
phandle
node
,
char
*
prev
)
static
unsigned
int
unique_id
;
static
struct
property
*
__init
build_one_prop
(
phandle
node
,
char
*
prev
,
char
*
special_name
,
void
*
special_val
,
int
special_len
)
{
static
struct
property
*
tmp
=
NULL
;
struct
property
*
p
;
...
...
@@ -593,25 +595,35 @@ static struct property * __init build_one_prop(phandle node, char *prev)
p
=
tmp
;
memset
(
p
,
0
,
sizeof
(
*
p
)
+
32
);
tmp
=
NULL
;
}
else
}
else
{
p
=
prom_early_alloc
(
sizeof
(
struct
property
)
+
32
);
p
->
unique_id
=
unique_id
++
;
}
p
->
name
=
(
char
*
)
(
p
+
1
);
if
(
prev
==
NULL
)
{
prom_firstprop
(
node
,
p
->
name
);
if
(
special_name
)
{
strcpy
(
p
->
name
,
special_name
);
p
->
length
=
special_len
;
p
->
value
=
prom_early_alloc
(
special_len
);
memcpy
(
p
->
value
,
special_val
,
special_len
);
}
else
{
prom_nextprop
(
node
,
prev
,
p
->
name
);
}
if
(
strlen
(
p
->
name
)
==
0
)
{
tmp
=
p
;
return
NULL
;
}
p
->
length
=
prom_getproplen
(
node
,
p
->
name
);
if
(
p
->
length
<=
0
)
{
p
->
length
=
0
;
}
else
{
p
->
value
=
prom_early_alloc
(
p
->
length
);
prom_getproperty
(
node
,
p
->
name
,
p
->
value
,
p
->
length
);
if
(
prev
==
NULL
)
{
prom_firstprop
(
node
,
p
->
name
);
}
else
{
prom_nextprop
(
node
,
prev
,
p
->
name
);
}
if
(
strlen
(
p
->
name
)
==
0
)
{
tmp
=
p
;
return
NULL
;
}
p
->
length
=
prom_getproplen
(
node
,
p
->
name
);
if
(
p
->
length
<=
0
)
{
p
->
length
=
0
;
}
else
{
p
->
value
=
prom_early_alloc
(
p
->
length
+
1
);
prom_getproperty
(
node
,
p
->
name
,
p
->
value
,
p
->
length
);
((
unsigned
char
*
)
p
->
value
)[
p
->
length
]
=
'\0'
;
}
}
return
p
;
}
...
...
@@ -620,9 +632,14 @@ static struct property * __init build_prop_list(phandle node)
{
struct
property
*
head
,
*
tail
;
head
=
tail
=
build_one_prop
(
node
,
NULL
);
head
=
tail
=
build_one_prop
(
node
,
NULL
,
".node"
,
&
node
,
sizeof
(
node
));
tail
->
next
=
build_one_prop
(
node
,
NULL
,
NULL
,
NULL
,
0
);
tail
=
tail
->
next
;
while
(
tail
)
{
tail
->
next
=
build_one_prop
(
node
,
tail
->
name
);
tail
->
next
=
build_one_prop
(
node
,
tail
->
name
,
NULL
,
NULL
,
0
);
tail
=
tail
->
next
;
}
...
...
@@ -651,6 +668,7 @@ static struct device_node * __init create_node(phandle node)
return
NULL
;
dp
=
prom_early_alloc
(
sizeof
(
*
dp
));
dp
->
unique_id
=
unique_id
++
;
kref_init
(
&
dp
->
kref
);
...
...
include/asm-sparc/prom.h
View file @
87b385da
...
...
@@ -36,6 +36,7 @@ struct property {
void
*
value
;
struct
property
*
next
;
unsigned
long
_flags
;
unsigned
int
unique_id
;
};
struct
device_node
{
...
...
@@ -59,6 +60,7 @@ struct device_node {
struct
kref
kref
;
unsigned
long
_flags
;
void
*
data
;
unsigned
int
unique_id
;
};
/* flag descriptions */
...
...
include/asm-sparc64/prom.h
View file @
87b385da
...
...
@@ -36,6 +36,7 @@ struct property {
void
*
value
;
struct
property
*
next
;
unsigned
long
_flags
;
unsigned
int
unique_id
;
};
struct
device_node
{
...
...
@@ -59,6 +60,7 @@ struct device_node {
struct
kref
kref
;
unsigned
long
_flags
;
void
*
data
;
unsigned
int
unique_id
;
};
/* flag descriptions */
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment