rockchip,power-controller.yaml 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255
  1. # SPDX-License-Identifier: GPL-2.0
  2. %YAML 1.2
  3. ---
  4. $id: http://devicetree.org/schemas/power/rockchip,power-controller.yaml#
  5. $schema: http://devicetree.org/meta-schemas/core.yaml#
  6. title: Rockchip Power Domains
  7. maintainers:
  8. - Elaine Zhang <zhangqing@rock-chips.com>
  9. - Heiko Stuebner <heiko@sntech.de>
  10. description: |
  11. Rockchip processors include support for multiple power domains
  12. which can be powered up/down by software based on different
  13. application scenarios to save power.
  14. Power domains contained within power-controller node are
  15. generic power domain providers documented in
  16. Documentation/devicetree/bindings/power/power-domain.yaml.
  17. IP cores belonging to a power domain should contain a
  18. "power-domains" property that is a phandle for the
  19. power domain node representing the domain.
  20. properties:
  21. $nodename:
  22. const: power-controller
  23. compatible:
  24. enum:
  25. - rockchip,px30-power-controller
  26. - rockchip,rk3036-power-controller
  27. - rockchip,rk3066-power-controller
  28. - rockchip,rk3128-power-controller
  29. - rockchip,rk3188-power-controller
  30. - rockchip,rk3228-power-controller
  31. - rockchip,rk3288-power-controller
  32. - rockchip,rk3328-power-controller
  33. - rockchip,rk3366-power-controller
  34. - rockchip,rk3368-power-controller
  35. - rockchip,rk3399-power-controller
  36. - rockchip,rk3568-power-controller
  37. - rockchip,rk3576-power-controller
  38. - rockchip,rk3588-power-controller
  39. - rockchip,rv1126-power-controller
  40. "#power-domain-cells":
  41. const: 1
  42. "#address-cells":
  43. const: 1
  44. "#size-cells":
  45. const: 0
  46. required:
  47. - compatible
  48. - "#power-domain-cells"
  49. additionalProperties: false
  50. patternProperties:
  51. "^power-domain@[0-9a-f]+$":
  52. $ref: "#/$defs/pd-node"
  53. unevaluatedProperties: false
  54. properties:
  55. "#address-cells":
  56. const: 1
  57. "#size-cells":
  58. const: 0
  59. patternProperties:
  60. "^power-domain@[0-9a-f]+$":
  61. $ref: "#/$defs/pd-node"
  62. unevaluatedProperties: false
  63. properties:
  64. "#address-cells":
  65. const: 1
  66. "#size-cells":
  67. const: 0
  68. patternProperties:
  69. "^power-domain@[0-9a-f]+$":
  70. $ref: "#/$defs/pd-node"
  71. unevaluatedProperties: false
  72. properties:
  73. "#power-domain-cells":
  74. const: 0
  75. $defs:
  76. pd-node:
  77. type: object
  78. description: |
  79. Represents the power domains within the power controller node.
  80. properties:
  81. reg:
  82. maxItems: 1
  83. description: |
  84. Power domain index. Valid values are defined in
  85. "include/dt-bindings/power/px30-power.h"
  86. "include/dt-bindings/power/rk3036-power.h"
  87. "include/dt-bindings/power/rk3066-power.h"
  88. "include/dt-bindings/power/rk3128-power.h"
  89. "include/dt-bindings/power/rk3188-power.h"
  90. "include/dt-bindings/power/rk3228-power.h"
  91. "include/dt-bindings/power/rk3288-power.h"
  92. "include/dt-bindings/power/rk3328-power.h"
  93. "include/dt-bindings/power/rk3366-power.h"
  94. "include/dt-bindings/power/rk3368-power.h"
  95. "include/dt-bindings/power/rk3399-power.h"
  96. "include/dt-bindings/power/rk3568-power.h"
  97. "include/dt-bindings/power/rk3588-power.h"
  98. "include/dt-bindings/power/rockchip,rv1126-power.h"
  99. clocks:
  100. minItems: 1
  101. maxItems: 30
  102. description: |
  103. A number of phandles to clocks that need to be enabled
  104. while power domain switches state.
  105. pm_qos:
  106. $ref: /schemas/types.yaml#/definitions/phandle-array
  107. items:
  108. maxItems: 1
  109. description: |
  110. A number of phandles to qos blocks which need to be saved and restored
  111. while power domain switches state.
  112. "#power-domain-cells":
  113. enum: [0, 1]
  114. description:
  115. Must be 0 for nodes representing a single PM domain and 1 for nodes
  116. providing multiple PM domains.
  117. required:
  118. - reg
  119. - "#power-domain-cells"
  120. examples:
  121. - |
  122. #include <dt-bindings/clock/rk3399-cru.h>
  123. #include <dt-bindings/power/rk3399-power.h>
  124. soc {
  125. #address-cells = <2>;
  126. #size-cells = <2>;
  127. qos_hdcp: qos@ffa90000 {
  128. compatible = "rockchip,rk3399-qos", "syscon";
  129. reg = <0x0 0xffa90000 0x0 0x20>;
  130. };
  131. qos_iep: qos@ffa98000 {
  132. compatible = "rockchip,rk3399-qos", "syscon";
  133. reg = <0x0 0xffa98000 0x0 0x20>;
  134. };
  135. qos_rga_r: qos@ffab0000 {
  136. compatible = "rockchip,rk3399-qos", "syscon";
  137. reg = <0x0 0xffab0000 0x0 0x20>;
  138. };
  139. qos_rga_w: qos@ffab0080 {
  140. compatible = "rockchip,rk3399-qos", "syscon";
  141. reg = <0x0 0xffab0080 0x0 0x20>;
  142. };
  143. qos_video_m0: qos@ffab8000 {
  144. compatible = "rockchip,rk3399-qos", "syscon";
  145. reg = <0x0 0xffab8000 0x0 0x20>;
  146. };
  147. qos_video_m1_r: qos@ffac0000 {
  148. compatible = "rockchip,rk3399-qos", "syscon";
  149. reg = <0x0 0xffac0000 0x0 0x20>;
  150. };
  151. qos_video_m1_w: qos@ffac0080 {
  152. compatible = "rockchip,rk3399-qos", "syscon";
  153. reg = <0x0 0xffac0080 0x0 0x20>;
  154. };
  155. power-management@ff310000 {
  156. compatible = "rockchip,rk3399-pmu", "syscon", "simple-mfd";
  157. reg = <0x0 0xff310000 0x0 0x1000>;
  158. power-controller {
  159. compatible = "rockchip,rk3399-power-controller";
  160. #power-domain-cells = <1>;
  161. #address-cells = <1>;
  162. #size-cells = <0>;
  163. /* These power domains are grouped by VD_CENTER */
  164. power-domain@RK3399_PD_IEP {
  165. reg = <RK3399_PD_IEP>;
  166. clocks = <&cru ACLK_IEP>,
  167. <&cru HCLK_IEP>;
  168. pm_qos = <&qos_iep>;
  169. #power-domain-cells = <0>;
  170. };
  171. power-domain@RK3399_PD_RGA {
  172. reg = <RK3399_PD_RGA>;
  173. clocks = <&cru ACLK_RGA>,
  174. <&cru HCLK_RGA>;
  175. pm_qos = <&qos_rga_r>,
  176. <&qos_rga_w>;
  177. #power-domain-cells = <0>;
  178. };
  179. power-domain@RK3399_PD_VCODEC {
  180. reg = <RK3399_PD_VCODEC>;
  181. clocks = <&cru ACLK_VCODEC>,
  182. <&cru HCLK_VCODEC>;
  183. pm_qos = <&qos_video_m0>;
  184. #power-domain-cells = <0>;
  185. };
  186. power-domain@RK3399_PD_VDU {
  187. reg = <RK3399_PD_VDU>;
  188. clocks = <&cru ACLK_VDU>,
  189. <&cru HCLK_VDU>;
  190. pm_qos = <&qos_video_m1_r>,
  191. <&qos_video_m1_w>;
  192. #power-domain-cells = <0>;
  193. };
  194. power-domain@RK3399_PD_VIO {
  195. reg = <RK3399_PD_VIO>;
  196. #power-domain-cells = <1>;
  197. #address-cells = <1>;
  198. #size-cells = <0>;
  199. power-domain@RK3399_PD_HDCP {
  200. reg = <RK3399_PD_HDCP>;
  201. clocks = <&cru ACLK_HDCP>,
  202. <&cru HCLK_HDCP>,
  203. <&cru PCLK_HDCP>;
  204. pm_qos = <&qos_hdcp>;
  205. #power-domain-cells = <0>;
  206. };
  207. };
  208. };
  209. };
  210. };