xref: /linux/Documentation/devicetree/bindings/dsp/fsl,dsp.yaml (revision 55d0969c451159cff86949b38c39171cab962069)
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
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,imx8qxp-hifi4
103    then:
104      properties:
105        power-domains:
106          minItems: 2
107          maxItems: 2
108
109  - if:
110      properties:
111        compatible:
112          contains:
113            enum:
114              - fsl,imx8qm-dsp
115              - fsl,imx8qm-hifi4
116    then:
117      properties:
118        power-domains:
119          minItems: 4
120
121  - if:
122      properties:
123        compatible:
124          contains:
125            enum:
126              - fsl,imx8mp-dsp
127              - fsl,imx8mp-hifi4
128              - fsl,imx8ulp-dsp
129              - fsl,imx8ulp-hifi4
130    then:
131      properties:
132        power-domains:
133          maxItems: 1
134
135  - if:
136      properties:
137        compatible:
138          contains:
139            enum:
140              - fsl,imx8qxp-hifi4
141              - fsl,imx8qm-hifi4
142              - fsl,imx8mp-hifi4
143              - fsl,imx8ulp-hifi4
144    then:
145      properties:
146        memory-region:
147          minItems: 4
148        mboxes:
149          maxItems: 3
150        mbox-names:
151          items:
152            - const: tx
153            - const: rx
154            - const: rxdb
155    else:
156      properties:
157        memory-region:
158          maxItems: 1
159        mboxes:
160          minItems: 4
161        mbox-names:
162          items:
163            - const: txdb0
164            - const: txdb1
165            - const: rxdb0
166            - const: rxdb1
167
168additionalProperties: false
169
170examples:
171  - |
172    #include <dt-bindings/firmware/imx/rsrc.h>
173    #include <dt-bindings/clock/imx8-clock.h>
174    dsp@596e8000 {
175        compatible = "fsl,imx8qxp-dsp";
176        reg = <0x596e8000 0x88000>;
177        clocks = <&adma_lpcg IMX_ADMA_LPCG_DSP_IPG_CLK>,
178                 <&adma_lpcg IMX_ADMA_LPCG_OCRAM_IPG_CLK>,
179                 <&adma_lpcg IMX_ADMA_LPCG_DSP_CORE_CLK>;
180        clock-names = "ipg", "ocram", "core";
181        power-domains = <&pd IMX_SC_R_MU_13B>,
182                        <&pd IMX_SC_R_MU_2A>;
183        mbox-names = "txdb0", "txdb1", "rxdb0", "rxdb1";
184        mboxes = <&lsio_mu13 2 0>, <&lsio_mu13 2 1>, <&lsio_mu13 3 0>, <&lsio_mu13 3 1>;
185        memory-region = <&dsp_reserved>;
186    };
187  - |
188    #include <dt-bindings/clock/imx8mp-clock.h>
189    dsp_reserved: dsp@92400000 {
190      reg = <0x92400000 0x1000000>;
191      no-map;
192    };
193    dsp_vdev0vring0: vdev0vring0@942f0000 {
194      reg = <0x942f0000 0x8000>;
195      no-map;
196    };
197    dsp_vdev0vring1: vdev0vring1@942f8000 {
198      reg = <0x942f8000 0x8000>;
199      no-map;
200    };
201    dsp_vdev0buffer: vdev0buffer@94300000 {
202      compatible = "shared-dma-pool";
203      reg = <0x94300000 0x100000>;
204      no-map;
205    };
206
207    dsp: dsp@3b6e8000 {
208      compatible = "fsl,imx8mp-hifi4";
209      reg = <0x3b6e8000 0x88000>;
210      clocks = <&audio_blk_ctrl IMX8MP_CLK_AUDIOMIX_DSP_ROOT>,
211               <&audio_blk_ctrl IMX8MP_CLK_AUDIOMIX_OCRAMA_IPG>,
212               <&audio_blk_ctrl IMX8MP_CLK_AUDIOMIX_DSP_ROOT>,
213               <&audio_blk_ctrl IMX8MP_CLK_AUDIOMIX_DSPDBG_ROOT>;
214      clock-names = "ipg", "ocram", "core", "debug";
215      firmware-name = "imx/dsp/hifi4.bin";
216      power-domains = <&audiomix_pd>;
217      mbox-names = "tx", "rx", "rxdb";
218      mboxes = <&mu2 0 0>,
219               <&mu2 1 0>,
220               <&mu2 3 0>;
221      memory-region = <&dsp_vdev0buffer>, <&dsp_vdev0vring0>,
222                      <&dsp_vdev0vring1>, <&dsp_reserved>;
223      fsl,dsp-ctrl = <&audio_blk_ctrl>;
224    };
225