Lines Matching +full:child +full:- +full:nodes
1 .. SPDX-License-Identifier: GPL-2.0
18 (1) Documentation/devicetree/usage-model.rst
27 2. Test-data
30 The Device Tree Source file (drivers/of/unittest-data/testcases.dts) contains
35 drivers/of/unittest-data/tests-interrupts.dtsi
36 drivers/of/unittest-data/tests-platform.dtsi
37 drivers/of/unittest-data/tests-phandle.dtsi
38 drivers/of/unittest-data/tests-match.dtsi
60 -------------------------
62 Un-flattened device tree structure:
64 Un-flattened device tree consists of connected device_node(s) in form of a tree
71 struct device_node *child;
76 Figure 1, describes a generic structure of machine's un-flattened device tree
77 considering only child and sibling pointers. There exists another pointer,
79 a particular level the child node and all the sibling nodes will have a parent
85 child1 -> sibling2 -> sibling3 -> sibling4 -> null
89 | | child31 -> sibling32 -> null
93 | child21 -> sibling22 -> sibling23 -> null
97 child11 -> sibling12 -> sibling13 -> sibling14 -> null
101 null null child131 -> null
105 Figure 1: Generic structure of un-flattened device tree
113 __dtb_testcases_begin - address marking the start of test data blob
114 __dtb_testcases_end - address marking the end of test data blob
121 attach_node_and_children() uses of_attach_node() to attach the nodes into the
127 testcase-data
129 test-child0 -> test-sibling1 -> test-sibling2 -> test-sibling3 -> null
131 test-child01 null null null
137 required to attach the root('/') node. All other nodes are attached by calling
140 In the function of_attach_node(), the new node is attached as the child of the
141 given parent in live tree. But, if parent already has a child then the new node
142 replaces the current child and turns it into its sibling. So, when the testcase
148 testcase-data -> child1 -> sibling2 -> sibling3 -> sibling4 -> null
151 | | child31 -> sibling32 -> null
155 | child21 -> sibling22 -> sibling23 -> null
159 child11 -> sibling12 -> sibling13 -> sibling14 -> null
163 child131 -> null
166 -----------------------------------------------------------------------
170 testcase-data -> child1 -> sibling2 -> sibling3 -> sibling4 -> null
174 test-sibling3 -> test-sibling2 -> test-sibling1 -> test-child0 -> null
176 null null null test-child01
179 Figure 3: Live device tree structure after attaching the testcase-data.
182 Astute readers would have noticed that test-child0 node becomes the last
184 test-child0 the test-sibling1 is attached that pushes the child node
185 (i.e. test-child0) to become a sibling and makes itself a child node,
195 ---------------------------
198 order to remove the device nodes attached initially (first the leaf nodes are
199 detached and then moving up the parent nodes are removed, and eventually the
201 of_detach_node() to detach the nodes from the live device tree.
203 To detach a node, of_detach_node() either updates the child pointer of given