1c66ec88fSEmmanuel Vadot# SPDX-License-Identifier: GPL-2.0-only
2c66ec88fSEmmanuel Vadot# Copyright 2019 BayLibre SAS
3c66ec88fSEmmanuel Vadot%YAML 1.2
4c66ec88fSEmmanuel Vadot---
5c66ec88fSEmmanuel Vadot$id: "http://devicetree.org/schemas/eeprom/at24.yaml#"
6c66ec88fSEmmanuel Vadot$schema: "http://devicetree.org/meta-schemas/core.yaml#"
7c66ec88fSEmmanuel Vadot
8c66ec88fSEmmanuel Vadottitle: I2C EEPROMs compatible with Atmel's AT24
9c66ec88fSEmmanuel Vadot
10c66ec88fSEmmanuel Vadotmaintainers:
11c66ec88fSEmmanuel Vadot  - Bartosz Golaszewski <bgolaszewski@baylibre.com>
12c66ec88fSEmmanuel Vadot
13*8bab661aSEmmanuel VadotallOf:
14*8bab661aSEmmanuel Vadot  - $ref: /schemas/nvmem/nvmem.yaml
15*8bab661aSEmmanuel Vadot
16c66ec88fSEmmanuel Vadotselect:
17c66ec88fSEmmanuel Vadot  properties:
18c66ec88fSEmmanuel Vadot    compatible:
19c66ec88fSEmmanuel Vadot      contains:
20c66ec88fSEmmanuel Vadot        pattern: "^atmel,(24(c|cs|mac)[0-9]+|spd)$"
21c66ec88fSEmmanuel Vadot  required:
22c66ec88fSEmmanuel Vadot    - compatible
23c66ec88fSEmmanuel Vadot
24c66ec88fSEmmanuel Vadotproperties:
25c66ec88fSEmmanuel Vadot  $nodename:
26c66ec88fSEmmanuel Vadot    pattern: "^eeprom@[0-9a-f]{1,2}$"
27c66ec88fSEmmanuel Vadot
28c66ec88fSEmmanuel Vadot  # There are multiple known vendors who manufacture EEPROM chips compatible
29c66ec88fSEmmanuel Vadot  # with Atmel's AT24. The compatible string requires either a single item
30c66ec88fSEmmanuel Vadot  # if the memory comes from Atmel (in which case the vendor part must be
31c66ec88fSEmmanuel Vadot  # 'atmel') or two items with the same 'model' part where the vendor part of
32c66ec88fSEmmanuel Vadot  # the first one is the actual manufacturer and the second item is the
33c66ec88fSEmmanuel Vadot  # corresponding 'atmel,<model>' from Atmel.
34c66ec88fSEmmanuel Vadot  compatible:
35c66ec88fSEmmanuel Vadot    oneOf:
36c66ec88fSEmmanuel Vadot      - allOf:
37c66ec88fSEmmanuel Vadot          - minItems: 1
38c66ec88fSEmmanuel Vadot            items:
39c66ec88fSEmmanuel Vadot              - pattern: "^(atmel|catalyst|microchip|nxp|ramtron|renesas|rohm|st),(24(c|cs|lc|mac)[0-9]+|spd)$"
40c66ec88fSEmmanuel Vadot              - pattern: "^atmel,(24(c|cs|mac)[0-9]+|spd)$"
41c66ec88fSEmmanuel Vadot          - oneOf:
42c66ec88fSEmmanuel Vadot              - items:
43c66ec88fSEmmanuel Vadot                  pattern: c00$
44c66ec88fSEmmanuel Vadot              - items:
45c66ec88fSEmmanuel Vadot                  pattern: c01$
46c66ec88fSEmmanuel Vadot              - items:
47c66ec88fSEmmanuel Vadot                  pattern: cs01$
48c66ec88fSEmmanuel Vadot              - items:
49c66ec88fSEmmanuel Vadot                  pattern: c02$
50c66ec88fSEmmanuel Vadot              - items:
51c66ec88fSEmmanuel Vadot                  pattern: cs02$
52c66ec88fSEmmanuel Vadot              - items:
53c66ec88fSEmmanuel Vadot                  pattern: mac402$
54c66ec88fSEmmanuel Vadot              - items:
55c66ec88fSEmmanuel Vadot                  pattern: mac602$
56c66ec88fSEmmanuel Vadot              - items:
57c66ec88fSEmmanuel Vadot                  pattern: c04$
58c66ec88fSEmmanuel Vadot              - items:
59c66ec88fSEmmanuel Vadot                  pattern: cs04$
60c66ec88fSEmmanuel Vadot              - items:
61c66ec88fSEmmanuel Vadot                  pattern: c08$
62c66ec88fSEmmanuel Vadot              - items:
63c66ec88fSEmmanuel Vadot                  pattern: cs08$
64c66ec88fSEmmanuel Vadot              - items:
65c66ec88fSEmmanuel Vadot                  pattern: c16$
66c66ec88fSEmmanuel Vadot              - items:
67c66ec88fSEmmanuel Vadot                  pattern: cs16$
68c66ec88fSEmmanuel Vadot              - items:
69c66ec88fSEmmanuel Vadot                  pattern: c32$
70c66ec88fSEmmanuel Vadot              - items:
71c66ec88fSEmmanuel Vadot                  pattern: cs32$
72c66ec88fSEmmanuel Vadot              - items:
73c66ec88fSEmmanuel Vadot                  pattern: c64$
74c66ec88fSEmmanuel Vadot              - items:
75c66ec88fSEmmanuel Vadot                  pattern: cs64$
76c66ec88fSEmmanuel Vadot              - items:
77c66ec88fSEmmanuel Vadot                  pattern: c128$
78c66ec88fSEmmanuel Vadot              - items:
79c66ec88fSEmmanuel Vadot                  pattern: cs128$
80c66ec88fSEmmanuel Vadot              - items:
81c66ec88fSEmmanuel Vadot                  pattern: c256$
82c66ec88fSEmmanuel Vadot              - items:
83c66ec88fSEmmanuel Vadot                  pattern: cs256$
84c66ec88fSEmmanuel Vadot              - items:
85c66ec88fSEmmanuel Vadot                  pattern: c512$
86c66ec88fSEmmanuel Vadot              - items:
87c66ec88fSEmmanuel Vadot                  pattern: cs512$
88c66ec88fSEmmanuel Vadot              - items:
89c66ec88fSEmmanuel Vadot                  pattern: c1024$
90c66ec88fSEmmanuel Vadot              - items:
91c66ec88fSEmmanuel Vadot                  pattern: cs1024$
92c66ec88fSEmmanuel Vadot              - items:
93e67e8565SEmmanuel Vadot                  pattern: c1025$
94e67e8565SEmmanuel Vadot              - items:
95e67e8565SEmmanuel Vadot                  pattern: cs1025$
96e67e8565SEmmanuel Vadot              - items:
97c66ec88fSEmmanuel Vadot                  pattern: c2048$
98c66ec88fSEmmanuel Vadot              - items:
99c66ec88fSEmmanuel Vadot                  pattern: cs2048$
100c66ec88fSEmmanuel Vadot              - items:
101c66ec88fSEmmanuel Vadot                  pattern: spd$
102c66ec88fSEmmanuel Vadot      # These are special cases that don't conform to the above pattern.
103c66ec88fSEmmanuel Vadot      # Each requires a standard at24 model as fallback.
104c66ec88fSEmmanuel Vadot      - items:
105e67e8565SEmmanuel Vadot          - enum:
106e67e8565SEmmanuel Vadot              - rohm,br24g01
107e67e8565SEmmanuel Vadot              - rohm,br24t01
108e67e8565SEmmanuel Vadot          - const: atmel,24c01
109e67e8565SEmmanuel Vadot      - items:
110e67e8565SEmmanuel Vadot          - enum:
111e67e8565SEmmanuel Vadot              - nxp,se97b
112e67e8565SEmmanuel Vadot              - renesas,r1ex24002
113c66ec88fSEmmanuel Vadot          - const: atmel,24c02
114c66ec88fSEmmanuel Vadot      - items:
115e67e8565SEmmanuel Vadot          - enum:
116e67e8565SEmmanuel Vadot              - onnn,cat24c04
117e67e8565SEmmanuel Vadot              - onnn,cat24c05
1188cc087a1SEmmanuel Vadot          - const: atmel,24c04
1198cc087a1SEmmanuel Vadot      - items:
120c66ec88fSEmmanuel Vadot          - const: renesas,r1ex24016
121c66ec88fSEmmanuel Vadot          - const: atmel,24c16
122c66ec88fSEmmanuel Vadot      - items:
123c66ec88fSEmmanuel Vadot          - const: giantec,gt24c32a
124c66ec88fSEmmanuel Vadot          - const: atmel,24c32
125c66ec88fSEmmanuel Vadot      - items:
126d5b0e70fSEmmanuel Vadot          - enum:
127d5b0e70fSEmmanuel Vadot              - renesas,r1ex24128
128d5b0e70fSEmmanuel Vadot              - samsung,s524ad0xd1
129c66ec88fSEmmanuel Vadot          - const: atmel,24c128
130c66ec88fSEmmanuel Vadot
1316be33864SEmmanuel Vadot  label:
1326be33864SEmmanuel Vadot    description: Descriptive name of the EEPROM.
1336be33864SEmmanuel Vadot
134c66ec88fSEmmanuel Vadot  reg:
135c66ec88fSEmmanuel Vadot    maxItems: 1
136c66ec88fSEmmanuel Vadot
137c66ec88fSEmmanuel Vadot  pagesize:
138c66ec88fSEmmanuel Vadot    description:
139c66ec88fSEmmanuel Vadot      The length of the pagesize for writing. Please consult the
140c66ec88fSEmmanuel Vadot      manual of your device, that value varies a lot. A wrong value
141c66ec88fSEmmanuel Vadot      may result in data loss! If not specified, a safety value of
142c66ec88fSEmmanuel Vadot      '1' is used which will be very slow.
143c66ec88fSEmmanuel Vadot    $ref: /schemas/types.yaml#/definitions/uint32
144c66ec88fSEmmanuel Vadot    enum: [1, 8, 16, 32, 64, 128, 256]
145c66ec88fSEmmanuel Vadot    default: 1
146c66ec88fSEmmanuel Vadot
147c66ec88fSEmmanuel Vadot  read-only:
1485def4c47SEmmanuel Vadot    $ref: /schemas/types.yaml#/definitions/flag
149c66ec88fSEmmanuel Vadot    description:
150c66ec88fSEmmanuel Vadot      Disables writes to the eeprom.
151c66ec88fSEmmanuel Vadot
152c66ec88fSEmmanuel Vadot  size:
153c66ec88fSEmmanuel Vadot    $ref: /schemas/types.yaml#/definitions/uint32
154c66ec88fSEmmanuel Vadot    description:
155c66ec88fSEmmanuel Vadot      Total eeprom size in bytes.
156c66ec88fSEmmanuel Vadot
157c66ec88fSEmmanuel Vadot  no-read-rollover:
1585def4c47SEmmanuel Vadot    $ref: /schemas/types.yaml#/definitions/flag
159c66ec88fSEmmanuel Vadot    description:
160c66ec88fSEmmanuel Vadot      Indicates that the multi-address eeprom does not automatically roll
161c66ec88fSEmmanuel Vadot      over reads to the next slave address. Please consult the manual of
162c66ec88fSEmmanuel Vadot      your device.
163c66ec88fSEmmanuel Vadot
164c66ec88fSEmmanuel Vadot  wp-gpios: true
165c66ec88fSEmmanuel Vadot
166c66ec88fSEmmanuel Vadot  address-width:
167c66ec88fSEmmanuel Vadot    description:
168c66ec88fSEmmanuel Vadot      Number of address bits.
169c66ec88fSEmmanuel Vadot    $ref: /schemas/types.yaml#/definitions/uint32
170c66ec88fSEmmanuel Vadot    default: 8
171c66ec88fSEmmanuel Vadot    enum: [ 8, 16 ]
172c66ec88fSEmmanuel Vadot
173c66ec88fSEmmanuel Vadot  num-addresses:
174c66ec88fSEmmanuel Vadot    description:
175c66ec88fSEmmanuel Vadot      Total number of i2c slave addresses this device takes.
176c66ec88fSEmmanuel Vadot    $ref: /schemas/types.yaml#/definitions/uint32
177c66ec88fSEmmanuel Vadot    default: 1
178c66ec88fSEmmanuel Vadot    minimum: 1
179c66ec88fSEmmanuel Vadot    maximum: 8
180c66ec88fSEmmanuel Vadot
181c66ec88fSEmmanuel Vadot  vcc-supply:
182c66ec88fSEmmanuel Vadot    description:
183c66ec88fSEmmanuel Vadot      phandle of the regulator that provides the supply voltage.
184c66ec88fSEmmanuel Vadot
185c66ec88fSEmmanuel Vadotrequired:
186c66ec88fSEmmanuel Vadot  - compatible
187c66ec88fSEmmanuel Vadot  - reg
188c66ec88fSEmmanuel Vadot
189*8bab661aSEmmanuel VadotunevaluatedProperties: false
190c66ec88fSEmmanuel Vadot
191c66ec88fSEmmanuel Vadotexamples:
192c66ec88fSEmmanuel Vadot  - |
193c66ec88fSEmmanuel Vadot    i2c {
194c66ec88fSEmmanuel Vadot      #address-cells = <1>;
195c66ec88fSEmmanuel Vadot      #size-cells = <0>;
196c66ec88fSEmmanuel Vadot
197c66ec88fSEmmanuel Vadot      eeprom@52 {
198c66ec88fSEmmanuel Vadot          compatible = "microchip,24c32", "atmel,24c32";
199c66ec88fSEmmanuel Vadot          reg = <0x52>;
200c66ec88fSEmmanuel Vadot          pagesize = <32>;
201c66ec88fSEmmanuel Vadot          wp-gpios = <&gpio1 3 0>;
202c66ec88fSEmmanuel Vadot          num-addresses = <8>;
203c66ec88fSEmmanuel Vadot      };
204c66ec88fSEmmanuel Vadot    };
205c66ec88fSEmmanuel Vadot...
206