fsl,dsp.yaml 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205
  1. # SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
  2. %YAML 1.2
  3. ---
  4. $id: http://devicetree.org/schemas/dsp/fsl,dsp.yaml#
  5. $schema: http://devicetree.org/meta-schemas/core.yaml#
  6. title: NXP i.MX8 DSP core
  7. maintainers:
  8. - Daniel Baluta <daniel.baluta@nxp.com>
  9. - Shengjiu Wang <shengjiu.wang@nxp.com>
  10. description: |
  11. Some boards from i.MX8 family contain a DSP core used for
  12. advanced pre- and post- audio processing.
  13. properties:
  14. compatible:
  15. enum:
  16. - fsl,imx8qxp-dsp
  17. - fsl,imx8qm-dsp
  18. - fsl,imx8mp-dsp
  19. - fsl,imx8ulp-dsp
  20. - fsl,imx8qxp-hifi4
  21. - fsl,imx8qm-hifi4
  22. - fsl,imx8mp-hifi4
  23. - fsl,imx8ulp-hifi4
  24. reg:
  25. maxItems: 1
  26. clocks:
  27. items:
  28. - description: ipg clock
  29. - description: ocram clock
  30. - description: core clock
  31. - description: debug interface clock
  32. - description: message unit clock
  33. minItems: 3
  34. clock-names:
  35. items:
  36. - const: ipg
  37. - const: ocram
  38. - const: core
  39. - const: debug
  40. - const: mu
  41. minItems: 3
  42. power-domains:
  43. description:
  44. List of phandle and PM domain specifier as documented in
  45. Documentation/devicetree/bindings/power/power_domain.txt
  46. minItems: 1
  47. maxItems: 4
  48. mboxes:
  49. description:
  50. List of <&phandle type channel> - 2 channels for TXDB, 2 channels for RXDB
  51. or - 1 channel for TX, 1 channel for RX, 1 channel for RXDB
  52. (see mailbox/fsl,mu.txt)
  53. minItems: 3
  54. maxItems: 4
  55. mbox-names:
  56. minItems: 3
  57. maxItems: 4
  58. memory-region:
  59. description:
  60. phandle to a node describing reserved memory (System RAM memory)
  61. used by DSP (see bindings/reserved-memory/reserved-memory.txt)
  62. minItems: 1
  63. maxItems: 4
  64. firmware-name:
  65. description: |
  66. Default name of the firmware to load to the remote processor.
  67. fsl,dsp-ctrl:
  68. $ref: /schemas/types.yaml#/definitions/phandle
  69. description:
  70. Phandle to syscon block which provide access for processor enablement
  71. required:
  72. - compatible
  73. - reg
  74. - clocks
  75. - clock-names
  76. - power-domains
  77. - mboxes
  78. - mbox-names
  79. - memory-region
  80. allOf:
  81. - if:
  82. properties:
  83. compatible:
  84. contains:
  85. enum:
  86. - fsl,imx8qxp-dsp
  87. - fsl,imx8qm-dsp
  88. - fsl,imx8qxp-hifi4
  89. - fsl,imx8qm-hifi4
  90. then:
  91. properties:
  92. power-domains:
  93. minItems: 4
  94. else:
  95. properties:
  96. power-domains:
  97. maxItems: 1
  98. - if:
  99. properties:
  100. compatible:
  101. contains:
  102. enum:
  103. - fsl,imx8qxp-hifi4
  104. - fsl,imx8qm-hifi4
  105. - fsl,imx8mp-hifi4
  106. - fsl,imx8ulp-hifi4
  107. then:
  108. properties:
  109. memory-region:
  110. minItems: 4
  111. mboxes:
  112. maxItems: 3
  113. mbox-names:
  114. items:
  115. - const: tx
  116. - const: rx
  117. - const: rxdb
  118. else:
  119. properties:
  120. memory-region:
  121. maxItems: 1
  122. mboxes:
  123. minItems: 4
  124. mbox-names:
  125. items:
  126. - const: txdb0
  127. - const: txdb1
  128. - const: rxdb0
  129. - const: rxdb1
  130. additionalProperties: false
  131. examples:
  132. - |
  133. #include <dt-bindings/firmware/imx/rsrc.h>
  134. #include <dt-bindings/clock/imx8-clock.h>
  135. dsp@596e8000 {
  136. compatible = "fsl,imx8qxp-dsp";
  137. reg = <0x596e8000 0x88000>;
  138. clocks = <&adma_lpcg IMX_ADMA_LPCG_DSP_IPG_CLK>,
  139. <&adma_lpcg IMX_ADMA_LPCG_OCRAM_IPG_CLK>,
  140. <&adma_lpcg IMX_ADMA_LPCG_DSP_CORE_CLK>;
  141. clock-names = "ipg", "ocram", "core";
  142. power-domains = <&pd IMX_SC_R_MU_13A>,
  143. <&pd IMX_SC_R_MU_13B>,
  144. <&pd IMX_SC_R_DSP>,
  145. <&pd IMX_SC_R_DSP_RAM>;
  146. mbox-names = "txdb0", "txdb1", "rxdb0", "rxdb1";
  147. mboxes = <&lsio_mu13 2 0>, <&lsio_mu13 2 1>, <&lsio_mu13 3 0>, <&lsio_mu13 3 1>;
  148. memory-region = <&dsp_reserved>;
  149. };
  150. - |
  151. #include <dt-bindings/clock/imx8mp-clock.h>
  152. dsp_reserved: dsp@92400000 {
  153. reg = <0x92400000 0x1000000>;
  154. no-map;
  155. };
  156. dsp_vdev0vring0: vdev0vring0@942f0000 {
  157. reg = <0x942f0000 0x8000>;
  158. no-map;
  159. };
  160. dsp_vdev0vring1: vdev0vring1@942f8000 {
  161. reg = <0x942f8000 0x8000>;
  162. no-map;
  163. };
  164. dsp_vdev0buffer: vdev0buffer@94300000 {
  165. compatible = "shared-dma-pool";
  166. reg = <0x94300000 0x100000>;
  167. no-map;
  168. };
  169. dsp: dsp@3b6e8000 {
  170. compatible = "fsl,imx8mp-hifi4";
  171. reg = <0x3b6e8000 0x88000>;
  172. clocks = <&audio_blk_ctrl IMX8MP_CLK_AUDIOMIX_DSP_ROOT>,
  173. <&audio_blk_ctrl IMX8MP_CLK_AUDIOMIX_OCRAMA_IPG>,
  174. <&audio_blk_ctrl IMX8MP_CLK_AUDIOMIX_DSP_ROOT>,
  175. <&audio_blk_ctrl IMX8MP_CLK_AUDIOMIX_DSPDBG_ROOT>;
  176. clock-names = "ipg", "ocram", "core", "debug";
  177. firmware-name = "imx/dsp/hifi4.bin";
  178. power-domains = <&audiomix_pd>;
  179. mbox-names = "tx", "rx", "rxdb";
  180. mboxes = <&mu2 0 0>,
  181. <&mu2 1 0>,
  182. <&mu2 3 0>;
  183. memory-region = <&dsp_vdev0buffer>, <&dsp_vdev0vring0>,
  184. <&dsp_vdev0vring1>, <&dsp_reserved>;
  185. fsl,dsp-ctrl = <&audio_blk_ctrl>;
  186. };