Commit 4d92239b authored by Geert Uytterhoeven's avatar Geert Uytterhoeven Committed by Rob Herring
Browse files

dt-bindings: power: sysc-rmobile: Convert to json-schema



Convert the Renesas R-Mobile System Controller (SYSC) Device Tree
binding documentation to json-schema.

Document missing properties.
Drop consumer example, as it does not belong here.

Signed-off-by: default avatarGeert Uytterhoeven <geert+renesas@glider.be>
Link: https://lore.kernel.org/r/22150cfd2ef9d57e84eb53a5dfed8379627a9423.1620119210.git.geert+renesas@glider.be


Signed-off-by: default avatarRob Herring <robh@kernel.org>
parent 4fa9ee2e
Loading
Loading
Loading
Loading
+0 −100
Original line number Diff line number Diff line
DT bindings for the Renesas R-Mobile System Controller

== System Controller Node ==

The R-Mobile System Controller provides the following functions:
  - Boot mode management,
  - Reset generation,
  - Power management.

Required properties:
- compatible: Should be "renesas,sysc-<soctype>", "renesas,sysc-rmobile" as
	      fallback.
	      Examples with soctypes are:
		- "renesas,sysc-r8a73a4" (R-Mobile APE6)
		- "renesas,sysc-r8a7740" (R-Mobile A1)
		- "renesas,sysc-sh73a0" (SH-Mobile AG5)
- reg: Two address start and address range blocks for the device:
         - The first block refers to the normally accessible registers,
         - the second block refers to the registers protected by the HPB
	   semaphore.

Optional nodes:
- pm-domains: This node contains a hierarchy of PM domain nodes, which should
  match the Power Area Hierarchy in the Power Domain Specifications section of
  the device's datasheet.


== PM Domain Nodes ==

Each of the PM domain nodes represents a PM domain, as documented by the
generic PM domain bindings in
Documentation/devicetree/bindings/power/power-domain.yaml.

The nodes should be named by the real power area names, and thus their names
should be unique.

Required properties:
  - #power-domain-cells: Must be 0.

Optional properties:
- reg: If the PM domain is not always-on, this property must contain the bit
       index number for the corresponding power area in the various Power
       Control and Status Registers. The parent's node must contain the
       following two properties:
	 - #address-cells: Must be 1,
	 - #size-cells: Must be 0.
       If the PM domain is always-on, this property must be omitted.


Example:

This shows a subset of the r8a7740 PM domain hierarchy, containing the
C5 "always-on" domain, 2 of its subdomains (A4S and A4SU), and the A3SP domain,
which is a subdomain of A4S.

	sysc: system-controller@e6180000 {
		compatible = "renesas,sysc-r8a7740", "renesas,sysc-rmobile";
		reg = <0xe6180000 0x8000>, <0xe6188000 0x8000>;

		pm-domains {
			pd_c5: c5 {
				#address-cells = <1>;
				#size-cells = <0>;
				#power-domain-cells = <0>;

				pd_a4s: a4s@10 {
					reg = <10>;
					#address-cells = <1>;
					#size-cells = <0>;
					#power-domain-cells = <0>;

					pd_a3sp: a3sp@11 {
						reg = <11>;
						#power-domain-cells = <0>;
					};
				};

				pd_a4su: a4su@20 {
					reg = <20>;
					#power-domain-cells = <0>;
				};
			};
		};
	};


== PM Domain Consumers ==

Hardware blocks belonging to a PM domain should contain a "power-domains"
property that is a phandle pointing to the corresponding PM domain node.

Example:

	tpu: pwm@e6600000 {
		compatible = "renesas,tpu-r8a7740", "renesas,tpu";
		reg = <0xe6600000 0x100>;
		clocks = <&mstp3_clks R8A7740_CLK_TPU0>;
		power-domains = <&pd_a3sp>;
		#pwm-cells = <3>;
	};
+121 −0
Original line number Diff line number Diff line
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/power/renesas,sysc-rmobile.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Renesas R-Mobile System Controller

maintainers:
  - Geert Uytterhoeven <geert+renesas@glider.be>
  - Magnus Damm <magnus.damm@gmail.com>

description: |
  The R-Mobile System Controller provides the following functions:
    - Boot mode management,
    - Reset generation,
    - Power management.

properties:
  compatible:
    items:
      - enum:
          - renesas,sysc-r8a73a4    # R-Mobile APE6
          - renesas,sysc-r8a7740    # R-Mobile A1
          - renesas,sysc-sh73a0     # SH-Mobile AG5
      - const: renesas,sysc-rmobile # Generic SH/R-Mobile

  reg:
    items:
      - description: Normally accessible register block
      - description: Register block protected by the HPB semaphore

  pm-domains:
    type: object
    description: |
      This node contains a hierarchy of PM domain nodes, which should match the
      Power Area Hierarchy in the Power Domain Specifications section of the
      device's datasheet.

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

      '#size-cells':
        const: 0

    additionalProperties:
      $ref: "#/$defs/pd-node"

required:
  - compatible
  - reg
  - pm-domains

additionalProperties: false

$defs:
  pd-node:
    type: object
    description:
      PM domain node representing a PM domain.  This node hould be named by
      the real power area name, and thus its name should be unique.

    properties:
      reg:
        maxItems: 1
        description:
          If the PM domain is not always-on, this property must contain the
          bit index number for the corresponding power area in the various
          Power Control and Status Registers.
          If the PM domain is always-on, this property must be omitted.

      '#address-cells':
        const: 1

      '#size-cells':
        const: 0

      '#power-domain-cells':
        const: 0

    required:
      - '#power-domain-cells'

    additionalProperties:
      $ref: "#/$defs/pd-node"

examples:
  - |
    // This shows a subset of the r8a7740 PM domain hierarchy, containing the
    // C5 "always-on" domain, 2 of its subdomains (A4S and A4SU), and the A3SP
    // domain, which is a subdomain of A4S.
    sysc: system-controller@e6180000 {
            compatible = "renesas,sysc-r8a7740", "renesas,sysc-rmobile";
            reg = <0xe6180000 0x8000>, <0xe6188000 0x8000>;

            pm-domains {
                    pd_c5: c5 {
                            #address-cells = <1>;
                            #size-cells = <0>;
                            #power-domain-cells = <0>;

                            pd_a4s: a4s@10 {
                                    reg = <10>;
                                    #address-cells = <1>;
                                    #size-cells = <0>;
                                    #power-domain-cells = <0>;

                                    pd_a3sp: a3sp@11 {
                                            reg = <11>;
                                            #power-domain-cells = <0>;
                                    };
                            };

                            pd_a4su: a4su@20 {
                                    reg = <20>;
                                    #power-domain-cells = <0>;
                            };
                    };
            };
    };