OSDN Git Service

ASoC: dt-bindings: simple-card: switch to yaml base Documentation
authorKuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Wed, 1 Apr 2020 00:00:04 +0000 (09:00 +0900)
committerMark Brown <broonie@kernel.org>
Wed, 29 Apr 2020 17:03:37 +0000 (18:03 +0100)
This patch switches from .txt base to .yaml base Document.

Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Reviewed-by: Rob Herring <robh@kernel.org>
Link: https://lore.kernel.org/r/87sghovzwb.wl-kuninori.morimoto.gx@renesas.com
Signed-off-by: Mark Brown <broonie@kernel.org>
Documentation/devicetree/bindings/sound/simple-card.txt [deleted file]
Documentation/devicetree/bindings/sound/simple-card.yaml [new file with mode: 0644]

diff --git a/Documentation/devicetree/bindings/sound/simple-card.txt b/Documentation/devicetree/bindings/sound/simple-card.txt
deleted file mode 100644 (file)
index 79954cd..0000000
+++ /dev/null
@@ -1,351 +0,0 @@
-Simple-Card:
-
-Simple-Card specifies audio DAI connections of SoC <-> codec.
-
-Required properties:
-
-- compatible                           : "simple-audio-card"
-
-Optional properties:
-
-- simple-audio-card,name               : User specified audio sound card name, one string
-                                         property.
-- simple-audio-card,widgets            : Please refer to widgets.txt.
-- simple-audio-card,routing            : 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.
-- simple-audio-card,mclk-fs             : Multiplication factor between stream rate and codec
-                                         mclk. When defined, mclk-fs property defined in
-                                         dai-link sub nodes are ignored.
-- simple-audio-card,hp-det-gpio                : Reference to GPIO that signals when
-                                         headphones are attached.
-- simple-audio-card,mic-det-gpio       : Reference to GPIO that signals when
-                                         a microphone is attached.
-- simple-audio-card,aux-devs           : List of phandles pointing to auxiliary devices, such
-                                         as amplifiers, to be added to the sound card.
-- simple-audio-card,pin-switches       : List of strings containing the widget names for
-                                         which pin switches must be created.
-
-Optional subnodes:
-
-- simple-audio-card,dai-link           : Container for dai-link level
-                                         properties and the CPU and CODEC
-                                         sub-nodes. This container may be
-                                         omitted when the card has only one
-                                         DAI link. See the examples and the
-                                         section below.
-
-Dai-link subnode properties and subnodes:
-
-If dai-link subnode is omitted and the subnode properties are directly
-under "sound"-node the subnode property and subnode names have to be
-prefixed with "simple-audio-card,"-prefix.
-
-Required dai-link subnodes:
-
-- cpu                                  : CPU   sub-node
-- codec                                        : CODEC sub-node
-
-Optional dai-link subnode properties:
-
-- format                               : CPU/CODEC common audio format.
-                                         "i2s", "right_j", "left_j" , "dsp_a"
-                                         "dsp_b", "ac97", "pdm", "msb", "lsb"
-- frame-master                         : Indicates dai-link frame master.
-                                         phandle to a cpu or codec subnode.
-- bitclock-master                      : Indicates dai-link bit clock master.
-                                         phandle to a cpu or codec subnode.
-- bitclock-inversion                   : bool property. Add this if the
-                                         dai-link uses bit clock inversion.
-- frame-inversion                      : bool property. Add this if the
-                                         dai-link uses frame clock inversion.
-- mclk-fs                              : Multiplication factor between stream
-                                         rate and codec mclk, applied only for
-                                         the dai-link.
-
-For backward compatibility the frame-master and bitclock-master
-properties can be used as booleans in codec subnode to indicate if the
-codec is the dai-link frame or bit clock master. In this case there
-should be no dai-link node, the same properties should not be present
-at sound-node level, and the bitclock-inversion and frame-inversion
-properties should also be placed in the codec node if needed.
-
-Required CPU/CODEC subnodes properties:
-
-- sound-dai                            : phandle and port of CPU/CODEC
-
-Optional CPU/CODEC subnodes properties:
-
-- dai-tdm-slot-num                     : Please refer to tdm-slot.txt.
-- dai-tdm-slot-width                   : Please refer to tdm-slot.txt.
-- clocks / system-clock-frequency      : specify subnode's clock if needed.
-                                         it can be specified via "clocks" if system has
-                                         clock node (= common clock), or "system-clock-frequency"
-                                         (if system doens't support common clock)
-                                         If a clock is specified, it is
-                                         enabled with clk_prepare_enable()
-                                         in dai startup() and disabled with
-                                         clk_disable_unprepare() in dai
-                                         shutdown().
-                                         If a clock is specified and a
-                                         multiplication factor is given with
-                                         mclk-fs, the clock will be set to the
-                                         calculated mclk frequency when the
-                                         stream starts.
-- system-clock-direction-out           : specifies clock direction as 'out' on
-                                         initialization. It is useful for some aCPUs with
-                                         fixed clocks.
-
--------------------------------------------
-Example 1 - single DAI link:
--------------------------------------------
-
-sound {
-       compatible = "simple-audio-card";
-       simple-audio-card,name = "VF610-Tower-Sound-Card";
-       simple-audio-card,format = "left_j";
-       simple-audio-card,bitclock-master = <&dailink0_master>;
-       simple-audio-card,frame-master = <&dailink0_master>;
-       simple-audio-card,widgets =
-               "Microphone", "Microphone Jack",
-               "Headphone", "Headphone Jack",
-               "Speaker", "External Speaker";
-       simple-audio-card,routing =
-               "MIC_IN", "Microphone Jack",
-               "Headphone Jack", "HP_OUT",
-               "External Speaker", "LINE_OUT";
-
-       simple-audio-card,cpu {
-               sound-dai = <&sh_fsi2 0>;
-       };
-
-       dailink0_master: simple-audio-card,codec {
-               sound-dai = <&ak4648>;
-               clocks = <&osc>;
-       };
-};
-
-&i2c0 {
-       ak4648: ak4648@12 {
-               #sound-dai-cells = <0>;
-               compatible = "asahi-kasei,ak4648";
-               reg = <0x12>;
-       };
-};
-
-sh_fsi2: sh_fsi2@ec230000 {
-       #sound-dai-cells = <1>;
-       compatible = "renesas,sh_fsi2";
-       reg = <0xec230000 0x400>;
-       interrupt-parent = <&gic>;
-       interrupts = <0 146 0x4>;
-};
-
--------------------------------------------
-Example 2 - many DAI links:
--------------------------------------------
-
-sound {
-       compatible = "simple-audio-card";
-       simple-audio-card,name = "Cubox Audio";
-
-       simple-audio-card,dai-link@0 {          /* I2S - HDMI */
-               reg = <0>;
-               format = "i2s";
-               cpu {
-                       sound-dai = <&audio1 0>;
-               };
-               codec {
-                       sound-dai = <&tda998x 0>;
-               };
-       };
-
-       simple-audio-card,dai-link@1 {          /* S/PDIF - HDMI */
-               reg = <1>;
-               cpu {
-                       sound-dai = <&audio1 1>;
-               };
-               codec {
-                       sound-dai = <&tda998x 1>;
-               };
-       };
-
-       simple-audio-card,dai-link@2 {          /* S/PDIF - S/PDIF */
-               reg = <2>;
-               cpu {
-                       sound-dai = <&audio1 1>;
-               };
-               codec {
-                       sound-dai = <&spdif_codec>;
-               };
-       };
-};
-
--------------------------------------------
-Example 3 - route audio from IMX6 SSI2 through TLV320DAC3100 codec
-through TPA6130A2 amplifier to headphones:
--------------------------------------------
-
-&i2c0 {
-       codec: tlv320dac3100@18 {
-               compatible = "ti,tlv320dac3100";
-               ...
-       }
-
-       amp: tpa6130a2@60 {
-               compatible = "ti,tpa6130a2";
-               ...
-       }
-}
-
-sound {
-       compatible = "simple-audio-card";
-       ...
-       simple-audio-card,widgets =
-               "Headphone", "Headphone Jack";
-       simple-audio-card,routing =
-               "Headphone Jack", "HPLEFT",
-               "Headphone Jack", "HPRIGHT",
-               "LEFTIN", "HPL",
-               "RIGHTIN", "HPR";
-       simple-audio-card,aux-devs = <&amp>;
-       simple-audio-card,cpu {
-               sound-dai = <&ssi2>;
-       };
-       simple-audio-card,codec {
-               sound-dai = <&codec>;
-               clocks = ...
-       };
-};
-
--------------------------------------------
-Example 4. Sampling Rate Conversion
--------------------------------------------
-
-sound {
-       compatible = "simple-audio-card";
-
-       simple-audio-card,name = "rsnd-ak4643";
-       simple-audio-card,format = "left_j";
-       simple-audio-card,bitclock-master = <&sndcodec>;
-       simple-audio-card,frame-master = <&sndcodec>;
-
-       simple-audio-card,convert-rate = <48000>;
-
-       simple-audio-card,prefix = "ak4642";
-       simple-audio-card,routing = "ak4642 Playback", "DAI0 Playback",
-                       "DAI0 Capture", "ak4642 Capture";
-
-       sndcpu: simple-audio-card,cpu {
-               sound-dai = <&rcar_sound>;
-       };
-
-       sndcodec: simple-audio-card,codec {
-               sound-dai = <&ak4643>;
-               system-clock-frequency = <11289600>;
-       };
-};
-
--------------------------------------------
-Example 5. 2 CPU 1 Codec (Mixing)
--------------------------------------------
-sound {
-       compatible = "simple-audio-card";
-
-       simple-audio-card,name = "rsnd-ak4643";
-       simple-audio-card,format = "left_j";
-       simple-audio-card,bitclock-master = <&dpcmcpu>;
-       simple-audio-card,frame-master = <&dpcmcpu>;
-
-       simple-audio-card,routing = "ak4642 Playback", "DAI0 Playback",
-                       "ak4642 Playback", "DAI1 Playback";
-
-       dpcmcpu: cpu@0 {
-               sound-dai = <&rcar_sound 0>;
-       };
-
-       cpu@1 {
-               sound-dai = <&rcar_sound 1>;
-       };
-
-       codec {
-               prefix = "ak4642";
-               sound-dai = <&ak4643>;
-               clocks = <&audio_clock>;
-       };
-};
-
--------------------------------------------
-Example 6 - many DAI links with DPCM:
--------------------------------------------
-
-CPU0 ------ ak4613
-CPU1 ------ PCM3168A-p  /* DPCM 1ch/2ch */
-CPU2 --/                /* DPCM 3ch/4ch */
-CPU3 --/                /* DPCM 5ch/6ch */
-CPU4 --/                /* DPCM 7ch/8ch */
-CPU5 ------ PCM3168A-c
-
-sound {
-       compatible = "simple-audio-card";
-
-       simple-audio-card,routing =
-                 "pcm3168a Playback", "DAI1 Playback",
-                 "pcm3168a Playback", "DAI2 Playback",
-                 "pcm3168a Playback", "DAI3 Playback",
-                 "pcm3168a Playback", "DAI4 Playback";
-
-       simple-audio-card,dai-link@0 {
-               format = "left_j";
-               bitclock-master = <&sndcpu0>;
-               frame-master = <&sndcpu0>;
-
-               sndcpu0: cpu {
-                       sound-dai = <&rcar_sound 0>;
-               };
-               codec {
-                       sound-dai = <&ak4613>;
-               };
-       };
-       simple-audio-card,dai-link@1 {
-               format = "i2s";
-               bitclock-master = <&sndcpu1>;
-               frame-master = <&sndcpu1>;
-
-               convert-channels = <8>; /* TDM Split */
-
-               sndcpu1: cpu@0 {
-                       sound-dai = <&rcar_sound 1>;
-               };
-               cpu@1 {
-                       sound-dai = <&rcar_sound 2>;
-               };
-               cpu@2 {
-                       sound-dai = <&rcar_sound 3>;
-               };
-               cpu@3 {
-                       sound-dai = <&rcar_sound 4>;
-               };
-               codec {
-                       mclk-fs = <512>;
-                       prefix = "pcm3168a";
-                       dai-tdm-slot-num = <8>;
-                       sound-dai = <&pcm3168a 0>;
-               };
-       };
-       simple-audio-card,dai-link@2 {
-               format = "i2s";
-               bitclock-master = <&sndcpu2>;
-               frame-master = <&sndcpu2>;
-
-               sndcpu2: cpu {
-                       sound-dai = <&rcar_sound 5>;
-               };
-               codec {
-                       mclk-fs = <512>;
-                       prefix = "pcm3168a";
-                       sound-dai = <&pcm3168a 1>;
-               };
-       };
-};
diff --git a/Documentation/devicetree/bindings/sound/simple-card.yaml b/Documentation/devicetree/bindings/sound/simple-card.yaml
new file mode 100644 (file)
index 0000000..cb2bb5f
--- /dev/null
@@ -0,0 +1,484 @@
+# SPDX-License-Identifier: GPL-2.0
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/sound/simple-card.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Simple Audio Card Driver Device Tree Bindings
+
+maintainers:
+  - Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
+
+definitions:
+
+  frame-master:
+    description: Indicates dai-link frame master.
+    allOf:
+      - $ref: /schemas/types.yaml#/definitions/phandle-array
+      - maxItems: 1
+
+  bitclock-master:
+    description: Indicates dai-link bit clock master
+    allOf:
+      - $ref: /schemas/types.yaml#/definitions/phandle-array
+      - maxItems: 1
+
+  frame-inversion:
+    description: dai-link uses frame clock inversion
+    $ref: /schemas/types.yaml#/definitions/flag
+
+  bitclock-inversion:
+    description: dai-link uses bit clock inversion
+    $ref: /schemas/types.yaml#/definitions/flag
+
+  dai-tdm-slot-num:
+    description: see tdm-slot.txt.
+    $ref: /schemas/types.yaml#/definitions/uint32
+
+  dai-tdm-slot-width:
+    description: see tdm-slot.txt.
+    $ref: /schemas/types.yaml#/definitions/uint32
+
+  system-clock-frequency:
+    description: |
+      If a clock is specified and a multiplication factor is given with
+      mclk-fs, the clock will be set to the calculated mclk frequency
+      when the stream starts.
+    $ref: /schemas/types.yaml#/definitions/uint32
+
+  system-clock-direction-out:
+    description: |
+      specifies clock direction as 'out' on initialization.
+      It is useful for some aCPUs with fixed clocks.
+    $ref: /schemas/types.yaml#/definitions/flag
+
+  mclk-fs:
+    description: |
+      Multiplication factor between stream rate and codec mclk.
+      When defined, mclk-fs property defined in dai-link sub nodes are ignored.
+    $ref: /schemas/types.yaml#/definitions/uint32
+
+  aux-devs:
+    description: |
+      List of phandles pointing to auxiliary devices, such
+      as amplifiers, to be added to the sound card.
+    $ref: /schemas/types.yaml#/definitions/phandle-array
+
+  convert-rate:
+    description: CPU to Codec rate convert.
+    $ref: /schemas/types.yaml#/definitions/uint32
+
+  convert-channels:
+    description: CPU to Codec rate channels.
+    $ref: /schemas/types.yaml#/definitions/uint32
+
+  prefix:
+    description: "device name prefix"
+    $ref: /schemas/types.yaml#/definitions/string
+
+  label:
+    maxItems: 1
+
+  routing:
+    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.
+    $ref: /schemas/types.yaml#/definitions/non-unique-string-array
+
+  widgets:
+    description: User specified audio sound widgets.
+    $ref: /schemas/types.yaml#/definitions/non-unique-string-array
+
+  pin-switches:
+    description: the widget names for which pin switches must be created.
+    $ref: /schemas/types.yaml#/definitions/string-array
+
+  format:
+    description: audio format.
+    items:
+      enum:
+        - i2s
+        - right_j
+        - left_j
+        - dsp_a
+        - dsp_b
+        - ac97
+        - pdm
+        - msb
+        - lsb
+
+  dai:
+    type: object
+    properties:
+      sound-dai:
+        maxItems: 1
+
+      # common properties
+      mclk-fs:
+        $ref: "#/definitions/mclk-fs"
+      prefix:
+        $ref: "#/definitions/prefix"
+      frame-inversion:
+        $ref: "#/definitions/frame-inversion"
+      bitclock-inversion:
+        $ref: "#/definitions/bitclock-inversion"
+      frame-master:
+        $ref: /schemas/types.yaml#/definitions/flag
+      bitclock-master:
+        $ref: /schemas/types.yaml#/definitions/flag
+
+      dai-tdm-slot-num:
+        $ref: "#/definitions/dai-tdm-slot-num"
+      dai-tdm-slot-width:
+        $ref: "#/definitions/dai-tdm-slot-width"
+      clocks:
+        maxItems: 1
+      system-clock-frequency:
+        $ref: "#/definitions/system-clock-frequency"
+      system-clock-direction-out:
+        $ref: "#/definitions/system-clock-direction-out"
+    required:
+      - sound-dai
+
+properties:
+  compatible:
+    contains:
+      enum:
+        - simple-audio-card
+        - simple-scu-audio-card
+
+  "#address-cells":
+    const: 1
+  "#size-cells":
+    const: 0
+
+  label:
+    $ref: "#/definitions/label"
+
+  simple-audio-card,name:
+    description: User specified audio sound card name.
+    $ref: /schemas/types.yaml#/definitions/string
+
+# use patternProperties to avoid naming "xxx,yyy" issue
+patternProperties:
+  "^simple-audio-card,widgets$":
+    $ref: "#/definitions/widgets"
+  "^simple-audio-card,routing$":
+    $ref: "#/definitions/routing"
+  "^simple-audio-card,cpu(@[0-9a-f]+)?":
+    $ref: "#/definitions/dai"
+  "^simple-audio-card,codec(@[0-9a-f]+)?":
+    $ref: "#/definitions/dai"
+
+  # common properties
+  "^simple-audio-card,frame-master$":
+    $ref: "#/definitions/frame-master"
+  "^simple-audio-card,bitclock-master$":
+    $ref: "#/definitions/bitclock-master"
+  "^simple-audio-card,frame-inversion$":
+    $ref: "#/definitions/frame-inversion"
+  "^simple-audio-card,bitclock-inversion$":
+    $ref: "#/definitions/bitclock-inversion"
+  "^simple-audio-card,format$":
+    $ref: "#/definitions/format"
+  "^simple-audio-card,mclk-fs$":
+    $ref: "#/definitions/mclk-fs"
+  "^simple-audio-card,aux-devs$":
+    $ref: "#/definitions/aux-devs"
+  "^simple-audio-card,convert-rate$":
+    $ref: "#/definitions/convert-rate"
+  "^simple-audio-card,convert-channels$":
+    $ref: "#/definitions/convert-channels"
+  "^simple-audio-card,prefix$":
+    $ref: "#/definitions/prefix"
+  "^simple-audio-card,pin-switches$":
+    $ref: "#/definitions/pin-switches"
+  "^simple-audio-card,hp-det-gpio$":
+    maxItems: 1
+  "^simple-audio-card,mic-det-gpio$":
+    maxItems: 1
+
+  "^simple-audio-card,dai-link(@[0-9a-f]+)?$":
+    description: |
+      Container for dai-link level properties and the CPU and CODEC sub-nodes.
+      This container may be omitted when the card has only one DAI link.
+    type: object
+    properties:
+      reg:
+        maxItems: 1
+
+      # common properties
+      frame-master:
+        $ref: "#/definitions/frame-master"
+      bitclock-master:
+        $ref: "#/definitions/bitclock-master"
+      frame-inversion:
+        $ref: "#/definitions/frame-inversion"
+      bitclock-inversion:
+        $ref: "#/definitions/bitclock-inversion"
+      format:
+        $ref: "#/definitions/format"
+      mclk-fs:
+        $ref: "#/definitions/mclk-fs"
+      aux-devs:
+        $ref: "#/definitions/aux-devs"
+      convert-rate:
+        $ref: "#/definitions/convert-rate"
+      convert-channels:
+        $ref: "#/definitions/convert-channels"
+      prefix:
+        $ref: "#/definitions/prefix"
+      pin-switches:
+        $ref: "#/definitions/pin-switches"
+      hp-det-gpio:
+        maxItems: 1
+      mic-det-gpio:
+        maxItems: 1
+
+    patternProperties:
+      "^cpu(@[0-9a-f]+)?":
+        $ref: "#/definitions/dai"
+      "^codec(@[0-9a-f]+)?":
+        $ref: "#/definitions/dai"
+    additionalProperties: false
+
+required:
+  - compatible
+
+additionalProperties: false
+
+examples:
+#--------------------
+# single DAI link
+#--------------------
+  - |
+    sound {
+        compatible = "simple-audio-card";
+        simple-audio-card,name = "VF610-Tower-Sound-Card";
+        simple-audio-card,format = "left_j";
+        simple-audio-card,bitclock-master = <&dailink0_master>;
+        simple-audio-card,frame-master = <&dailink0_master>;
+        simple-audio-card,widgets =
+                "Microphone", "Microphone Jack",
+                "Headphone", "Headphone Jack",
+                "Speaker", "External Speaker";
+        simple-audio-card,routing =
+                "MIC_IN", "Microphone Jack",
+                "Headphone Jack", "HP_OUT",
+                "External Speaker", "LINE_OUT";
+
+        simple-audio-card,cpu {
+            sound-dai = <&sh_fsi2 0>;
+        };
+
+        dailink0_master: simple-audio-card,codec {
+            sound-dai = <&ak4648>;
+            clocks = <&osc>;
+        };
+    };
+
+#--------------------
+# Multi DAI links
+#--------------------
+  - |
+    sound {
+        compatible = "simple-audio-card";
+        simple-audio-card,name = "Cubox Audio";
+
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        simple-audio-card,dai-link@0 {         /* I2S - HDMI */
+            reg = <0>;
+            format = "i2s";
+            cpu {
+                sound-dai = <&audio0>;
+            };
+            codec {
+                sound-dai = <&tda998x0>;
+            };
+        };
+
+        simple-audio-card,dai-link@1 {         /* S/PDIF - HDMI */
+            reg = <1>;
+            cpu {
+                sound-dai = <&audio1>;
+            };
+            codec {
+                sound-dai = <&tda998x1>;
+            };
+        };
+
+        simple-audio-card,dai-link@2 {         /* S/PDIF - S/PDIF */
+            reg = <2>;
+            cpu {
+                sound-dai = <&audio2>;
+            };
+            codec {
+                sound-dai = <&spdif_codec>;
+            };
+        };
+    };
+
+#--------------------
+# route audio from IMX6 SSI2 through TLV320DAC3100 codec
+# through TPA6130A2 amplifier to headphones:
+#--------------------
+  - |
+    sound {
+        compatible = "simple-audio-card";
+
+        simple-audio-card,widgets =
+            "Headphone", "Headphone Jack";
+        simple-audio-card,routing =
+            "Headphone Jack", "HPLEFT",
+            "Headphone Jack", "HPRIGHT",
+            "LEFTIN", "HPL",
+            "RIGHTIN", "HPR";
+        simple-audio-card,aux-devs = <&amp>;
+        simple-audio-card,cpu {
+            sound-dai = <&ssi2>;
+        };
+        simple-audio-card,codec {
+            sound-dai = <&codec>;
+            clocks = <&clocks>;
+        };
+    };
+
+#--------------------
+# Sampling Rate Conversion
+#--------------------
+  - |
+    sound {
+        compatible = "simple-audio-card";
+
+        simple-audio-card,name = "rsnd-ak4643";
+        simple-audio-card,format = "left_j";
+        simple-audio-card,bitclock-master = <&sndcodec>;
+        simple-audio-card,frame-master = <&sndcodec>;
+
+        simple-audio-card,convert-rate = <48000>;
+
+        simple-audio-card,prefix = "ak4642";
+        simple-audio-card,routing = "ak4642 Playback", "DAI0 Playback",
+                                    "DAI0 Capture", "ak4642 Capture";
+
+        sndcpu: simple-audio-card,cpu {
+            sound-dai = <&rcar_sound>;
+        };
+
+        sndcodec: simple-audio-card,codec {
+            sound-dai = <&ak4643>;
+            system-clock-frequency = <11289600>;
+        };
+    };
+
+#--------------------
+# 2 CPU 1 Codec (Mixing)
+#--------------------
+  - |
+    sound {
+        compatible = "simple-audio-card";
+
+        simple-audio-card,name = "rsnd-ak4643";
+        simple-audio-card,format = "left_j";
+        simple-audio-card,bitclock-master = <&dpcmcpu>;
+        simple-audio-card,frame-master = <&dpcmcpu>;
+
+        simple-audio-card,convert-rate = <48000>;
+        simple-audio-card,convert-channels = <2>;
+
+        simple-audio-card,routing = "ak4642 Playback", "DAI0 Playback",
+                                    "ak4642 Playback", "DAI1 Playback";
+
+        dpcmcpu: simple-audio-card,cpu@0 {
+            sound-dai = <&rcar_sound 0>;
+        };
+
+        simple-audio-card,cpu@1 {
+            sound-dai = <&rcar_sound 1>;
+        };
+
+        simple-audio-card,codec {
+            prefix = "ak4642";
+            sound-dai = <&ak4643>;
+            clocks = <&audio_clock>;
+        };
+    };
+
+#--------------------
+# Multi DAI links with DPCM:
+#
+# CPU0 ------ ak4613
+# CPU1 ------ PCM3168A-p  /* DPCM 1ch/2ch */
+# CPU2 --/                /* DPCM 3ch/4ch */
+# CPU3 --/                /* DPCM 5ch/6ch */
+# CPU4 --/                /* DPCM 7ch/8ch */
+# CPU5 ------ PCM3168A-c
+#--------------------
+  - |
+    sound {
+        compatible = "simple-audio-card";
+
+        simple-audio-card,routing =
+            "pcm3168a Playback", "DAI1 Playback",
+            "pcm3168a Playback", "DAI2 Playback",
+            "pcm3168a Playback", "DAI3 Playback",
+            "pcm3168a Playback", "DAI4 Playback";
+
+        simple-audio-card,dai-link@0 {
+            format = "left_j";
+            bitclock-master = <&sndcpu0>;
+            frame-master = <&sndcpu0>;
+
+            sndcpu0: cpu {
+                sound-dai = <&rcar_sound 0>;
+            };
+            codec {
+                sound-dai = <&ak4613>;
+            };
+        };
+
+        simple-audio-card,dai-link@1 {
+            format = "i2s";
+            bitclock-master = <&sndcpu1>;
+            frame-master = <&sndcpu1>;
+
+            convert-channels = <8>; /* TDM Split */
+
+            sndcpu1: cpu@0 {
+                sound-dai = <&rcar_sound 1>;
+            };
+            cpu@1 {
+                sound-dai = <&rcar_sound 2>;
+            };
+            cpu@2 {
+                sound-dai = <&rcar_sound 3>;
+            };
+            cpu@3 {
+                sound-dai = <&rcar_sound 4>;
+            };
+            codec {
+                mclk-fs = <512>;
+                prefix = "pcm3168a";
+                dai-tdm-slot-num = <8>;
+                sound-dai = <&pcm3168a 0>;
+            };
+        };
+
+        simple-audio-card,dai-link@2 {
+            format = "i2s";
+            bitclock-master = <&sndcpu2>;
+            frame-master = <&sndcpu2>;
+
+            sndcpu2: cpu {
+                sound-dai = <&rcar_sound 5>;
+            };
+            codec {
+                mclk-fs = <512>;
+                prefix = "pcm3168a";
+                sound-dai = <&pcm3168a 1>;
+            };
+        };
+    };