1# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/mtd/partitions/partition.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Partition
8
9description: |
10  This binding describes a single flash partition. Each partition must have its
11  relative offset and size specified. Depending on partition function extra
12  properties can be used.
13
14  A partition may be dynamically allocated by a specific parser at runtime.
15  In this specific case, a specific suffix is required to the node name.
16  Everything after 'partition-' will be used as the partition name to compare
17  with the one dynamically allocated by the specific parser.
18  If the partition contains invalid char a label can be provided that will
19  be used instead of the node name to make the comparison.
20  This is used to assign an OF node to the dynamiccally allocated partition
21  so that subsystem like NVMEM can provide an OF node and declare NVMEM cells.
22  The OF node will be assigned only if the partition label declared match the
23  one assigned by the parser at runtime.
24
25maintainers:
26  - Rafał Miłecki <rafal@milecki.pl>
27
28properties:
29  reg:
30    description: partition's offset and size within the flash
31    maxItems: 1
32
33  label:
34    description: The label / name for this partition. If omitted, the label
35      is taken from the node name (excluding the unit address).
36
37  read-only:
38    description: This parameter, if present, is a hint that this partition
39      should only be mounted read-only. This is usually used for flash
40      partitions containing early-boot firmware images or data which should
41      not be clobbered.
42    type: boolean
43
44  lock:
45    description: Do not unlock the partition at initialization time (not
46      supported on all devices)
47    type: boolean
48
49  slc-mode:
50    description: This parameter, if present, allows one to emulate SLC mode
51      on a partition attached to an MLC NAND thus making this partition
52      immune to paired-pages corruptions
53    type: boolean
54
55  linux,rootfs:
56    description: Marks partition that contains root filesystem to mount and boot
57      user space from
58    type: boolean
59
60  align:
61    $ref: /schemas/types.yaml#/definitions/uint32
62    minimum: 2
63    maximum: 0x80000000
64    multipleOf: 2
65    description:
66      This sets the alignment of the entry in bytes.
67
68      The entry offset is adjusted so that the entry starts on an aligned
69      boundary within the containing section or image. For example ‘align =
70      <16>’ means that the entry will start on a 16-byte boundary. This may
71      mean that padding is added before the entry. The padding is part of
72      the containing section but is not included in the entry, meaning that
73      an empty space may be created before the entry starts. Alignment
74      must be a power of 2. If ‘align’ is not provided, no alignment is
75      performed.
76
77  align-size:
78    $ref: /schemas/types.yaml#/definitions/uint32
79    minimum: 2
80    maximum: 0x80000000
81    multipleOf: 2
82    description:
83      This sets the alignment of the entry size in bytes. It must be a power
84      of 2.
85
86      For example, to ensure that the size of an entry is a multiple of 64
87      bytes, set this to 64. While this does not affect the content of the
88      entry itself (the padding is performed only when its parent section is
89      assembled), the end result is that the entry ends with the padding
90      bytes, so may grow. If ‘align-size’ is not provided, no alignment is
91      performed.
92
93  align-end:
94    $ref: /schemas/types.yaml#/definitions/uint32
95    minimum: 2
96    maximum: 0x80000000
97    multipleOf: 2
98    description:
99      This sets the alignment (in bytes) of the end of an entry with respect
100      to the containing section. It must be a power of 2.
101
102      Some entries require that they end on an alignment boundary,
103      regardless of where they start. This does not move the start of the
104      entry, so the content of the entry will still start at the beginning.
105      But there may be padding at the end. While this does not affect the
106      content of the entry itself (the padding is performed only when its
107      parent section is assembled), the end result is that the entry ends
108      with the padding bytes, so may grow. If ‘align-end’ is not provided,
109      no alignment is performed.
110
111if:
112  not:
113    required: [ reg ]
114then:
115  properties:
116    $nodename:
117      pattern: '^partition-.*$'
118
119# This is a generic file other binding inherit from and extend
120additionalProperties: true
121
122examples:
123  - |
124    partitions {
125        compatible = "fixed-partitions";
126        #address-cells = <1>;
127        #size-cells = <1>;
128
129        partition@100000 {
130            compatible = "u-boot";
131            reg = <0x100000 0xf00000>;
132            align-size = <0x1000>;
133            align-end = <0x10000>;
134        };
135
136        partition@200000 {
137            compatible = "tfa-bl31";
138            reg = <0x200000 0x100000>;
139            align = <0x4000>;
140        };
141    };
142