# SPDX-License-Identifier: GPL-2.0+
%YAML 1.2
---
$id: http://devicetree.org/schemas/sram/allwinner,sun4i-a10-system-control.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Allwinner A10 System Control

maintainers:
  - Chen-Yu Tsai <wens@csie.org>
  - Maxime Ripard <mripard@kernel.org>

description:
  The SRAM controller found on most Allwinner devices is represented
  by a regular node for the SRAM controller itself, with sub-nodes
  representing the SRAM handled by the SRAM controller.

properties:
  "#address-cells":
    const: 1

  "#size-cells":
    const: 1

  compatible:
    oneOf:
      - enum:
          - allwinner,sun4i-a10-sram-controller
          - allwinner,sun50i-a64-sram-controller
        deprecated: true
      - enum:
          - allwinner,sun4i-a10-system-control
          - allwinner,sun5i-a13-system-control
          - allwinner,sun8i-a23-system-control
          - allwinner,sun8i-h3-system-control
          - allwinner,sun20i-d1-system-control
          - allwinner,sun50i-a64-system-control
          - allwinner,sun50i-h5-system-control
          - allwinner,sun50i-h616-system-control
      - items:
          - enum:
              - allwinner,suniv-f1c100s-system-control
              - allwinner,sun7i-a20-system-control
              - allwinner,sun8i-r40-system-control
          - const: allwinner,sun4i-a10-system-control
      - items:
          - const: allwinner,sun8i-v3s-system-control
          - const: allwinner,sun8i-h3-system-control
      - items:
          - const: allwinner,sun50i-h6-system-control
          - const: allwinner,sun50i-a64-system-control

  reg:
    maxItems: 1

  ranges: true

patternProperties:
  "^sram@[a-z0-9]+":
    $ref: /schemas/sram/sram.yaml#
    unevaluatedProperties: false

    patternProperties:
      "^sram-section?@[a-f0-9]+$":
        type: object
        additionalProperties: false

        properties:
          reg: true

          compatible:
            oneOf:
              - const: allwinner,sun4i-a10-sram-a3-a4
              - const: allwinner,sun4i-a10-sram-c1
              - const: allwinner,sun4i-a10-sram-d
              - const: allwinner,sun50i-a64-sram-c
              - items:
                  - enum:
                      - allwinner,sun5i-a13-sram-a3-a4
                      - allwinner,sun7i-a20-sram-a3-a4
                  - const: allwinner,sun4i-a10-sram-a3-a4
              - items:
                  - enum:
                      - allwinner,sun5i-a13-sram-c1
                      - allwinner,sun7i-a20-sram-c1
                      - allwinner,sun8i-a23-sram-c1
                      - allwinner,sun8i-h3-sram-c1
                      - allwinner,sun8i-r40-sram-c1
                      - allwinner,sun50i-a64-sram-c1
                      - allwinner,sun50i-h5-sram-c1
                      - allwinner,sun50i-h6-sram-c1
                  - const: allwinner,sun4i-a10-sram-c1
              - items:
                  - enum:
                      - allwinner,suniv-f1c100s-sram-d
                      - allwinner,sun5i-a13-sram-d
                      - allwinner,sun7i-a20-sram-d
                  - const: allwinner,sun4i-a10-sram-d
              - items:
                  - const: allwinner,sun50i-h6-sram-c
                  - const: allwinner,sun50i-a64-sram-c

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

additionalProperties: false

examples:
  - |
    system-control@1c00000 {
      compatible = "allwinner,sun4i-a10-system-control";
      reg = <0x01c00000 0x30>;
      #address-cells = <1>;
      #size-cells = <1>;
      ranges;

      sram_a: sram@0 {
        compatible = "mmio-sram";
        reg = <0x00000000 0xc000>;
        #address-cells = <1>;
        #size-cells = <1>;
        ranges = <0 0x00000000 0xc000>;

        emac_sram: sram-section@8000 {
          compatible = "allwinner,sun4i-a10-sram-a3-a4";
          reg = <0x8000 0x4000>;
        };
      };
    };