xref: /freebsd/sys/contrib/device-tree/Bindings/sound/fsl,rpmsg.yaml (revision aa1a8ff2d6dbc51ef058f46f3db5a8bb77967145)
12eb4d8dcSEmmanuel Vadot# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
22eb4d8dcSEmmanuel Vadot%YAML 1.2
32eb4d8dcSEmmanuel Vadot---
42eb4d8dcSEmmanuel Vadot$id: http://devicetree.org/schemas/sound/fsl,rpmsg.yaml#
52eb4d8dcSEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml#
62eb4d8dcSEmmanuel Vadot
72eb4d8dcSEmmanuel Vadottitle: NXP Audio RPMSG CPU DAI Controller
82eb4d8dcSEmmanuel Vadot
92eb4d8dcSEmmanuel Vadotmaintainers:
102eb4d8dcSEmmanuel Vadot  - Shengjiu Wang <shengjiu.wang@nxp.com>
112eb4d8dcSEmmanuel Vadot
122eb4d8dcSEmmanuel Vadotdescription: |
132eb4d8dcSEmmanuel Vadot  fsl_rpmsg is a virtual audio device. Mapping to real hardware devices
148bab661aSEmmanuel Vadot  are SAI, MICFIL, DMA controlled by Cortex M core. What we see from
158bab661aSEmmanuel Vadot  Linux side is a device which provides audio service by rpmsg channel.
168bab661aSEmmanuel Vadot  We can create different sound cards which access different hardwares
178bab661aSEmmanuel Vadot  such as SAI, MICFIL, .etc through building rpmsg channels between
188bab661aSEmmanuel Vadot  Cortex-A and Cortex-M.
192eb4d8dcSEmmanuel Vadot
20*aa1a8ff2SEmmanuel VadotallOf:
21*aa1a8ff2SEmmanuel Vadot  - $ref: sound-card-common.yaml#
22*aa1a8ff2SEmmanuel Vadot
232eb4d8dcSEmmanuel Vadotproperties:
242eb4d8dcSEmmanuel Vadot  compatible:
252eb4d8dcSEmmanuel Vadot    enum:
262eb4d8dcSEmmanuel Vadot      - fsl,imx7ulp-rpmsg-audio
272eb4d8dcSEmmanuel Vadot      - fsl,imx8mn-rpmsg-audio
282eb4d8dcSEmmanuel Vadot      - fsl,imx8mm-rpmsg-audio
292eb4d8dcSEmmanuel Vadot      - fsl,imx8mp-rpmsg-audio
30354d7675SEmmanuel Vadot      - fsl,imx8ulp-rpmsg-audio
31*aa1a8ff2SEmmanuel Vadot      - fsl,imx93-rpmsg-audio
322eb4d8dcSEmmanuel Vadot
332eb4d8dcSEmmanuel Vadot  clocks:
342eb4d8dcSEmmanuel Vadot    items:
352eb4d8dcSEmmanuel Vadot      - description: Peripheral clock for register access
362eb4d8dcSEmmanuel Vadot      - description: Master clock
372eb4d8dcSEmmanuel Vadot      - description: DMA clock for DMA register access
382eb4d8dcSEmmanuel Vadot      - description: Parent clock for multiple of 8kHz sample rates
392eb4d8dcSEmmanuel Vadot      - description: Parent clock for multiple of 11kHz sample rates
402eb4d8dcSEmmanuel Vadot
412eb4d8dcSEmmanuel Vadot  clock-names:
422eb4d8dcSEmmanuel Vadot    items:
432eb4d8dcSEmmanuel Vadot      - const: ipg
442eb4d8dcSEmmanuel Vadot      - const: mclk
452eb4d8dcSEmmanuel Vadot      - const: dma
462eb4d8dcSEmmanuel Vadot      - const: pll8k
472eb4d8dcSEmmanuel Vadot      - const: pll11k
482eb4d8dcSEmmanuel Vadot
492eb4d8dcSEmmanuel Vadot  power-domains:
502eb4d8dcSEmmanuel Vadot    description:
512eb4d8dcSEmmanuel Vadot      List of phandle and PM domain specifier as documented in
522eb4d8dcSEmmanuel Vadot      Documentation/devicetree/bindings/power/power_domain.txt
532eb4d8dcSEmmanuel Vadot    maxItems: 1
542eb4d8dcSEmmanuel Vadot
552eb4d8dcSEmmanuel Vadot  memory-region:
562eb4d8dcSEmmanuel Vadot    maxItems: 1
572eb4d8dcSEmmanuel Vadot    description:
582eb4d8dcSEmmanuel Vadot      phandle to a node describing reserved memory (System RAM memory)
592eb4d8dcSEmmanuel Vadot      The M core can't access all the DDR memory space on some platform,
602eb4d8dcSEmmanuel Vadot      So reserved a specific memory for dma buffer which M core can
612eb4d8dcSEmmanuel Vadot      access.
622eb4d8dcSEmmanuel Vadot      (see bindings/reserved-memory/reserved-memory.txt)
632eb4d8dcSEmmanuel Vadot
642eb4d8dcSEmmanuel Vadot  audio-codec:
652eb4d8dcSEmmanuel Vadot    $ref: /schemas/types.yaml#/definitions/phandle
662eb4d8dcSEmmanuel Vadot    description: The phandle to a node of audio codec
672eb4d8dcSEmmanuel Vadot
682eb4d8dcSEmmanuel Vadot  fsl,enable-lpa:
692eb4d8dcSEmmanuel Vadot    $ref: /schemas/types.yaml#/definitions/flag
702eb4d8dcSEmmanuel Vadot    description: enable low power audio path.
712eb4d8dcSEmmanuel Vadot
722eb4d8dcSEmmanuel Vadot  fsl,rpmsg-out:
732eb4d8dcSEmmanuel Vadot    $ref: /schemas/types.yaml#/definitions/flag
742eb4d8dcSEmmanuel Vadot    description: |
752eb4d8dcSEmmanuel Vadot      This is a boolean property. If present, the transmitting function
762eb4d8dcSEmmanuel Vadot      will be enabled.
772eb4d8dcSEmmanuel Vadot
782eb4d8dcSEmmanuel Vadot  fsl,rpmsg-in:
792eb4d8dcSEmmanuel Vadot    $ref: /schemas/types.yaml#/definitions/flag
802eb4d8dcSEmmanuel Vadot    description: |
812eb4d8dcSEmmanuel Vadot      This is a boolean property. If present, the receiving function
822eb4d8dcSEmmanuel Vadot      will be enabled.
832eb4d8dcSEmmanuel Vadot
848bab661aSEmmanuel Vadot  fsl,rpmsg-channel-name:
858bab661aSEmmanuel Vadot    $ref: /schemas/types.yaml#/definitions/string
868bab661aSEmmanuel Vadot    description: |
878bab661aSEmmanuel Vadot      A string property to assign rpmsg channel this sound card sits on.
888bab661aSEmmanuel Vadot      This property can be omitted if there is only one sound card and it sits
898bab661aSEmmanuel Vadot      on "rpmsg-audio-channel".
908bab661aSEmmanuel Vadot    enum:
918bab661aSEmmanuel Vadot      - rpmsg-audio-channel
928bab661aSEmmanuel Vadot      - rpmsg-micfil-channel
938bab661aSEmmanuel Vadot
942eb4d8dcSEmmanuel Vadotrequired:
952eb4d8dcSEmmanuel Vadot  - compatible
962eb4d8dcSEmmanuel Vadot
97*aa1a8ff2SEmmanuel VadotunevaluatedProperties: false
982eb4d8dcSEmmanuel Vadot
992eb4d8dcSEmmanuel Vadotexamples:
1002eb4d8dcSEmmanuel Vadot  - |
1012eb4d8dcSEmmanuel Vadot    #include <dt-bindings/clock/imx8mn-clock.h>
1022eb4d8dcSEmmanuel Vadot
1032eb4d8dcSEmmanuel Vadot    rpmsg_audio: rpmsg_audio {
1042eb4d8dcSEmmanuel Vadot        compatible = "fsl,imx8mn-rpmsg-audio";
1052eb4d8dcSEmmanuel Vadot        model = "wm8524-audio";
1062eb4d8dcSEmmanuel Vadot        fsl,enable-lpa;
1072eb4d8dcSEmmanuel Vadot        fsl,rpmsg-out;
1082eb4d8dcSEmmanuel Vadot        clocks = <&clk IMX8MN_CLK_SAI3_IPG>,
1092eb4d8dcSEmmanuel Vadot                 <&clk IMX8MN_CLK_SAI3_ROOT>,
1102eb4d8dcSEmmanuel Vadot                 <&clk IMX8MN_CLK_SDMA3_ROOT>,
1112eb4d8dcSEmmanuel Vadot                 <&clk IMX8MN_AUDIO_PLL1_OUT>,
1122eb4d8dcSEmmanuel Vadot                 <&clk IMX8MN_AUDIO_PLL2_OUT>;
1132eb4d8dcSEmmanuel Vadot        clock-names = "ipg", "mclk", "dma", "pll8k", "pll11k";
1142eb4d8dcSEmmanuel Vadot    };
1158bab661aSEmmanuel Vadot
1168bab661aSEmmanuel Vadot  - |
1178bab661aSEmmanuel Vadot    #include <dt-bindings/clock/imx8mm-clock.h>
1188bab661aSEmmanuel Vadot
1198bab661aSEmmanuel Vadot    rpmsg_micfil: audio-controller {
1208bab661aSEmmanuel Vadot        compatible = "fsl,imx8mm-rpmsg-audio";
1218bab661aSEmmanuel Vadot        model = "micfil-audio";
1228bab661aSEmmanuel Vadot        fsl,rpmsg-channel-name = "rpmsg-micfil-channel";
1238bab661aSEmmanuel Vadot        fsl,enable-lpa;
1248bab661aSEmmanuel Vadot        fsl,rpmsg-in;
1258bab661aSEmmanuel Vadot        clocks = <&clk IMX8MM_CLK_PDM_IPG>,
1268bab661aSEmmanuel Vadot                 <&clk IMX8MM_CLK_PDM_ROOT>,
1278bab661aSEmmanuel Vadot                 <&clk IMX8MM_CLK_SDMA3_ROOT>,
1288bab661aSEmmanuel Vadot                 <&clk IMX8MM_AUDIO_PLL1_OUT>,
1298bab661aSEmmanuel Vadot                 <&clk IMX8MM_AUDIO_PLL2_OUT>;
1308bab661aSEmmanuel Vadot        clock-names = "ipg", "mclk", "dma", "pll8k", "pll11k";
1318bab661aSEmmanuel Vadot    };
1328bab661aSEmmanuel Vadot
1338bab661aSEmmanuel Vadot...
134