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