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
20*a06ce12eSKrzysztof KozlowskiallOf:
21*a06ce12eSKrzysztof Kozlowski  - $ref: sound-card-common.yaml#
22*a06ce12eSKrzysztof 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
3249c6bf62SShengjiu Wang
3349c6bf62SShengjiu Wang  clocks:
3449c6bf62SShengjiu Wang    items:
3549c6bf62SShengjiu Wang      - description: Peripheral clock for register access
3649c6bf62SShengjiu Wang      - description: Master clock
3749c6bf62SShengjiu Wang      - description: DMA clock for DMA register access
3849c6bf62SShengjiu Wang      - description: Parent clock for multiple of 8kHz sample rates
3949c6bf62SShengjiu Wang      - description: Parent clock for multiple of 11kHz sample rates
4049c6bf62SShengjiu Wang
4149c6bf62SShengjiu Wang  clock-names:
4249c6bf62SShengjiu Wang    items:
4349c6bf62SShengjiu Wang      - const: ipg
4449c6bf62SShengjiu Wang      - const: mclk
4549c6bf62SShengjiu Wang      - const: dma
4649c6bf62SShengjiu Wang      - const: pll8k
4749c6bf62SShengjiu Wang      - const: pll11k
4849c6bf62SShengjiu Wang
4949c6bf62SShengjiu Wang  power-domains:
5049c6bf62SShengjiu Wang    description:
5149c6bf62SShengjiu Wang      List of phandle and PM domain specifier as documented in
5249c6bf62SShengjiu Wang      Documentation/devicetree/bindings/power/power_domain.txt
5349c6bf62SShengjiu Wang    maxItems: 1
5449c6bf62SShengjiu Wang
5549c6bf62SShengjiu Wang  memory-region:
56c1761159SRob Herring    maxItems: 1
5749c6bf62SShengjiu Wang    description:
5849c6bf62SShengjiu Wang      phandle to a node describing reserved memory (System RAM memory)
5949c6bf62SShengjiu Wang      The M core can't access all the DDR memory space on some platform,
6049c6bf62SShengjiu Wang      So reserved a specific memory for dma buffer which M core can
6149c6bf62SShengjiu Wang      access.
6249c6bf62SShengjiu Wang      (see bindings/reserved-memory/reserved-memory.txt)
6349c6bf62SShengjiu Wang
6449c6bf62SShengjiu Wang  audio-codec:
6549c6bf62SShengjiu Wang    $ref: /schemas/types.yaml#/definitions/phandle
6649c6bf62SShengjiu Wang    description: The phandle to a node of audio codec
6749c6bf62SShengjiu Wang
6849c6bf62SShengjiu Wang  fsl,enable-lpa:
6949c6bf62SShengjiu Wang    $ref: /schemas/types.yaml#/definitions/flag
7049c6bf62SShengjiu Wang    description: enable low power audio path.
7149c6bf62SShengjiu Wang
7249c6bf62SShengjiu Wang  fsl,rpmsg-out:
7349c6bf62SShengjiu Wang    $ref: /schemas/types.yaml#/definitions/flag
7449c6bf62SShengjiu Wang    description: |
7549c6bf62SShengjiu Wang      This is a boolean property. If present, the transmitting function
7649c6bf62SShengjiu Wang      will be enabled.
7749c6bf62SShengjiu Wang
7849c6bf62SShengjiu Wang  fsl,rpmsg-in:
7949c6bf62SShengjiu Wang    $ref: /schemas/types.yaml#/definitions/flag
8049c6bf62SShengjiu Wang    description: |
8149c6bf62SShengjiu Wang      This is a boolean property. If present, the receiving function
8249c6bf62SShengjiu Wang      will be enabled.
8349c6bf62SShengjiu Wang
843570e687SChancel Liu  fsl,rpmsg-channel-name:
853570e687SChancel Liu    $ref: /schemas/types.yaml#/definitions/string
863570e687SChancel Liu    description: |
873570e687SChancel Liu      A string property to assign rpmsg channel this sound card sits on.
883570e687SChancel Liu      This property can be omitted if there is only one sound card and it sits
893570e687SChancel Liu      on "rpmsg-audio-channel".
903570e687SChancel Liu    enum:
913570e687SChancel Liu      - rpmsg-audio-channel
923570e687SChancel Liu      - rpmsg-micfil-channel
933570e687SChancel Liu
9449c6bf62SShengjiu Wangrequired:
9549c6bf62SShengjiu Wang  - compatible
9649c6bf62SShengjiu Wang
97*a06ce12eSKrzysztof KozlowskiunevaluatedProperties: false
9849c6bf62SShengjiu Wang
9949c6bf62SShengjiu Wangexamples:
10049c6bf62SShengjiu Wang  - |
10149c6bf62SShengjiu Wang    #include <dt-bindings/clock/imx8mn-clock.h>
10249c6bf62SShengjiu Wang
10349c6bf62SShengjiu Wang    rpmsg_audio: rpmsg_audio {
10449c6bf62SShengjiu Wang        compatible = "fsl,imx8mn-rpmsg-audio";
10549c6bf62SShengjiu Wang        model = "wm8524-audio";
10649c6bf62SShengjiu Wang        fsl,enable-lpa;
10749c6bf62SShengjiu Wang        fsl,rpmsg-out;
10849c6bf62SShengjiu Wang        clocks = <&clk IMX8MN_CLK_SAI3_IPG>,
10949c6bf62SShengjiu Wang                 <&clk IMX8MN_CLK_SAI3_ROOT>,
11049c6bf62SShengjiu Wang                 <&clk IMX8MN_CLK_SDMA3_ROOT>,
11149c6bf62SShengjiu Wang                 <&clk IMX8MN_AUDIO_PLL1_OUT>,
11249c6bf62SShengjiu Wang                 <&clk IMX8MN_AUDIO_PLL2_OUT>;
11349c6bf62SShengjiu Wang        clock-names = "ipg", "mclk", "dma", "pll8k", "pll11k";
11449c6bf62SShengjiu Wang    };
1153570e687SChancel Liu
1163570e687SChancel Liu  - |
1173570e687SChancel Liu    #include <dt-bindings/clock/imx8mm-clock.h>
1183570e687SChancel Liu
1193570e687SChancel Liu    rpmsg_micfil: audio-controller {
1203570e687SChancel Liu        compatible = "fsl,imx8mm-rpmsg-audio";
1213570e687SChancel Liu        model = "micfil-audio";
1223570e687SChancel Liu        fsl,rpmsg-channel-name = "rpmsg-micfil-channel";
1233570e687SChancel Liu        fsl,enable-lpa;
1243570e687SChancel Liu        fsl,rpmsg-in;
1253570e687SChancel Liu        clocks = <&clk IMX8MM_CLK_PDM_IPG>,
1263570e687SChancel Liu                 <&clk IMX8MM_CLK_PDM_ROOT>,
1273570e687SChancel Liu                 <&clk IMX8MM_CLK_SDMA3_ROOT>,
1283570e687SChancel Liu                 <&clk IMX8MM_AUDIO_PLL1_OUT>,
1293570e687SChancel Liu                 <&clk IMX8MM_AUDIO_PLL2_OUT>;
1303570e687SChancel Liu        clock-names = "ipg", "mclk", "dma", "pll8k", "pll11k";
1313570e687SChancel Liu    };
1323570e687SChancel Liu
1333570e687SChancel Liu...
134