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
14*3570e687SChancel Liu  are SAI, MICFIL, DMA controlled by Cortex M core. What we see from
15*3570e687SChancel Liu  Linux side is a device which provides audio service by rpmsg channel.
16*3570e687SChancel Liu  We can create different sound cards which access different hardwares
17*3570e687SChancel Liu  such as SAI, MICFIL, .etc through building rpmsg channels between
18*3570e687SChancel 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
2849c6bf62SShengjiu Wang
2949c6bf62SShengjiu Wang  model:
3049c6bf62SShengjiu Wang    $ref: /schemas/types.yaml#/definitions/string
3149c6bf62SShengjiu Wang    description: User specified audio sound card name
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  audio-routing:
6949c6bf62SShengjiu Wang    $ref: /schemas/types.yaml#/definitions/non-unique-string-array
7049c6bf62SShengjiu Wang    description: |
7149c6bf62SShengjiu Wang      A list of the connections between audio components. Each entry is a
7249c6bf62SShengjiu Wang      pair of strings, the first being the connection's sink, the second
7349c6bf62SShengjiu Wang      being the connection's source.
7449c6bf62SShengjiu Wang
7549c6bf62SShengjiu Wang  fsl,enable-lpa:
7649c6bf62SShengjiu Wang    $ref: /schemas/types.yaml#/definitions/flag
7749c6bf62SShengjiu Wang    description: enable low power audio path.
7849c6bf62SShengjiu Wang
7949c6bf62SShengjiu Wang  fsl,rpmsg-out:
8049c6bf62SShengjiu Wang    $ref: /schemas/types.yaml#/definitions/flag
8149c6bf62SShengjiu Wang    description: |
8249c6bf62SShengjiu Wang      This is a boolean property. If present, the transmitting function
8349c6bf62SShengjiu Wang      will be enabled.
8449c6bf62SShengjiu Wang
8549c6bf62SShengjiu Wang  fsl,rpmsg-in:
8649c6bf62SShengjiu Wang    $ref: /schemas/types.yaml#/definitions/flag
8749c6bf62SShengjiu Wang    description: |
8849c6bf62SShengjiu Wang      This is a boolean property. If present, the receiving function
8949c6bf62SShengjiu Wang      will be enabled.
9049c6bf62SShengjiu Wang
91*3570e687SChancel Liu  fsl,rpmsg-channel-name:
92*3570e687SChancel Liu    $ref: /schemas/types.yaml#/definitions/string
93*3570e687SChancel Liu    description: |
94*3570e687SChancel Liu      A string property to assign rpmsg channel this sound card sits on.
95*3570e687SChancel Liu      This property can be omitted if there is only one sound card and it sits
96*3570e687SChancel Liu      on "rpmsg-audio-channel".
97*3570e687SChancel Liu    enum:
98*3570e687SChancel Liu      - rpmsg-audio-channel
99*3570e687SChancel Liu      - rpmsg-micfil-channel
100*3570e687SChancel Liu
10149c6bf62SShengjiu Wangrequired:
10249c6bf62SShengjiu Wang  - compatible
10349c6bf62SShengjiu Wang  - model
10449c6bf62SShengjiu Wang
10549c6bf62SShengjiu WangadditionalProperties: false
10649c6bf62SShengjiu Wang
10749c6bf62SShengjiu Wangexamples:
10849c6bf62SShengjiu Wang  - |
10949c6bf62SShengjiu Wang    #include <dt-bindings/clock/imx8mn-clock.h>
11049c6bf62SShengjiu Wang
11149c6bf62SShengjiu Wang    rpmsg_audio: rpmsg_audio {
11249c6bf62SShengjiu Wang        compatible = "fsl,imx8mn-rpmsg-audio";
11349c6bf62SShengjiu Wang        model = "wm8524-audio";
11449c6bf62SShengjiu Wang        fsl,enable-lpa;
11549c6bf62SShengjiu Wang        fsl,rpmsg-out;
11649c6bf62SShengjiu Wang        clocks = <&clk IMX8MN_CLK_SAI3_IPG>,
11749c6bf62SShengjiu Wang                 <&clk IMX8MN_CLK_SAI3_ROOT>,
11849c6bf62SShengjiu Wang                 <&clk IMX8MN_CLK_SDMA3_ROOT>,
11949c6bf62SShengjiu Wang                 <&clk IMX8MN_AUDIO_PLL1_OUT>,
12049c6bf62SShengjiu Wang                 <&clk IMX8MN_AUDIO_PLL2_OUT>;
12149c6bf62SShengjiu Wang        clock-names = "ipg", "mclk", "dma", "pll8k", "pll11k";
12249c6bf62SShengjiu Wang    };
123*3570e687SChancel Liu
124*3570e687SChancel Liu  - |
125*3570e687SChancel Liu    #include <dt-bindings/clock/imx8mm-clock.h>
126*3570e687SChancel Liu
127*3570e687SChancel Liu    rpmsg_micfil: audio-controller {
128*3570e687SChancel Liu        compatible = "fsl,imx8mm-rpmsg-audio";
129*3570e687SChancel Liu        model = "micfil-audio";
130*3570e687SChancel Liu        fsl,rpmsg-channel-name = "rpmsg-micfil-channel";
131*3570e687SChancel Liu        fsl,enable-lpa;
132*3570e687SChancel Liu        fsl,rpmsg-in;
133*3570e687SChancel Liu        clocks = <&clk IMX8MM_CLK_PDM_IPG>,
134*3570e687SChancel Liu                 <&clk IMX8MM_CLK_PDM_ROOT>,
135*3570e687SChancel Liu                 <&clk IMX8MM_CLK_SDMA3_ROOT>,
136*3570e687SChancel Liu                 <&clk IMX8MM_AUDIO_PLL1_OUT>,
137*3570e687SChancel Liu                 <&clk IMX8MM_AUDIO_PLL2_OUT>;
138*3570e687SChancel Liu        clock-names = "ipg", "mclk", "dma", "pll8k", "pll11k";
139*3570e687SChancel Liu    };
140*3570e687SChancel Liu
141*3570e687SChancel Liu...
142