Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c61f0256 authored by Maxime Ripard's avatar Maxime Ripard Committed by Rob Herring
Browse files

dt-bindings: nvmem: Add YAML schemas for the generic NVMEM bindings



The nvmem providers and consumers have a bunch of generic properties that
are needed in a device tree. Add a YAML schemas for those.

Reviewed-by: default avatarRob Herring <robh@kernel.org>
Signed-off-by: default avatarMaxime Ripard <maxime.ripard@bootlin.com>
[Srini: Changed licence to (GPL-2.0 OR BSD-2-Clause)]
Signed-off-by: default avatarSrinivas Kandagatla <srinivas.kandagatla@linaro.org>
Signed-off-by: default avatarRob Herring <robh@kernel.org>
parent f1765a18
Loading
Loading
Loading
Loading
+45 −0
Original line number Diff line number Diff line
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/nvmem/nvmem-consumer.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: NVMEM (Non Volatile Memory) Consumer Device Tree Bindings

maintainers:
  - Srinivas Kandagatla <srinivas.kandagatla@linaro.org>

select: true

properties:
  nvmem:
    $ref: /schemas/types.yaml#/definitions/phandle-array
    description:
      List of phandle to the nvmem providers.

  nvmem-cells:
    $ref: /schemas/types.yaml#/definitions/phandle-array
    description:
      List of phandle to the nvmem data cells.

  nvmem-names:
    $ref: /schemas/types.yaml#/definitions/string-array
    description:
      Names for the each nvmem provider.

  nvmem-cell-names:
    $ref: /schemas/types.yaml#/definitions/string-array
    description:
      Names for each nvmem-cells specified.

dependencies:
  nvmem-names: [ nvmem ]
  nvmem-cell-names: [ nvmem-cells ]

examples:
  - |
    tsens {
        /* ... */
        nvmem-cells = <&tsens_calibration>;
        nvmem-cell-names = "calibration";
    };
+1 −80
Original line number Diff line number Diff line
= NVMEM(Non Volatile Memory) Data Device Tree Bindings =

This binding is intended to represent the location of hardware
configuration data stored in NVMEMs like eeprom, efuses and so on.

On a significant proportion of boards, the manufacturer has stored
some data on NVMEM, for the OS to be able to retrieve these information
and act upon it. Obviously, the OS has to know about where to retrieve
these data from, and where they are stored on the storage device.

This document is here to document this.

= Data providers =
Contains bindings specific to provider drivers and data cells as children
of this node.

Optional properties:
 read-only: Mark the provider as read only.

= Data cells =
These are the child nodes of the provider which contain data cell
information like offset and size in nvmem provider.

Required properties:
reg:	specifies the offset in byte within the storage device.

Optional properties:

bits:	Is pair of bit location and number of bits, which specifies offset
	in bit and number of bits within the address range specified by reg property.
	Offset takes values from 0-7.

For example:

	/* Provider */
	qfprom: qfprom@700000 {
		...

		/* Data cells */
		tsens_calibration: calib@404 {
			reg = <0x404 0x10>;
		};

		tsens_calibration_bckp: calib_bckp@504 {
			reg = <0x504 0x11>;
			bits = <6 128>
		};

		pvs_version: pvs-version@6 {
			reg = <0x6 0x2>
			bits = <7 2>
		};

		speed_bin: speed-bin@c{
			reg = <0xc 0x1>;
			bits = <2 3>;

		};
		...
	};

= Data consumers =
Are device nodes which consume nvmem data cells/providers.

Required-properties:
nvmem-cells: list of phandle to the nvmem data cells.
nvmem-cell-names: names for the each nvmem-cells specified. Required if
	nvmem-cells is used.

Optional-properties:
nvmem	: list of phandles to nvmem providers.
nvmem-names: names for the each nvmem provider. required if nvmem is used.

For example:

	tsens {
		...
		nvmem-cells = <&tsens_calibration>;
		nvmem-cell-names = "calibration";
	};
This file has been moved to nvmem.yaml and nvmem-consumer.yaml.
+93 −0
Original line number Diff line number Diff line
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/nvmem/nvmem.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: NVMEM (Non Volatile Memory) Device Tree Bindings

maintainers:
  - Srinivas Kandagatla <srinivas.kandagatla@linaro.org>

description: |
  This binding is intended to represent the location of hardware
  configuration data stored in NVMEMs like eeprom, efuses and so on.

  On a significant proportion of boards, the manufacturer has stored
  some data on NVMEM, for the OS to be able to retrieve these
  information and act upon it. Obviously, the OS has to know about
  where to retrieve these data from, and where they are stored on the
  storage device.

properties:
  $nodename:
    pattern: "^(eeprom|efuse|nvram)(@.*|-[0-9a-f])*$"

  "#address-cells":
    const: 1

  "#size-cells":
    const: 1

  read-only:
    $ref: /schemas/types.yaml#/definitions/flag
    description:
      Mark the provider as read only.

patternProperties:
  "^.*@[0-9a-f]+$":
    type: object

    properties:
      reg:
        maxItems: 1
        description:
          Offset and size in bytes within the storage device.

      bits:
        maxItems: 1
        items:
          items:
            - minimum: 0
              maximum: 7
              description:
                Offset in bit within the address range specified by reg.
            - minimum: 1
              description:
                Size in bit within the address range specified by reg.

    required:
      - reg

    additionalProperties: false

examples:
  - |
      qfprom: eeprom@700000 {
          #address-cells = <1>;
          #size-cells = <1>;

          /* ... */

          /* Data cells */
          tsens_calibration: calib@404 {
              reg = <0x404 0x10>;
          };

          tsens_calibration_bckp: calib_bckp@504 {
              reg = <0x504 0x11>;
              bits = <6 128>;
          };

          pvs_version: pvs-version@6 {
              reg = <0x6 0x2>;
              bits = <7 2>;
          };

          speed_bin: speed-bin@c{
              reg = <0xc 0x1>;
              bits = <2 3>;
          };
      };

...