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