xref: /linux/Documentation/devicetree/bindings/sound/fsl,rpmsg.yaml (revision a1ff5a7d78a036d6c2178ee5acd6ba4946243800)
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
20a06ce12eSKrzysztof KozlowskiallOf:
21a06ce12eSKrzysztof Kozlowski  - $ref: sound-card-common.yaml#
22a06ce12eSKrzysztof Kozlowski
2349c6bf62SShengjiu Wangproperties:
2449c6bf62SShengjiu Wang  compatible:
2549c6bf62SShengjiu Wang    enum:
2649c6bf62SShengjiu Wang      - fsl,imx7ulp-rpmsg-audio
2749c6bf62SShengjiu Wang      - fsl,imx8mn-rpmsg-audio
2849c6bf62SShengjiu Wang      - fsl,imx8mm-rpmsg-audio
2949c6bf62SShengjiu Wang      - fsl,imx8mp-rpmsg-audio
304f89ff02SShengjiu Wang      - fsl,imx8ulp-rpmsg-audio
31143f8c69SChancel Liu      - fsl,imx93-rpmsg-audio
32*8e5c1196SChancel Liu      - fsl,imx95-rpmsg-audio
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  fsl,enable-lpa:
7049c6bf62SShengjiu Wang    $ref: /schemas/types.yaml#/definitions/flag
7149c6bf62SShengjiu Wang    description: enable low power audio path.
7249c6bf62SShengjiu Wang
7349c6bf62SShengjiu Wang  fsl,rpmsg-out:
7449c6bf62SShengjiu Wang    $ref: /schemas/types.yaml#/definitions/flag
7549c6bf62SShengjiu Wang    description: |
7649c6bf62SShengjiu Wang      This is a boolean property. If present, the transmitting function
7749c6bf62SShengjiu Wang      will be enabled.
7849c6bf62SShengjiu Wang
7949c6bf62SShengjiu Wang  fsl,rpmsg-in:
8049c6bf62SShengjiu Wang    $ref: /schemas/types.yaml#/definitions/flag
8149c6bf62SShengjiu Wang    description: |
8249c6bf62SShengjiu Wang      This is a boolean property. If present, the receiving function
8349c6bf62SShengjiu Wang      will be enabled.
8449c6bf62SShengjiu Wang
853570e687SChancel Liu  fsl,rpmsg-channel-name:
863570e687SChancel Liu    $ref: /schemas/types.yaml#/definitions/string
873570e687SChancel Liu    description: |
883570e687SChancel Liu      A string property to assign rpmsg channel this sound card sits on.
893570e687SChancel Liu      This property can be omitted if there is only one sound card and it sits
903570e687SChancel Liu      on "rpmsg-audio-channel".
913570e687SChancel Liu    enum:
923570e687SChancel Liu      - rpmsg-audio-channel
933570e687SChancel Liu      - rpmsg-micfil-channel
943570e687SChancel Liu
9549c6bf62SShengjiu Wangrequired:
9649c6bf62SShengjiu Wang  - compatible
9749c6bf62SShengjiu Wang
98a06ce12eSKrzysztof KozlowskiunevaluatedProperties: false
9949c6bf62SShengjiu Wang
10049c6bf62SShengjiu Wangexamples:
10149c6bf62SShengjiu Wang  - |
10249c6bf62SShengjiu Wang    #include <dt-bindings/clock/imx8mn-clock.h>
10349c6bf62SShengjiu Wang
10449c6bf62SShengjiu Wang    rpmsg_audio: rpmsg_audio {
10549c6bf62SShengjiu Wang        compatible = "fsl,imx8mn-rpmsg-audio";
10649c6bf62SShengjiu Wang        model = "wm8524-audio";
10749c6bf62SShengjiu Wang        fsl,enable-lpa;
10849c6bf62SShengjiu Wang        fsl,rpmsg-out;
10949c6bf62SShengjiu Wang        clocks = <&clk IMX8MN_CLK_SAI3_IPG>,
11049c6bf62SShengjiu Wang                 <&clk IMX8MN_CLK_SAI3_ROOT>,
11149c6bf62SShengjiu Wang                 <&clk IMX8MN_CLK_SDMA3_ROOT>,
11249c6bf62SShengjiu Wang                 <&clk IMX8MN_AUDIO_PLL1_OUT>,
11349c6bf62SShengjiu Wang                 <&clk IMX8MN_AUDIO_PLL2_OUT>;
11449c6bf62SShengjiu Wang        clock-names = "ipg", "mclk", "dma", "pll8k", "pll11k";
11549c6bf62SShengjiu Wang    };
1163570e687SChancel Liu
1173570e687SChancel Liu  - |
1183570e687SChancel Liu    #include <dt-bindings/clock/imx8mm-clock.h>
1193570e687SChancel Liu
1203570e687SChancel Liu    rpmsg_micfil: audio-controller {
1213570e687SChancel Liu        compatible = "fsl,imx8mm-rpmsg-audio";
1223570e687SChancel Liu        model = "micfil-audio";
1233570e687SChancel Liu        fsl,rpmsg-channel-name = "rpmsg-micfil-channel";
1243570e687SChancel Liu        fsl,enable-lpa;
1253570e687SChancel Liu        fsl,rpmsg-in;
1263570e687SChancel Liu        clocks = <&clk IMX8MM_CLK_PDM_IPG>,
1273570e687SChancel Liu                 <&clk IMX8MM_CLK_PDM_ROOT>,
1283570e687SChancel Liu                 <&clk IMX8MM_CLK_SDMA3_ROOT>,
1293570e687SChancel Liu                 <&clk IMX8MM_AUDIO_PLL1_OUT>,
1303570e687SChancel Liu                 <&clk IMX8MM_AUDIO_PLL2_OUT>;
1313570e687SChancel Liu        clock-names = "ipg", "mclk", "dma", "pll8k", "pll11k";
1323570e687SChancel Liu    };
1333570e687SChancel Liu
1343570e687SChancel Liu...
135