1* Rockchip Power Domains 2 3Rockchip processors include support for multiple power domains which can be 4powered up/down by software based on different application scenes to save power. 5 6Required properties for power domain controller: 7- compatible: Should be one of the following. 8 "rockchip,px30-power-controller" - for PX30 SoCs. 9 "rockchip,rk3036-power-controller" - for RK3036 SoCs. 10 "rockchip,rk3128-power-controller" - for RK3128 SoCs. 11 "rockchip,rk3228-power-controller" - for RK3228 SoCs. 12 "rockchip,rk3288-power-controller" - for RK3288 SoCs. 13 "rockchip,rk3328-power-controller" - for RK3328 SoCs. 14 "rockchip,rk3366-power-controller" - for RK3366 SoCs. 15 "rockchip,rk3368-power-controller" - for RK3368 SoCs. 16 "rockchip,rk3399-power-controller" - for RK3399 SoCs. 17- #power-domain-cells: Number of cells in a power-domain specifier. 18 Should be 1 for multiple PM domains. 19- #address-cells: Should be 1. 20- #size-cells: Should be 0. 21 22Required properties for power domain sub nodes: 23- reg: index of the power domain, should use macros in: 24 "include/dt-bindings/power/px30-power.h" - for PX30 type power domain. 25 "include/dt-bindings/power/rk3036-power.h" - for RK3036 type power domain. 26 "include/dt-bindings/power/rk3128-power.h" - for RK3128 type power domain. 27 "include/dt-bindings/power/rk3228-power.h" - for RK3228 type power domain. 28 "include/dt-bindings/power/rk3288-power.h" - for RK3288 type power domain. 29 "include/dt-bindings/power/rk3328-power.h" - for RK3328 type power domain. 30 "include/dt-bindings/power/rk3366-power.h" - for RK3366 type power domain. 31 "include/dt-bindings/power/rk3368-power.h" - for RK3368 type power domain. 32 "include/dt-bindings/power/rk3399-power.h" - for RK3399 type power domain. 33- clocks (optional): phandles to clocks which need to be enabled while power domain 34 switches state. 35- pm_qos (optional): phandles to qos blocks which need to be saved and restored 36 while power domain switches state. 37 38Qos Example: 39 40 qos_gpu: qos_gpu@ffaf0000 { 41 compatible ="syscon"; 42 reg = <0x0 0xffaf0000 0x0 0x20>; 43 }; 44 45Example: 46 47 power: power-controller { 48 compatible = "rockchip,rk3288-power-controller"; 49 #power-domain-cells = <1>; 50 #address-cells = <1>; 51 #size-cells = <0>; 52 53 pd_gpu { 54 reg = <RK3288_PD_GPU>; 55 clocks = <&cru ACLK_GPU>; 56 pm_qos = <&qos_gpu>; 57 }; 58 }; 59 60 power: power-controller { 61 compatible = "rockchip,rk3368-power-controller"; 62 #power-domain-cells = <1>; 63 #address-cells = <1>; 64 #size-cells = <0>; 65 66 pd_gpu_1 { 67 reg = <RK3368_PD_GPU_1>; 68 clocks = <&cru ACLK_GPU_CFG>; 69 }; 70 }; 71 72Example 2: 73 power: power-controller { 74 compatible = "rockchip,rk3399-power-controller"; 75 #power-domain-cells = <1>; 76 #address-cells = <1>; 77 #size-cells = <0>; 78 79 pd_vio { 80 #address-cells = <1>; 81 #size-cells = <0>; 82 reg = <RK3399_PD_VIO>; 83 84 pd_vo { 85 #address-cells = <1>; 86 #size-cells = <0>; 87 reg = <RK3399_PD_VO>; 88 89 pd_vopb { 90 reg = <RK3399_PD_VOPB>; 91 }; 92 93 pd_vopl { 94 reg = <RK3399_PD_VOPL>; 95 }; 96 }; 97 }; 98 }; 99 100Node of a device using power domains must have a power-domains property, 101containing a phandle to the power device node and an index specifying which 102power domain to use. 103The index should use macros in: 104 "include/dt-bindings/power/px30-power.h" - for px30 type power domain. 105 "include/dt-bindings/power/rk3036-power.h" - for rk3036 type power domain. 106 "include/dt-bindings/power/rk3128-power.h" - for rk3128 type power domain. 107 "include/dt-bindings/power/rk3128-power.h" - for rk3228 type power domain. 108 "include/dt-bindings/power/rk3288-power.h" - for rk3288 type power domain. 109 "include/dt-bindings/power/rk3328-power.h" - for rk3328 type power domain. 110 "include/dt-bindings/power/rk3366-power.h" - for rk3366 type power domain. 111 "include/dt-bindings/power/rk3368-power.h" - for rk3368 type power domain. 112 "include/dt-bindings/power/rk3399-power.h" - for rk3399 type power domain. 113 114Example of the node using power domain: 115 116 node { 117 /* ... */ 118 power-domains = <&power RK3288_PD_GPU>; 119 /* ... */ 120 }; 121 122 node { 123 /* ... */ 124 power-domains = <&power RK3368_PD_GPU_1>; 125 /* ... */ 126 }; 127 128 node { 129 /* ... */ 130 power-domains = <&power RK3399_PD_VOPB>; 131 /* ... */ 132 }; 133