| # 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 <bgolaszewski@baylibre.com> |
| |
| allOf: |
| - $ref: /schemas/nvmem/nvmem.yaml |
| - $ref: /schemas/nvmem/nvmem-deprecated-cells.yaml |
| |
| select: |
| properties: |
| compatible: |
| contains: |
| anyOf: |
| - pattern: "^atmel,(24(c|cs|mac)[0-9]+|spd)$" |
| - enum: ["microchip,24aa025e48", "microchip,24aa025e64"] |
| 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,<model>' from Atmel. |
| compatible: |
| oneOf: |
| - allOf: |
| - minItems: 1 |
| items: |
| - pattern: "^(atmel|catalyst|microchip|nxp|ramtron|renesas|rohm|st),(24(c|cs|lc|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: c1025$ |
| - items: |
| pattern: cs1025$ |
| - 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: |
| - enum: |
| - rohm,br24g01 |
| - rohm,br24t01 |
| - const: atmel,24c01 |
| - items: |
| - enum: |
| - nxp,se97b |
| - renesas,r1ex24002 |
| - const: atmel,24c02 |
| - items: |
| - enum: |
| - giantec,gt24c04a |
| - onnn,cat24c04 |
| - onnn,cat24c05 |
| - rohm,br24g04 |
| - const: atmel,24c04 |
| - items: |
| - enum: |
| - belling,bl24c16a |
| - renesas,r1ex24016 |
| - const: atmel,24c16 |
| - items: |
| - const: giantec,gt24c32a |
| - const: atmel,24c32 |
| - items: |
| - const: onnn,n24s64b |
| - const: atmel,24c64 |
| - items: |
| - enum: |
| - renesas,r1ex24128 |
| - samsung,s524ad0xd1 |
| - const: atmel,24c128 |
| - items: |
| - const: microchip,24aa025e48 |
| - items: |
| - const: microchip,24aa025e64 |
| - pattern: '^atmel,24c(32|64)d-wl$' # Actual vendor is st |
| |
| label: |
| description: Descriptive name of the EEPROM. |
| |
| reg: |
| maxItems: 1 |
| |
| pagesize: |
| 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. |
| $ref: /schemas/types.yaml#/definitions/uint32 |
| enum: [1, 8, 16, 32, 64, 128, 256] |
| 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: |
| description: |
| Number of address bits. |
| $ref: /schemas/types.yaml#/definitions/uint32 |
| default: 8 |
| enum: [ 8, 16 ] |
| |
| num-addresses: |
| description: |
| Total number of i2c slave addresses this device takes. |
| $ref: /schemas/types.yaml#/definitions/uint32 |
| default: 1 |
| minimum: 1 |
| maximum: 8 |
| |
| vcc-supply: |
| description: |
| phandle of the regulator that provides the supply voltage. |
| |
| required: |
| - compatible |
| - reg |
| |
| unevaluatedProperties: false |
| |
| 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>; |
| }; |
| }; |
| ... |