fsl,imx-gpc.txt 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. Freescale i.MX General Power Controller
  2. =======================================
  3. The i.MX6 General Power Control (GPC) block contains DVFS load tracking
  4. counters and Power Gating Control (PGC).
  5. Required properties:
  6. - compatible: Should be one of the following:
  7. - fsl,imx6q-gpc
  8. - fsl,imx6qp-gpc
  9. - fsl,imx6sl-gpc
  10. - fsl,imx6sx-gpc
  11. - reg: should be register base and length as documented in the
  12. datasheet
  13. - interrupts: Should contain one interrupt specifier for the GPC interrupt
  14. - clocks: Must contain an entry for each entry in clock-names.
  15. See Documentation/devicetree/bindings/clock/clock-bindings.txt for details.
  16. - clock-names: Must include the following entries:
  17. - ipg
  18. The power domains are generic power domain providers as documented in
  19. Documentation/devicetree/bindings/power/power_domain.txt. They are described as
  20. subnodes of the power gating controller 'pgc' node of the GPC and should
  21. contain the following:
  22. Required properties:
  23. - reg: Must contain the DOMAIN_INDEX of this power domain
  24. The following DOMAIN_INDEX values are valid for i.MX6Q:
  25. ARM_DOMAIN 0
  26. PU_DOMAIN 1
  27. The following additional DOMAIN_INDEX value is valid for i.MX6SL:
  28. DISPLAY_DOMAIN 2
  29. The following additional DOMAIN_INDEX value is valid for i.MX6SX:
  30. PCI_DOMAIN 3
  31. - #power-domain-cells: Should be 0
  32. Optional properties:
  33. - clocks: a number of phandles to clocks that need to be enabled during domain
  34. power-up sequencing to ensure reset propagation into devices located inside
  35. this power domain
  36. - power-supply: a phandle to the regulator powering this domain
  37. Example:
  38. gpc: gpc@20dc000 {
  39. compatible = "fsl,imx6q-gpc";
  40. reg = <0x020dc000 0x4000>;
  41. interrupts = <0 89 IRQ_TYPE_LEVEL_HIGH>,
  42. <0 90 IRQ_TYPE_LEVEL_HIGH>;
  43. clocks = <&clks IMX6QDL_CLK_IPG>;
  44. clock-names = "ipg";
  45. pgc {
  46. #address-cells = <1>;
  47. #size-cells = <0>;
  48. power-domain@0 {
  49. reg = <0>;
  50. #power-domain-cells = <0>;
  51. };
  52. pd_pu: power-domain@1 {
  53. reg = <1>;
  54. #power-domain-cells = <0>;
  55. power-supply = <&reg_pu>;
  56. clocks = <&clks IMX6QDL_CLK_GPU3D_CORE>,
  57. <&clks IMX6QDL_CLK_GPU3D_SHADER>,
  58. <&clks IMX6QDL_CLK_GPU2D_CORE>,
  59. <&clks IMX6QDL_CLK_GPU2D_AXI>,
  60. <&clks IMX6QDL_CLK_OPENVG_AXI>,
  61. <&clks IMX6QDL_CLK_VPU_AXI>;
  62. };
  63. };
  64. };
  65. Specifying power domain for IP modules
  66. ======================================
  67. IP cores belonging to a power domain should contain a 'power-domains' property
  68. that is a phandle pointing to the power domain the device belongs to.
  69. Example of a device that is part of the PU power domain:
  70. vpu: vpu@2040000 {
  71. reg = <0x02040000 0x3c000>;
  72. /* ... */
  73. power-domains = <&pd_pu>;
  74. /* ... */
  75. };