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 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... 226