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