Documentation / devicetree / bindings / sound / fsl,rpmsg.yaml


Based on kernel version 6.9. Page generated on 2024-05-14 10:02 EST.

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
# 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.

allOf:
  - $ref: sound-card-common.yaml#

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

  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

  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

unevaluatedProperties: 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";
    };

...