Commit f6962991 authored by Krzysztof Kozlowski's avatar Krzysztof Kozlowski Committed by Rob Herring
Browse files

dt-bindings: sram: Convert SRAM bindings to json-schema



Convert generic mmio-sram bindings to DT schema format using
json-schema.  Require the address/size cells to be 1, not equal to root
node.  This also fixes the check for clocks property to be in main root
node instead of children.

Signed-off-by: default avatarKrzysztof Kozlowski <krzk@kernel.org>
Signed-off-by: default avatarRob Herring <robh@kernel.org>
parent b4e8c0b1
Loading
Loading
Loading
Loading
+0 −80
Original line number Diff line number Diff line
Generic on-chip SRAM

Simple IO memory regions to be managed by the genalloc API.

Required properties:

- compatible : mmio-sram or atmel,sama5d2-securam

- reg : SRAM iomem address range

Reserving sram areas:
---------------------

Each child of the sram node specifies a region of reserved memory. Each
child node should use a 'reg' property to specify a specific range of
reserved memory.

Following the generic-names recommended practice, node names should
reflect the purpose of the node. Unit address (@<address>) should be
appended to the name.

Required properties in the sram node:

- #address-cells, #size-cells : should use the same values as the root node
- ranges : standard definition, should translate from local addresses
           within the sram to bus addresses

Optional properties in the sram node:

- no-memory-wc : the flag indicating, that SRAM memory region has not to
                 be remapped as write combining. WC is used by default.

Required properties in the area nodes:

- reg : iomem address range, relative to the SRAM range

Optional properties in the area nodes:

- compatible : standard definition, should contain a vendor specific string
               in the form <vendor>,[<device>-]<usage>
- pool : indicates that the particular reserved SRAM area is addressable
         and in use by another device or devices
- export : indicates that the reserved SRAM area may be accessed outside
           of the kernel, e.g. by bootloader or userspace
- protect-exec : Same as 'pool' above but with the additional
		 constraint that code wil be run from the region and
		 that the memory is maintained as read-only, executable
		 during code execution. NOTE: This region must be page
		 aligned on start and end in order to properly allow
		 manipulation of the page attributes.
- label : the name for the reserved partition, if omitted, the label
          is taken from the node name excluding the unit address.
- clocks : a list of phandle and clock specifier pair that controls the
	   single SRAM clock.

Example:

sram: sram@5c000000 {
	compatible = "mmio-sram";
	reg = <0x5c000000 0x40000>; /* 256 KiB SRAM at address 0x5c000000 */

	#address-cells = <1>;
	#size-cells = <1>;
	ranges = <0 0x5c000000 0x40000>;

	smp-sram@100 {
		compatible = "socvendor,smp-sram";
		reg = <0x100 0x50>;
	};

	device-sram@1000 {
		reg = <0x1000 0x1000>;
		pool;
	};

	exported@20000 {
		reg = <0x20000 0x20000>;
		export;
	};
};
+136 −0
Original line number Diff line number Diff line
# SPDX-License-Identifier: GPL-2.0
%YAML 1.2
---
$id: http://devicetree.org/schemas/sram/sram.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Generic on-chip SRAM

maintainers:
  - Rob Herring <robh@kernel.org>

description: |+
  Simple IO memory regions to be managed by the genalloc API.

  Each child of the sram node specifies a region of reserved memory. Each
  child node should use a 'reg' property to specify a specific range of
  reserved memory.

  Following the generic-names recommended practice, node names should
  reflect the purpose of the node. Unit address (@<address>) should be
  appended to the name.

properties:
  $nodename:
    pattern: "^sram(@.*)?"

  compatible:
    contains:
      enum:
        - mmio-sram
        - atmel,sama5d2-securam

  reg:
    maxItems: 1

  clocks:
    description:
      A list of phandle and clock specifier pair that controls the single
      SRAM clock.

  "#address-cells":
    const: 1

  "#size-cells":
    const: 1

  ranges:
    description:
      Should translate from local addresses within the sram to bus addresses.

  no-memory-wc:
    description:
      The flag indicating, that SRAM memory region has not to be remapped
      as write combining. WC is used by default.
    type: boolean

patternProperties:
  "^([a-z]*-)?sram@[a-f0-9]+$":
    type: object
    description:
      Each child of the sram node specifies a region of reserved memory.
    properties:
      compatible:
        description:
          Should contain a vendor specific string in the form
          <vendor>,[<device>-]<usage>

      reg:
        description:
          IO mem address range, relative to the SRAM range.
        maxItems: 1

      pool:
        description:
          Indicates that the particular reserved SRAM area is addressable
          and in use by another device or devices.
        type: boolean

      export:
        description:
          Indicates that the reserved SRAM area may be accessed outside
          of the kernel, e.g. by bootloader or userspace.
        type: boolean

      protect-exec:
        description: |
          Same as 'pool' above but with the additional constraint that code
          will be run from the region and that the memory is maintained as
          read-only, executable during code execution. NOTE: This region must
          be page aligned on start and end in order to properly allow
          manipulation of the page attributes.
        type: boolean

      label:
        description:
          The name for the reserved partition, if omitted, the label is taken
          from the node name excluding the unit address.

    required:
      - reg

    additionalProperties: false

required:
  - compatible
  - reg
  - "#address-cells"
  - "#size-cells"
  - ranges

additionalProperties: false

examples:
  - |
    sram@5c000000 {
        compatible = "mmio-sram";
        reg = <0x5c000000 0x40000>; /* 256 KiB SRAM at address 0x5c000000 */

        #address-cells = <1>;
        #size-cells = <1>;
        ranges = <0 0x5c000000 0x40000>;

        smp-sram@100 {
            reg = <0x100 0x50>;
        };

        device-sram@1000 {
            reg = <0x1000 0x1000>;
            pool;
        };

        exported-sram@20000 {
            reg = <0x20000 0x20000>;
            export;
        };
    };