blob: f81ad8daa36f2cdceab4b65827e98c011f2bab55 [file] [log] [blame]
Mauro Carvalho Chehab26853a22020-04-15 16:45:20 +02001.. SPDX-License-Identifier: GPL-2.0
2
Rob Herring72482132021-03-25 10:47:09 -06003=================================
4Devicetree Dynamic Resolver Notes
5=================================
Pantelis Antoniou7941b272014-07-04 19:59:20 +03006
7This document describes the implementation of the in-kernel
Rob Herring72482132021-03-25 10:47:09 -06008DeviceTree resolver, residing in drivers/of/resolver.c
Pantelis Antoniou7941b272014-07-04 19:59:20 +03009
10How the resolver works
11----------------------
12
13The resolver is given as an input an arbitrary tree compiled with the
14proper dtc option and having a /plugin/ tag. This generates the
Harish Jenny K Nf11b9ab2018-07-19 17:24:04 +053015appropriate __fixups__ & __local_fixups__ nodes.
Pantelis Antoniou7941b272014-07-04 19:59:20 +030016
17In sequence the resolver works by the following steps:
18
191. Get the maximum device tree phandle value from the live tree + 1.
202. Adjust all the local phandles of the tree to resolve by that amount.
213. Using the __local__fixups__ node information adjust all local references
22 by the same amount.
234. For each property in the __fixups__ node locate the node it references
24 in the live tree. This is the label used to tag the node.
255. Retrieve the phandle of the target of the fixup.
266. For each fixup in the property locate the node:property:offset location
27 and replace it with the phandle value.