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