162306a36Sopenharmony_ci# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
262306a36Sopenharmony_ci%YAML 1.2
362306a36Sopenharmony_ci---
462306a36Sopenharmony_ci$id: http://devicetree.org/schemas/nvmem/nvmem.yaml#
562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
662306a36Sopenharmony_ci
762306a36Sopenharmony_cititle: NVMEM (Non Volatile Memory)
862306a36Sopenharmony_ci
962306a36Sopenharmony_cimaintainers:
1062306a36Sopenharmony_ci  - Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_cidescription: |
1362306a36Sopenharmony_ci  This binding is intended to represent the location of hardware
1462306a36Sopenharmony_ci  configuration data stored in NVMEMs like eeprom, efuses and so on.
1562306a36Sopenharmony_ci
1662306a36Sopenharmony_ci  On a significant proportion of boards, the manufacturer has stored
1762306a36Sopenharmony_ci  some data on NVMEM, for the OS to be able to retrieve these
1862306a36Sopenharmony_ci  information and act upon it. Obviously, the OS has to know about
1962306a36Sopenharmony_ci  where to retrieve these data from, and where they are stored on the
2062306a36Sopenharmony_ci  storage device.
2162306a36Sopenharmony_ci
2262306a36Sopenharmony_ciproperties:
2362306a36Sopenharmony_ci  "#address-cells":
2462306a36Sopenharmony_ci    const: 1
2562306a36Sopenharmony_ci
2662306a36Sopenharmony_ci  "#size-cells":
2762306a36Sopenharmony_ci    const: 1
2862306a36Sopenharmony_ci
2962306a36Sopenharmony_ci  read-only:
3062306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/flag
3162306a36Sopenharmony_ci    description:
3262306a36Sopenharmony_ci      Mark the provider as read only.
3362306a36Sopenharmony_ci
3462306a36Sopenharmony_ci  wp-gpios:
3562306a36Sopenharmony_ci    description:
3662306a36Sopenharmony_ci      GPIO to which the write-protect pin of the chip is connected.
3762306a36Sopenharmony_ci      The write-protect GPIO is asserted, when it's driven high
3862306a36Sopenharmony_ci      (logical '1') to block the write operation. It's deasserted,
3962306a36Sopenharmony_ci      when it's driven low (logical '0') to allow writing.
4062306a36Sopenharmony_ci    maxItems: 1
4162306a36Sopenharmony_ci
4262306a36Sopenharmony_ci  nvmem-layout:
4362306a36Sopenharmony_ci    $ref: /schemas/nvmem/layouts/nvmem-layout.yaml
4462306a36Sopenharmony_ci    description:
4562306a36Sopenharmony_ci      Alternative to the statically defined nvmem cells, this
4662306a36Sopenharmony_ci      container may reference more advanced (dynamic) layout
4762306a36Sopenharmony_ci      parsers.
4862306a36Sopenharmony_ci
4962306a36Sopenharmony_cipatternProperties:
5062306a36Sopenharmony_ci  "@[0-9a-f]+(,[0-7])?$":
5162306a36Sopenharmony_ci    type: object
5262306a36Sopenharmony_ci    allOf:
5362306a36Sopenharmony_ci      - $ref: layouts/fixed-cell.yaml
5462306a36Sopenharmony_ci      - properties:
5562306a36Sopenharmony_ci          compatible: false
5662306a36Sopenharmony_ci    deprecated: true
5762306a36Sopenharmony_ci
5862306a36Sopenharmony_ciadditionalProperties: true
5962306a36Sopenharmony_ci
6062306a36Sopenharmony_ciexamples:
6162306a36Sopenharmony_ci  - |
6262306a36Sopenharmony_ci      #include <dt-bindings/gpio/gpio.h>
6362306a36Sopenharmony_ci
6462306a36Sopenharmony_ci      qfprom: eeprom@700000 {
6562306a36Sopenharmony_ci          compatible = "qcom,msm8974-qfprom", "qcom,qfprom";
6662306a36Sopenharmony_ci          #address-cells = <1>;
6762306a36Sopenharmony_ci          #size-cells = <1>;
6862306a36Sopenharmony_ci          reg = <0x00700000 0x100000>;
6962306a36Sopenharmony_ci
7062306a36Sopenharmony_ci          wp-gpios = <&gpio1 3 GPIO_ACTIVE_HIGH>;
7162306a36Sopenharmony_ci
7262306a36Sopenharmony_ci          /* ... */
7362306a36Sopenharmony_ci
7462306a36Sopenharmony_ci          nvmem-layout {
7562306a36Sopenharmony_ci              compatible = "fixed-layout";
7662306a36Sopenharmony_ci              #address-cells = <1>;
7762306a36Sopenharmony_ci              #size-cells = <1>;
7862306a36Sopenharmony_ci
7962306a36Sopenharmony_ci              /* Data cells */
8062306a36Sopenharmony_ci              tsens_calibration: calib@404 {
8162306a36Sopenharmony_ci                  reg = <0x404 0x10>;
8262306a36Sopenharmony_ci              };
8362306a36Sopenharmony_ci
8462306a36Sopenharmony_ci              tsens_calibration_bckp: calib_bckp@504 {
8562306a36Sopenharmony_ci                  reg = <0x504 0x11>;
8662306a36Sopenharmony_ci                  bits = <6 128>;
8762306a36Sopenharmony_ci              };
8862306a36Sopenharmony_ci
8962306a36Sopenharmony_ci              pvs_version: pvs-version@6 {
9062306a36Sopenharmony_ci                  reg = <0x6 0x2>;
9162306a36Sopenharmony_ci                  bits = <7 2>;
9262306a36Sopenharmony_ci              };
9362306a36Sopenharmony_ci
9462306a36Sopenharmony_ci              speed_bin: speed-bin@c{
9562306a36Sopenharmony_ci                  reg = <0xc 0x1>;
9662306a36Sopenharmony_ci                  bits = <2 3>;
9762306a36Sopenharmony_ci              };
9862306a36Sopenharmony_ci          };
9962306a36Sopenharmony_ci      };
10062306a36Sopenharmony_ci
10162306a36Sopenharmony_ci...
102