Browse Source
This patch allows the following construct: / { property-a = "old"; property-b = "does not change"; }; / { property-a = "changed"; property-c = "new"; node-a { }; }; Where the later device tree overrides the properties found in the earlier tree. This is useful for laying down a template device tree in an include file and modifying it for a specific board without having to clone the entire tree. Signed-off-by: Grant Likely <grant.likely@secretlab.ca>main
Grant Likely
15 years ago
committed by
Jon Loeliger
7 changed files with 214 additions and 6 deletions
@ -0,0 +1,66 @@
@@ -0,0 +1,66 @@
|
||||
/dts-v1/; |
||||
|
||||
m1: mq: /memreserve/ 0 0x1000; |
||||
|
||||
/ { |
||||
p0: pw: prop = "foo"; |
||||
|
||||
/* Explicit phandles */ |
||||
n1: node1 { |
||||
linux,phandle = <0x2000>; |
||||
ref = <&{/node2}>; /* reference precedes target */ |
||||
p1: lref; |
||||
}; |
||||
node2 { |
||||
phandle = <0x1>; |
||||
ref = <&{/node1}>; /* reference after target */ |
||||
lref = <&nx>; |
||||
}; |
||||
|
||||
/* Implicit phandles */ |
||||
n3: node3 { |
||||
p3: ref = <&{/node4}>; |
||||
lref = <&n4>; |
||||
}; |
||||
n4: node4 { |
||||
p4: prop = "foo"; |
||||
}; |
||||
|
||||
/* Explicit phandle with implicit value */ |
||||
/* This self-reference is the standard way to tag a node as requiring |
||||
* a phandle (perhaps for reference by nodes that will be dynamically |
||||
* added) without explicitly allocating it a phandle. |
||||
* The self-reference requires some special internal handling, though |
||||
* so check it actually works */ |
||||
n5: nz: node5 { |
||||
linux,phandle = <&n5>; |
||||
phandle = <&nz>; |
||||
n1 = &n1; |
||||
n2 = &n2; |
||||
n3 = &n3; |
||||
}; |
||||
}; |
||||
|
||||
/ { |
||||
/* Append labels (also changes property content) */ |
||||
nx: node1 { |
||||
px: lref = <&ny>; |
||||
}; |
||||
|
||||
/* Add multiple labels */ |
||||
ny: n2: node2 { |
||||
/* Add a label to a property */ |
||||
p2: py: phandle = <0x1>; |
||||
}; |
||||
|
||||
/* Reassigning the same label should be a no-op */ |
||||
n3: node3 { |
||||
p3: ref = <&{/node4}>; |
||||
}; |
||||
|
||||
/* Redefining a node/property should not remove labels */ |
||||
node4 { |
||||
prop; |
||||
}; |
||||
|
||||
}; |
@ -0,0 +1,45 @@
@@ -0,0 +1,45 @@
|
||||
/dts-v1/; |
||||
/memreserve/ 0xdeadbeef00000000 0x100000; |
||||
/memreserve/ 123456789 010000; |
||||
|
||||
/ { |
||||
compatible = "test_tree1"; |
||||
prop-int = "wrong!"; |
||||
prop-str = "hello world"; |
||||
|
||||
subnode@1 { |
||||
compatible = "subnode1"; |
||||
|
||||
subsubnode { |
||||
compatible = "subsubnode1", "subsubnode"; |
||||
prop-int = <0xdeadbeef>; |
||||
}; |
||||
|
||||
ss1 { |
||||
}; |
||||
}; |
||||
|
||||
subnode@2 { |
||||
linux,phandle = <0x2000>; |
||||
prop-int = <123456789>; |
||||
|
||||
ss2 { |
||||
}; |
||||
}; |
||||
}; |
||||
|
||||
/ { |
||||
prop-int = <0xdeadbeef>; |
||||
subnode@1 { |
||||
prop-int = [deadbeef]; |
||||
}; |
||||
subnode@2 { |
||||
subsubnode@0 { |
||||
phandle = <0x2001>; |
||||
compatible = "subsubnode2", "subsubnode"; |
||||
prop-int = <0726746425>; |
||||
}; |
||||
}; |
||||
}; |
||||
|
||||
|
Loading…
Reference in new issue