162306a36Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
262306a36Sopenharmony_ci%YAML 1.2
362306a36Sopenharmony_ci---
462306a36Sopenharmony_ci$id: http://devicetree.org/schemas/eeprom/at25.yaml#
562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
662306a36Sopenharmony_ci
762306a36Sopenharmony_cititle: SPI EEPROMs or FRAMs compatible with Atmel's AT25
862306a36Sopenharmony_ci
962306a36Sopenharmony_cimaintainers:
1062306a36Sopenharmony_ci  - Christian Eggers <ceggers@arri.de>
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_ciproperties:
1362306a36Sopenharmony_ci  $nodename:
1462306a36Sopenharmony_ci    anyOf:
1562306a36Sopenharmony_ci      - pattern: "^eeprom@[0-9a-f]{1,2}$"
1662306a36Sopenharmony_ci      - pattern: "^fram@[0-9a-f]{1,2}$"
1762306a36Sopenharmony_ci
1862306a36Sopenharmony_ci  # There are multiple known vendors who manufacture EEPROM chips compatible
1962306a36Sopenharmony_ci  # with Atmel's AT25. The compatible string requires two items where the
2062306a36Sopenharmony_ci  # 'vendor' and 'model' parts of the first are the actual chip and the second
2162306a36Sopenharmony_ci  # item is fixed to "atmel,at25". Some existing bindings only have the
2262306a36Sopenharmony_ci  # "atmel,at25" part and should be fixed by somebody who knows vendor and
2362306a36Sopenharmony_ci  # product.
2462306a36Sopenharmony_ci  compatible:
2562306a36Sopenharmony_ci    oneOf:
2662306a36Sopenharmony_ci      - items:
2762306a36Sopenharmony_ci          - enum:
2862306a36Sopenharmony_ci              - anvo,anv32e61w
2962306a36Sopenharmony_ci              - atmel,at25256B
3062306a36Sopenharmony_ci              - fujitsu,mb85rs1mt
3162306a36Sopenharmony_ci              - fujitsu,mb85rs64
3262306a36Sopenharmony_ci              - microchip,at25160bn
3362306a36Sopenharmony_ci              - microchip,25lc040
3462306a36Sopenharmony_ci              - st,m95m02
3562306a36Sopenharmony_ci              - st,m95256
3662306a36Sopenharmony_ci              - st,m95640
3762306a36Sopenharmony_ci              - cypress,fm25
3862306a36Sopenharmony_ci
3962306a36Sopenharmony_ci          - const: atmel,at25
4062306a36Sopenharmony_ci
4162306a36Sopenharmony_ci      # Please don't use this alternative for new bindings.
4262306a36Sopenharmony_ci      - items:
4362306a36Sopenharmony_ci          - const: atmel,at25
4462306a36Sopenharmony_ci
4562306a36Sopenharmony_ci  reg:
4662306a36Sopenharmony_ci    maxItems: 1
4762306a36Sopenharmony_ci
4862306a36Sopenharmony_ci  pagesize:
4962306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/uint32
5062306a36Sopenharmony_ci    enum: [1, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768, 65536, 131072]
5162306a36Sopenharmony_ci    description:
5262306a36Sopenharmony_ci      Size of the eeprom page. FRAMs don't have pages.
5362306a36Sopenharmony_ci
5462306a36Sopenharmony_ci  size:
5562306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/uint32
5662306a36Sopenharmony_ci    description:
5762306a36Sopenharmony_ci      Total eeprom size in bytes.
5862306a36Sopenharmony_ci
5962306a36Sopenharmony_ci  address-width:
6062306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/uint32
6162306a36Sopenharmony_ci    enum: [ 8, 9, 16, 24 ]
6262306a36Sopenharmony_ci    description:
6362306a36Sopenharmony_ci      Number of address bits.
6462306a36Sopenharmony_ci      For 9 bits, the MSB of the address is sent as bit 3 of the instruction
6562306a36Sopenharmony_ci      byte, before the address byte.
6662306a36Sopenharmony_ci
6762306a36Sopenharmony_ci  spi-cpha: true
6862306a36Sopenharmony_ci
6962306a36Sopenharmony_ci  spi-cpol: true
7062306a36Sopenharmony_ci
7162306a36Sopenharmony_ci  read-only:
7262306a36Sopenharmony_ci    description:
7362306a36Sopenharmony_ci      Disable writes to the eeprom.
7462306a36Sopenharmony_ci    type: boolean
7562306a36Sopenharmony_ci
7662306a36Sopenharmony_ci  wp-gpios:
7762306a36Sopenharmony_ci    maxItems: 1
7862306a36Sopenharmony_ci    description:
7962306a36Sopenharmony_ci      GPIO to which the write-protect pin of the chip is connected.
8062306a36Sopenharmony_ci
8162306a36Sopenharmony_ci  # Deprecated: at25,byte-len, at25,addr-mode, at25,page-size
8262306a36Sopenharmony_ci  at25,byte-len:
8362306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/uint32
8462306a36Sopenharmony_ci    description:
8562306a36Sopenharmony_ci      Total eeprom size in bytes. Deprecated, use "size" property instead.
8662306a36Sopenharmony_ci    deprecated: true
8762306a36Sopenharmony_ci
8862306a36Sopenharmony_ci  at25,addr-mode:
8962306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/uint32
9062306a36Sopenharmony_ci    description:
9162306a36Sopenharmony_ci      Addr-mode flags, as defined in include/linux/spi/eeprom.h.
9262306a36Sopenharmony_ci      Deprecated, use "address-width" property instead.
9362306a36Sopenharmony_ci    deprecated: true
9462306a36Sopenharmony_ci
9562306a36Sopenharmony_ci  at25,page-size:
9662306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/uint32
9762306a36Sopenharmony_ci    description:
9862306a36Sopenharmony_ci      Size of the eeprom page. Deprecated, use "pagesize" property instead.
9962306a36Sopenharmony_ci    deprecated: true
10062306a36Sopenharmony_ci
10162306a36Sopenharmony_cirequired:
10262306a36Sopenharmony_ci  - compatible
10362306a36Sopenharmony_ci  - reg
10462306a36Sopenharmony_ci  - spi-max-frequency
10562306a36Sopenharmony_ci
10662306a36Sopenharmony_ciallOf:
10762306a36Sopenharmony_ci  - $ref: /schemas/spi/spi-peripheral-props.yaml#
10862306a36Sopenharmony_ci  - $ref: /schemas/nvmem/nvmem.yaml
10962306a36Sopenharmony_ci  - if:
11062306a36Sopenharmony_ci      properties:
11162306a36Sopenharmony_ci        compatible:
11262306a36Sopenharmony_ci          not:
11362306a36Sopenharmony_ci            contains:
11462306a36Sopenharmony_ci              const: cypress,fm25
11562306a36Sopenharmony_ci    then:
11662306a36Sopenharmony_ci      required:
11762306a36Sopenharmony_ci        - pagesize
11862306a36Sopenharmony_ci        - size
11962306a36Sopenharmony_ci        - address-width
12062306a36Sopenharmony_ci
12162306a36Sopenharmony_ciunevaluatedProperties: false
12262306a36Sopenharmony_ci
12362306a36Sopenharmony_ciexamples:
12462306a36Sopenharmony_ci  - |
12562306a36Sopenharmony_ci    #include <dt-bindings/gpio/gpio.h>
12662306a36Sopenharmony_ci    spi {
12762306a36Sopenharmony_ci        #address-cells = <1>;
12862306a36Sopenharmony_ci        #size-cells = <0>;
12962306a36Sopenharmony_ci
13062306a36Sopenharmony_ci        eeprom@0 {
13162306a36Sopenharmony_ci            compatible = "st,m95256", "atmel,at25";
13262306a36Sopenharmony_ci            reg = <0>;
13362306a36Sopenharmony_ci            spi-max-frequency = <5000000>;
13462306a36Sopenharmony_ci            spi-cpha;
13562306a36Sopenharmony_ci            spi-cpol;
13662306a36Sopenharmony_ci            wp-gpios = <&gpio1 3 0>;
13762306a36Sopenharmony_ci
13862306a36Sopenharmony_ci            pagesize = <64>;
13962306a36Sopenharmony_ci            size = <32768>;
14062306a36Sopenharmony_ci            address-width = <16>;
14162306a36Sopenharmony_ci        };
14262306a36Sopenharmony_ci
14362306a36Sopenharmony_ci        fram@1 {
14462306a36Sopenharmony_ci            compatible = "cypress,fm25", "atmel,at25";
14562306a36Sopenharmony_ci            reg = <1>;
14662306a36Sopenharmony_ci            spi-max-frequency = <40000000>;
14762306a36Sopenharmony_ci        };
14862306a36Sopenharmony_ci    };
149