1# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/sound/fsl,rpmsg.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: NXP Audio RPMSG CPU DAI Controller
8
9maintainers:
10  - Shengjiu Wang <shengjiu.wang@nxp.com>
11
12description: |
13  fsl_rpmsg is a virtual audio device. Mapping to real hardware devices
14  are SAI, MICFIL, DMA controlled by Cortex M core. What we see from
15  Linux side is a device which provides audio service by rpmsg channel.
16  We can create different sound cards which access different hardwares
17  such as SAI, MICFIL, .etc through building rpmsg channels between
18  Cortex-A and Cortex-M.
19
20properties:
21  compatible:
22    enum:
23      - fsl,imx7ulp-rpmsg-audio
24      - fsl,imx8mn-rpmsg-audio
25      - fsl,imx8mm-rpmsg-audio
26      - fsl,imx8mp-rpmsg-audio
27      - fsl,imx8ulp-rpmsg-audio
28      - fsl,imx93-rpmsg-audio
29
30  model:
31    $ref: /schemas/types.yaml#/definitions/string
32    description: User specified audio sound card name
33
34  clocks:
35    items:
36      - description: Peripheral clock for register access
37      - description: Master clock
38      - description: DMA clock for DMA register access
39      - description: Parent clock for multiple of 8kHz sample rates
40      - description: Parent clock for multiple of 11kHz sample rates
41
42  clock-names:
43    items:
44      - const: ipg
45      - const: mclk
46      - const: dma
47      - const: pll8k
48      - const: pll11k
49
50  power-domains:
51    description:
52      List of phandle and PM domain specifier as documented in
53      Documentation/devicetree/bindings/power/power_domain.txt
54    maxItems: 1
55
56  memory-region:
57    maxItems: 1
58    description:
59      phandle to a node describing reserved memory (System RAM memory)
60      The M core can't access all the DDR memory space on some platform,
61      So reserved a specific memory for dma buffer which M core can
62      access.
63      (see bindings/reserved-memory/reserved-memory.txt)
64
65  audio-codec:
66    $ref: /schemas/types.yaml#/definitions/phandle
67    description: The phandle to a node of audio codec
68
69  audio-routing:
70    $ref: /schemas/types.yaml#/definitions/non-unique-string-array
71    description: |
72      A list of the connections between audio components. Each entry is a
73      pair of strings, the first being the connection's sink, the second
74      being the connection's source.
75
76  fsl,enable-lpa:
77    $ref: /schemas/types.yaml#/definitions/flag
78    description: enable low power audio path.
79
80  fsl,rpmsg-out:
81    $ref: /schemas/types.yaml#/definitions/flag
82    description: |
83      This is a boolean property. If present, the transmitting function
84      will be enabled.
85
86  fsl,rpmsg-in:
87    $ref: /schemas/types.yaml#/definitions/flag
88    description: |
89      This is a boolean property. If present, the receiving function
90      will be enabled.
91
92  fsl,rpmsg-channel-name:
93    $ref: /schemas/types.yaml#/definitions/string
94    description: |
95      A string property to assign rpmsg channel this sound card sits on.
96      This property can be omitted if there is only one sound card and it sits
97      on "rpmsg-audio-channel".
98    enum:
99      - rpmsg-audio-channel
100      - rpmsg-micfil-channel
101
102required:
103  - compatible
104  - model
105
106additionalProperties: false
107
108examples:
109  - |
110    #include <dt-bindings/clock/imx8mn-clock.h>
111
112    rpmsg_audio: rpmsg_audio {
113        compatible = "fsl,imx8mn-rpmsg-audio";
114        model = "wm8524-audio";
115        fsl,enable-lpa;
116        fsl,rpmsg-out;
117        clocks = <&clk IMX8MN_CLK_SAI3_IPG>,
118                 <&clk IMX8MN_CLK_SAI3_ROOT>,
119                 <&clk IMX8MN_CLK_SDMA3_ROOT>,
120                 <&clk IMX8MN_AUDIO_PLL1_OUT>,
121                 <&clk IMX8MN_AUDIO_PLL2_OUT>;
122        clock-names = "ipg", "mclk", "dma", "pll8k", "pll11k";
123    };
124
125  - |
126    #include <dt-bindings/clock/imx8mm-clock.h>
127
128    rpmsg_micfil: audio-controller {
129        compatible = "fsl,imx8mm-rpmsg-audio";
130        model = "micfil-audio";
131        fsl,rpmsg-channel-name = "rpmsg-micfil-channel";
132        fsl,enable-lpa;
133        fsl,rpmsg-in;
134        clocks = <&clk IMX8MM_CLK_PDM_IPG>,
135                 <&clk IMX8MM_CLK_PDM_ROOT>,
136                 <&clk IMX8MM_CLK_SDMA3_ROOT>,
137                 <&clk IMX8MM_AUDIO_PLL1_OUT>,
138                 <&clk IMX8MM_AUDIO_PLL2_OUT>;
139        clock-names = "ipg", "mclk", "dma", "pll8k", "pll11k";
140    };
141
142...
143