* Rockchip Power Domains

Rockchip processors include support for multiple power domains which can be
powered up/down by software based on different application scenes to save power.

Required properties for power domain controller:
- compatible: Should be one of the following.
	"rockchip,rk3288-power-controller" - for RK3288 SoCs.
	"rockchip,rk3368-power-controller" - for RK3368 SoCs.
	"rockchip,rk3399-power-controller" - for RK3399 SoCs.
- #power-domain-cells: Number of cells in a power-domain specifier.
	Should be 1 for multiple PM domains.
- #address-cells: Should be 1.
- #size-cells: Should be 0.

Required properties for power domain sub nodes:
- reg: index of the power domain, should use macros in:
	"include/dt-bindings/power/rk3288-power.h" - for RK3288 type power domain.
	"include/dt-bindings/power/rk3368-power.h" - for RK3368 type power domain.
	"include/dt-bindings/power/rk3399-power.h" - for RK3399 type power domain.
- clocks (optional): phandles to clocks which need to be enabled while power domain
	switches state.
- pm_qos (optional): phandles to qos blocks which need to be saved and restored
	while power domain switches state.

Qos Example:

	qos_gpu: qos_gpu@ffaf0000 {
		compatible ="syscon";
		reg = <0x0 0xffaf0000 0x0 0x20>;
	};

Example:

	power: power-controller {
		compatible = "rockchip,rk3288-power-controller";
		#power-domain-cells = <1>;
		#address-cells = <1>;
		#size-cells = <0>;

		pd_gpu {
			reg = <RK3288_PD_GPU>;
			clocks = <&cru ACLK_GPU>;
			pm_qos = <&qos_gpu>;
		};
	};

	 power: power-controller {
                compatible = "rockchip,rk3368-power-controller";
                #power-domain-cells = <1>;
                #address-cells = <1>;
                #size-cells = <0>;

                pd_gpu_1 {
                        reg = <RK3368_PD_GPU_1>;
                        clocks = <&cru ACLK_GPU_CFG>;
                };
        };

Example 2:
		power: power-controller {
			compatible = "rockchip,rk3399-power-controller";
			#power-domain-cells = <1>;
			#address-cells = <1>;
			#size-cells = <0>;

			pd_vio {
				#address-cells = <1>;
				#size-cells = <0>;
				reg = <RK3399_PD_VIO>;

				pd_vo {
					#address-cells = <1>;
					#size-cells = <0>;
					reg = <RK3399_PD_VO>;

					pd_vopb {
						reg = <RK3399_PD_VOPB>;
					};

					pd_vopl {
						reg = <RK3399_PD_VOPL>;
					};
				};
			};
		};

Node of a device using power domains must have a power-domains property,
containing a phandle to the power device node and an index specifying which
power domain to use.
The index should use macros in:
	"include/dt-bindings/power/rk3288-power.h" - for rk3288 type power domain.
	"include/dt-bindings/power/rk3368-power.h" - for rk3368 type power domain.
	"include/dt-bindings/power/rk3399-power.h" - for rk3399 type power domain.

Example of the node using power domain:

	node {
		/* ... */
		power-domains = <&power RK3288_PD_GPU>;
		/* ... */
	};

	node {
                /* ... */
                power-domains = <&power RK3368_PD_GPU_1>;
                /* ... */
        };

	node {
		/* ... */
		power-domains = <&power RK3399_PD_VOPB>;
		/* ... */
	};
