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: 177bdc6718SMiquel Raynal - $ref: "mtd.yaml#" 18*770ba14bSKrzysztof 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 12563f8e9e0SRob Herring big-endian: true 12663f8e9e0SRob Herring little-endian: true 12763f8e9e0SRob Herring 12863f8e9e0SRob Herringrequired: 12963f8e9e0SRob Herring - compatible 13063f8e9e0SRob Herring - reg 13163f8e9e0SRob Herring 132438356e5SCorentin Labbeif: 133438356e5SCorentin Labbe properties: 134438356e5SCorentin Labbe compatible: 135438356e5SCorentin Labbe contains: 136438356e5SCorentin Labbe const: cortina,gemini-flash 137438356e5SCorentin Labbethen: 138438356e5SCorentin Labbe properties: 139438356e5SCorentin Labbe syscon: 140438356e5SCorentin Labbe $ref: /schemas/types.yaml#/definitions/phandle 141438356e5SCorentin Labbe description: 142438356e5SCorentin Labbe Phandle to the syscon controller 143438356e5SCorentin Labbe required: 144438356e5SCorentin Labbe - syscon 145438356e5SCorentin Labbe 14663f8e9e0SRob Herring# FIXME: A parent bus may define timing properties 14763f8e9e0SRob HerringadditionalProperties: true 14863f8e9e0SRob Herring 14963f8e9e0SRob Herringexamples: 15063f8e9e0SRob Herring - | 15163f8e9e0SRob Herring 15263f8e9e0SRob Herring flash@ff000000 { 15363f8e9e0SRob Herring compatible = "cfi-flash"; 15463f8e9e0SRob Herring reg = <0xff000000 0x01000000>; 15563f8e9e0SRob Herring bank-width = <4>; 15663f8e9e0SRob Herring device-width = <1>; 15763f8e9e0SRob Herring 15863f8e9e0SRob Herring #address-cells = <1>; 15963f8e9e0SRob Herring #size-cells = <1>; 16063f8e9e0SRob Herring ranges = <0 0xff000000 0x01000000>; 16163f8e9e0SRob Herring 16263f8e9e0SRob Herring fs@0 { 16363f8e9e0SRob Herring label = "fs"; 16463f8e9e0SRob Herring reg = <0 0xf80000>; 16563f8e9e0SRob Herring }; 16663f8e9e0SRob Herring firmware@f80000 { 16763f8e9e0SRob Herring label ="firmware"; 16863f8e9e0SRob Herring reg = <0xf80000 0x80000>; 16963f8e9e0SRob Herring read-only; 17063f8e9e0SRob Herring }; 17163f8e9e0SRob Herring }; 17263f8e9e0SRob Herring 17363f8e9e0SRob Herring - | 17463f8e9e0SRob Herring /* An example with multiple "reg" tuples */ 17563f8e9e0SRob Herring 17663f8e9e0SRob Herring flash@0 { 17763f8e9e0SRob Herring compatible = "intel,PC28F640P30T85", "cfi-flash"; 17863f8e9e0SRob Herring reg = <0x00000000 0x02000000>, 17963f8e9e0SRob Herring <0x02000000 0x02000000>; 18063f8e9e0SRob Herring bank-width = <2>; 18163f8e9e0SRob Herring 18263f8e9e0SRob Herring #address-cells = <1>; 18363f8e9e0SRob Herring #size-cells = <1>; 18463f8e9e0SRob Herring ranges = <0 0 0x04000000>; 18563f8e9e0SRob Herring 18663f8e9e0SRob Herring partition@0 { 18763f8e9e0SRob Herring label = "test-part1"; 18863f8e9e0SRob Herring reg = <0 0x04000000>; 18963f8e9e0SRob Herring }; 19063f8e9e0SRob Herring }; 19163f8e9e0SRob Herring 19263f8e9e0SRob Herring - | 19363f8e9e0SRob Herring /* An example using SRAM */ 19463f8e9e0SRob Herring bus { 19563f8e9e0SRob Herring #address-cells = <2>; 19663f8e9e0SRob Herring #size-cells = <1>; 19763f8e9e0SRob Herring 19863f8e9e0SRob Herring sram@2,0 { 19963f8e9e0SRob Herring compatible = "mtd-ram"; 20063f8e9e0SRob Herring reg = <2 0 0x00200000>; 20163f8e9e0SRob Herring bank-width = <2>; 20263f8e9e0SRob Herring }; 20363f8e9e0SRob Herring }; 20463f8e9e0SRob Herring 20563f8e9e0SRob Herring - | 20663f8e9e0SRob Herring /* An example using addr-gpios */ 20763f8e9e0SRob Herring #include <dt-bindings/gpio/gpio.h> 20863f8e9e0SRob Herring 20963f8e9e0SRob Herring flash@20000000 { 21063f8e9e0SRob Herring compatible = "cfi-flash"; 21163f8e9e0SRob Herring reg = <0x20000000 0x02000000>; 21263f8e9e0SRob Herring bank-width = <2>; 21363f8e9e0SRob Herring addr-gpios = <&gpio1 2 GPIO_ACTIVE_HIGH>; 21463f8e9e0SRob Herring 21563f8e9e0SRob Herring #address-cells = <1>; 21663f8e9e0SRob Herring #size-cells = <1>; 21763f8e9e0SRob Herring ranges = <0 0x00000000 0x02000000>, 21863f8e9e0SRob Herring <1 0x02000000 0x02000000>; 21963f8e9e0SRob Herring 22063f8e9e0SRob Herring partition@0 { 22163f8e9e0SRob Herring label = "test-part1"; 22263f8e9e0SRob Herring reg = <0 0x04000000>; 22363f8e9e0SRob Herring }; 22463f8e9e0SRob Herring }; 22563f8e9e0SRob Herring... 226