162306a36Sopenharmony_ci# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
262306a36Sopenharmony_ci%YAML 1.2
362306a36Sopenharmony_ci---
462306a36Sopenharmony_ci$id: http://devicetree.org/schemas/dsp/fsl,dsp.yaml#
562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
662306a36Sopenharmony_ci
762306a36Sopenharmony_cititle: NXP i.MX8 DSP core
862306a36Sopenharmony_ci
962306a36Sopenharmony_cimaintainers:
1062306a36Sopenharmony_ci  - Daniel Baluta <daniel.baluta@nxp.com>
1162306a36Sopenharmony_ci  - Shengjiu Wang <shengjiu.wang@nxp.com>
1262306a36Sopenharmony_ci
1362306a36Sopenharmony_cidescription: |
1462306a36Sopenharmony_ci  Some boards from i.MX8 family contain a DSP core used for
1562306a36Sopenharmony_ci  advanced pre- and post- audio processing.
1662306a36Sopenharmony_ci
1762306a36Sopenharmony_ciproperties:
1862306a36Sopenharmony_ci  compatible:
1962306a36Sopenharmony_ci    enum:
2062306a36Sopenharmony_ci      - fsl,imx8qxp-dsp
2162306a36Sopenharmony_ci      - fsl,imx8qm-dsp
2262306a36Sopenharmony_ci      - fsl,imx8mp-dsp
2362306a36Sopenharmony_ci      - fsl,imx8ulp-dsp
2462306a36Sopenharmony_ci      - fsl,imx8qxp-hifi4
2562306a36Sopenharmony_ci      - fsl,imx8qm-hifi4
2662306a36Sopenharmony_ci      - fsl,imx8mp-hifi4
2762306a36Sopenharmony_ci      - fsl,imx8ulp-hifi4
2862306a36Sopenharmony_ci
2962306a36Sopenharmony_ci  reg:
3062306a36Sopenharmony_ci    maxItems: 1
3162306a36Sopenharmony_ci
3262306a36Sopenharmony_ci  clocks:
3362306a36Sopenharmony_ci    items:
3462306a36Sopenharmony_ci      - description: ipg clock
3562306a36Sopenharmony_ci      - description: ocram clock
3662306a36Sopenharmony_ci      - description: core clock
3762306a36Sopenharmony_ci      - description: debug interface clock
3862306a36Sopenharmony_ci      - description: message unit clock
3962306a36Sopenharmony_ci    minItems: 3
4062306a36Sopenharmony_ci
4162306a36Sopenharmony_ci  clock-names:
4262306a36Sopenharmony_ci    items:
4362306a36Sopenharmony_ci      - const: ipg
4462306a36Sopenharmony_ci      - const: ocram
4562306a36Sopenharmony_ci      - const: core
4662306a36Sopenharmony_ci      - const: debug
4762306a36Sopenharmony_ci      - const: mu
4862306a36Sopenharmony_ci    minItems: 3
4962306a36Sopenharmony_ci
5062306a36Sopenharmony_ci  power-domains:
5162306a36Sopenharmony_ci    description:
5262306a36Sopenharmony_ci      List of phandle and PM domain specifier as documented in
5362306a36Sopenharmony_ci      Documentation/devicetree/bindings/power/power_domain.txt
5462306a36Sopenharmony_ci    minItems: 1
5562306a36Sopenharmony_ci    maxItems: 4
5662306a36Sopenharmony_ci
5762306a36Sopenharmony_ci  mboxes:
5862306a36Sopenharmony_ci    description:
5962306a36Sopenharmony_ci      List of <&phandle type channel> - 2 channels for TXDB, 2 channels for RXDB
6062306a36Sopenharmony_ci      or - 1 channel for TX, 1 channel for RX, 1 channel for RXDB
6162306a36Sopenharmony_ci      (see mailbox/fsl,mu.txt)
6262306a36Sopenharmony_ci    minItems: 3
6362306a36Sopenharmony_ci    maxItems: 4
6462306a36Sopenharmony_ci
6562306a36Sopenharmony_ci  mbox-names:
6662306a36Sopenharmony_ci    minItems: 3
6762306a36Sopenharmony_ci    maxItems: 4
6862306a36Sopenharmony_ci
6962306a36Sopenharmony_ci  memory-region:
7062306a36Sopenharmony_ci    description:
7162306a36Sopenharmony_ci      phandle to a node describing reserved memory (System RAM memory)
7262306a36Sopenharmony_ci      used by DSP (see bindings/reserved-memory/reserved-memory.txt)
7362306a36Sopenharmony_ci    minItems: 1
7462306a36Sopenharmony_ci    maxItems: 4
7562306a36Sopenharmony_ci
7662306a36Sopenharmony_ci  firmware-name:
7762306a36Sopenharmony_ci    description: |
7862306a36Sopenharmony_ci      Default name of the firmware to load to the remote processor.
7962306a36Sopenharmony_ci
8062306a36Sopenharmony_ci  fsl,dsp-ctrl:
8162306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/phandle
8262306a36Sopenharmony_ci    description:
8362306a36Sopenharmony_ci      Phandle to syscon block which provide access for processor enablement
8462306a36Sopenharmony_ci
8562306a36Sopenharmony_cirequired:
8662306a36Sopenharmony_ci  - compatible
8762306a36Sopenharmony_ci  - reg
8862306a36Sopenharmony_ci  - clocks
8962306a36Sopenharmony_ci  - clock-names
9062306a36Sopenharmony_ci  - power-domains
9162306a36Sopenharmony_ci  - mboxes
9262306a36Sopenharmony_ci  - mbox-names
9362306a36Sopenharmony_ci  - memory-region
9462306a36Sopenharmony_ci
9562306a36Sopenharmony_ciallOf:
9662306a36Sopenharmony_ci  - if:
9762306a36Sopenharmony_ci      properties:
9862306a36Sopenharmony_ci        compatible:
9962306a36Sopenharmony_ci          contains:
10062306a36Sopenharmony_ci            enum:
10162306a36Sopenharmony_ci              - fsl,imx8qxp-dsp
10262306a36Sopenharmony_ci              - fsl,imx8qm-dsp
10362306a36Sopenharmony_ci              - fsl,imx8qxp-hifi4
10462306a36Sopenharmony_ci              - fsl,imx8qm-hifi4
10562306a36Sopenharmony_ci    then:
10662306a36Sopenharmony_ci      properties:
10762306a36Sopenharmony_ci        power-domains:
10862306a36Sopenharmony_ci          minItems: 4
10962306a36Sopenharmony_ci    else:
11062306a36Sopenharmony_ci      properties:
11162306a36Sopenharmony_ci        power-domains:
11262306a36Sopenharmony_ci          maxItems: 1
11362306a36Sopenharmony_ci
11462306a36Sopenharmony_ci  - if:
11562306a36Sopenharmony_ci      properties:
11662306a36Sopenharmony_ci        compatible:
11762306a36Sopenharmony_ci          contains:
11862306a36Sopenharmony_ci            enum:
11962306a36Sopenharmony_ci              - fsl,imx8qxp-hifi4
12062306a36Sopenharmony_ci              - fsl,imx8qm-hifi4
12162306a36Sopenharmony_ci              - fsl,imx8mp-hifi4
12262306a36Sopenharmony_ci              - fsl,imx8ulp-hifi4
12362306a36Sopenharmony_ci    then:
12462306a36Sopenharmony_ci      properties:
12562306a36Sopenharmony_ci        memory-region:
12662306a36Sopenharmony_ci          minItems: 4
12762306a36Sopenharmony_ci        mboxes:
12862306a36Sopenharmony_ci          maxItems: 3
12962306a36Sopenharmony_ci        mbox-names:
13062306a36Sopenharmony_ci          items:
13162306a36Sopenharmony_ci            - const: tx
13262306a36Sopenharmony_ci            - const: rx
13362306a36Sopenharmony_ci            - const: rxdb
13462306a36Sopenharmony_ci    else:
13562306a36Sopenharmony_ci      properties:
13662306a36Sopenharmony_ci        memory-region:
13762306a36Sopenharmony_ci          maxItems: 1
13862306a36Sopenharmony_ci        mboxes:
13962306a36Sopenharmony_ci          minItems: 4
14062306a36Sopenharmony_ci        mbox-names:
14162306a36Sopenharmony_ci          items:
14262306a36Sopenharmony_ci            - const: txdb0
14362306a36Sopenharmony_ci            - const: txdb1
14462306a36Sopenharmony_ci            - const: rxdb0
14562306a36Sopenharmony_ci            - const: rxdb1
14662306a36Sopenharmony_ci
14762306a36Sopenharmony_ciadditionalProperties: false
14862306a36Sopenharmony_ci
14962306a36Sopenharmony_ciexamples:
15062306a36Sopenharmony_ci  - |
15162306a36Sopenharmony_ci    #include <dt-bindings/firmware/imx/rsrc.h>
15262306a36Sopenharmony_ci    #include <dt-bindings/clock/imx8-clock.h>
15362306a36Sopenharmony_ci    dsp@596e8000 {
15462306a36Sopenharmony_ci        compatible = "fsl,imx8qxp-dsp";
15562306a36Sopenharmony_ci        reg = <0x596e8000 0x88000>;
15662306a36Sopenharmony_ci        clocks = <&adma_lpcg IMX_ADMA_LPCG_DSP_IPG_CLK>,
15762306a36Sopenharmony_ci                 <&adma_lpcg IMX_ADMA_LPCG_OCRAM_IPG_CLK>,
15862306a36Sopenharmony_ci                 <&adma_lpcg IMX_ADMA_LPCG_DSP_CORE_CLK>;
15962306a36Sopenharmony_ci        clock-names = "ipg", "ocram", "core";
16062306a36Sopenharmony_ci        power-domains = <&pd IMX_SC_R_MU_13A>,
16162306a36Sopenharmony_ci                        <&pd IMX_SC_R_MU_13B>,
16262306a36Sopenharmony_ci                        <&pd IMX_SC_R_DSP>,
16362306a36Sopenharmony_ci                        <&pd IMX_SC_R_DSP_RAM>;
16462306a36Sopenharmony_ci        mbox-names = "txdb0", "txdb1", "rxdb0", "rxdb1";
16562306a36Sopenharmony_ci        mboxes = <&lsio_mu13 2 0>, <&lsio_mu13 2 1>, <&lsio_mu13 3 0>, <&lsio_mu13 3 1>;
16662306a36Sopenharmony_ci        memory-region = <&dsp_reserved>;
16762306a36Sopenharmony_ci    };
16862306a36Sopenharmony_ci  - |
16962306a36Sopenharmony_ci    #include <dt-bindings/clock/imx8mp-clock.h>
17062306a36Sopenharmony_ci    dsp_reserved: dsp@92400000 {
17162306a36Sopenharmony_ci      reg = <0x92400000 0x1000000>;
17262306a36Sopenharmony_ci      no-map;
17362306a36Sopenharmony_ci    };
17462306a36Sopenharmony_ci    dsp_vdev0vring0: vdev0vring0@942f0000 {
17562306a36Sopenharmony_ci      reg = <0x942f0000 0x8000>;
17662306a36Sopenharmony_ci      no-map;
17762306a36Sopenharmony_ci    };
17862306a36Sopenharmony_ci    dsp_vdev0vring1: vdev0vring1@942f8000 {
17962306a36Sopenharmony_ci      reg = <0x942f8000 0x8000>;
18062306a36Sopenharmony_ci      no-map;
18162306a36Sopenharmony_ci    };
18262306a36Sopenharmony_ci    dsp_vdev0buffer: vdev0buffer@94300000 {
18362306a36Sopenharmony_ci      compatible = "shared-dma-pool";
18462306a36Sopenharmony_ci      reg = <0x94300000 0x100000>;
18562306a36Sopenharmony_ci      no-map;
18662306a36Sopenharmony_ci    };
18762306a36Sopenharmony_ci
18862306a36Sopenharmony_ci    dsp: dsp@3b6e8000 {
18962306a36Sopenharmony_ci      compatible = "fsl,imx8mp-hifi4";
19062306a36Sopenharmony_ci      reg = <0x3b6e8000 0x88000>;
19162306a36Sopenharmony_ci      clocks = <&audio_blk_ctrl IMX8MP_CLK_AUDIOMIX_DSP_ROOT>,
19262306a36Sopenharmony_ci               <&audio_blk_ctrl IMX8MP_CLK_AUDIOMIX_OCRAMA_IPG>,
19362306a36Sopenharmony_ci               <&audio_blk_ctrl IMX8MP_CLK_AUDIOMIX_DSP_ROOT>,
19462306a36Sopenharmony_ci               <&audio_blk_ctrl IMX8MP_CLK_AUDIOMIX_DSPDBG_ROOT>;
19562306a36Sopenharmony_ci      clock-names = "ipg", "ocram", "core", "debug";
19662306a36Sopenharmony_ci      firmware-name = "imx/dsp/hifi4.bin";
19762306a36Sopenharmony_ci      power-domains = <&audiomix_pd>;
19862306a36Sopenharmony_ci      mbox-names = "tx", "rx", "rxdb";
19962306a36Sopenharmony_ci      mboxes = <&mu2 0 0>,
20062306a36Sopenharmony_ci               <&mu2 1 0>,
20162306a36Sopenharmony_ci               <&mu2 3 0>;
20262306a36Sopenharmony_ci      memory-region = <&dsp_vdev0buffer>, <&dsp_vdev0vring0>,
20362306a36Sopenharmony_ci                      <&dsp_vdev0vring1>, <&dsp_reserved>;
20462306a36Sopenharmony_ci      fsl,dsp-ctrl = <&audio_blk_ctrl>;
20562306a36Sopenharmony_ci    };
206