xref: /linux/Documentation/devicetree/bindings/sound/fsl,rpmsg.yaml (revision 143f8c69a27f3fa8ed30c7f6790ea039fff57cfe)
149c6bf62SShengjiu Wang# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
249c6bf62SShengjiu Wang%YAML 1.2
349c6bf62SShengjiu Wang---
449c6bf62SShengjiu Wang$id: http://devicetree.org/schemas/sound/fsl,rpmsg.yaml#
549c6bf62SShengjiu Wang$schema: http://devicetree.org/meta-schemas/core.yaml#
649c6bf62SShengjiu Wang
749c6bf62SShengjiu Wangtitle: NXP Audio RPMSG CPU DAI Controller
849c6bf62SShengjiu Wang
949c6bf62SShengjiu Wangmaintainers:
1049c6bf62SShengjiu Wang  - Shengjiu Wang <shengjiu.wang@nxp.com>
1149c6bf62SShengjiu Wang
1249c6bf62SShengjiu Wangdescription: |
1349c6bf62SShengjiu Wang  fsl_rpmsg is a virtual audio device. Mapping to real hardware devices
143570e687SChancel Liu  are SAI, MICFIL, DMA controlled by Cortex M core. What we see from
153570e687SChancel Liu  Linux side is a device which provides audio service by rpmsg channel.
163570e687SChancel Liu  We can create different sound cards which access different hardwares
173570e687SChancel Liu  such as SAI, MICFIL, .etc through building rpmsg channels between
183570e687SChancel Liu  Cortex-A and Cortex-M.
1949c6bf62SShengjiu Wang
2049c6bf62SShengjiu Wangproperties:
2149c6bf62SShengjiu Wang  compatible:
2249c6bf62SShengjiu Wang    enum:
2349c6bf62SShengjiu Wang      - fsl,imx7ulp-rpmsg-audio
2449c6bf62SShengjiu Wang      - fsl,imx8mn-rpmsg-audio
2549c6bf62SShengjiu Wang      - fsl,imx8mm-rpmsg-audio
2649c6bf62SShengjiu Wang      - fsl,imx8mp-rpmsg-audio
274f89ff02SShengjiu Wang      - fsl,imx8ulp-rpmsg-audio
28*143f8c69SChancel Liu      - fsl,imx93-rpmsg-audio
2949c6bf62SShengjiu Wang
3049c6bf62SShengjiu Wang  model:
3149c6bf62SShengjiu Wang    $ref: /schemas/types.yaml#/definitions/string
3249c6bf62SShengjiu Wang    description: User specified audio sound card name
3349c6bf62SShengjiu Wang
3449c6bf62SShengjiu Wang  clocks:
3549c6bf62SShengjiu Wang    items:
3649c6bf62SShengjiu Wang      - description: Peripheral clock for register access
3749c6bf62SShengjiu Wang      - description: Master clock
3849c6bf62SShengjiu Wang      - description: DMA clock for DMA register access
3949c6bf62SShengjiu Wang      - description: Parent clock for multiple of 8kHz sample rates
4049c6bf62SShengjiu Wang      - description: Parent clock for multiple of 11kHz sample rates
4149c6bf62SShengjiu Wang
4249c6bf62SShengjiu Wang  clock-names:
4349c6bf62SShengjiu Wang    items:
4449c6bf62SShengjiu Wang      - const: ipg
4549c6bf62SShengjiu Wang      - const: mclk
4649c6bf62SShengjiu Wang      - const: dma
4749c6bf62SShengjiu Wang      - const: pll8k
4849c6bf62SShengjiu Wang      - const: pll11k
4949c6bf62SShengjiu Wang
5049c6bf62SShengjiu Wang  power-domains:
5149c6bf62SShengjiu Wang    description:
5249c6bf62SShengjiu Wang      List of phandle and PM domain specifier as documented in
5349c6bf62SShengjiu Wang      Documentation/devicetree/bindings/power/power_domain.txt
5449c6bf62SShengjiu Wang    maxItems: 1
5549c6bf62SShengjiu Wang
5649c6bf62SShengjiu Wang  memory-region:
57c1761159SRob Herring    maxItems: 1
5849c6bf62SShengjiu Wang    description:
5949c6bf62SShengjiu Wang      phandle to a node describing reserved memory (System RAM memory)
6049c6bf62SShengjiu Wang      The M core can't access all the DDR memory space on some platform,
6149c6bf62SShengjiu Wang      So reserved a specific memory for dma buffer which M core can
6249c6bf62SShengjiu Wang      access.
6349c6bf62SShengjiu Wang      (see bindings/reserved-memory/reserved-memory.txt)
6449c6bf62SShengjiu Wang
6549c6bf62SShengjiu Wang  audio-codec:
6649c6bf62SShengjiu Wang    $ref: /schemas/types.yaml#/definitions/phandle
6749c6bf62SShengjiu Wang    description: The phandle to a node of audio codec
6849c6bf62SShengjiu Wang
6949c6bf62SShengjiu Wang  audio-routing:
7049c6bf62SShengjiu Wang    $ref: /schemas/types.yaml#/definitions/non-unique-string-array
7149c6bf62SShengjiu Wang    description: |
7249c6bf62SShengjiu Wang      A list of the connections between audio components. Each entry is a
7349c6bf62SShengjiu Wang      pair of strings, the first being the connection's sink, the second
7449c6bf62SShengjiu Wang      being the connection's source.
7549c6bf62SShengjiu Wang
7649c6bf62SShengjiu Wang  fsl,enable-lpa:
7749c6bf62SShengjiu Wang    $ref: /schemas/types.yaml#/definitions/flag
7849c6bf62SShengjiu Wang    description: enable low power audio path.
7949c6bf62SShengjiu Wang
8049c6bf62SShengjiu Wang  fsl,rpmsg-out:
8149c6bf62SShengjiu Wang    $ref: /schemas/types.yaml#/definitions/flag
8249c6bf62SShengjiu Wang    description: |
8349c6bf62SShengjiu Wang      This is a boolean property. If present, the transmitting function
8449c6bf62SShengjiu Wang      will be enabled.
8549c6bf62SShengjiu Wang
8649c6bf62SShengjiu Wang  fsl,rpmsg-in:
8749c6bf62SShengjiu Wang    $ref: /schemas/types.yaml#/definitions/flag
8849c6bf62SShengjiu Wang    description: |
8949c6bf62SShengjiu Wang      This is a boolean property. If present, the receiving function
9049c6bf62SShengjiu Wang      will be enabled.
9149c6bf62SShengjiu Wang
923570e687SChancel Liu  fsl,rpmsg-channel-name:
933570e687SChancel Liu    $ref: /schemas/types.yaml#/definitions/string
943570e687SChancel Liu    description: |
953570e687SChancel Liu      A string property to assign rpmsg channel this sound card sits on.
963570e687SChancel Liu      This property can be omitted if there is only one sound card and it sits
973570e687SChancel Liu      on "rpmsg-audio-channel".
983570e687SChancel Liu    enum:
993570e687SChancel Liu      - rpmsg-audio-channel
1003570e687SChancel Liu      - rpmsg-micfil-channel
1013570e687SChancel Liu
10249c6bf62SShengjiu Wangrequired:
10349c6bf62SShengjiu Wang  - compatible
10449c6bf62SShengjiu Wang  - model
10549c6bf62SShengjiu Wang
10649c6bf62SShengjiu WangadditionalProperties: false
10749c6bf62SShengjiu Wang
10849c6bf62SShengjiu Wangexamples:
10949c6bf62SShengjiu Wang  - |
11049c6bf62SShengjiu Wang    #include <dt-bindings/clock/imx8mn-clock.h>
11149c6bf62SShengjiu Wang
11249c6bf62SShengjiu Wang    rpmsg_audio: rpmsg_audio {
11349c6bf62SShengjiu Wang        compatible = "fsl,imx8mn-rpmsg-audio";
11449c6bf62SShengjiu Wang        model = "wm8524-audio";
11549c6bf62SShengjiu Wang        fsl,enable-lpa;
11649c6bf62SShengjiu Wang        fsl,rpmsg-out;
11749c6bf62SShengjiu Wang        clocks = <&clk IMX8MN_CLK_SAI3_IPG>,
11849c6bf62SShengjiu Wang                 <&clk IMX8MN_CLK_SAI3_ROOT>,
11949c6bf62SShengjiu Wang                 <&clk IMX8MN_CLK_SDMA3_ROOT>,
12049c6bf62SShengjiu Wang                 <&clk IMX8MN_AUDIO_PLL1_OUT>,
12149c6bf62SShengjiu Wang                 <&clk IMX8MN_AUDIO_PLL2_OUT>;
12249c6bf62SShengjiu Wang        clock-names = "ipg", "mclk", "dma", "pll8k", "pll11k";
12349c6bf62SShengjiu Wang    };
1243570e687SChancel Liu
1253570e687SChancel Liu  - |
1263570e687SChancel Liu    #include <dt-bindings/clock/imx8mm-clock.h>
1273570e687SChancel Liu
1283570e687SChancel Liu    rpmsg_micfil: audio-controller {
1293570e687SChancel Liu        compatible = "fsl,imx8mm-rpmsg-audio";
1303570e687SChancel Liu        model = "micfil-audio";
1313570e687SChancel Liu        fsl,rpmsg-channel-name = "rpmsg-micfil-channel";
1323570e687SChancel Liu        fsl,enable-lpa;
1333570e687SChancel Liu        fsl,rpmsg-in;
1343570e687SChancel Liu        clocks = <&clk IMX8MM_CLK_PDM_IPG>,
1353570e687SChancel Liu                 <&clk IMX8MM_CLK_PDM_ROOT>,
1363570e687SChancel Liu                 <&clk IMX8MM_CLK_SDMA3_ROOT>,
1373570e687SChancel Liu                 <&clk IMX8MM_AUDIO_PLL1_OUT>,
1383570e687SChancel Liu                 <&clk IMX8MM_AUDIO_PLL2_OUT>;
1393570e687SChancel Liu        clock-names = "ipg", "mclk", "dma", "pll8k", "pll11k";
1403570e687SChancel Liu    };
1413570e687SChancel Liu
1423570e687SChancel Liu...
143