nvidia,tegra124-mc.yaml 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. # SPDX-License-Identifier: (GPL-2.0)
  2. %YAML 1.2
  3. ---
  4. $id: http://devicetree.org/schemas/memory-controllers/nvidia,tegra124-mc.yaml#
  5. $schema: http://devicetree.org/meta-schemas/core.yaml#
  6. title: NVIDIA Tegra124 SoC Memory Controller
  7. maintainers:
  8. - Jon Hunter <jonathanh@nvidia.com>
  9. - Thierry Reding <thierry.reding@gmail.com>
  10. description: |
  11. Tegra124 SoC features a hybrid 2x32-bit / 1x64-bit memory controller.
  12. These are interleaved to provide high performance with the load shared across
  13. two memory channels. The Tegra124 Memory Controller handles memory requests
  14. from internal clients and arbitrates among them to allocate memory bandwidth
  15. for DDR3L and LPDDR3 SDRAMs.
  16. properties:
  17. compatible:
  18. const: nvidia,tegra124-mc
  19. reg:
  20. maxItems: 1
  21. clocks:
  22. maxItems: 1
  23. clock-names:
  24. items:
  25. - const: mc
  26. interrupts:
  27. maxItems: 1
  28. "#reset-cells":
  29. const: 1
  30. "#iommu-cells":
  31. const: 1
  32. "#interconnect-cells":
  33. const: 1
  34. patternProperties:
  35. "^emc-timings-[0-9]+$":
  36. type: object
  37. properties:
  38. nvidia,ram-code:
  39. $ref: /schemas/types.yaml#/definitions/uint32
  40. description:
  41. Value of RAM_CODE this timing set is used for.
  42. patternProperties:
  43. "^timing-[0-9]+$":
  44. type: object
  45. properties:
  46. clock-frequency:
  47. description:
  48. Memory clock rate in Hz.
  49. minimum: 1000000
  50. maximum: 1066000000
  51. nvidia,emem-configuration:
  52. $ref: /schemas/types.yaml#/definitions/uint32-array
  53. description: |
  54. Values to be written to the EMEM register block. See section
  55. "15.6.1 MC Registers" in the TRM.
  56. items:
  57. - description: MC_EMEM_ARB_CFG
  58. - description: MC_EMEM_ARB_OUTSTANDING_REQ
  59. - description: MC_EMEM_ARB_TIMING_RCD
  60. - description: MC_EMEM_ARB_TIMING_RP
  61. - description: MC_EMEM_ARB_TIMING_RC
  62. - description: MC_EMEM_ARB_TIMING_RAS
  63. - description: MC_EMEM_ARB_TIMING_FAW
  64. - description: MC_EMEM_ARB_TIMING_RRD
  65. - description: MC_EMEM_ARB_TIMING_RAP2PRE
  66. - description: MC_EMEM_ARB_TIMING_WAP2PRE
  67. - description: MC_EMEM_ARB_TIMING_R2R
  68. - description: MC_EMEM_ARB_TIMING_W2W
  69. - description: MC_EMEM_ARB_TIMING_R2W
  70. - description: MC_EMEM_ARB_TIMING_W2R
  71. - description: MC_EMEM_ARB_DA_TURNS
  72. - description: MC_EMEM_ARB_DA_COVERS
  73. - description: MC_EMEM_ARB_MISC0
  74. - description: MC_EMEM_ARB_MISC1
  75. - description: MC_EMEM_ARB_RING1_THROTTLE
  76. required:
  77. - clock-frequency
  78. - nvidia,emem-configuration
  79. additionalProperties: false
  80. required:
  81. - nvidia,ram-code
  82. additionalProperties: false
  83. required:
  84. - compatible
  85. - reg
  86. - interrupts
  87. - clocks
  88. - clock-names
  89. - "#reset-cells"
  90. - "#iommu-cells"
  91. - "#interconnect-cells"
  92. additionalProperties: false
  93. examples:
  94. - |
  95. memory-controller@70019000 {
  96. compatible = "nvidia,tegra124-mc";
  97. reg = <0x70019000 0x1000>;
  98. clocks = <&tegra_car 32>;
  99. clock-names = "mc";
  100. interrupts = <0 77 4>;
  101. #iommu-cells = <1>;
  102. #reset-cells = <1>;
  103. #interconnect-cells = <1>;
  104. emc-timings-3 {
  105. nvidia,ram-code = <3>;
  106. timing-12750000 {
  107. clock-frequency = <12750000>;
  108. nvidia,emem-configuration = <
  109. 0x40040001 /* MC_EMEM_ARB_CFG */
  110. 0x8000000a /* MC_EMEM_ARB_OUTSTANDING_REQ */
  111. 0x00000001 /* MC_EMEM_ARB_TIMING_RCD */
  112. 0x00000001 /* MC_EMEM_ARB_TIMING_RP */
  113. 0x00000002 /* MC_EMEM_ARB_TIMING_RC */
  114. 0x00000000 /* MC_EMEM_ARB_TIMING_RAS */
  115. 0x00000002 /* MC_EMEM_ARB_TIMING_FAW */
  116. 0x00000001 /* MC_EMEM_ARB_TIMING_RRD */
  117. 0x00000002 /* MC_EMEM_ARB_TIMING_RAP2PRE */
  118. 0x00000008 /* MC_EMEM_ARB_TIMING_WAP2PRE */
  119. 0x00000003 /* MC_EMEM_ARB_TIMING_R2R */
  120. 0x00000002 /* MC_EMEM_ARB_TIMING_W2W */
  121. 0x00000003 /* MC_EMEM_ARB_TIMING_R2W */
  122. 0x00000006 /* MC_EMEM_ARB_TIMING_W2R */
  123. 0x06030203 /* MC_EMEM_ARB_DA_TURNS */
  124. 0x000a0402 /* MC_EMEM_ARB_DA_COVERS */
  125. 0x77e30303 /* MC_EMEM_ARB_MISC0 */
  126. 0x70000f03 /* MC_EMEM_ARB_MISC1 */
  127. 0x001f0000 /* MC_EMEM_ARB_RING1_THROTTLE */
  128. >;
  129. };
  130. };
  131. };