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>;
	};
