mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-12-21 18:53:06 +00:00
89 lines
3.1 KiB
YAML
89 lines
3.1 KiB
YAML
|
# 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
|