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

dt-bindings: sram: Convert Allwinner A10 system controller to a schema



The older Allwinner SoCs have a system controller that is supported in
Linux, with a matching Device Tree binding.

Now that we have the DT validation in place, let's convert the device tree
bindings for that controller over to a YAML schemas.

Signed-off-by: default avatarMaxime Ripard <maxime@cerno.tech>
[robh: fixup missing 'properties']
Signed-off-by: default avatarRob Herring <robh@kernel.org>
parent 3538129c
Loading
Loading
Loading
Loading
+140 −0
Original line number Diff line number Diff line
# 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 Device Tree Bindings

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:
      - const: allwinner,sun4i-a10-sram-controller
        deprecated: true
      - const: allwinner,sun4i-a10-system-control
      - const: allwinner,sun5i-a13-system-control
      - items:
        - const: allwinner,sun7i-a20-system-control
        - const: allwinner,sun4i-a10-system-control
      - const: allwinner,sun8i-a23-system-control
      - const: allwinner,sun8i-h3-system-control
      - const: allwinner,sun50i-a64-sram-controller
        deprecated: true
      - const: allwinner,sun50i-a64-system-control
      - const: allwinner,sun50i-h5-system-control
      - items:
        - const: allwinner,sun50i-h6-system-control
        - const: allwinner,sun50i-a64-system-control
      - items:
        - const: allwinner,suniv-f1c100s-system-control
        - const: allwinner,sun4i-a10-system-control

  reg:
    maxItems: 1

  ranges: true

patternProperties:
  "^sram@[a-z0-9]+":
    type: object

    properties:
      compatible:
        const: mmio-sram

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

        properties:
          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:
                - const: allwinner,sun5i-a13-sram-a3-a4
                - const: allwinner,sun4i-a10-sram-a3-a4
              - items:
                - const: allwinner,sun7i-a20-sram-a3-a4
                - const: allwinner,sun4i-a10-sram-a3-a4
              - items:
                - const: allwinner,sun5i-a13-sram-c1
                - const: allwinner,sun4i-a10-sram-c1
              - items:
                - const: allwinner,sun7i-a20-sram-c1
                - const: allwinner,sun4i-a10-sram-c1
              - items:
                - const: allwinner,sun8i-a23-sram-c1
                - const: allwinner,sun4i-a10-sram-c1
              - items:
                - const: allwinner,sun8i-h3-sram-c1
                - const: allwinner,sun4i-a10-sram-c1
              - items:
                - const: allwinner,sun50i-a64-sram-c1
                - const: allwinner,sun4i-a10-sram-c1
              - items:
                - const: allwinner,sun50i-h5-sram-c1
                - const: allwinner,sun4i-a10-sram-c1
              - items:
                - const: allwinner,sun50i-h6-sram-c1
                - const: allwinner,sun4i-a10-sram-c1
              - items:
                - const: allwinner,sun5i-a13-sram-d
                - const: allwinner,sun4i-a10-sram-d
              - items:
                - const: allwinner,sun7i-a20-sram-d
                - const: allwinner,sun4i-a10-sram-d
              - items:
                - const: allwinner,suniv-f1c100s-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@00000000 {
        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>;
        };
      };
    };
+0 −113
Original line number Diff line number Diff line
Allwinnner SoC SRAM controllers
-----------------------------------------------------

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

Controller Node
---------------

Required properties:
- compatible : should be:
    - "allwinner,sun4i-a10-sram-controller" (deprecated)
    - "allwinner,sun4i-a10-system-control"
    - "allwinner,sun5i-a13-system-control"
    - "allwinner,sun7i-a20-system-control", "allwinner,sun4i-a10-system-control"
    - "allwinner,sun8i-a23-system-control"
    - "allwinner,sun8i-h3-system-control"
    - "allwinner,sun50i-a64-sram-controller" (deprecated)
    - "allwinner,sun50i-a64-system-control"
    - "allwinner,sun50i-h5-system-control"
    - "allwinner,sun50i-h6-system-control", "allwinner,sun50i-a64-system-control"
    - "allwinner,suniv-f1c100s-system-control", "allwinner,sun4i-a10-system-control"
- reg : sram controller register offset + length

SRAM nodes
----------

Each SRAM is described using the mmio-sram bindings documented in
Documentation/devicetree/bindings/sram/sram.txt

Each SRAM will have SRAM sections that are going to be handled by the
SRAM controller as subnodes. These sections are represented following
once again the representation described in the mmio-sram binding.

The valid sections compatible for A10 are:
    - allwinner,sun4i-a10-sram-a3-a4
    - allwinner,sun4i-a10-sram-c1
    - allwinner,sun4i-a10-sram-d

The valid sections compatible for A13 are:
    - allwinner,sun5i-a13-sram-a3-a4, allwinner,sun4i-a10-sram-a3-a4
    - allwinner,sun5i-a13-sram-c1, allwinner,sun4i-a10-sram-c1
    - allwinner,sun5i-a13-sram-d, allwinner,sun4i-a10-sram-d

The valid sections compatible for A20 are:
    - allwinner,sun7i-a20-sram-a3-a4, allwinner,sun4i-a10-sram-a3-a4
    - allwinner,sun7i-a20-sram-c1, allwinner,sun4i-a10-sram-c1
    - allwinner,sun7i-a20-sram-d, allwinner,sun4i-a10-sram-d

The valid sections compatible for A23/A33 are:
    - allwinner,sun8i-a23-sram-c1, allwinner,sun4i-a10-sram-c1

The valid sections compatible for H3 are:
    - allwinner,sun8i-h3-sram-c1, allwinner,sun4i-a10-sram-c1

The valid sections compatible for A64 are:
    - allwinner,sun50i-a64-sram-c
    - allwinner,sun50i-a64-sram-c1, allwinner,sun4i-a10-sram-c1

The valid sections compatible for H5 are:
    - allwinner,sun50i-h5-sram-c1, allwinner,sun4i-a10-sram-c1

The valid sections compatible for H6 are:
    - allwinner,sun50i-h6-sram-c, allwinner,sun50i-a64-sram-c
    - allwinner,sun50i-h6-sram-c1, allwinner,sun4i-a10-sram-c1

The valid sections compatible for F1C100s are:
    - allwinner,suniv-f1c100s-sram-d, allwinner,sun4i-a10-sram-d

Devices using SRAM sections
---------------------------

Some devices need to request to the SRAM controller to map an SRAM for
their exclusive use.

The relationship between such a device and an SRAM section is
expressed through the allwinner,sram property, that will take a
phandle and an argument.

This valid values for this argument are:
  - 0: CPU
  - 1: Device

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

	sram_a: sram@00000000 {
		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>;
		};
	};
};

emac: ethernet@1c0b000 {
	compatible = "allwinner,sun4i-a10-emac";
	...

	allwinner,sram = <&emac_sram 1>;
};