730875016a
The new fdt_generate_phandle() function can be used to generate a new, unused phandle given a specific device tree blob. The implementation is somewhat naive in that it simply walks the entire device tree to find the highest phandle value and then returns a phandle value one higher than that. A more clever implementation might try to find holes in the current set of phandle values and fill them. But this implementation is relatively simple and works reliably. Also add a test that validates that phandles generated by this new API are indeed unique. Signed-off-by: Thierry Reding <treding@nvidia.com> Message-Id: <20190326153302.17109-3-thierry.reding@gmail.com> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
41 lines
853 B
Text
41 lines
853 B
Text
/dts-v1/;
|
|
|
|
/ {
|
|
rref = <&{/}>;
|
|
|
|
/* Explicit phandles */
|
|
n1: node1 {
|
|
linux,phandle = <0x2000>;
|
|
ref = <&{/node2}>; /* reference precedes target */
|
|
lref = <&n2>;
|
|
};
|
|
n2: node2 {
|
|
phandle = <0x1>;
|
|
ref = <&{/node1}>; /* reference after target */
|
|
lref = <&n1>;
|
|
};
|
|
|
|
/* Implicit phandles */
|
|
n3: node3 {
|
|
ref = <&{/node4}>;
|
|
lref = <&n4>;
|
|
};
|
|
n4: node4 {
|
|
};
|
|
|
|
/* 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: node5 {
|
|
linux,phandle = <&n5>;
|
|
phandle = <&n5>;
|
|
};
|
|
|
|
node6 {
|
|
linux,phandle = <0xfffffffe>;
|
|
phandle = <0xfffffffe>;
|
|
};
|
|
};
|