qcom,scm.yaml 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229
  1. # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
  2. %YAML 1.2
  3. ---
  4. $id: http://devicetree.org/schemas/firmware/qcom,scm.yaml#
  5. $schema: http://devicetree.org/meta-schemas/core.yaml#
  6. title: QCOM Secure Channel Manager (SCM)
  7. description: |
  8. Qualcomm processors include an interface to communicate to the secure firmware.
  9. This interface allows for clients to request different types of actions.
  10. These can include CPU power up/down, HDCP requests, loading of firmware,
  11. and other assorted actions.
  12. maintainers:
  13. - Bjorn Andersson <bjorn.andersson@linaro.org>
  14. - Robert Marko <robimarko@gmail.com>
  15. - Guru Das Srinagesh <quic_gurus@quicinc.com>
  16. properties:
  17. compatible:
  18. items:
  19. - enum:
  20. - qcom,scm-apq8064
  21. - qcom,scm-apq8084
  22. - qcom,scm-ipq4019
  23. - qcom,scm-ipq5018
  24. - qcom,scm-ipq5332
  25. - qcom,scm-ipq6018
  26. - qcom,scm-ipq806x
  27. - qcom,scm-ipq8074
  28. - qcom,scm-ipq9574
  29. - qcom,scm-mdm9607
  30. - qcom,scm-msm8226
  31. - qcom,scm-msm8660
  32. - qcom,scm-msm8916
  33. - qcom,scm-msm8953
  34. - qcom,scm-msm8960
  35. - qcom,scm-msm8974
  36. - qcom,scm-msm8976
  37. - qcom,scm-msm8994
  38. - qcom,scm-msm8996
  39. - qcom,scm-msm8998
  40. - qcom,scm-qcm2290
  41. - qcom,scm-qdu1000
  42. - qcom,scm-sa8775p
  43. - qcom,scm-sc7180
  44. - qcom,scm-sc7280
  45. - qcom,scm-sc8180x
  46. - qcom,scm-sc8280xp
  47. - qcom,scm-sdm670
  48. - qcom,scm-sdm845
  49. - qcom,scm-sdx55
  50. - qcom,scm-sdx65
  51. - qcom,scm-sdx75
  52. - qcom,scm-sm6115
  53. - qcom,scm-sm6125
  54. - qcom,scm-sm6350
  55. - qcom,scm-sm6375
  56. - qcom,scm-sm7150
  57. - qcom,scm-sm8150
  58. - qcom,scm-sm8250
  59. - qcom,scm-sm8350
  60. - qcom,scm-sm8450
  61. - qcom,scm-sm8550
  62. - qcom,scm-sm8650
  63. - qcom,scm-qcs404
  64. - qcom,scm-x1e80100
  65. - const: qcom,scm
  66. clocks:
  67. minItems: 1
  68. maxItems: 3
  69. clock-names:
  70. minItems: 1
  71. maxItems: 3
  72. dma-coherent: true
  73. interconnects:
  74. maxItems: 1
  75. interconnect-names:
  76. maxItems: 1
  77. '#reset-cells':
  78. const: 1
  79. interrupts:
  80. description:
  81. The wait-queue interrupt that firmware raises as part of handshake
  82. protocol to handle sleeping SCM calls.
  83. maxItems: 1
  84. memory-region:
  85. description:
  86. Phandle to the memory region reserved for the shared memory bridge to TZ.
  87. maxItems: 1
  88. qcom,sdi-enabled:
  89. description:
  90. Indicates that the SDI (Secure Debug Image) has been enabled by TZ
  91. by default and it needs to be disabled.
  92. If not disabled WDT assertion or reboot will cause the board to hang
  93. in the debug mode.
  94. type: boolean
  95. qcom,dload-mode:
  96. $ref: /schemas/types.yaml#/definitions/phandle-array
  97. items:
  98. - items:
  99. - description: phandle to TCSR hardware block
  100. - description: offset of the download mode control register
  101. description: TCSR hardware block
  102. allOf:
  103. # Clocks
  104. - if:
  105. properties:
  106. compatible:
  107. contains:
  108. enum:
  109. - qcom,scm-apq8064
  110. - qcom,scm-apq8084
  111. - qcom,scm-mdm9607
  112. - qcom,scm-msm8226
  113. - qcom,scm-msm8660
  114. - qcom,scm-msm8916
  115. - qcom,scm-msm8953
  116. - qcom,scm-msm8960
  117. - qcom,scm-msm8974
  118. - qcom,scm-msm8976
  119. - qcom,scm-qcm2290
  120. - qcom,scm-sm6375
  121. then:
  122. required:
  123. - clocks
  124. - clock-names
  125. else:
  126. properties:
  127. clock-names: false
  128. clocks: false
  129. - if:
  130. properties:
  131. compatible:
  132. contains:
  133. enum:
  134. - qcom,scm-apq8064
  135. - qcom,scm-msm8660
  136. - qcom,scm-msm8960
  137. - qcom,scm-qcm2290
  138. - qcom,scm-sm6375
  139. then:
  140. properties:
  141. clock-names:
  142. items:
  143. - const: core
  144. clocks:
  145. maxItems: 1
  146. - if:
  147. properties:
  148. compatible:
  149. contains:
  150. enum:
  151. - qcom,scm-apq8084
  152. - qcom,scm-mdm9607
  153. - qcom,scm-msm8226
  154. - qcom,scm-msm8916
  155. - qcom,scm-msm8953
  156. - qcom,scm-msm8974
  157. - qcom,scm-msm8976
  158. then:
  159. properties:
  160. clock-names:
  161. items:
  162. - const: core
  163. - const: bus
  164. - const: iface
  165. clocks:
  166. minItems: 3
  167. maxItems: 3
  168. # Interrupts
  169. - if:
  170. not:
  171. properties:
  172. compatible:
  173. contains:
  174. enum:
  175. - qcom,scm-sm8450
  176. - qcom,scm-sm8550
  177. - qcom,scm-sm8650
  178. then:
  179. properties:
  180. interrupts: false
  181. - if:
  182. not:
  183. properties:
  184. compatible:
  185. contains:
  186. enum:
  187. - qcom,scm-sa8775p
  188. then:
  189. properties:
  190. memory-region: false
  191. required:
  192. - compatible
  193. additionalProperties: false
  194. examples:
  195. - |
  196. #include <dt-bindings/clock/qcom,gcc-msm8916.h>
  197. firmware {
  198. scm {
  199. compatible = "qcom,scm-msm8916", "qcom,scm";
  200. clocks = <&gcc GCC_CRYPTO_CLK>,
  201. <&gcc GCC_CRYPTO_AXI_CLK>,
  202. <&gcc GCC_CRYPTO_AHB_CLK>;
  203. clock-names = "core", "bus", "iface";
  204. };
  205. };