samsung,exynos5422-dmc.yaml 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. # SPDX-License-Identifier: GPL-2.0
  2. %YAML 1.2
  3. ---
  4. $id: http://devicetree.org/schemas/memory-controllers/samsung,exynos5422-dmc.yaml#
  5. $schema: http://devicetree.org/meta-schemas/core.yaml#
  6. title: |
  7. Samsung Exynos5422 SoC frequency and voltage scaling for Dynamic Memory
  8. Controller device
  9. maintainers:
  10. - Krzysztof Kozlowski <krzk@kernel.org>
  11. - Lukasz Luba <lukasz.luba@arm.com>
  12. description: |
  13. The Samsung Exynos5422 SoC has DMC (Dynamic Memory Controller) to which the
  14. DRAM memory chips are connected. The driver is to monitor the controller in
  15. runtime and switch frequency and voltage. To monitor the usage of the
  16. controller in runtime, the driver uses the PPMU (Platform Performance
  17. Monitoring Unit), which is able to measure the current load of the memory.
  18. When 'userspace' governor is used for the driver, an application is able to
  19. switch the DMC and memory frequency.
  20. properties:
  21. compatible:
  22. items:
  23. - const: samsung,exynos5422-dmc
  24. clock-names:
  25. items:
  26. - const: fout_spll
  27. - const: mout_sclk_spll
  28. - const: ff_dout_spll2
  29. - const: fout_bpll
  30. - const: mout_bpll
  31. - const: sclk_bpll
  32. - const: mout_mx_mspll_ccore
  33. - const: mout_mclk_cdrex
  34. clocks:
  35. minItems: 8
  36. maxItems: 8
  37. devfreq-events:
  38. $ref: /schemas/types.yaml#/definitions/phandle-array
  39. minItems: 1
  40. maxItems: 16
  41. items:
  42. maxItems: 1
  43. description: phandles of the PPMU events used by the controller.
  44. device-handle:
  45. $ref: /schemas/types.yaml#/definitions/phandle
  46. description: |
  47. phandle of the connected DRAM memory device. For more information please
  48. refer to jedec,lpddr3.yaml.
  49. operating-points-v2: true
  50. interrupts:
  51. items:
  52. - description: DMC internal performance event counters in DREX0
  53. - description: DMC internal performance event counters in DREX1
  54. interrupt-names:
  55. items:
  56. - const: drex_0
  57. - const: drex_1
  58. reg:
  59. items:
  60. - description: registers of DREX0
  61. - description: registers of DREX1
  62. samsung,syscon-clk:
  63. $ref: /schemas/types.yaml#/definitions/phandle
  64. description: |
  65. Phandle of the clock register set used by the controller, these registers
  66. are used for enabling a 'pause' feature and are not exposed by clock
  67. framework but they must be used in a safe way. The register offsets are
  68. in the driver code and specyfic for this SoC type.
  69. vdd-supply: true
  70. required:
  71. - compatible
  72. - clock-names
  73. - clocks
  74. - devfreq-events
  75. - device-handle
  76. - reg
  77. - samsung,syscon-clk
  78. additionalProperties: false
  79. examples:
  80. - |
  81. #include <dt-bindings/clock/exynos5420.h>
  82. ppmu_dmc0_0: ppmu@10d00000 {
  83. compatible = "samsung,exynos-ppmu";
  84. reg = <0x10d00000 0x2000>;
  85. clocks = <&clock CLK_PCLK_PPMU_DREX0_0>;
  86. clock-names = "ppmu";
  87. events {
  88. ppmu_event_dmc0_0: ppmu-event3-dmc0-0 {
  89. event-name = "ppmu-event3-dmc0_0";
  90. };
  91. };
  92. };
  93. memory-controller@10c20000 {
  94. compatible = "samsung,exynos5422-dmc";
  95. reg = <0x10c20000 0x10000>, <0x10c30000 0x10000>;
  96. clocks = <&clock CLK_FOUT_SPLL>,
  97. <&clock CLK_MOUT_SCLK_SPLL>,
  98. <&clock CLK_FF_DOUT_SPLL2>,
  99. <&clock CLK_FOUT_BPLL>,
  100. <&clock CLK_MOUT_BPLL>,
  101. <&clock CLK_SCLK_BPLL>,
  102. <&clock CLK_MOUT_MX_MSPLL_CCORE>,
  103. <&clock CLK_MOUT_MCLK_CDREX>;
  104. clock-names = "fout_spll",
  105. "mout_sclk_spll",
  106. "ff_dout_spll2",
  107. "fout_bpll",
  108. "mout_bpll",
  109. "sclk_bpll",
  110. "mout_mx_mspll_ccore",
  111. "mout_mclk_cdrex";
  112. operating-points-v2 = <&dmc_opp_table>;
  113. devfreq-events = <&ppmu_event3_dmc0_0>, <&ppmu_event3_dmc0_1>,
  114. <&ppmu_event3_dmc1_0>, <&ppmu_event3_dmc1_1>;
  115. device-handle = <&samsung_K3QF2F20DB>;
  116. vdd-supply = <&buck1_reg>;
  117. samsung,syscon-clk = <&clock>;
  118. interrupt-parent = <&combiner>;
  119. interrupts = <16 0>, <16 1>;
  120. interrupt-names = "drex_0", "drex_1";
  121. };