xref: /linux/Documentation/devicetree/bindings/mtd/partitions/partition.yaml (revision 1fd1dc41724319406b0aff221a352a400b0ddfc5)
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
111  compression:
112    $ref: /schemas/types.yaml#/definitions/string
113    description: |
114      Compression algorithm used to store the data in this partition, chosen
115      from a list of well-known algorithms.
116
117      The contents are compressed using this algorithm.
118
119    enum:
120      - none
121      - bzip2
122      - gzip
123      - lzop
124      - lz4
125      - lzma
126      - xz
127      - zstd
128
129  sercomm,scpart-id:
130    description: Partition id in Sercomm partition map. Mtd parser
131      uses this id to find a record in the partition map containing
132      offset and size of the current partition. The values from
133      partition map overrides partition offset and size defined in
134      reg property of the dts. Frequently these values are the same,
135      but may differ if device has bad eraseblocks on a flash.
136    $ref: /schemas/types.yaml#/definitions/uint32
137
138  nvmem-layout:
139    $ref: /schemas/nvmem/layouts/nvmem-layout.yaml
140
141if:
142  not:
143    required: [ reg ]
144then:
145  properties:
146    $nodename:
147      pattern: '^partitions?(-.+)?$'
148
149# This is a generic file other binding inherit from and extend
150additionalProperties: true
151
152$defs:
153  partition-node:
154    type: object
155    if:
156      not:
157        required: [ compatible ]
158    then:
159      $ref: '#'
160      unevaluatedProperties: false
161    else:
162      $ref: '#'
163
164examples:
165  - |
166    partitions {
167        compatible = "fixed-partitions";
168        #address-cells = <1>;
169        #size-cells = <1>;
170
171        partition@100000 {
172            compatible = "u-boot";
173            reg = <0x100000 0xf00000>;
174            align-size = <0x1000>;
175            align-end = <0x10000>;
176        };
177
178        partition@200000 {
179            compatible = "tfa-bl31";
180            reg = <0x200000 0x100000>;
181            align = <0x4000>;
182        };
183    };
184