Merge tag 'for-5.15/io_uring-2021-09-04' of git://git.kernel.dk/linux-block
[linux-2.6-microblaze.git] / Documentation / devicetree / bindings / mtd / mtd-physmap.yaml
1 # SPDX-License-Identifier: GPL-2.0
2 %YAML 1.2
3 ---
4 $id: http://devicetree.org/schemas/mtd/mtd-physmap.yaml#
5 $schema: http://devicetree.org/meta-schemas/core.yaml#
6
7 title: CFI or JEDEC memory-mapped NOR flash, MTD-RAM (NVRAM...)
8
9 maintainers:
10   - Rob Herring <robh@kernel.org>
11
12 description: |
13   Flash chips (Memory Technology Devices) are often used for solid state
14   file systems on embedded devices.
15
16 properties:
17   compatible:
18     oneOf:
19       - items:
20           - enum:
21               - amd,s29gl01gp
22               - amd,s29gl032a
23               - amd,s29gl256n
24               - amd,s29gl512n
25               - arm,versatile-flash
26               - arm,vexpress-flash
27               - cortina,gemini-flash
28               - cypress,hyperflash
29               - ge,imp3a-firmware-mirror
30               - ge,imp3a-paged-flash
31               - gef,ppc9a-firmware-mirror
32               - gef,ppc9a-paged-flash
33               - gef,sbc310-firmware-mirror
34               - gef,sbc310-paged-flash
35               - gef,sbc610-firmware-mirror
36               - gef,sbc610-paged-flash
37               - intel,28f128j3
38               - intel,dt28f160
39               - intel,ixp4xx-flash
40               - intel,JS28F128
41               - intel,JS28F640
42               - intel,PC28F640P30T85
43               - numonyx,js28f00a
44               - numonyx,js28f128
45               - sst,sst39vf320
46               - xlnx,xps-mch-emc-2.00.a
47           - const: cfi-flash
48       - items:
49           - enum:
50               - cypress,cy7c1019dv33-10zsxi
51               - arm,vexpress-psram
52           - const: mtd-ram
53       - enum:
54           - cfi-flash
55           - jedec-flash
56           - mtd-ram
57           - mtd-rom
58
59   reg:
60     description: |
61       It's possible to (optionally) define multiple "reg" tuples so that
62       non-identical chips can be described in one node.
63     minItems: 1
64     maxItems: 8
65
66   bank-width:
67     description: Width (in bytes) of the bank.  Equal to the device width times
68       the number of interleaved chips.
69     $ref: /schemas/types.yaml#/definitions/uint32
70     enum: [ 1, 2, 4 ]
71
72   device-width:
73     description:
74       Width of a single mtd chip. If omitted, assumed to be equal to 'bank-width'.
75     $ref: /schemas/types.yaml#/definitions/uint32
76     enum: [ 1, 2 ]
77
78   no-unaligned-direct-access:
79     type: boolean
80     description: |
81       Disables the default direct mapping of the flash.
82
83       On some platforms (e.g. MPC5200) a direct 1:1 mapping may cause problems
84       with JFFS2 usage, as the local bus (LPB) doesn't support unaligned
85       accesses as implemented in the JFFS2 code via memcpy(). By defining
86       "no-unaligned-direct-access", the flash will not be exposed directly to
87       the MTD users (e.g. JFFS2) any more.
88
89   linux,mtd-name:
90     description:
91       Allows specifying the mtd name for retro capability with physmap-flash
92       drivers as boot loader pass the mtd partition via the old device name
93       physmap-flash.
94     $ref: /schemas/types.yaml#/definitions/string
95
96   use-advanced-sector-protection:
97     type: boolean
98     description: |
99       Enables support for the advanced sector protection (Spansion: PPB -
100       Persistent Protection Bits) locking.
101
102   erase-size:
103     description: The chip's physical erase block size in bytes.
104     $ref: /schemas/types.yaml#/definitions/uint32
105
106   addr-gpios:
107     description:
108       List of GPIO descriptors that will be used to address the MSBs address
109       lines. The order goes from LSB to MSB.
110     minItems: 1
111     maxItems: 8
112
113   '#address-cells':
114     const: 1
115
116   '#size-cells':
117     const: 1
118
119   big-endian: true
120   little-endian: true
121
122 patternProperties:
123   '@[0-9a-f]+$':
124     $ref: partitions/partition.yaml
125
126 required:
127   - compatible
128   - reg
129
130 # FIXME: A parent bus may define timing properties
131 additionalProperties: true
132
133 examples:
134   - |
135
136     flash@ff000000 {
137         compatible = "cfi-flash";
138         reg = <0xff000000 0x01000000>;
139         bank-width = <4>;
140         device-width = <1>;
141
142         #address-cells = <1>;
143         #size-cells = <1>;
144         ranges = <0 0xff000000 0x01000000>;
145
146         fs@0 {
147             label = "fs";
148             reg = <0 0xf80000>;
149         };
150         firmware@f80000 {
151             label ="firmware";
152             reg = <0xf80000 0x80000>;
153             read-only;
154         };
155     };
156
157   - |
158     /* An example with multiple "reg" tuples */
159
160     flash@0 {
161         compatible = "intel,PC28F640P30T85", "cfi-flash";
162         reg = <0x00000000 0x02000000>,
163               <0x02000000 0x02000000>;
164         bank-width = <2>;
165
166         #address-cells = <1>;
167         #size-cells = <1>;
168         ranges = <0 0 0x04000000>;
169
170         partition@0 {
171             label = "test-part1";
172             reg = <0 0x04000000>;
173         };
174     };
175
176   - |
177     /* An example using SRAM */
178     bus {
179         #address-cells = <2>;
180         #size-cells = <1>;
181
182         sram@2,0 {
183             compatible = "mtd-ram";
184             reg = <2 0 0x00200000>;
185             bank-width = <2>;
186         };
187     };
188
189   - |
190     /* An example using addr-gpios */
191     #include <dt-bindings/gpio/gpio.h>
192
193     flash@20000000 {
194         compatible = "cfi-flash";
195         reg = <0x20000000 0x02000000>;
196         bank-width = <2>;
197         addr-gpios = <&gpio1 2 GPIO_ACTIVE_HIGH>;
198
199         #address-cells = <1>;
200         #size-cells = <1>;
201         ranges = <0 0x00000000 0x02000000>,
202                  <1 0x02000000 0x02000000>;
203
204         partition@0 {
205             label = "test-part1";
206             reg = <0 0x04000000>;
207         };
208     };
209 ...