# 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
        - rockchip,rk3288-pmu-sram

  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(-section)?@[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>
        contains:
          enum:
            - allwinner,sun4i-a10-sram-a3-a4
            - allwinner,sun4i-a10-sram-c1
            - allwinner,sun4i-a10-sram-d
            - allwinner,sun9i-a80-smp-sram
            - allwinner,sun50i-a64-sram-c
            - amlogic,meson8-smp-sram
            - amlogic,meson8b-smp-sram
            - amlogic,meson-gxbb-scp-shmem
            - amlogic,meson-axg-scp-shmem
            - renesas,smp-sram
            - rockchip,rk3066-smp-sram
            - samsung,exynos4210-sysram
            - samsung,exynos4210-sysram-ns
            - socionext,milbeaut-smp-sram

      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

if:
  properties:
    compatible:
      contains:
        const: rockchip,rk3288-pmu-sram

else:
  required:
    - "#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;
        };
    };

  - |
    // Samsung SMP-capable Exynos SoCs use part of the SYSRAM for the bringup
    // of the secondary cores. Once the core gets powered up it executes the
    // code that is residing at some specific location of the SYSRAM.
    //
    // Therefore reserved section sub-nodes have to be added to the mmio-sram
    // declaration. These nodes are of two types depending upon secure or
    // non-secure execution environment.
    sram@2020000 {
        compatible = "mmio-sram";
        reg = <0x02020000 0x54000>;
        #address-cells = <1>;
        #size-cells = <1>;
        ranges = <0 0x02020000 0x54000>;

        smp-sram@0 {
            compatible = "samsung,exynos4210-sysram";
            reg = <0x0 0x1000>;
        };

        smp-sram@53000 {
            compatible = "samsung,exynos4210-sysram-ns";
            reg = <0x53000 0x1000>;
        };
    };

  - |
    // Amlogic's SMP-capable SoCs use part of the sram for the bringup of the cores.
    // Once the core gets powered up it executes the code that is residing at a
    // specific location.
    //
    // Therefore a reserved section sub-node has to be added to the mmio-sram
    // declaration.
    sram@d9000000 {
        compatible = "mmio-sram";
        reg = <0xd9000000 0x20000>;
        #address-cells = <1>;
        #size-cells = <1>;
        ranges = <0 0xd9000000 0x20000>;

        smp-sram@1ff80 {
            compatible = "amlogic,meson8b-smp-sram";
            reg = <0x1ff80 0x8>;
        };
    };

  - |
    sram@e63c0000 {
        compatible = "mmio-sram";
        reg = <0xe63c0000 0x1000>;
        #address-cells = <1>;
        #size-cells = <1>;
        ranges = <0 0xe63c0000 0x1000>;

        smp-sram@0 {
            compatible = "renesas,smp-sram";
            reg = <0 0x10>;
        };
    };

  - |
    sram@10080000 {
        compatible = "mmio-sram";
        reg = <0x10080000 0x10000>;
        #address-cells = <1>;
        #size-cells = <1>;
        ranges;

        smp-sram@10080000 {
            compatible = "rockchip,rk3066-smp-sram";
            reg = <0x10080000 0x50>;
        };
    };

  - |
    // Rockchip's rk3288 SoC uses the sram of pmu to store the function of
    // resume from maskrom(the 1st level loader). This is a common use of
    // the "pmu-sram" because it keeps power even in low power states
    // in the system.
    sram@ff720000 {
      compatible = "rockchip,rk3288-pmu-sram", "mmio-sram";
      reg = <0xff720000 0x1000>;
    };

  - |
    // Allwinner's A80 SoC uses part of the secure sram for hotplugging of the
    // primary core (cpu0). Once the core gets powered up it checks if a magic
    // value is set at a specific location. If it is then the BROM will jump
    // to the software entry address, instead of executing a standard boot.
    //
    // Also there are no "secure-only" properties. The implementation should
    // check if this SRAM is usable first.
    sram@20000 {
        // 256 KiB secure SRAM at 0x20000
        compatible = "mmio-sram";
        reg = <0x00020000 0x40000>;
        #address-cells = <1>;
        #size-cells = <1>;
        ranges = <0 0x00020000 0x40000>;

        smp-sram@1000 {
            // This is checked by BROM to determine if
            // cpu0 should jump to SMP entry vector
            compatible = "allwinner,sun9i-a80-smp-sram";
            reg = <0x1000 0x8>;
        };
    };

  - |
    sram@0 {
        compatible = "mmio-sram";
        reg = <0x0 0x10000>;
        #address-cells = <1>;
        #size-cells = <1>;
        ranges = <0 0x0 0x10000>;

        smp-sram@f100 {
            compatible = "socionext,milbeaut-smp-sram";
            reg = <0xf100 0x20>;
        };
    };
