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.txt.

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