xref: /linux/Documentation/devicetree/bindings/mtd/mtd-physmap.yaml (revision 4f9786035f9e519db41375818e1d0b5f20da2f10)
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