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