power_domain.txt 4.3 KB

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