0001 .. SPDX-License-Identifier: GPL-2.0
0002
0003 =================================
0004 Devicetree Dynamic Resolver Notes
0005 =================================
0006
0007 This document describes the implementation of the in-kernel
0008 DeviceTree resolver, residing in drivers/of/resolver.c
0009
0010 How the resolver works
0011 ----------------------
0012
0013 The resolver is given as an input an arbitrary tree compiled with the
0014 proper dtc option and having a /plugin/ tag. This generates the
0015 appropriate __fixups__ & __local_fixups__ nodes.
0016
0017 In sequence the resolver works by the following steps:
0018
0019 1. Get the maximum device tree phandle value from the live tree + 1.
0020 2. Adjust all the local phandles of the tree to resolve by that amount.
0021 3. Using the __local__fixups__ node information adjust all local references
0022 by the same amount.
0023 4. For each property in the __fixups__ node locate the node it references
0024 in the live tree. This is the label used to tag the node.
0025 5. Retrieve the phandle of the target of the fixup.
0026 6. For each fixup in the property locate the node:property:offset location
0027 and replace it with the phandle value.