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