xref: /freebsd/sys/contrib/device-tree/Bindings/dsp/fsl,dsp.yaml (revision 7ef62cebc2f965b0f640263e179276928885e33d)
1c66ec88fSEmmanuel Vadot# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
2c66ec88fSEmmanuel Vadot%YAML 1.2
3c66ec88fSEmmanuel Vadot---
4c66ec88fSEmmanuel Vadot$id: http://devicetree.org/schemas/dsp/fsl,dsp.yaml#
5c66ec88fSEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml#
6c66ec88fSEmmanuel Vadot
7c66ec88fSEmmanuel Vadottitle: NXP i.MX8 DSP core
8c66ec88fSEmmanuel Vadot
9c66ec88fSEmmanuel Vadotmaintainers:
10c66ec88fSEmmanuel Vadot  - Daniel Baluta <daniel.baluta@nxp.com>
118cc087a1SEmmanuel Vadot  - Shengjiu Wang <shengjiu.wang@nxp.com>
12c66ec88fSEmmanuel Vadot
13c66ec88fSEmmanuel Vadotdescription: |
14c66ec88fSEmmanuel Vadot  Some boards from i.MX8 family contain a DSP core used for
15c66ec88fSEmmanuel Vadot  advanced pre- and post- audio processing.
16c66ec88fSEmmanuel Vadot
17c66ec88fSEmmanuel Vadotproperties:
18c66ec88fSEmmanuel Vadot  compatible:
19c66ec88fSEmmanuel Vadot    enum:
20c66ec88fSEmmanuel Vadot      - fsl,imx8qxp-dsp
21c66ec88fSEmmanuel Vadot      - fsl,imx8qm-dsp
22c66ec88fSEmmanuel Vadot      - fsl,imx8mp-dsp
23*7ef62cebSEmmanuel Vadot      - fsl,imx8ulp-dsp
248cc087a1SEmmanuel Vadot      - fsl,imx8qxp-hifi4
258cc087a1SEmmanuel Vadot      - fsl,imx8qm-hifi4
268cc087a1SEmmanuel Vadot      - fsl,imx8mp-hifi4
278cc087a1SEmmanuel Vadot      - fsl,imx8ulp-hifi4
28c66ec88fSEmmanuel Vadot
29c66ec88fSEmmanuel Vadot  reg:
305def4c47SEmmanuel Vadot    maxItems: 1
31c66ec88fSEmmanuel Vadot
32c66ec88fSEmmanuel Vadot  clocks:
33c66ec88fSEmmanuel Vadot    items:
34c66ec88fSEmmanuel Vadot      - description: ipg clock
35c66ec88fSEmmanuel Vadot      - description: ocram clock
36c66ec88fSEmmanuel Vadot      - description: core clock
378cc087a1SEmmanuel Vadot      - description: debug interface clock
388cc087a1SEmmanuel Vadot      - description: message unit clock
398cc087a1SEmmanuel Vadot    minItems: 3
40c66ec88fSEmmanuel Vadot
41c66ec88fSEmmanuel Vadot  clock-names:
42c66ec88fSEmmanuel Vadot    items:
43c66ec88fSEmmanuel Vadot      - const: ipg
44c66ec88fSEmmanuel Vadot      - const: ocram
45c66ec88fSEmmanuel Vadot      - const: core
468cc087a1SEmmanuel Vadot      - const: debug
478cc087a1SEmmanuel Vadot      - const: mu
488cc087a1SEmmanuel Vadot    minItems: 3
49c66ec88fSEmmanuel Vadot
50c66ec88fSEmmanuel Vadot  power-domains:
51c66ec88fSEmmanuel Vadot    description:
52c66ec88fSEmmanuel Vadot      List of phandle and PM domain specifier as documented in
53c66ec88fSEmmanuel Vadot      Documentation/devicetree/bindings/power/power_domain.txt
548cc087a1SEmmanuel Vadot    minItems: 1
55c66ec88fSEmmanuel Vadot    maxItems: 4
56c66ec88fSEmmanuel Vadot
57c66ec88fSEmmanuel Vadot  mboxes:
58c66ec88fSEmmanuel Vadot    description:
59c66ec88fSEmmanuel Vadot      List of <&phandle type channel> - 2 channels for TXDB, 2 channels for RXDB
608cc087a1SEmmanuel Vadot      or - 1 channel for TX, 1 channel for RX, 1 channel for RXDB
61c66ec88fSEmmanuel Vadot      (see mailbox/fsl,mu.txt)
628cc087a1SEmmanuel Vadot    minItems: 3
63c66ec88fSEmmanuel Vadot    maxItems: 4
64c66ec88fSEmmanuel Vadot
65c66ec88fSEmmanuel Vadot  mbox-names:
668cc087a1SEmmanuel Vadot    minItems: 3
678cc087a1SEmmanuel Vadot    maxItems: 4
68c66ec88fSEmmanuel Vadot
69c66ec88fSEmmanuel Vadot  memory-region:
70c66ec88fSEmmanuel Vadot    description:
71c66ec88fSEmmanuel Vadot      phandle to a node describing reserved memory (System RAM memory)
72c66ec88fSEmmanuel Vadot      used by DSP (see bindings/reserved-memory/reserved-memory.txt)
738cc087a1SEmmanuel Vadot    minItems: 1
748cc087a1SEmmanuel Vadot    maxItems: 4
758cc087a1SEmmanuel Vadot
768cc087a1SEmmanuel Vadot  firmware-name:
778cc087a1SEmmanuel Vadot    description: |
788cc087a1SEmmanuel Vadot      Default name of the firmware to load to the remote processor.
798cc087a1SEmmanuel Vadot
808cc087a1SEmmanuel Vadot  fsl,dsp-ctrl:
818cc087a1SEmmanuel Vadot    $ref: /schemas/types.yaml#/definitions/phandle
828cc087a1SEmmanuel Vadot    description:
838cc087a1SEmmanuel Vadot      Phandle to syscon block which provide access for processor enablement
84c66ec88fSEmmanuel Vadot
85c66ec88fSEmmanuel Vadotrequired:
86c66ec88fSEmmanuel Vadot  - compatible
87c66ec88fSEmmanuel Vadot  - reg
88c66ec88fSEmmanuel Vadot  - clocks
89c66ec88fSEmmanuel Vadot  - clock-names
90c66ec88fSEmmanuel Vadot  - power-domains
91c66ec88fSEmmanuel Vadot  - mboxes
92c66ec88fSEmmanuel Vadot  - mbox-names
93c66ec88fSEmmanuel Vadot  - memory-region
94c66ec88fSEmmanuel Vadot
958cc087a1SEmmanuel VadotallOf:
968cc087a1SEmmanuel Vadot  - if:
978cc087a1SEmmanuel Vadot      properties:
988cc087a1SEmmanuel Vadot        compatible:
998cc087a1SEmmanuel Vadot          contains:
1008cc087a1SEmmanuel Vadot            enum:
1018cc087a1SEmmanuel Vadot              - fsl,imx8qxp-dsp
1028cc087a1SEmmanuel Vadot              - fsl,imx8qm-dsp
1038cc087a1SEmmanuel Vadot              - fsl,imx8qxp-hifi4
1048cc087a1SEmmanuel Vadot              - fsl,imx8qm-hifi4
1058cc087a1SEmmanuel Vadot    then:
1068cc087a1SEmmanuel Vadot      properties:
1078cc087a1SEmmanuel Vadot        power-domains:
1088cc087a1SEmmanuel Vadot          minItems: 4
1098cc087a1SEmmanuel Vadot    else:
1108cc087a1SEmmanuel Vadot      properties:
1118cc087a1SEmmanuel Vadot        power-domains:
1128cc087a1SEmmanuel Vadot          maxItems: 1
1138cc087a1SEmmanuel Vadot
1148cc087a1SEmmanuel Vadot  - if:
1158cc087a1SEmmanuel Vadot      properties:
1168cc087a1SEmmanuel Vadot        compatible:
1178cc087a1SEmmanuel Vadot          contains:
1188cc087a1SEmmanuel Vadot            enum:
1198cc087a1SEmmanuel Vadot              - fsl,imx8qxp-hifi4
1208cc087a1SEmmanuel Vadot              - fsl,imx8qm-hifi4
1218cc087a1SEmmanuel Vadot              - fsl,imx8mp-hifi4
1228cc087a1SEmmanuel Vadot              - fsl,imx8ulp-hifi4
1238cc087a1SEmmanuel Vadot    then:
1248cc087a1SEmmanuel Vadot      properties:
1258cc087a1SEmmanuel Vadot        memory-region:
1268cc087a1SEmmanuel Vadot          minItems: 4
1278cc087a1SEmmanuel Vadot        mboxes:
1288cc087a1SEmmanuel Vadot          maxItems: 3
1298cc087a1SEmmanuel Vadot        mbox-names:
1308cc087a1SEmmanuel Vadot          items:
1318cc087a1SEmmanuel Vadot            - const: tx
1328cc087a1SEmmanuel Vadot            - const: rx
1338cc087a1SEmmanuel Vadot            - const: rxdb
1348cc087a1SEmmanuel Vadot    else:
1358cc087a1SEmmanuel Vadot      properties:
1368cc087a1SEmmanuel Vadot        memory-region:
1378cc087a1SEmmanuel Vadot          maxItems: 1
1388cc087a1SEmmanuel Vadot        mboxes:
1398cc087a1SEmmanuel Vadot          minItems: 4
1408cc087a1SEmmanuel Vadot        mbox-names:
1418cc087a1SEmmanuel Vadot          items:
1428cc087a1SEmmanuel Vadot            - const: txdb0
1438cc087a1SEmmanuel Vadot            - const: txdb1
1448cc087a1SEmmanuel Vadot            - const: rxdb0
1458cc087a1SEmmanuel Vadot            - const: rxdb1
1468cc087a1SEmmanuel Vadot
147c66ec88fSEmmanuel VadotadditionalProperties: false
148c66ec88fSEmmanuel Vadot
149c66ec88fSEmmanuel Vadotexamples:
150c66ec88fSEmmanuel Vadot  - |
151c66ec88fSEmmanuel Vadot    #include <dt-bindings/firmware/imx/rsrc.h>
152c66ec88fSEmmanuel Vadot    #include <dt-bindings/clock/imx8-clock.h>
153c66ec88fSEmmanuel Vadot    dsp@596e8000 {
154c66ec88fSEmmanuel Vadot        compatible = "fsl,imx8qxp-dsp";
155c66ec88fSEmmanuel Vadot        reg = <0x596e8000 0x88000>;
156c66ec88fSEmmanuel Vadot        clocks = <&adma_lpcg IMX_ADMA_LPCG_DSP_IPG_CLK>,
157c66ec88fSEmmanuel Vadot                 <&adma_lpcg IMX_ADMA_LPCG_OCRAM_IPG_CLK>,
158c66ec88fSEmmanuel Vadot                 <&adma_lpcg IMX_ADMA_LPCG_DSP_CORE_CLK>;
159c66ec88fSEmmanuel Vadot        clock-names = "ipg", "ocram", "core";
160c66ec88fSEmmanuel Vadot        power-domains = <&pd IMX_SC_R_MU_13A>,
161c66ec88fSEmmanuel Vadot                        <&pd IMX_SC_R_MU_13B>,
162c66ec88fSEmmanuel Vadot                        <&pd IMX_SC_R_DSP>,
163c66ec88fSEmmanuel Vadot                        <&pd IMX_SC_R_DSP_RAM>;
164c66ec88fSEmmanuel Vadot        mbox-names = "txdb0", "txdb1", "rxdb0", "rxdb1";
165c66ec88fSEmmanuel Vadot        mboxes = <&lsio_mu13 2 0>, <&lsio_mu13 2 1>, <&lsio_mu13 3 0>, <&lsio_mu13 3 1>;
166c66ec88fSEmmanuel Vadot        memory-region = <&dsp_reserved>;
167c66ec88fSEmmanuel Vadot    };
1688cc087a1SEmmanuel Vadot  - |
1698cc087a1SEmmanuel Vadot    #include <dt-bindings/clock/imx8mp-clock.h>
1708cc087a1SEmmanuel Vadot    dsp_reserved: dsp@92400000 {
1718cc087a1SEmmanuel Vadot      reg = <0x92400000 0x1000000>;
1728cc087a1SEmmanuel Vadot      no-map;
1738cc087a1SEmmanuel Vadot    };
1748cc087a1SEmmanuel Vadot    dsp_vdev0vring0: vdev0vring0@942f0000 {
1758cc087a1SEmmanuel Vadot      reg = <0x942f0000 0x8000>;
1768cc087a1SEmmanuel Vadot      no-map;
1778cc087a1SEmmanuel Vadot    };
1788cc087a1SEmmanuel Vadot    dsp_vdev0vring1: vdev0vring1@942f8000 {
1798cc087a1SEmmanuel Vadot      reg = <0x942f8000 0x8000>;
1808cc087a1SEmmanuel Vadot      no-map;
1818cc087a1SEmmanuel Vadot    };
1828cc087a1SEmmanuel Vadot    dsp_vdev0buffer: vdev0buffer@94300000 {
1838cc087a1SEmmanuel Vadot      compatible = "shared-dma-pool";
1848cc087a1SEmmanuel Vadot      reg = <0x94300000 0x100000>;
1858cc087a1SEmmanuel Vadot      no-map;
1868cc087a1SEmmanuel Vadot    };
1878cc087a1SEmmanuel Vadot
1888cc087a1SEmmanuel Vadot    dsp: dsp@3b6e8000 {
1898cc087a1SEmmanuel Vadot      compatible = "fsl,imx8mp-hifi4";
1908cc087a1SEmmanuel Vadot      reg = <0x3b6e8000 0x88000>;
1918cc087a1SEmmanuel Vadot      clocks = <&audio_blk_ctrl IMX8MP_CLK_AUDIOMIX_DSP_ROOT>,
1928cc087a1SEmmanuel Vadot               <&audio_blk_ctrl IMX8MP_CLK_AUDIOMIX_OCRAMA_IPG>,
1938cc087a1SEmmanuel Vadot               <&audio_blk_ctrl IMX8MP_CLK_AUDIOMIX_DSP_ROOT>,
1948cc087a1SEmmanuel Vadot               <&audio_blk_ctrl IMX8MP_CLK_AUDIOMIX_DSPDBG_ROOT>;
1958cc087a1SEmmanuel Vadot      clock-names = "ipg", "ocram", "core", "debug";
1968cc087a1SEmmanuel Vadot      firmware-name = "imx/dsp/hifi4.bin";
1978cc087a1SEmmanuel Vadot      power-domains = <&audiomix_pd>;
1988cc087a1SEmmanuel Vadot      mbox-names = "tx", "rx", "rxdb";
1998cc087a1SEmmanuel Vadot      mboxes = <&mu2 0 0>,
2008cc087a1SEmmanuel Vadot               <&mu2 1 0>,
2018cc087a1SEmmanuel Vadot               <&mu2 3 0>;
2028cc087a1SEmmanuel Vadot      memory-region = <&dsp_vdev0buffer>, <&dsp_vdev0vring0>,
2038cc087a1SEmmanuel Vadot                      <&dsp_vdev0vring1>, <&dsp_reserved>;
2048cc087a1SEmmanuel Vadot      fsl,dsp-ctrl = <&audio_blk_ctrl>;
2058cc087a1SEmmanuel Vadot    };
206