162306a36Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0-only
262306a36Sopenharmony_ci# Copyright 2019 BayLibre SAS
362306a36Sopenharmony_ci%YAML 1.2
462306a36Sopenharmony_ci---
562306a36Sopenharmony_ci$id: http://devicetree.org/schemas/eeprom/at24.yaml#
662306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
762306a36Sopenharmony_ci
862306a36Sopenharmony_cititle: I2C EEPROMs compatible with Atmel's AT24
962306a36Sopenharmony_ci
1062306a36Sopenharmony_cimaintainers:
1162306a36Sopenharmony_ci  - Bartosz Golaszewski <bgolaszewski@baylibre.com>
1262306a36Sopenharmony_ci
1362306a36Sopenharmony_ciallOf:
1462306a36Sopenharmony_ci  - $ref: /schemas/nvmem/nvmem.yaml
1562306a36Sopenharmony_ci
1662306a36Sopenharmony_ciselect:
1762306a36Sopenharmony_ci  properties:
1862306a36Sopenharmony_ci    compatible:
1962306a36Sopenharmony_ci      contains:
2062306a36Sopenharmony_ci        pattern: "^atmel,(24(c|cs|mac)[0-9]+|spd)$"
2162306a36Sopenharmony_ci  required:
2262306a36Sopenharmony_ci    - compatible
2362306a36Sopenharmony_ci
2462306a36Sopenharmony_ciproperties:
2562306a36Sopenharmony_ci  $nodename:
2662306a36Sopenharmony_ci    pattern: "^eeprom@[0-9a-f]{1,2}$"
2762306a36Sopenharmony_ci
2862306a36Sopenharmony_ci  # There are multiple known vendors who manufacture EEPROM chips compatible
2962306a36Sopenharmony_ci  # with Atmel's AT24. The compatible string requires either a single item
3062306a36Sopenharmony_ci  # if the memory comes from Atmel (in which case the vendor part must be
3162306a36Sopenharmony_ci  # 'atmel') or two items with the same 'model' part where the vendor part of
3262306a36Sopenharmony_ci  # the first one is the actual manufacturer and the second item is the
3362306a36Sopenharmony_ci  # corresponding 'atmel,<model>' from Atmel.
3462306a36Sopenharmony_ci  compatible:
3562306a36Sopenharmony_ci    oneOf:
3662306a36Sopenharmony_ci      - allOf:
3762306a36Sopenharmony_ci          - minItems: 1
3862306a36Sopenharmony_ci            items:
3962306a36Sopenharmony_ci              - pattern: "^(atmel|catalyst|microchip|nxp|ramtron|renesas|rohm|st),(24(c|cs|lc|mac)[0-9]+|spd)$"
4062306a36Sopenharmony_ci              - pattern: "^atmel,(24(c|cs|mac)[0-9]+|spd)$"
4162306a36Sopenharmony_ci          - oneOf:
4262306a36Sopenharmony_ci              - items:
4362306a36Sopenharmony_ci                  pattern: c00$
4462306a36Sopenharmony_ci              - items:
4562306a36Sopenharmony_ci                  pattern: c01$
4662306a36Sopenharmony_ci              - items:
4762306a36Sopenharmony_ci                  pattern: cs01$
4862306a36Sopenharmony_ci              - items:
4962306a36Sopenharmony_ci                  pattern: c02$
5062306a36Sopenharmony_ci              - items:
5162306a36Sopenharmony_ci                  pattern: cs02$
5262306a36Sopenharmony_ci              - items:
5362306a36Sopenharmony_ci                  pattern: mac402$
5462306a36Sopenharmony_ci              - items:
5562306a36Sopenharmony_ci                  pattern: mac602$
5662306a36Sopenharmony_ci              - items:
5762306a36Sopenharmony_ci                  pattern: c04$
5862306a36Sopenharmony_ci              - items:
5962306a36Sopenharmony_ci                  pattern: cs04$
6062306a36Sopenharmony_ci              - items:
6162306a36Sopenharmony_ci                  pattern: c08$
6262306a36Sopenharmony_ci              - items:
6362306a36Sopenharmony_ci                  pattern: cs08$
6462306a36Sopenharmony_ci              - items:
6562306a36Sopenharmony_ci                  pattern: c16$
6662306a36Sopenharmony_ci              - items:
6762306a36Sopenharmony_ci                  pattern: cs16$
6862306a36Sopenharmony_ci              - items:
6962306a36Sopenharmony_ci                  pattern: c32$
7062306a36Sopenharmony_ci              - items:
7162306a36Sopenharmony_ci                  pattern: cs32$
7262306a36Sopenharmony_ci              - items:
7362306a36Sopenharmony_ci                  pattern: c64$
7462306a36Sopenharmony_ci              - items:
7562306a36Sopenharmony_ci                  pattern: cs64$
7662306a36Sopenharmony_ci              - items:
7762306a36Sopenharmony_ci                  pattern: c128$
7862306a36Sopenharmony_ci              - items:
7962306a36Sopenharmony_ci                  pattern: cs128$
8062306a36Sopenharmony_ci              - items:
8162306a36Sopenharmony_ci                  pattern: c256$
8262306a36Sopenharmony_ci              - items:
8362306a36Sopenharmony_ci                  pattern: cs256$
8462306a36Sopenharmony_ci              - items:
8562306a36Sopenharmony_ci                  pattern: c512$
8662306a36Sopenharmony_ci              - items:
8762306a36Sopenharmony_ci                  pattern: cs512$
8862306a36Sopenharmony_ci              - items:
8962306a36Sopenharmony_ci                  pattern: c1024$
9062306a36Sopenharmony_ci              - items:
9162306a36Sopenharmony_ci                  pattern: cs1024$
9262306a36Sopenharmony_ci              - items:
9362306a36Sopenharmony_ci                  pattern: c1025$
9462306a36Sopenharmony_ci              - items:
9562306a36Sopenharmony_ci                  pattern: cs1025$
9662306a36Sopenharmony_ci              - items:
9762306a36Sopenharmony_ci                  pattern: c2048$
9862306a36Sopenharmony_ci              - items:
9962306a36Sopenharmony_ci                  pattern: cs2048$
10062306a36Sopenharmony_ci              - items:
10162306a36Sopenharmony_ci                  pattern: spd$
10262306a36Sopenharmony_ci      # These are special cases that don't conform to the above pattern.
10362306a36Sopenharmony_ci      # Each requires a standard at24 model as fallback.
10462306a36Sopenharmony_ci      - items:
10562306a36Sopenharmony_ci          - const: belling,bl24c16a
10662306a36Sopenharmony_ci          - const: atmel,24c16
10762306a36Sopenharmony_ci      - items:
10862306a36Sopenharmony_ci          - enum:
10962306a36Sopenharmony_ci              - rohm,br24g01
11062306a36Sopenharmony_ci              - rohm,br24t01
11162306a36Sopenharmony_ci          - const: atmel,24c01
11262306a36Sopenharmony_ci      - items:
11362306a36Sopenharmony_ci          - enum:
11462306a36Sopenharmony_ci              - nxp,se97b
11562306a36Sopenharmony_ci              - renesas,r1ex24002
11662306a36Sopenharmony_ci          - const: atmel,24c02
11762306a36Sopenharmony_ci      - items:
11862306a36Sopenharmony_ci          - enum:
11962306a36Sopenharmony_ci              - onnn,cat24c04
12062306a36Sopenharmony_ci              - onnn,cat24c05
12162306a36Sopenharmony_ci          - const: atmel,24c04
12262306a36Sopenharmony_ci      - items:
12362306a36Sopenharmony_ci          - const: renesas,r1ex24016
12462306a36Sopenharmony_ci          - const: atmel,24c16
12562306a36Sopenharmony_ci      - items:
12662306a36Sopenharmony_ci          - const: giantec,gt24c32a
12762306a36Sopenharmony_ci          - const: atmel,24c32
12862306a36Sopenharmony_ci      - items:
12962306a36Sopenharmony_ci          - enum:
13062306a36Sopenharmony_ci              - renesas,r1ex24128
13162306a36Sopenharmony_ci              - samsung,s524ad0xd1
13262306a36Sopenharmony_ci          - const: atmel,24c128
13362306a36Sopenharmony_ci
13462306a36Sopenharmony_ci  label:
13562306a36Sopenharmony_ci    description: Descriptive name of the EEPROM.
13662306a36Sopenharmony_ci
13762306a36Sopenharmony_ci  reg:
13862306a36Sopenharmony_ci    maxItems: 1
13962306a36Sopenharmony_ci
14062306a36Sopenharmony_ci  pagesize:
14162306a36Sopenharmony_ci    description:
14262306a36Sopenharmony_ci      The length of the pagesize for writing. Please consult the
14362306a36Sopenharmony_ci      manual of your device, that value varies a lot. A wrong value
14462306a36Sopenharmony_ci      may result in data loss! If not specified, a safety value of
14562306a36Sopenharmony_ci      '1' is used which will be very slow.
14662306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/uint32
14762306a36Sopenharmony_ci    enum: [1, 8, 16, 32, 64, 128, 256]
14862306a36Sopenharmony_ci    default: 1
14962306a36Sopenharmony_ci
15062306a36Sopenharmony_ci  read-only:
15162306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/flag
15262306a36Sopenharmony_ci    description:
15362306a36Sopenharmony_ci      Disables writes to the eeprom.
15462306a36Sopenharmony_ci
15562306a36Sopenharmony_ci  size:
15662306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/uint32
15762306a36Sopenharmony_ci    description:
15862306a36Sopenharmony_ci      Total eeprom size in bytes.
15962306a36Sopenharmony_ci
16062306a36Sopenharmony_ci  no-read-rollover:
16162306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/flag
16262306a36Sopenharmony_ci    description:
16362306a36Sopenharmony_ci      Indicates that the multi-address eeprom does not automatically roll
16462306a36Sopenharmony_ci      over reads to the next slave address. Please consult the manual of
16562306a36Sopenharmony_ci      your device.
16662306a36Sopenharmony_ci
16762306a36Sopenharmony_ci  wp-gpios: true
16862306a36Sopenharmony_ci
16962306a36Sopenharmony_ci  address-width:
17062306a36Sopenharmony_ci    description:
17162306a36Sopenharmony_ci      Number of address bits.
17262306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/uint32
17362306a36Sopenharmony_ci    default: 8
17462306a36Sopenharmony_ci    enum: [ 8, 16 ]
17562306a36Sopenharmony_ci
17662306a36Sopenharmony_ci  num-addresses:
17762306a36Sopenharmony_ci    description:
17862306a36Sopenharmony_ci      Total number of i2c slave addresses this device takes.
17962306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/uint32
18062306a36Sopenharmony_ci    default: 1
18162306a36Sopenharmony_ci    minimum: 1
18262306a36Sopenharmony_ci    maximum: 8
18362306a36Sopenharmony_ci
18462306a36Sopenharmony_ci  vcc-supply:
18562306a36Sopenharmony_ci    description:
18662306a36Sopenharmony_ci      phandle of the regulator that provides the supply voltage.
18762306a36Sopenharmony_ci
18862306a36Sopenharmony_cirequired:
18962306a36Sopenharmony_ci  - compatible
19062306a36Sopenharmony_ci  - reg
19162306a36Sopenharmony_ci
19262306a36Sopenharmony_ciunevaluatedProperties: false
19362306a36Sopenharmony_ci
19462306a36Sopenharmony_ciexamples:
19562306a36Sopenharmony_ci  - |
19662306a36Sopenharmony_ci    i2c {
19762306a36Sopenharmony_ci      #address-cells = <1>;
19862306a36Sopenharmony_ci      #size-cells = <0>;
19962306a36Sopenharmony_ci
20062306a36Sopenharmony_ci      eeprom@52 {
20162306a36Sopenharmony_ci          compatible = "microchip,24c32", "atmel,24c32";
20262306a36Sopenharmony_ci          reg = <0x52>;
20362306a36Sopenharmony_ci          pagesize = <32>;
20462306a36Sopenharmony_ci          wp-gpios = <&gpio1 3 0>;
20562306a36Sopenharmony_ci          num-addresses = <8>;
20662306a36Sopenharmony_ci      };
20762306a36Sopenharmony_ci    };
20862306a36Sopenharmony_ci...
209