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
56 drivers/of/unittest-data/tests-interrupts.dtsi
57 drivers/of/unittest-data/tests-platform.dtsi
58 drivers/of/unittest-data/tests-phandle.dtsi
59 drivers/of/unittest-data/tests-match.dtsi
81 -------------------------
83 Un-flattened device tree structure:
85 Un-flattened device tree consists of connected device_node(s) in form of a tree
92 struct device_node *child;
97 Figure 1, describes a generic structure of machine's un-flattened device tree
98 considering only child and sibling pointers. There exists another pointer,
100 a particular level the child node and all the sibling nodes will have a parent
106 child1 -> sibling2 -> sibling3 -> sibling4 -> null
110 | | child31 -> sibling32 -> null
114 | child21 -> sibling22 -> sibling23 -> null
118 child11 -> sibling12 -> sibling13 -> sibling14 -> null
122 null null child131 -> null
126 Figure 1: Generic structure of un-flattened device tree
134 __dtb_testcases_begin - address marking the start of test data blob
135 __dtb_testcases_end - address marking the end of test data blob
142 attach_node_and_children() uses of_attach_node() to attach the nodes into the
148 testcase-data
150 test-child0 -> test-sibling1 -> test-sibling2 -> test-sibling3 -> null
152 test-child01 null null null
158 required to attach the root('/') node. All other nodes are attached by calling
161 In the function of_attach_node(), the new node is attached as the child of the
162 given parent in live tree. But, if parent already has a child then the new node
163 replaces the current child and turns it into its sibling. So, when the testcase
169 testcase-data -> child1 -> sibling2 -> sibling3 -> sibling4 -> null
172 | | child31 -> sibling32 -> null
176 | child21 -> sibling22 -> sibling23 -> null
180 child11 -> sibling12 -> sibling13 -> sibling14 -> null
184 child131 -> null
187 -----------------------------------------------------------------------
191 testcase-data -> child1 -> sibling2 -> sibling3 -> sibling4 -> null
195 test-sibling3 -> test-sibling2 -> test-sibling1 -> test-child0 -> null
197 null null null test-child01
200 Figure 3: Live device tree structure after attaching the testcase-data.
203 Astute readers would have noticed that test-child0 node becomes the last
205 test-child0 the test-sibling1 is attached that pushes the child node
206 (i.e. test-child0) to become a sibling and makes itself a child node,
216 ---------------------------
219 order to remove the device nodes attached initially (first the leaf nodes are
220 detached and then moving up the parent nodes are removed, and eventually the
222 of_detach_node() to detach the nodes from the live device tree.
224 To detach a node, of_detach_node() either updates the child pointer of given