gmu.yaml 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328
  1. # SPDX-License-Identifier: GPL-2.0-only
  2. # Copyright 2019-2020, The Linux Foundation, All Rights Reserved
  3. %YAML 1.2
  4. ---
  5. $id: http://devicetree.org/schemas/display/msm/gmu.yaml#
  6. $schema: http://devicetree.org/meta-schemas/core.yaml#
  7. title: GMU attached to certain Adreno GPUs
  8. maintainers:
  9. - Rob Clark <robdclark@gmail.com>
  10. description: |
  11. These bindings describe the Graphics Management Unit (GMU) that is attached
  12. to members of the Adreno A6xx GPU family. The GMU provides on-device power
  13. management and support to improve power efficiency and reduce the load on
  14. the CPU.
  15. properties:
  16. compatible:
  17. oneOf:
  18. - items:
  19. - pattern: '^qcom,adreno-gmu-[67][0-9][0-9]\.[0-9]$'
  20. - const: qcom,adreno-gmu
  21. - items:
  22. - pattern: '^qcom,adreno-gmu-x[1-9][0-9][0-9]\.[0-9]$'
  23. - const: qcom,adreno-gmu
  24. - const: qcom,adreno-gmu-wrapper
  25. reg:
  26. minItems: 1
  27. maxItems: 4
  28. reg-names:
  29. minItems: 1
  30. maxItems: 4
  31. clocks:
  32. minItems: 4
  33. maxItems: 7
  34. clock-names:
  35. minItems: 4
  36. maxItems: 7
  37. interrupts:
  38. items:
  39. - description: GMU HFI interrupt
  40. - description: GMU interrupt
  41. interrupt-names:
  42. items:
  43. - const: hfi
  44. - const: gmu
  45. power-domains:
  46. items:
  47. - description: CX power domain
  48. - description: GX power domain
  49. power-domain-names:
  50. items:
  51. - const: cx
  52. - const: gx
  53. iommus:
  54. maxItems: 1
  55. qcom,qmp:
  56. $ref: /schemas/types.yaml#/definitions/phandle
  57. description: Reference to the AOSS side-channel message RAM
  58. operating-points-v2: true
  59. opp-table:
  60. type: object
  61. required:
  62. - compatible
  63. - reg
  64. - reg-names
  65. - power-domains
  66. - power-domain-names
  67. additionalProperties: false
  68. allOf:
  69. - if:
  70. properties:
  71. compatible:
  72. contains:
  73. enum:
  74. - qcom,adreno-gmu-618.0
  75. - qcom,adreno-gmu-630.2
  76. then:
  77. properties:
  78. reg:
  79. items:
  80. - description: Core GMU registers
  81. - description: GMU PDC registers
  82. - description: GMU PDC sequence registers
  83. reg-names:
  84. items:
  85. - const: gmu
  86. - const: gmu_pdc
  87. - const: gmu_pdc_seq
  88. clocks:
  89. items:
  90. - description: GMU clock
  91. - description: GPU CX clock
  92. - description: GPU AXI clock
  93. - description: GPU MEMNOC clock
  94. clock-names:
  95. items:
  96. - const: gmu
  97. - const: cxo
  98. - const: axi
  99. - const: memnoc
  100. - if:
  101. properties:
  102. compatible:
  103. contains:
  104. enum:
  105. - qcom,adreno-gmu-635.0
  106. - qcom,adreno-gmu-660.1
  107. then:
  108. properties:
  109. reg:
  110. items:
  111. - description: Core GMU registers
  112. - description: Resource controller registers
  113. - description: GMU PDC registers
  114. reg-names:
  115. items:
  116. - const: gmu
  117. - const: rscc
  118. - const: gmu_pdc
  119. clocks:
  120. items:
  121. - description: GMU clock
  122. - description: GPU CX clock
  123. - description: GPU AXI clock
  124. - description: GPU MEMNOC clock
  125. - description: GPU AHB clock
  126. - description: GPU HUB CX clock
  127. - description: GPU SMMU vote clock
  128. clock-names:
  129. items:
  130. - const: gmu
  131. - const: cxo
  132. - const: axi
  133. - const: memnoc
  134. - const: ahb
  135. - const: hub
  136. - const: smmu_vote
  137. - if:
  138. properties:
  139. compatible:
  140. contains:
  141. enum:
  142. - qcom,adreno-gmu-640.1
  143. then:
  144. properties:
  145. reg:
  146. items:
  147. - description: Core GMU registers
  148. - description: GMU PDC registers
  149. - description: GMU PDC sequence registers
  150. reg-names:
  151. items:
  152. - const: gmu
  153. - const: gmu_pdc
  154. - const: gmu_pdc_seq
  155. - if:
  156. properties:
  157. compatible:
  158. contains:
  159. enum:
  160. - qcom,adreno-gmu-650.2
  161. then:
  162. properties:
  163. reg:
  164. items:
  165. - description: Core GMU registers
  166. - description: Resource controller registers
  167. - description: GMU PDC registers
  168. - description: GMU PDC sequence registers
  169. reg-names:
  170. items:
  171. - const: gmu
  172. - const: rscc
  173. - const: gmu_pdc
  174. - const: gmu_pdc_seq
  175. - if:
  176. properties:
  177. compatible:
  178. contains:
  179. enum:
  180. - qcom,adreno-gmu-640.1
  181. - qcom,adreno-gmu-650.2
  182. then:
  183. properties:
  184. clocks:
  185. items:
  186. - description: GPU AHB clock
  187. - description: GMU clock
  188. - description: GPU CX clock
  189. - description: GPU AXI clock
  190. - description: GPU MEMNOC clock
  191. clock-names:
  192. items:
  193. - const: ahb
  194. - const: gmu
  195. - const: cxo
  196. - const: axi
  197. - const: memnoc
  198. - if:
  199. properties:
  200. compatible:
  201. contains:
  202. enum:
  203. - qcom,adreno-gmu-730.1
  204. - qcom,adreno-gmu-740.1
  205. - qcom,adreno-gmu-750.1
  206. - qcom,adreno-gmu-x185.1
  207. then:
  208. properties:
  209. reg:
  210. items:
  211. - description: Core GMU registers
  212. - description: Resource controller registers
  213. - description: GMU PDC registers
  214. reg-names:
  215. items:
  216. - const: gmu
  217. - const: rscc
  218. - const: gmu_pdc
  219. clocks:
  220. items:
  221. - description: GPU AHB clock
  222. - description: GMU clock
  223. - description: GPU CX clock
  224. - description: GPU AXI clock
  225. - description: GPU MEMNOC clock
  226. - description: GMU HUB clock
  227. - description: GPUSS DEMET clock
  228. clock-names:
  229. items:
  230. - const: ahb
  231. - const: gmu
  232. - const: cxo
  233. - const: axi
  234. - const: memnoc
  235. - const: hub
  236. - const: demet
  237. required:
  238. - qcom,qmp
  239. - if:
  240. properties:
  241. compatible:
  242. contains:
  243. const: qcom,adreno-gmu-wrapper
  244. then:
  245. properties:
  246. reg:
  247. items:
  248. - description: GMU wrapper register space
  249. reg-names:
  250. items:
  251. - const: gmu
  252. else:
  253. required:
  254. - clocks
  255. - clock-names
  256. - interrupts
  257. - interrupt-names
  258. - iommus
  259. - operating-points-v2
  260. examples:
  261. - |
  262. #include <dt-bindings/clock/qcom,gpucc-sdm845.h>
  263. #include <dt-bindings/clock/qcom,gcc-sdm845.h>
  264. #include <dt-bindings/interrupt-controller/irq.h>
  265. #include <dt-bindings/interrupt-controller/arm-gic.h>
  266. gmu: gmu@506a000 {
  267. compatible = "qcom,adreno-gmu-630.2", "qcom,adreno-gmu";
  268. reg = <0x506a000 0x30000>,
  269. <0xb280000 0x10000>,
  270. <0xb480000 0x10000>;
  271. reg-names = "gmu", "gmu_pdc", "gmu_pdc_seq";
  272. clocks = <&gpucc GPU_CC_CX_GMU_CLK>,
  273. <&gpucc GPU_CC_CXO_CLK>,
  274. <&gcc GCC_DDRSS_GPU_AXI_CLK>,
  275. <&gcc GCC_GPU_MEMNOC_GFX_CLK>;
  276. clock-names = "gmu", "cxo", "axi", "memnoc";
  277. interrupts = <GIC_SPI 304 IRQ_TYPE_LEVEL_HIGH>,
  278. <GIC_SPI 305 IRQ_TYPE_LEVEL_HIGH>;
  279. interrupt-names = "hfi", "gmu";
  280. power-domains = <&gpucc GPU_CX_GDSC>,
  281. <&gpucc GPU_GX_GDSC>;
  282. power-domain-names = "cx", "gx";
  283. iommus = <&adreno_smmu 5>;
  284. operating-points-v2 = <&gmu_opp_table>;
  285. };
  286. gmu_wrapper: gmu@596a000 {
  287. compatible = "qcom,adreno-gmu-wrapper";
  288. reg = <0x0596a000 0x30000>;
  289. reg-names = "gmu";
  290. power-domains = <&gpucc GPU_CX_GDSC>,
  291. <&gpucc GPU_GX_GDSC>;
  292. power-domain-names = "cx", "gx";
  293. };