Skip to content

Commit

Permalink
of/flattree: Make the kernel accept ePAPR style phandle information
Browse files Browse the repository at this point in the history
Currently when processing flattened device trees, the kernel expects
the phandle in a property called "linux,phandle".  The ePAPR spec -
not being Linux specific - instead requires phandles to be encoded in
a property named simply "phandle".  This patch makes the kernel accept
either form when unflattening the device tree.

Signed-off-by: David Gibson <[email protected]>
Signed-off-by: Grant Likely <[email protected]>
  • Loading branch information
dgibson authored and glikely committed Feb 9, 2010
1 parent 087f79c commit 04b954a
Showing 1 changed file with 10 additions and 1 deletion.
11 changes: 10 additions & 1 deletion drivers/of/fdt.c
Original file line number Diff line number Diff line change
Expand Up @@ -310,10 +310,19 @@ unsigned long __init unflatten_dt_node(unsigned long mem,
pp = unflatten_dt_alloc(&mem, sizeof(struct property),
__alignof__(struct property));
if (allnextpp) {
if (strcmp(pname, "linux,phandle") == 0) {
/* We accept flattened tree phandles either in
* ePAPR-style "phandle" properties, or the
* legacy "linux,phandle" properties. If both
* appear and have different values, things
* will get weird. Don't do that. */
if ((strcmp(pname, "phandle") == 0) ||
(strcmp(pname, "linux,phandle") == 0)) {
if (np->phandle == 0)
np->phandle = *((u32 *)*p);
}
/* And we process the "ibm,phandle" property
* used in pSeries dynamic device tree
* stuff */
if (strcmp(pname, "ibm,phandle") == 0)
np->phandle = *((u32 *)*p);
pp->name = pname;
Expand Down

0 comments on commit 04b954a

Please sign in to comment.