mirror of https://gitee.com/openkylin/linux.git
of/flattree: Make the kernel accept ePAPR style phandle information
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 <david@gibson.dropbear.id.au> Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
This commit is contained in:
parent
087f79c48c
commit
04b954a673
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue