summaryrefslogtreecommitdiffstats
path: root/dts/Bindings/sound/fsl,rpmsg.yaml
blob: e847611a85f7c2cfab1d0efb04c6638f73762c9a (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/sound/fsl,rpmsg.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: NXP Audio RPMSG CPU DAI Controller

maintainers:
  - Shengjiu Wang <shengjiu.wang@nxp.com>

description: |
  fsl_rpmsg is a virtual audio device. Mapping to real hardware devices
  are SAI, MICFIL, DMA controlled by Cortex M core. What we see from
  Linux side is a device which provides audio service by rpmsg channel.
  We can create different sound cards which access different hardwares
  such as SAI, MICFIL, .etc through building rpmsg channels between
  Cortex-A and Cortex-M.

properties:
  compatible:
    enum:
      - fsl,imx7ulp-rpmsg-audio
      - fsl,imx8mn-rpmsg-audio
      - fsl,imx8mm-rpmsg-audio
      - fsl,imx8mp-rpmsg-audio
      - fsl,imx8ulp-rpmsg-audio

  model:
    $ref: /schemas/types.yaml#/definitions/string
    description: User specified audio sound card name

  clocks:
    items:
      - description: Peripheral clock for register access
      - description: Master clock
      - description: DMA clock for DMA register access
      - description: Parent clock for multiple of 8kHz sample rates
      - description: Parent clock for multiple of 11kHz sample rates

  clock-names:
    items:
      - const: ipg
      - const: mclk
      - const: dma
      - const: pll8k
      - const: pll11k

  power-domains:
    description:
      List of phandle and PM domain specifier as documented in
      Documentation/devicetree/bindings/power/power_domain.txt
    maxItems: 1

  memory-region:
    maxItems: 1
    description:
      phandle to a node describing reserved memory (System RAM memory)
      The M core can't access all the DDR memory space on some platform,
      So reserved a specific memory for dma buffer which M core can
      access.
      (see bindings/reserved-memory/reserved-memory.txt)

  audio-codec:
    $ref: /schemas/types.yaml#/definitions/phandle
    description: The phandle to a node of audio codec

  audio-routing:
    $ref: /schemas/types.yaml#/definitions/non-unique-string-array
    description: |
      A list of the connections between audio components. Each entry is a
      pair of strings, the first being the connection's sink, the second
      being the connection's source.

  fsl,enable-lpa:
    $ref: /schemas/types.yaml#/definitions/flag
    description: enable low power audio path.

  fsl,rpmsg-out:
    $ref: /schemas/types.yaml#/definitions/flag
    description: |
      This is a boolean property. If present, the transmitting function
      will be enabled.

  fsl,rpmsg-in:
    $ref: /schemas/types.yaml#/definitions/flag
    description: |
      This is a boolean property. If present, the receiving function
      will be enabled.

  fsl,rpmsg-channel-name:
    $ref: /schemas/types.yaml#/definitions/string
    description: |
      A string property to assign rpmsg channel this sound card sits on.
      This property can be omitted if there is only one sound card and it sits
      on "rpmsg-audio-channel".
    enum:
      - rpmsg-audio-channel
      - rpmsg-micfil-channel

required:
  - compatible
  - model

additionalProperties: false

examples:
  - |
    #include <dt-bindings/clock/imx8mn-clock.h>

    rpmsg_audio: rpmsg_audio {
        compatible = "fsl,imx8mn-rpmsg-audio";
        model = "wm8524-audio";
        fsl,enable-lpa;
        fsl,rpmsg-out;
        clocks = <&clk IMX8MN_CLK_SAI3_IPG>,
                 <&clk IMX8MN_CLK_SAI3_ROOT>,
                 <&clk IMX8MN_CLK_SDMA3_ROOT>,
                 <&clk IMX8MN_AUDIO_PLL1_OUT>,
                 <&clk IMX8MN_AUDIO_PLL2_OUT>;
        clock-names = "ipg", "mclk", "dma", "pll8k", "pll11k";
    };

  - |
    #include <dt-bindings/clock/imx8mm-clock.h>

    rpmsg_micfil: audio-controller {
        compatible = "fsl,imx8mm-rpmsg-audio";
        model = "micfil-audio";
        fsl,rpmsg-channel-name = "rpmsg-micfil-channel";
        fsl,enable-lpa;
        fsl,rpmsg-in;
        clocks = <&clk IMX8MM_CLK_PDM_IPG>,
                 <&clk IMX8MM_CLK_PDM_ROOT>,
                 <&clk IMX8MM_CLK_SDMA3_ROOT>,
                 <&clk IMX8MM_AUDIO_PLL1_OUT>,
                 <&clk IMX8MM_AUDIO_PLL2_OUT>;
        clock-names = "ipg", "mclk", "dma", "pll8k", "pll11k";
    };

...