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