| # SPDX-License-Identifier: BSD-2-Clause |
| # Copyright 2022 Google LLC |
| %YAML 1.2 |
| --- |
| $id: http://devicetree.org/schemas/bootph.yaml# |
| $schema: http://devicetree.org/meta-schemas/core.yaml# |
| |
| title: Boot-phase-specific device nodes |
| |
| maintainers: |
| - Simon Glass <sjg@chromium.org> |
| |
| description: | |
| Some programs run in memory-constrained environments yet want to make use |
| of device tree. |
| |
| The full device tree is often quite large relative to the available memory |
| of a boot phase, so cannot fit into every phase of the boot process. Even |
| when memory is not a problem, some phases may wish to limit which device |
| nodes are present, so as to reduce execution time. |
| |
| This binding supports adding tags to device tree nodes to allow them to be |
| marked according to the phases where they should be included. |
| |
| Without any tags, nodes are included only in the final phase, where all |
| memory is available. Any untagged nodes are dropped from previous phases |
| and are ignored before the final phase is reached. |
| |
| The build process produces a separate executable for each phase. It can |
| use fdtgrep to drop any nodes which are not needed for a particular build. |
| For example, the pre-sram build will drop any nodes which are not marked |
| with bootph-pre-sram or bootph-all tags. |
| |
| Note that phase builds may drop the tags, since they have served their |
| purpose by that point. So when looking at phase-specific device tree files |
| you may not see these tags. |
| |
| Multiple tags can be used in the same node. |
| |
| Tags in a child node are implied to be present in all parent nodes as well. |
| This is important, since some missing properties (such as "ranges", or |
| "compatible") can cause the child node to be ignored or incorrectly |
| parsed. |
| |
| That said, at present, fdtgrep applies tags only to the node they are |
| added to, not to any parents. This means U-Boot device tree files often |
| add the same tag to parent nodes, rather than relying on tooling to do |
| this. This is a limitation of fdtgrep and it will be addressed so that |
| 'Linux DTs' do not need to do this. |
| |
| The available tags are described as properties below, in order of phase |
| execution. |
| |
| select: true |
| |
| properties: |
| bootph-pre-sram: |
| type: boolean |
| description: |
| Enable this node when SRAM is not available. This phase must set up |
| some SRAM or cache-as-RAM so it can obtain data/BSS space to use |
| during execution. |
| |
| bootph-verify: |
| type: boolean |
| description: |
| Enable this node in the verification step, which decides which of the |
| available images should be run next. |
| |
| bootph-pre-ram: |
| type: boolean |
| description: |
| Enable this node in the phase that sets up SDRAM. |
| |
| bootph-some-ram: |
| type: boolean |
| description: |
| Enable this node in the phase that is run after SDRAM is working but |
| before all of it is available. Some RAM is available but it is limited |
| (e.g. it may be split into two pieces by the location of the running |
| program) because the program code is not yet relocated out of the way. |
| |
| bootph-all: |
| type: boolean |
| description: |
| Include this node in all phases (for U-Boot see enum u_boot_phase). |
| |
| additionalProperties: true |