gmu.yaml 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422
  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-[6-8][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-623.0
  106. then:
  107. properties:
  108. reg:
  109. items:
  110. - description: Core GMU registers
  111. - description: Resource controller registers
  112. - description: GMU PDC registers
  113. reg-names:
  114. items:
  115. - const: gmu
  116. - const: rscc
  117. - const: gmu_pdc
  118. clocks:
  119. items:
  120. - description: GMU clock
  121. - description: GPU CX clock
  122. - description: GPU AXI clock
  123. - description: GPU MEMNOC clock
  124. - description: GPU AHB clock
  125. - description: GPU HUB CX clock
  126. clock-names:
  127. items:
  128. - const: gmu
  129. - const: cxo
  130. - const: axi
  131. - const: memnoc
  132. - const: ahb
  133. - const: hub
  134. - if:
  135. properties:
  136. compatible:
  137. contains:
  138. enum:
  139. - qcom,adreno-gmu-635.0
  140. - qcom,adreno-gmu-660.1
  141. - qcom,adreno-gmu-663.0
  142. then:
  143. properties:
  144. reg:
  145. items:
  146. - description: Core GMU registers
  147. - description: Resource controller registers
  148. - description: GMU PDC registers
  149. reg-names:
  150. items:
  151. - const: gmu
  152. - const: rscc
  153. - const: gmu_pdc
  154. clocks:
  155. items:
  156. - description: GMU clock
  157. - description: GPU CX clock
  158. - description: GPU AXI clock
  159. - description: GPU MEMNOC clock
  160. - description: GPU AHB clock
  161. - description: GPU HUB CX clock
  162. - description: GPU SMMU vote clock
  163. clock-names:
  164. items:
  165. - const: gmu
  166. - const: cxo
  167. - const: axi
  168. - const: memnoc
  169. - const: ahb
  170. - const: hub
  171. - const: smmu_vote
  172. - if:
  173. properties:
  174. compatible:
  175. contains:
  176. enum:
  177. - qcom,adreno-gmu-640.1
  178. then:
  179. properties:
  180. reg:
  181. items:
  182. - description: Core GMU registers
  183. - description: GMU PDC registers
  184. - description: GMU PDC sequence registers
  185. reg-names:
  186. items:
  187. - const: gmu
  188. - const: gmu_pdc
  189. - const: gmu_pdc_seq
  190. - if:
  191. properties:
  192. compatible:
  193. contains:
  194. enum:
  195. - qcom,adreno-gmu-650.2
  196. then:
  197. properties:
  198. reg:
  199. items:
  200. - description: Core GMU registers
  201. - description: Resource controller registers
  202. - description: GMU PDC registers
  203. - description: GMU PDC sequence registers
  204. reg-names:
  205. items:
  206. - const: gmu
  207. - const: rscc
  208. - const: gmu_pdc
  209. - const: gmu_pdc_seq
  210. - if:
  211. properties:
  212. compatible:
  213. contains:
  214. enum:
  215. - qcom,adreno-gmu-640.1
  216. - qcom,adreno-gmu-650.2
  217. then:
  218. properties:
  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. clock-names:
  227. items:
  228. - const: ahb
  229. - const: gmu
  230. - const: cxo
  231. - const: axi
  232. - const: memnoc
  233. - if:
  234. properties:
  235. compatible:
  236. contains:
  237. enum:
  238. - qcom,adreno-gmu-730.1
  239. - qcom,adreno-gmu-740.1
  240. - qcom,adreno-gmu-750.1
  241. - qcom,adreno-gmu-x185.1
  242. then:
  243. properties:
  244. reg:
  245. items:
  246. - description: Core GMU registers
  247. - description: Resource controller registers
  248. - description: GMU PDC registers
  249. reg-names:
  250. items:
  251. - const: gmu
  252. - const: rscc
  253. - const: gmu_pdc
  254. clocks:
  255. items:
  256. - description: GPU AHB clock
  257. - description: GMU clock
  258. - description: GPU CX clock
  259. - description: GPU AXI clock
  260. - description: GPU MEMNOC clock
  261. - description: GMU HUB clock
  262. - description: GPUSS DEMET clock
  263. clock-names:
  264. items:
  265. - const: ahb
  266. - const: gmu
  267. - const: cxo
  268. - const: axi
  269. - const: memnoc
  270. - const: hub
  271. - const: demet
  272. required:
  273. - qcom,qmp
  274. - if:
  275. properties:
  276. compatible:
  277. contains:
  278. const: qcom,adreno-gmu-840.1
  279. then:
  280. properties:
  281. reg:
  282. items:
  283. - description: Core GMU registers
  284. reg-names:
  285. items:
  286. - const: gmu
  287. clocks:
  288. items:
  289. - description: GPU AHB clock
  290. - description: GMU clock
  291. - description: GPU CX clock
  292. - description: GPU MEMNOC clock
  293. - description: GMU HUB clock
  294. clock-names:
  295. items:
  296. - const: ahb
  297. - const: gmu
  298. - const: cxo
  299. - const: memnoc
  300. - const: hub
  301. - if:
  302. properties:
  303. compatible:
  304. contains:
  305. const: qcom,adreno-gmu-x285.1
  306. then:
  307. properties:
  308. reg:
  309. items:
  310. - description: Core GMU registers
  311. reg-names:
  312. items:
  313. - const: gmu
  314. clocks:
  315. items:
  316. - description: GPU AHB clock
  317. - description: GMU clock
  318. - description: GPU CX clock
  319. - description: GPU MEMNOC clock
  320. - description: GMU HUB clock
  321. - description: GMU RSCC HUB clock
  322. clock-names:
  323. items:
  324. - const: ahb
  325. - const: gmu
  326. - const: cxo
  327. - const: memnoc
  328. - const: hub
  329. - const: rscc
  330. - if:
  331. properties:
  332. compatible:
  333. contains:
  334. const: qcom,adreno-gmu-wrapper
  335. then:
  336. properties:
  337. reg:
  338. items:
  339. - description: GMU wrapper register space
  340. reg-names:
  341. items:
  342. - const: gmu
  343. else:
  344. required:
  345. - clocks
  346. - clock-names
  347. - interrupts
  348. - interrupt-names
  349. - iommus
  350. - operating-points-v2
  351. examples:
  352. - |
  353. #include <dt-bindings/clock/qcom,gpucc-sdm845.h>
  354. #include <dt-bindings/clock/qcom,gcc-sdm845.h>
  355. #include <dt-bindings/interrupt-controller/irq.h>
  356. #include <dt-bindings/interrupt-controller/arm-gic.h>
  357. gmu: gmu@506a000 {
  358. compatible = "qcom,adreno-gmu-630.2", "qcom,adreno-gmu";
  359. reg = <0x506a000 0x30000>,
  360. <0xb280000 0x10000>,
  361. <0xb480000 0x10000>;
  362. reg-names = "gmu", "gmu_pdc", "gmu_pdc_seq";
  363. clocks = <&gpucc GPU_CC_CX_GMU_CLK>,
  364. <&gpucc GPU_CC_CXO_CLK>,
  365. <&gcc GCC_DDRSS_GPU_AXI_CLK>,
  366. <&gcc GCC_GPU_MEMNOC_GFX_CLK>;
  367. clock-names = "gmu", "cxo", "axi", "memnoc";
  368. interrupts = <GIC_SPI 304 IRQ_TYPE_LEVEL_HIGH>,
  369. <GIC_SPI 305 IRQ_TYPE_LEVEL_HIGH>;
  370. interrupt-names = "hfi", "gmu";
  371. power-domains = <&gpucc GPU_CX_GDSC>,
  372. <&gpucc GPU_GX_GDSC>;
  373. power-domain-names = "cx", "gx";
  374. iommus = <&adreno_smmu 5>;
  375. operating-points-v2 = <&gmu_opp_table>;
  376. };
  377. gmu_wrapper: gmu@596a000 {
  378. compatible = "qcom,adreno-gmu-wrapper";
  379. reg = <0x0596a000 0x30000>;
  380. reg-names = "gmu";
  381. power-domains = <&gpucc GPU_CX_GDSC>,
  382. <&gpucc GPU_GX_GDSC>;
  383. power-domain-names = "cx", "gx";
  384. };