xref: /linux/Documentation/devicetree/bindings/sound/fsl,rpmsg.yaml (revision be1ca3ee8f97067fee87fda73ea5959d5ab75bbf)
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
20allOf:
21  - $ref: sound-card-common.yaml#
22
23properties:
24  compatible:
25    oneOf:
26      - enum:
27          - fsl,imx7ulp-rpmsg-audio
28          - fsl,imx8mn-rpmsg-audio
29          - fsl,imx8mm-rpmsg-audio
30          - fsl,imx8mp-rpmsg-audio
31          - fsl,imx8ulp-rpmsg-audio
32          - fsl,imx93-rpmsg-audio
33          - fsl,imx95-rpmsg-audio
34      - items:
35          - enum:
36              - fsl,imx94-rpmsg-audio
37              - fsl,imx952-rpmsg-audio
38          - const: fsl,imx95-rpmsg-audio
39
40  clocks:
41    items:
42      - description: Peripheral clock for register access
43      - description: Master clock
44      - description: DMA clock for DMA register access
45      - description: Parent clock for multiple of 8kHz sample rates
46      - description: Parent clock for multiple of 11kHz sample rates
47
48  clock-names:
49    items:
50      - const: ipg
51      - const: mclk
52      - const: dma
53      - const: pll8k
54      - const: pll11k
55
56  power-domains:
57    description:
58      List of phandle and PM domain specifier as documented in
59      Documentation/devicetree/bindings/power/power_domain.txt
60    maxItems: 1
61
62  memory-region:
63    maxItems: 1
64    description:
65      phandle to a node describing reserved memory (System RAM memory)
66      The M core can't access all the DDR memory space on some platform,
67      So reserved a specific memory for dma buffer which M core can
68      access.
69      (see bindings/reserved-memory/reserved-memory.txt)
70
71  audio-codec:
72    $ref: /schemas/types.yaml#/definitions/phandle
73    description: The phandle to a node of audio codec
74
75  fsl,enable-lpa:
76    $ref: /schemas/types.yaml#/definitions/flag
77    description: enable low power audio path.
78
79  fsl,rpmsg-out:
80    $ref: /schemas/types.yaml#/definitions/flag
81    description: |
82      This is a boolean property. If present, the transmitting function
83      will be enabled.
84
85  fsl,rpmsg-in:
86    $ref: /schemas/types.yaml#/definitions/flag
87    description: |
88      This is a boolean property. If present, the receiving function
89      will be enabled.
90
91  fsl,rpmsg-channel-name:
92    $ref: /schemas/types.yaml#/definitions/string
93    description: |
94      A string property to assign rpmsg channel this sound card sits on.
95      This property can be omitted if there is only one sound card and it sits
96      on "rpmsg-audio-channel".
97    enum:
98      - rpmsg-audio-channel
99      - rpmsg-micfil-channel
100
101required:
102  - compatible
103
104unevaluatedProperties: false
105
106examples:
107  - |
108    #include <dt-bindings/clock/imx8mn-clock.h>
109
110    rpmsg_audio: rpmsg_audio {
111        compatible = "fsl,imx8mn-rpmsg-audio";
112        model = "wm8524-audio";
113        fsl,enable-lpa;
114        fsl,rpmsg-out;
115        clocks = <&clk IMX8MN_CLK_SAI3_IPG>,
116                 <&clk IMX8MN_CLK_SAI3_ROOT>,
117                 <&clk IMX8MN_CLK_SDMA3_ROOT>,
118                 <&clk IMX8MN_AUDIO_PLL1_OUT>,
119                 <&clk IMX8MN_AUDIO_PLL2_OUT>;
120        clock-names = "ipg", "mclk", "dma", "pll8k", "pll11k";
121    };
122
123  - |
124    #include <dt-bindings/clock/imx8mm-clock.h>
125
126    rpmsg_micfil: audio-controller {
127        compatible = "fsl,imx8mm-rpmsg-audio";
128        model = "micfil-audio";
129        fsl,rpmsg-channel-name = "rpmsg-micfil-channel";
130        fsl,enable-lpa;
131        fsl,rpmsg-in;
132        clocks = <&clk IMX8MM_CLK_PDM_IPG>,
133                 <&clk IMX8MM_CLK_PDM_ROOT>,
134                 <&clk IMX8MM_CLK_SDMA3_ROOT>,
135                 <&clk IMX8MM_AUDIO_PLL1_OUT>,
136                 <&clk IMX8MM_AUDIO_PLL2_OUT>;
137        clock-names = "ipg", "mclk", "dma", "pll8k", "pll11k";
138    };
139
140...
141