^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) .. SPDX-License-Identifier: GPL-2.0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) ==================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) Device Tree Dynamic Resolver Notes
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) ==================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) This document describes the implementation of the in-kernel
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) Device Tree resolver, residing in drivers/of/resolver.c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) How the resolver works
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) ----------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) The resolver is given as an input an arbitrary tree compiled with the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) proper dtc option and having a /plugin/ tag. This generates the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) appropriate __fixups__ & __local_fixups__ nodes.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) In sequence the resolver works by the following steps:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) 1. Get the maximum device tree phandle value from the live tree + 1.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) 2. Adjust all the local phandles of the tree to resolve by that amount.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) 3. Using the __local__fixups__ node information adjust all local references
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) by the same amount.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) 4. For each property in the __fixups__ node locate the node it references
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) in the live tree. This is the label used to tag the node.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) 5. Retrieve the phandle of the target of the fixup.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) 6. For each fixup in the property locate the node:property:offset location
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) and replace it with the phandle value.