# SPDX-License-Identifier: GPL-2.0-only # Copyright 2019 BayLibre SAS %YAML 1.2 --- $id: "http://devicetree.org/schemas/eeprom/at24.yaml#" $schema: "http://devicetree.org/meta-schemas/core.yaml#" title: I2C EEPROMs compatible with Atmel's AT24 maintainers: - Bartosz Golaszewski select: properties: compatible: contains: pattern: "^atmel,(24(c|cs|mac)[0-9]+|spd)$" required: - compatible properties: $nodename: pattern: "^eeprom@[0-9a-f]{1,2}$" # There are multiple known vendors who manufacture EEPROM chips compatible # with Atmel's AT24. The compatible string requires either a single item # if the memory comes from Atmel (in which case the vendor part must be # 'atmel') or two items with the same 'model' part where the vendor part of # the first one is the actual manufacturer and the second item is the # corresponding 'atmel,' from Atmel. compatible: oneOf: - allOf: - minItems: 1 maxItems: 2 items: - pattern: "^(atmel|catalyst|microchip|nxp|ramtron|renesas|rohm|st),(24(c|cs|mac)[0-9]+|spd)$" - pattern: "^atmel,(24(c|cs|mac)[0-9]+|spd)$" - oneOf: - items: pattern: c00$ - items: pattern: c01$ - items: pattern: cs01$ - items: pattern: c02$ - items: pattern: cs02$ - items: pattern: mac402$ - items: pattern: mac602$ - items: pattern: c04$ - items: pattern: cs04$ - items: pattern: c08$ - items: pattern: cs08$ - items: pattern: c16$ - items: pattern: cs16$ - items: pattern: c32$ - items: pattern: cs32$ - items: pattern: c64$ - items: pattern: cs64$ - items: pattern: c128$ - items: pattern: cs128$ - items: pattern: c256$ - items: pattern: cs256$ - items: pattern: c512$ - items: pattern: cs512$ - items: pattern: c1024$ - items: pattern: cs1024$ - items: pattern: c2048$ - items: pattern: cs2048$ - items: pattern: spd$ # These are special cases that don't conform to the above pattern. # Each requires a standard at24 model as fallback. - items: - const: rohm,br24t01 - const: atmel,24c01 - items: - const: nxp,se97b - const: atmel,24c02 - items: - const: renesas,r1ex24002 - const: atmel,24c02 - items: - const: renesas,r1ex24016 - const: atmel,24c16 - items: - const: giantec,gt24c32a - const: atmel,24c32 - items: - const: renesas,r1ex24128 - const: atmel,24c128 reg: maxItems: 1 pagesize: allOf: - $ref: /schemas/types.yaml#/definitions/uint32 description: The length of the pagesize for writing. Please consult the manual of your device, that value varies a lot. A wrong value may result in data loss! If not specified, a safety value of '1' is used which will be very slow. enum: [ 1, 8, 16, 32, 64, 128, 258 ] default: 1 read-only: $ref: /schemas/types.yaml#definitions/flag description: Disables writes to the eeprom. size: $ref: /schemas/types.yaml#/definitions/uint32 description: Total eeprom size in bytes. no-read-rollover: $ref: /schemas/types.yaml#definitions/flag description: Indicates that the multi-address eeprom does not automatically roll over reads to the next slave address. Please consult the manual of your device. wp-gpios: true address-width: allOf: - $ref: /schemas/types.yaml#/definitions/uint32 description: Number of address bits. default: 8 enum: [ 8, 16 ] num-addresses: allOf: - $ref: /schemas/types.yaml#/definitions/uint32 description: Total number of i2c slave addresses this device takes. default: 1 minimum: 1 maximum: 8 vcc-supply: description: phandle of the regulator that provides the supply voltage. required: - compatible - reg examples: - | i2c { #address-cells = <1>; #size-cells = <0>; eeprom@52 { compatible = "microchip,24c32", "atmel,24c32"; reg = <0x52>; pagesize = <32>; wp-gpios = <&gpio1 3 0>; num-addresses = <8>; }; }; ...