Lines Matching +full:child +full:- +full:nodes

1 .. SPDX-License-Identifier: GPL-2.0
18 (1) Documentation/devicetree/usage-model.rst
45 from 'scripts/dtc/of_unittest_expect --help'.
48 3. Test-data
51 The Device Tree Source file (drivers/of/unittest-data/testcases.dts) contains
55 drivers/of/unittest-data/tests-*.dtsi
79 -------------------------
81 Un-flattened device tree structure:
83 Un-flattened device tree consists of connected device_node(s) in form of a tree
90 struct device_node *child;
95 Figure 1, describes a generic structure of machine's un-flattened device tree
96 considering only child and sibling pointers. There exists another pointer,
98 a particular level the child node and all the sibling nodes will have a parent
104 child1 -> sibling2 -> sibling3 -> sibling4 -> null
108 | | child31 -> sibling32 -> null
112 | child21 -> sibling22 -> sibling23 -> null
116 child11 -> sibling12 -> sibling13 -> sibling14 -> null
120 null null child131 -> null
124 Figure 1: Generic structure of un-flattened device tree
132 __dtb_testcases_begin - address marking the start of test data blob
133 __dtb_testcases_end - address marking the end of test data blob
140 attach_node_and_children() uses of_attach_node() to attach the nodes into the
146 testcase-data
148 test-child0 -> test-sibling1 -> test-sibling2 -> test-sibling3 -> null
150 test-child01 null null null
156 required to attach the root('/') node. All other nodes are attached by calling
159 In the function of_attach_node(), the new node is attached as the child of the
160 given parent in live tree. But, if parent already has a child then the new node
161 replaces the current child and turns it into its sibling. So, when the testcase
167 testcase-data -> child1 -> sibling2 -> sibling3 -> sibling4 -> null
170 | | child31 -> sibling32 -> null
174 | child21 -> sibling22 -> sibling23 -> null
178 child11 -> sibling12 -> sibling13 -> sibling14 -> null
182 child131 -> null
185 -----------------------------------------------------------------------
189 testcase-data -> child1 -> sibling2 -> sibling3 -> sibling4 -> null
193 test-sibling3 -> test-sibling2 -> test-sibling1 -> test-child0 -> null
195 null null null test-child01
198 Figure 3: Live device tree structure after attaching the testcase-data.
201 Astute readers would have noticed that test-child0 node becomes the last
203 test-child0 the test-sibling1 is attached that pushes the child node
204 (i.e. test-child0) to become a sibling and makes itself a child node,
214 ---------------------------
217 order to remove the device nodes attached initially (first the leaf nodes are
218 detached and then moving up the parent nodes are removed, and eventually the
220 of_detach_node() to detach the nodes from the live device tree.
222 To detach a node, of_detach_node() either updates the child pointer of given