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 1663f8e9e0SRob Herringproperties: 1763f8e9e0SRob Herring compatible: 1863f8e9e0SRob Herring oneOf: 1963f8e9e0SRob Herring - items: 2063f8e9e0SRob Herring - enum: 2163f8e9e0SRob Herring - amd,s29gl01gp 2263f8e9e0SRob Herring - amd,s29gl032a 2363f8e9e0SRob Herring - amd,s29gl256n 2463f8e9e0SRob Herring - amd,s29gl512n 2563f8e9e0SRob Herring - arm,versatile-flash 26c47cbd4fSRob Herring - arm,vexpress-flash 2763f8e9e0SRob Herring - cortina,gemini-flash 2863f8e9e0SRob Herring - cypress,hyperflash 2963f8e9e0SRob Herring - ge,imp3a-firmware-mirror 3063f8e9e0SRob Herring - ge,imp3a-paged-flash 3163f8e9e0SRob Herring - gef,ppc9a-firmware-mirror 3263f8e9e0SRob Herring - gef,ppc9a-paged-flash 3363f8e9e0SRob Herring - gef,sbc310-firmware-mirror 3463f8e9e0SRob Herring - gef,sbc310-paged-flash 3563f8e9e0SRob Herring - gef,sbc610-firmware-mirror 3663f8e9e0SRob Herring - gef,sbc610-paged-flash 3763f8e9e0SRob Herring - intel,28f128j3 3863f8e9e0SRob Herring - intel,dt28f160 3963f8e9e0SRob Herring - intel,ixp4xx-flash 4063f8e9e0SRob Herring - intel,JS28F128 4163f8e9e0SRob Herring - intel,JS28F640 4263f8e9e0SRob Herring - intel,PC28F640P30T85 4363f8e9e0SRob Herring - numonyx,js28f00a 4463f8e9e0SRob Herring - numonyx,js28f128 4563f8e9e0SRob Herring - sst,sst39vf320 4663f8e9e0SRob Herring - xlnx,xps-mch-emc-2.00.a 4763f8e9e0SRob Herring - const: cfi-flash 4863f8e9e0SRob Herring - items: 4963f8e9e0SRob Herring - enum: 5063f8e9e0SRob Herring - cypress,cy7c1019dv33-10zsxi 5163f8e9e0SRob Herring - arm,vexpress-psram 5263f8e9e0SRob Herring - const: mtd-ram 5363f8e9e0SRob Herring - enum: 5463f8e9e0SRob Herring - cfi-flash 5563f8e9e0SRob Herring - jedec-flash 5663f8e9e0SRob Herring - mtd-ram 5763f8e9e0SRob Herring - mtd-rom 5863f8e9e0SRob Herring 5963f8e9e0SRob Herring reg: 6063f8e9e0SRob Herring description: | 6163f8e9e0SRob Herring It's possible to (optionally) define multiple "reg" tuples so that 6263f8e9e0SRob Herring non-identical chips can be described in one node. 6363f8e9e0SRob Herring minItems: 1 6463f8e9e0SRob Herring maxItems: 8 6563f8e9e0SRob Herring 6663f8e9e0SRob Herring bank-width: 6763f8e9e0SRob Herring description: Width (in bytes) of the bank. Equal to the device width times 6863f8e9e0SRob Herring the number of interleaved chips. 6963f8e9e0SRob Herring $ref: /schemas/types.yaml#/definitions/uint32 7063f8e9e0SRob Herring enum: [ 1, 2, 4 ] 7163f8e9e0SRob Herring 7263f8e9e0SRob Herring device-width: 7363f8e9e0SRob Herring description: 7463f8e9e0SRob Herring Width of a single mtd chip. If omitted, assumed to be equal to 'bank-width'. 7563f8e9e0SRob Herring $ref: /schemas/types.yaml#/definitions/uint32 7663f8e9e0SRob Herring enum: [ 1, 2 ] 7763f8e9e0SRob Herring 7863f8e9e0SRob Herring no-unaligned-direct-access: 7963f8e9e0SRob Herring type: boolean 8063f8e9e0SRob Herring description: | 8163f8e9e0SRob Herring Disables the default direct mapping of the flash. 8263f8e9e0SRob Herring 8363f8e9e0SRob Herring On some platforms (e.g. MPC5200) a direct 1:1 mapping may cause problems 8463f8e9e0SRob Herring with JFFS2 usage, as the local bus (LPB) doesn't support unaligned 8563f8e9e0SRob Herring accesses as implemented in the JFFS2 code via memcpy(). By defining 8663f8e9e0SRob Herring "no-unaligned-direct-access", the flash will not be exposed directly to 8763f8e9e0SRob Herring the MTD users (e.g. JFFS2) any more. 8863f8e9e0SRob Herring 8963f8e9e0SRob Herring linux,mtd-name: 9063f8e9e0SRob Herring description: 9163f8e9e0SRob Herring Allows specifying the mtd name for retro capability with physmap-flash 9263f8e9e0SRob Herring drivers as boot loader pass the mtd partition via the old device name 9363f8e9e0SRob Herring physmap-flash. 9463f8e9e0SRob Herring $ref: /schemas/types.yaml#/definitions/string 9563f8e9e0SRob Herring 9663f8e9e0SRob Herring use-advanced-sector-protection: 9763f8e9e0SRob Herring type: boolean 9863f8e9e0SRob Herring description: | 9963f8e9e0SRob Herring Enables support for the advanced sector protection (Spansion: PPB - 10063f8e9e0SRob Herring Persistent Protection Bits) locking. 10163f8e9e0SRob Herring 10263f8e9e0SRob Herring erase-size: 10363f8e9e0SRob Herring description: The chip's physical erase block size in bytes. 10463f8e9e0SRob Herring $ref: /schemas/types.yaml#/definitions/uint32 10563f8e9e0SRob Herring 10663f8e9e0SRob Herring addr-gpios: 10763f8e9e0SRob Herring description: 10863f8e9e0SRob Herring List of GPIO descriptors that will be used to address the MSBs address 10963f8e9e0SRob Herring lines. The order goes from LSB to MSB. 11063f8e9e0SRob Herring minItems: 1 11163f8e9e0SRob Herring maxItems: 8 11263f8e9e0SRob Herring 11363f8e9e0SRob Herring '#address-cells': 11463f8e9e0SRob Herring const: 1 11563f8e9e0SRob Herring 11663f8e9e0SRob Herring '#size-cells': 11763f8e9e0SRob Herring const: 1 11863f8e9e0SRob Herring 11963f8e9e0SRob Herring big-endian: true 12063f8e9e0SRob Herring little-endian: true 12163f8e9e0SRob Herring 12263f8e9e0SRob HerringpatternProperties: 12363f8e9e0SRob Herring '@[0-9a-f]+$': 12463f8e9e0SRob Herring $ref: partitions/partition.yaml 12563f8e9e0SRob Herring 12663f8e9e0SRob Herringrequired: 12763f8e9e0SRob Herring - compatible 12863f8e9e0SRob Herring - reg 12963f8e9e0SRob Herring 13063f8e9e0SRob Herring# FIXME: A parent bus may define timing properties 13163f8e9e0SRob HerringadditionalProperties: true 13263f8e9e0SRob Herring 13363f8e9e0SRob Herringexamples: 13463f8e9e0SRob Herring - | 13563f8e9e0SRob Herring 13663f8e9e0SRob Herring flash@ff000000 { 13763f8e9e0SRob Herring compatible = "cfi-flash"; 13863f8e9e0SRob Herring reg = <0xff000000 0x01000000>; 13963f8e9e0SRob Herring bank-width = <4>; 14063f8e9e0SRob Herring device-width = <1>; 14163f8e9e0SRob Herring 14263f8e9e0SRob Herring #address-cells = <1>; 14363f8e9e0SRob Herring #size-cells = <1>; 14463f8e9e0SRob Herring ranges = <0 0xff000000 0x01000000>; 14563f8e9e0SRob Herring 14663f8e9e0SRob Herring fs@0 { 14763f8e9e0SRob Herring label = "fs"; 14863f8e9e0SRob Herring reg = <0 0xf80000>; 14963f8e9e0SRob Herring }; 15063f8e9e0SRob Herring firmware@f80000 { 15163f8e9e0SRob Herring label ="firmware"; 15263f8e9e0SRob Herring reg = <0xf80000 0x80000>; 15363f8e9e0SRob Herring read-only; 15463f8e9e0SRob Herring }; 15563f8e9e0SRob Herring }; 15663f8e9e0SRob Herring 15763f8e9e0SRob Herring - | 15863f8e9e0SRob Herring /* An example with multiple "reg" tuples */ 15963f8e9e0SRob Herring 16063f8e9e0SRob Herring flash@0 { 16163f8e9e0SRob Herring compatible = "intel,PC28F640P30T85", "cfi-flash"; 16263f8e9e0SRob Herring reg = <0x00000000 0x02000000>, 16363f8e9e0SRob Herring <0x02000000 0x02000000>; 16463f8e9e0SRob Herring bank-width = <2>; 16563f8e9e0SRob Herring 16663f8e9e0SRob Herring #address-cells = <1>; 16763f8e9e0SRob Herring #size-cells = <1>; 16863f8e9e0SRob Herring ranges = <0 0 0x04000000>; 16963f8e9e0SRob Herring 17063f8e9e0SRob Herring partition@0 { 17163f8e9e0SRob Herring label = "test-part1"; 17263f8e9e0SRob Herring reg = <0 0x04000000>; 17363f8e9e0SRob Herring }; 17463f8e9e0SRob Herring }; 17563f8e9e0SRob Herring 17663f8e9e0SRob Herring - | 17763f8e9e0SRob Herring /* An example using SRAM */ 17863f8e9e0SRob Herring bus { 17963f8e9e0SRob Herring #address-cells = <2>; 18063f8e9e0SRob Herring #size-cells = <1>; 18163f8e9e0SRob Herring 18263f8e9e0SRob Herring sram@2,0 { 18363f8e9e0SRob Herring compatible = "mtd-ram"; 18463f8e9e0SRob Herring reg = <2 0 0x00200000>; 18563f8e9e0SRob Herring bank-width = <2>; 18663f8e9e0SRob Herring }; 18763f8e9e0SRob Herring }; 18863f8e9e0SRob Herring 18963f8e9e0SRob Herring - | 19063f8e9e0SRob Herring /* An example using addr-gpios */ 19163f8e9e0SRob Herring #include <dt-bindings/gpio/gpio.h> 19263f8e9e0SRob Herring 19363f8e9e0SRob Herring flash@20000000 { 19463f8e9e0SRob Herring compatible = "cfi-flash"; 19563f8e9e0SRob Herring reg = <0x20000000 0x02000000>; 19663f8e9e0SRob Herring bank-width = <2>; 19763f8e9e0SRob Herring addr-gpios = <&gpio1 2 GPIO_ACTIVE_HIGH>; 19863f8e9e0SRob Herring 19963f8e9e0SRob Herring #address-cells = <1>; 20063f8e9e0SRob Herring #size-cells = <1>; 20163f8e9e0SRob Herring ranges = <0 0x00000000 0x02000000>, 20263f8e9e0SRob Herring <1 0x02000000 0x02000000>; 20363f8e9e0SRob Herring 20463f8e9e0SRob Herring partition@0 { 20563f8e9e0SRob Herring label = "test-part1"; 20663f8e9e0SRob Herring reg = <0 0x04000000>; 20763f8e9e0SRob Herring }; 20863f8e9e0SRob Herring }; 20963f8e9e0SRob Herring... 210