163f8e9e0SRob Herring# SPDX-License-Identifier: GPL-2.0 263f8e9e0SRob Herring%YAML 1.2 363f8e9e0SRob Herring--- 463f8e9e0SRob Herring$id: http://devicetree.org/schemas/mtd/mtd-physmap.yaml# 563f8e9e0SRob Herring$schema: http://devicetree.org/meta-schemas/core.yaml# 663f8e9e0SRob Herring 763f8e9e0SRob Herringtitle: CFI or JEDEC memory-mapped NOR flash, MTD-RAM (NVRAM...) 863f8e9e0SRob Herring 963f8e9e0SRob Herringmaintainers: 1063f8e9e0SRob Herring - Rob Herring <robh@kernel.org> 1163f8e9e0SRob Herring 1263f8e9e0SRob Herringdescription: | 1363f8e9e0SRob Herring Flash chips (Memory Technology Devices) are often used for solid state 1463f8e9e0SRob Herring file systems on embedded devices. 1563f8e9e0SRob Herring 167bdc6718SMiquel RaynalallOf: 171f79a611SRob Herring - $ref: mtd.yaml# 18770ba14bSKrzysztof Kozlowski - $ref: /schemas/memory-controllers/mc-peripheral-props.yaml# 197bdc6718SMiquel Raynal 2063f8e9e0SRob Herringproperties: 2163f8e9e0SRob Herring compatible: 2263f8e9e0SRob Herring oneOf: 2363f8e9e0SRob Herring - items: 2463f8e9e0SRob Herring - enum: 2563f8e9e0SRob Herring - amd,s29gl01gp 2663f8e9e0SRob Herring - amd,s29gl032a 2763f8e9e0SRob Herring - amd,s29gl256n 2863f8e9e0SRob Herring - amd,s29gl512n 2963f8e9e0SRob Herring - arm,versatile-flash 30c47cbd4fSRob Herring - arm,vexpress-flash 3163f8e9e0SRob Herring - cortina,gemini-flash 3263f8e9e0SRob Herring - cypress,hyperflash 3363f8e9e0SRob Herring - ge,imp3a-firmware-mirror 3463f8e9e0SRob Herring - ge,imp3a-paged-flash 3563f8e9e0SRob Herring - gef,ppc9a-firmware-mirror 3663f8e9e0SRob Herring - gef,ppc9a-paged-flash 3763f8e9e0SRob Herring - gef,sbc310-firmware-mirror 3863f8e9e0SRob Herring - gef,sbc310-paged-flash 3963f8e9e0SRob Herring - gef,sbc610-firmware-mirror 4063f8e9e0SRob Herring - gef,sbc610-paged-flash 4163f8e9e0SRob Herring - intel,28f128j3 4263f8e9e0SRob Herring - intel,dt28f160 4363f8e9e0SRob Herring - intel,ixp4xx-flash 4463f8e9e0SRob Herring - intel,JS28F128 4563f8e9e0SRob Herring - intel,JS28F640 4663f8e9e0SRob Herring - intel,PC28F640P30T85 4763f8e9e0SRob Herring - numonyx,js28f00a 4863f8e9e0SRob Herring - numonyx,js28f128 4963f8e9e0SRob Herring - sst,sst39vf320 5063f8e9e0SRob Herring - xlnx,xps-mch-emc-2.00.a 51438356e5SCorentin Labbe - enum: 52438356e5SCorentin Labbe - cfi-flash 53438356e5SCorentin Labbe - jedec-flash 5463f8e9e0SRob Herring - items: 5563f8e9e0SRob Herring - enum: 5663f8e9e0SRob Herring - cypress,cy7c1019dv33-10zsxi 5763f8e9e0SRob Herring - arm,vexpress-psram 5863f8e9e0SRob Herring - const: mtd-ram 5963f8e9e0SRob Herring - enum: 6063f8e9e0SRob Herring - cfi-flash 6163f8e9e0SRob Herring - jedec-flash 6263f8e9e0SRob Herring - mtd-ram 6363f8e9e0SRob Herring - mtd-rom 6463f8e9e0SRob Herring 6563f8e9e0SRob Herring reg: 6663f8e9e0SRob Herring description: | 6763f8e9e0SRob Herring It's possible to (optionally) define multiple "reg" tuples so that 6863f8e9e0SRob Herring non-identical chips can be described in one node. 6963f8e9e0SRob Herring minItems: 1 7063f8e9e0SRob Herring maxItems: 8 7163f8e9e0SRob Herring 7263f8e9e0SRob Herring bank-width: 7363f8e9e0SRob Herring description: Width (in bytes) of the bank. Equal to the device width times 7463f8e9e0SRob Herring the number of interleaved chips. 7563f8e9e0SRob Herring $ref: /schemas/types.yaml#/definitions/uint32 7663f8e9e0SRob Herring enum: [ 1, 2, 4 ] 7763f8e9e0SRob Herring 7863f8e9e0SRob Herring device-width: 7963f8e9e0SRob Herring description: 8063f8e9e0SRob Herring Width of a single mtd chip. If omitted, assumed to be equal to 'bank-width'. 8163f8e9e0SRob Herring $ref: /schemas/types.yaml#/definitions/uint32 8263f8e9e0SRob Herring enum: [ 1, 2 ] 8363f8e9e0SRob Herring 8463f8e9e0SRob Herring no-unaligned-direct-access: 8563f8e9e0SRob Herring type: boolean 8663f8e9e0SRob Herring description: | 8763f8e9e0SRob Herring Disables the default direct mapping of the flash. 8863f8e9e0SRob Herring 8963f8e9e0SRob Herring On some platforms (e.g. MPC5200) a direct 1:1 mapping may cause problems 9063f8e9e0SRob Herring with JFFS2 usage, as the local bus (LPB) doesn't support unaligned 9163f8e9e0SRob Herring accesses as implemented in the JFFS2 code via memcpy(). By defining 9263f8e9e0SRob Herring "no-unaligned-direct-access", the flash will not be exposed directly to 9363f8e9e0SRob Herring the MTD users (e.g. JFFS2) any more. 9463f8e9e0SRob Herring 9563f8e9e0SRob Herring linux,mtd-name: 9663f8e9e0SRob Herring description: 9763f8e9e0SRob Herring Allows specifying the mtd name for retro capability with physmap-flash 9863f8e9e0SRob Herring drivers as boot loader pass the mtd partition via the old device name 9963f8e9e0SRob Herring physmap-flash. 10063f8e9e0SRob Herring $ref: /schemas/types.yaml#/definitions/string 10163f8e9e0SRob Herring 10263f8e9e0SRob Herring use-advanced-sector-protection: 10363f8e9e0SRob Herring type: boolean 10463f8e9e0SRob Herring description: | 10563f8e9e0SRob Herring Enables support for the advanced sector protection (Spansion: PPB - 10663f8e9e0SRob Herring Persistent Protection Bits) locking. 10763f8e9e0SRob Herring 10863f8e9e0SRob Herring erase-size: 10963f8e9e0SRob Herring description: The chip's physical erase block size in bytes. 11063f8e9e0SRob Herring $ref: /schemas/types.yaml#/definitions/uint32 11163f8e9e0SRob Herring 11263f8e9e0SRob Herring addr-gpios: 11363f8e9e0SRob Herring description: 11463f8e9e0SRob Herring List of GPIO descriptors that will be used to address the MSBs address 11563f8e9e0SRob Herring lines. The order goes from LSB to MSB. 11663f8e9e0SRob Herring minItems: 1 11763f8e9e0SRob Herring maxItems: 8 11863f8e9e0SRob Herring 11963f8e9e0SRob Herring '#address-cells': 12063f8e9e0SRob Herring const: 1 12163f8e9e0SRob Herring 12263f8e9e0SRob Herring '#size-cells': 12363f8e9e0SRob Herring const: 1 12463f8e9e0SRob Herring 125*9ea13d9eSRob Herring (Arm) ranges: true 126*9ea13d9eSRob Herring (Arm) 12763f8e9e0SRob Herring big-endian: true 12863f8e9e0SRob Herring little-endian: true 12963f8e9e0SRob Herring 13063f8e9e0SRob Herringrequired: 13163f8e9e0SRob Herring - compatible 13263f8e9e0SRob Herring - reg 13363f8e9e0SRob Herring 134438356e5SCorentin Labbeif: 135438356e5SCorentin Labbe properties: 136438356e5SCorentin Labbe compatible: 137438356e5SCorentin Labbe contains: 138438356e5SCorentin Labbe const: cortina,gemini-flash 139438356e5SCorentin Labbethen: 140438356e5SCorentin Labbe properties: 141438356e5SCorentin Labbe syscon: 142438356e5SCorentin Labbe $ref: /schemas/types.yaml#/definitions/phandle 143438356e5SCorentin Labbe description: 144438356e5SCorentin Labbe Phandle to the syscon controller 145438356e5SCorentin Labbe required: 146438356e5SCorentin Labbe - syscon 147438356e5SCorentin Labbe 148*9ea13d9eSRob Herring (Arm)unevaluatedProperties: false 14963f8e9e0SRob Herring 15063f8e9e0SRob Herringexamples: 15163f8e9e0SRob Herring - | 15263f8e9e0SRob Herring 15363f8e9e0SRob Herring flash@ff000000 { 15463f8e9e0SRob Herring compatible = "cfi-flash"; 15563f8e9e0SRob Herring reg = <0xff000000 0x01000000>; 15663f8e9e0SRob Herring bank-width = <4>; 15763f8e9e0SRob Herring device-width = <1>; 15863f8e9e0SRob Herring 15963f8e9e0SRob Herring #address-cells = <1>; 16063f8e9e0SRob Herring #size-cells = <1>; 16163f8e9e0SRob Herring ranges = <0 0xff000000 0x01000000>; 16263f8e9e0SRob Herring 16363f8e9e0SRob Herring fs@0 { 16463f8e9e0SRob Herring label = "fs"; 16563f8e9e0SRob Herring reg = <0 0xf80000>; 16663f8e9e0SRob Herring }; 16763f8e9e0SRob Herring firmware@f80000 { 16863f8e9e0SRob Herring label = "firmware"; 16963f8e9e0SRob Herring reg = <0xf80000 0x80000>; 17063f8e9e0SRob Herring read-only; 17163f8e9e0SRob Herring }; 17263f8e9e0SRob Herring }; 17363f8e9e0SRob Herring 17463f8e9e0SRob Herring - | 17563f8e9e0SRob Herring /* An example with multiple "reg" tuples */ 17663f8e9e0SRob Herring 17763f8e9e0SRob Herring flash@0 { 17863f8e9e0SRob Herring compatible = "intel,PC28F640P30T85", "cfi-flash"; 17963f8e9e0SRob Herring reg = <0x00000000 0x02000000>, 18063f8e9e0SRob Herring <0x02000000 0x02000000>; 18163f8e9e0SRob Herring bank-width = <2>; 18263f8e9e0SRob Herring 18363f8e9e0SRob Herring #address-cells = <1>; 18463f8e9e0SRob Herring #size-cells = <1>; 18563f8e9e0SRob Herring ranges = <0 0 0x04000000>; 18663f8e9e0SRob Herring 18763f8e9e0SRob Herring partition@0 { 18863f8e9e0SRob Herring label = "test-part1"; 18963f8e9e0SRob Herring reg = <0 0x04000000>; 19063f8e9e0SRob Herring }; 19163f8e9e0SRob Herring }; 19263f8e9e0SRob Herring 19363f8e9e0SRob Herring - | 19463f8e9e0SRob Herring /* An example using SRAM */ 19563f8e9e0SRob Herring bus { 19663f8e9e0SRob Herring #address-cells = <2>; 19763f8e9e0SRob Herring #size-cells = <1>; 19863f8e9e0SRob Herring 19963f8e9e0SRob Herring sram@2,0 { 20063f8e9e0SRob Herring compatible = "mtd-ram"; 20163f8e9e0SRob Herring reg = <2 0 0x00200000>; 20263f8e9e0SRob Herring bank-width = <2>; 20363f8e9e0SRob Herring }; 20463f8e9e0SRob Herring }; 20563f8e9e0SRob Herring 20663f8e9e0SRob Herring - | 20763f8e9e0SRob Herring /* An example using addr-gpios */ 20863f8e9e0SRob Herring #include <dt-bindings/gpio/gpio.h> 20963f8e9e0SRob Herring 21063f8e9e0SRob Herring flash@20000000 { 21163f8e9e0SRob Herring compatible = "cfi-flash"; 21263f8e9e0SRob Herring reg = <0x20000000 0x02000000>; 21363f8e9e0SRob Herring bank-width = <2>; 21463f8e9e0SRob Herring addr-gpios = <&gpio1 2 GPIO_ACTIVE_HIGH>; 21563f8e9e0SRob Herring 21663f8e9e0SRob Herring #address-cells = <1>; 21763f8e9e0SRob Herring #size-cells = <1>; 21863f8e9e0SRob Herring ranges = <0 0x00000000 0x02000000>, 21963f8e9e0SRob Herring <1 0x02000000 0x02000000>; 22063f8e9e0SRob Herring 22163f8e9e0SRob Herring partition@0 { 22263f8e9e0SRob Herring label = "test-part1"; 22363f8e9e0SRob Herring reg = <0 0x04000000>; 22463f8e9e0SRob Herring }; 22563f8e9e0SRob Herring }; 22663f8e9e0SRob Herring... 227