xref: /openbmc/linux/Documentation/devicetree/bindings/sound/simple-card.yaml (revision 5aaec71d605426d5963e17a88d0d9db97ccd3345)
179149fb8SKuninori Morimoto# SPDX-License-Identifier: GPL-2.0
279149fb8SKuninori Morimoto%YAML 1.2
379149fb8SKuninori Morimoto---
479149fb8SKuninori Morimoto$id: http://devicetree.org/schemas/sound/simple-card.yaml#
579149fb8SKuninori Morimoto$schema: http://devicetree.org/meta-schemas/core.yaml#
679149fb8SKuninori Morimoto
779149fb8SKuninori Morimototitle: Simple Audio Card Driver Device Tree Bindings
879149fb8SKuninori Morimoto
979149fb8SKuninori Morimotomaintainers:
1079149fb8SKuninori Morimoto  - Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
1179149fb8SKuninori Morimoto
1279149fb8SKuninori Morimotodefinitions:
1379149fb8SKuninori Morimoto
1479149fb8SKuninori Morimoto  frame-master:
1579149fb8SKuninori Morimoto    description: Indicates dai-link frame master.
1679149fb8SKuninori Morimoto    allOf:
1779149fb8SKuninori Morimoto      - $ref: /schemas/types.yaml#/definitions/phandle-array
1879149fb8SKuninori Morimoto      - maxItems: 1
1979149fb8SKuninori Morimoto
2079149fb8SKuninori Morimoto  bitclock-master:
2179149fb8SKuninori Morimoto    description: Indicates dai-link bit clock master
2279149fb8SKuninori Morimoto    allOf:
2379149fb8SKuninori Morimoto      - $ref: /schemas/types.yaml#/definitions/phandle-array
2479149fb8SKuninori Morimoto      - maxItems: 1
2579149fb8SKuninori Morimoto
2679149fb8SKuninori Morimoto  frame-inversion:
2779149fb8SKuninori Morimoto    description: dai-link uses frame clock inversion
2879149fb8SKuninori Morimoto    $ref: /schemas/types.yaml#/definitions/flag
2979149fb8SKuninori Morimoto
3079149fb8SKuninori Morimoto  bitclock-inversion:
3179149fb8SKuninori Morimoto    description: dai-link uses bit clock inversion
3279149fb8SKuninori Morimoto    $ref: /schemas/types.yaml#/definitions/flag
3379149fb8SKuninori Morimoto
3479149fb8SKuninori Morimoto  dai-tdm-slot-num:
3579149fb8SKuninori Morimoto    description: see tdm-slot.txt.
3679149fb8SKuninori Morimoto    $ref: /schemas/types.yaml#/definitions/uint32
3779149fb8SKuninori Morimoto
3879149fb8SKuninori Morimoto  dai-tdm-slot-width:
3979149fb8SKuninori Morimoto    description: see tdm-slot.txt.
4079149fb8SKuninori Morimoto    $ref: /schemas/types.yaml#/definitions/uint32
4179149fb8SKuninori Morimoto
4279149fb8SKuninori Morimoto  system-clock-frequency:
4379149fb8SKuninori Morimoto    description: |
4479149fb8SKuninori Morimoto      If a clock is specified and a multiplication factor is given with
4579149fb8SKuninori Morimoto      mclk-fs, the clock will be set to the calculated mclk frequency
4679149fb8SKuninori Morimoto      when the stream starts.
4779149fb8SKuninori Morimoto    $ref: /schemas/types.yaml#/definitions/uint32
4879149fb8SKuninori Morimoto
4979149fb8SKuninori Morimoto  system-clock-direction-out:
5079149fb8SKuninori Morimoto    description: |
5179149fb8SKuninori Morimoto      specifies clock direction as 'out' on initialization.
5279149fb8SKuninori Morimoto      It is useful for some aCPUs with fixed clocks.
5379149fb8SKuninori Morimoto    $ref: /schemas/types.yaml#/definitions/flag
5479149fb8SKuninori Morimoto
5579149fb8SKuninori Morimoto  mclk-fs:
5679149fb8SKuninori Morimoto    description: |
5779149fb8SKuninori Morimoto      Multiplication factor between stream rate and codec mclk.
5879149fb8SKuninori Morimoto      When defined, mclk-fs property defined in dai-link sub nodes are ignored.
5979149fb8SKuninori Morimoto    $ref: /schemas/types.yaml#/definitions/uint32
6079149fb8SKuninori Morimoto
6179149fb8SKuninori Morimoto  aux-devs:
6279149fb8SKuninori Morimoto    description: |
6379149fb8SKuninori Morimoto      List of phandles pointing to auxiliary devices, such
6479149fb8SKuninori Morimoto      as amplifiers, to be added to the sound card.
6579149fb8SKuninori Morimoto    $ref: /schemas/types.yaml#/definitions/phandle-array
6679149fb8SKuninori Morimoto
6779149fb8SKuninori Morimoto  convert-rate:
6879149fb8SKuninori Morimoto    description: CPU to Codec rate convert.
6979149fb8SKuninori Morimoto    $ref: /schemas/types.yaml#/definitions/uint32
7079149fb8SKuninori Morimoto
7179149fb8SKuninori Morimoto  convert-channels:
7279149fb8SKuninori Morimoto    description: CPU to Codec rate channels.
7379149fb8SKuninori Morimoto    $ref: /schemas/types.yaml#/definitions/uint32
7479149fb8SKuninori Morimoto
7579149fb8SKuninori Morimoto  prefix:
7679149fb8SKuninori Morimoto    description: "device name prefix"
7779149fb8SKuninori Morimoto    $ref: /schemas/types.yaml#/definitions/string
7879149fb8SKuninori Morimoto
7979149fb8SKuninori Morimoto  label:
8079149fb8SKuninori Morimoto    maxItems: 1
8179149fb8SKuninori Morimoto
8279149fb8SKuninori Morimoto  routing:
8379149fb8SKuninori Morimoto    description: |
8479149fb8SKuninori Morimoto      A list of the connections between audio components.
8579149fb8SKuninori Morimoto      Each entry is a pair of strings, the first being the
8679149fb8SKuninori Morimoto      connection's sink, the second being the connection's source.
8779149fb8SKuninori Morimoto    $ref: /schemas/types.yaml#/definitions/non-unique-string-array
8879149fb8SKuninori Morimoto
8979149fb8SKuninori Morimoto  widgets:
9079149fb8SKuninori Morimoto    description: User specified audio sound widgets.
9179149fb8SKuninori Morimoto    $ref: /schemas/types.yaml#/definitions/non-unique-string-array
9279149fb8SKuninori Morimoto
9379149fb8SKuninori Morimoto  pin-switches:
9479149fb8SKuninori Morimoto    description: the widget names for which pin switches must be created.
9579149fb8SKuninori Morimoto    $ref: /schemas/types.yaml#/definitions/string-array
9679149fb8SKuninori Morimoto
9779149fb8SKuninori Morimoto  format:
9879149fb8SKuninori Morimoto    description: audio format.
9979149fb8SKuninori Morimoto    items:
10079149fb8SKuninori Morimoto      enum:
10179149fb8SKuninori Morimoto        - i2s
10279149fb8SKuninori Morimoto        - right_j
10379149fb8SKuninori Morimoto        - left_j
10479149fb8SKuninori Morimoto        - dsp_a
10579149fb8SKuninori Morimoto        - dsp_b
10679149fb8SKuninori Morimoto        - ac97
10779149fb8SKuninori Morimoto        - pdm
10879149fb8SKuninori Morimoto        - msb
10979149fb8SKuninori Morimoto        - lsb
11079149fb8SKuninori Morimoto
11179149fb8SKuninori Morimoto  dai:
11279149fb8SKuninori Morimoto    type: object
11379149fb8SKuninori Morimoto    properties:
11479149fb8SKuninori Morimoto      sound-dai:
11579149fb8SKuninori Morimoto        maxItems: 1
11679149fb8SKuninori Morimoto
11779149fb8SKuninori Morimoto      # common properties
11879149fb8SKuninori Morimoto      mclk-fs:
11979149fb8SKuninori Morimoto        $ref: "#/definitions/mclk-fs"
12079149fb8SKuninori Morimoto      prefix:
12179149fb8SKuninori Morimoto        $ref: "#/definitions/prefix"
12279149fb8SKuninori Morimoto      frame-inversion:
12379149fb8SKuninori Morimoto        $ref: "#/definitions/frame-inversion"
12479149fb8SKuninori Morimoto      bitclock-inversion:
12579149fb8SKuninori Morimoto        $ref: "#/definitions/bitclock-inversion"
12679149fb8SKuninori Morimoto      frame-master:
12779149fb8SKuninori Morimoto        $ref: /schemas/types.yaml#/definitions/flag
12879149fb8SKuninori Morimoto      bitclock-master:
12979149fb8SKuninori Morimoto        $ref: /schemas/types.yaml#/definitions/flag
13079149fb8SKuninori Morimoto
13179149fb8SKuninori Morimoto      dai-tdm-slot-num:
13279149fb8SKuninori Morimoto        $ref: "#/definitions/dai-tdm-slot-num"
13379149fb8SKuninori Morimoto      dai-tdm-slot-width:
13479149fb8SKuninori Morimoto        $ref: "#/definitions/dai-tdm-slot-width"
13579149fb8SKuninori Morimoto      clocks:
13679149fb8SKuninori Morimoto        maxItems: 1
13779149fb8SKuninori Morimoto      system-clock-frequency:
13879149fb8SKuninori Morimoto        $ref: "#/definitions/system-clock-frequency"
13979149fb8SKuninori Morimoto      system-clock-direction-out:
14079149fb8SKuninori Morimoto        $ref: "#/definitions/system-clock-direction-out"
14179149fb8SKuninori Morimoto    required:
14279149fb8SKuninori Morimoto      - sound-dai
14379149fb8SKuninori Morimoto
14479149fb8SKuninori Morimotoproperties:
14579149fb8SKuninori Morimoto  compatible:
14679149fb8SKuninori Morimoto    contains:
14779149fb8SKuninori Morimoto      enum:
14879149fb8SKuninori Morimoto        - simple-audio-card
14979149fb8SKuninori Morimoto        - simple-scu-audio-card
15079149fb8SKuninori Morimoto
15179149fb8SKuninori Morimoto  "#address-cells":
15279149fb8SKuninori Morimoto    const: 1
15379149fb8SKuninori Morimoto  "#size-cells":
15479149fb8SKuninori Morimoto    const: 0
15579149fb8SKuninori Morimoto
15679149fb8SKuninori Morimoto  label:
15779149fb8SKuninori Morimoto    $ref: "#/definitions/label"
15879149fb8SKuninori Morimoto
15979149fb8SKuninori Morimoto  simple-audio-card,name:
16079149fb8SKuninori Morimoto    description: User specified audio sound card name.
16179149fb8SKuninori Morimoto    $ref: /schemas/types.yaml#/definitions/string
16279149fb8SKuninori Morimoto
16379149fb8SKuninori Morimoto# use patternProperties to avoid naming "xxx,yyy" issue
16479149fb8SKuninori MorimotopatternProperties:
16579149fb8SKuninori Morimoto  "^simple-audio-card,widgets$":
16679149fb8SKuninori Morimoto    $ref: "#/definitions/widgets"
16779149fb8SKuninori Morimoto  "^simple-audio-card,routing$":
16879149fb8SKuninori Morimoto    $ref: "#/definitions/routing"
16979149fb8SKuninori Morimoto  "^simple-audio-card,cpu(@[0-9a-f]+)?":
17079149fb8SKuninori Morimoto    $ref: "#/definitions/dai"
17179149fb8SKuninori Morimoto  "^simple-audio-card,codec(@[0-9a-f]+)?":
17279149fb8SKuninori Morimoto    $ref: "#/definitions/dai"
17379149fb8SKuninori Morimoto
17479149fb8SKuninori Morimoto  # common properties
17579149fb8SKuninori Morimoto  "^simple-audio-card,frame-master$":
17679149fb8SKuninori Morimoto    $ref: "#/definitions/frame-master"
17779149fb8SKuninori Morimoto  "^simple-audio-card,bitclock-master$":
17879149fb8SKuninori Morimoto    $ref: "#/definitions/bitclock-master"
17979149fb8SKuninori Morimoto  "^simple-audio-card,frame-inversion$":
18079149fb8SKuninori Morimoto    $ref: "#/definitions/frame-inversion"
18179149fb8SKuninori Morimoto  "^simple-audio-card,bitclock-inversion$":
18279149fb8SKuninori Morimoto    $ref: "#/definitions/bitclock-inversion"
18379149fb8SKuninori Morimoto  "^simple-audio-card,format$":
18479149fb8SKuninori Morimoto    $ref: "#/definitions/format"
18579149fb8SKuninori Morimoto  "^simple-audio-card,mclk-fs$":
18679149fb8SKuninori Morimoto    $ref: "#/definitions/mclk-fs"
18779149fb8SKuninori Morimoto  "^simple-audio-card,aux-devs$":
18879149fb8SKuninori Morimoto    $ref: "#/definitions/aux-devs"
18979149fb8SKuninori Morimoto  "^simple-audio-card,convert-rate$":
19079149fb8SKuninori Morimoto    $ref: "#/definitions/convert-rate"
19179149fb8SKuninori Morimoto  "^simple-audio-card,convert-channels$":
19279149fb8SKuninori Morimoto    $ref: "#/definitions/convert-channels"
19379149fb8SKuninori Morimoto  "^simple-audio-card,prefix$":
19479149fb8SKuninori Morimoto    $ref: "#/definitions/prefix"
19579149fb8SKuninori Morimoto  "^simple-audio-card,pin-switches$":
19679149fb8SKuninori Morimoto    $ref: "#/definitions/pin-switches"
19779149fb8SKuninori Morimoto  "^simple-audio-card,hp-det-gpio$":
19879149fb8SKuninori Morimoto    maxItems: 1
19979149fb8SKuninori Morimoto  "^simple-audio-card,mic-det-gpio$":
20079149fb8SKuninori Morimoto    maxItems: 1
20179149fb8SKuninori Morimoto
20279149fb8SKuninori Morimoto  "^simple-audio-card,dai-link(@[0-9a-f]+)?$":
20379149fb8SKuninori Morimoto    description: |
20479149fb8SKuninori Morimoto      Container for dai-link level properties and the CPU and CODEC sub-nodes.
20579149fb8SKuninori Morimoto      This container may be omitted when the card has only one DAI link.
20679149fb8SKuninori Morimoto    type: object
20779149fb8SKuninori Morimoto    properties:
20879149fb8SKuninori Morimoto      reg:
20979149fb8SKuninori Morimoto        maxItems: 1
21079149fb8SKuninori Morimoto
21179149fb8SKuninori Morimoto      # common properties
21279149fb8SKuninori Morimoto      frame-master:
21379149fb8SKuninori Morimoto        $ref: "#/definitions/frame-master"
21479149fb8SKuninori Morimoto      bitclock-master:
21579149fb8SKuninori Morimoto        $ref: "#/definitions/bitclock-master"
21679149fb8SKuninori Morimoto      frame-inversion:
21779149fb8SKuninori Morimoto        $ref: "#/definitions/frame-inversion"
21879149fb8SKuninori Morimoto      bitclock-inversion:
21979149fb8SKuninori Morimoto        $ref: "#/definitions/bitclock-inversion"
22079149fb8SKuninori Morimoto      format:
22179149fb8SKuninori Morimoto        $ref: "#/definitions/format"
22279149fb8SKuninori Morimoto      mclk-fs:
22379149fb8SKuninori Morimoto        $ref: "#/definitions/mclk-fs"
22479149fb8SKuninori Morimoto      aux-devs:
22579149fb8SKuninori Morimoto        $ref: "#/definitions/aux-devs"
22679149fb8SKuninori Morimoto      convert-rate:
22779149fb8SKuninori Morimoto        $ref: "#/definitions/convert-rate"
22879149fb8SKuninori Morimoto      convert-channels:
22979149fb8SKuninori Morimoto        $ref: "#/definitions/convert-channels"
23079149fb8SKuninori Morimoto      prefix:
23179149fb8SKuninori Morimoto        $ref: "#/definitions/prefix"
23279149fb8SKuninori Morimoto      pin-switches:
23379149fb8SKuninori Morimoto        $ref: "#/definitions/pin-switches"
23479149fb8SKuninori Morimoto      hp-det-gpio:
23579149fb8SKuninori Morimoto        maxItems: 1
23679149fb8SKuninori Morimoto      mic-det-gpio:
23779149fb8SKuninori Morimoto        maxItems: 1
23879149fb8SKuninori Morimoto
23979149fb8SKuninori Morimoto    patternProperties:
24079149fb8SKuninori Morimoto      "^cpu(@[0-9a-f]+)?":
24179149fb8SKuninori Morimoto        $ref: "#/definitions/dai"
24279149fb8SKuninori Morimoto      "^codec(@[0-9a-f]+)?":
24379149fb8SKuninori Morimoto        $ref: "#/definitions/dai"
24479149fb8SKuninori Morimoto    additionalProperties: false
24579149fb8SKuninori Morimoto
24679149fb8SKuninori Morimotorequired:
24779149fb8SKuninori Morimoto  - compatible
24879149fb8SKuninori Morimoto
24979149fb8SKuninori MorimotoadditionalProperties: false
25079149fb8SKuninori Morimoto
25179149fb8SKuninori Morimotoexamples:
25279149fb8SKuninori Morimoto#--------------------
25379149fb8SKuninori Morimoto# single DAI link
25479149fb8SKuninori Morimoto#--------------------
25579149fb8SKuninori Morimoto  - |
25679149fb8SKuninori Morimoto    sound {
25779149fb8SKuninori Morimoto        compatible = "simple-audio-card";
25879149fb8SKuninori Morimoto        simple-audio-card,name = "VF610-Tower-Sound-Card";
25979149fb8SKuninori Morimoto        simple-audio-card,format = "left_j";
26079149fb8SKuninori Morimoto        simple-audio-card,bitclock-master = <&dailink0_master>;
26179149fb8SKuninori Morimoto        simple-audio-card,frame-master = <&dailink0_master>;
26279149fb8SKuninori Morimoto        simple-audio-card,widgets =
26379149fb8SKuninori Morimoto                "Microphone", "Microphone Jack",
26479149fb8SKuninori Morimoto                "Headphone", "Headphone Jack",
26579149fb8SKuninori Morimoto                "Speaker", "External Speaker";
26679149fb8SKuninori Morimoto        simple-audio-card,routing =
26779149fb8SKuninori Morimoto                "MIC_IN", "Microphone Jack",
26879149fb8SKuninori Morimoto                "Headphone Jack", "HP_OUT",
26979149fb8SKuninori Morimoto                "External Speaker", "LINE_OUT";
27079149fb8SKuninori Morimoto
27179149fb8SKuninori Morimoto        simple-audio-card,cpu {
27279149fb8SKuninori Morimoto            sound-dai = <&sh_fsi2 0>;
27379149fb8SKuninori Morimoto        };
27479149fb8SKuninori Morimoto
27579149fb8SKuninori Morimoto        dailink0_master: simple-audio-card,codec {
27679149fb8SKuninori Morimoto            sound-dai = <&ak4648>;
27779149fb8SKuninori Morimoto            clocks = <&osc>;
27879149fb8SKuninori Morimoto        };
27979149fb8SKuninori Morimoto    };
28079149fb8SKuninori Morimoto
28179149fb8SKuninori Morimoto#--------------------
28279149fb8SKuninori Morimoto# Multi DAI links
28379149fb8SKuninori Morimoto#--------------------
28479149fb8SKuninori Morimoto  - |
28579149fb8SKuninori Morimoto    sound {
28679149fb8SKuninori Morimoto        compatible = "simple-audio-card";
28779149fb8SKuninori Morimoto        simple-audio-card,name = "Cubox Audio";
28879149fb8SKuninori Morimoto
28979149fb8SKuninori Morimoto        #address-cells = <1>;
29079149fb8SKuninori Morimoto        #size-cells = <0>;
29179149fb8SKuninori Morimoto
29279149fb8SKuninori Morimoto        simple-audio-card,dai-link@0 {		/* I2S - HDMI */
29379149fb8SKuninori Morimoto            reg = <0>;
29479149fb8SKuninori Morimoto            format = "i2s";
29579149fb8SKuninori Morimoto            cpu {
29679149fb8SKuninori Morimoto                sound-dai = <&audio0>;
29779149fb8SKuninori Morimoto            };
29879149fb8SKuninori Morimoto            codec {
29979149fb8SKuninori Morimoto                sound-dai = <&tda998x0>;
30079149fb8SKuninori Morimoto            };
30179149fb8SKuninori Morimoto        };
30279149fb8SKuninori Morimoto
30379149fb8SKuninori Morimoto        simple-audio-card,dai-link@1 {		/* S/PDIF - HDMI */
30479149fb8SKuninori Morimoto            reg = <1>;
30579149fb8SKuninori Morimoto            cpu {
30679149fb8SKuninori Morimoto                sound-dai = <&audio1>;
30779149fb8SKuninori Morimoto            };
30879149fb8SKuninori Morimoto            codec {
30979149fb8SKuninori Morimoto                sound-dai = <&tda998x1>;
31079149fb8SKuninori Morimoto            };
31179149fb8SKuninori Morimoto        };
31279149fb8SKuninori Morimoto
31379149fb8SKuninori Morimoto        simple-audio-card,dai-link@2 {		/* S/PDIF - S/PDIF */
31479149fb8SKuninori Morimoto            reg = <2>;
31579149fb8SKuninori Morimoto            cpu {
31679149fb8SKuninori Morimoto                sound-dai = <&audio2>;
31779149fb8SKuninori Morimoto            };
31879149fb8SKuninori Morimoto            codec {
31979149fb8SKuninori Morimoto                sound-dai = <&spdif_codec>;
32079149fb8SKuninori Morimoto            };
32179149fb8SKuninori Morimoto        };
32279149fb8SKuninori Morimoto    };
32379149fb8SKuninori Morimoto
32479149fb8SKuninori Morimoto#--------------------
32579149fb8SKuninori Morimoto# route audio from IMX6 SSI2 through TLV320DAC3100 codec
32679149fb8SKuninori Morimoto# through TPA6130A2 amplifier to headphones:
32779149fb8SKuninori Morimoto#--------------------
32879149fb8SKuninori Morimoto  - |
32979149fb8SKuninori Morimoto    sound {
33079149fb8SKuninori Morimoto        compatible = "simple-audio-card";
33179149fb8SKuninori Morimoto
33279149fb8SKuninori Morimoto        simple-audio-card,widgets =
33379149fb8SKuninori Morimoto            "Headphone", "Headphone Jack";
33479149fb8SKuninori Morimoto        simple-audio-card,routing =
33579149fb8SKuninori Morimoto            "Headphone Jack", "HPLEFT",
33679149fb8SKuninori Morimoto            "Headphone Jack", "HPRIGHT",
33779149fb8SKuninori Morimoto            "LEFTIN", "HPL",
33879149fb8SKuninori Morimoto            "RIGHTIN", "HPR";
33979149fb8SKuninori Morimoto        simple-audio-card,aux-devs = <&amp>;
34079149fb8SKuninori Morimoto        simple-audio-card,cpu {
34179149fb8SKuninori Morimoto            sound-dai = <&ssi2>;
34279149fb8SKuninori Morimoto        };
34379149fb8SKuninori Morimoto        simple-audio-card,codec {
34479149fb8SKuninori Morimoto            sound-dai = <&codec>;
34579149fb8SKuninori Morimoto            clocks = <&clocks>;
34679149fb8SKuninori Morimoto        };
34779149fb8SKuninori Morimoto    };
34879149fb8SKuninori Morimoto
34979149fb8SKuninori Morimoto#--------------------
35079149fb8SKuninori Morimoto# Sampling Rate Conversion
35179149fb8SKuninori Morimoto#--------------------
35279149fb8SKuninori Morimoto  - |
35379149fb8SKuninori Morimoto    sound {
35479149fb8SKuninori Morimoto        compatible = "simple-audio-card";
35579149fb8SKuninori Morimoto
35679149fb8SKuninori Morimoto        simple-audio-card,name = "rsnd-ak4643";
35779149fb8SKuninori Morimoto        simple-audio-card,format = "left_j";
35879149fb8SKuninori Morimoto        simple-audio-card,bitclock-master = <&sndcodec>;
35979149fb8SKuninori Morimoto        simple-audio-card,frame-master = <&sndcodec>;
36079149fb8SKuninori Morimoto
36179149fb8SKuninori Morimoto        simple-audio-card,convert-rate = <48000>;
36279149fb8SKuninori Morimoto
36379149fb8SKuninori Morimoto        simple-audio-card,prefix = "ak4642";
36479149fb8SKuninori Morimoto        simple-audio-card,routing = "ak4642 Playback", "DAI0 Playback",
36579149fb8SKuninori Morimoto                                    "DAI0 Capture", "ak4642 Capture";
36679149fb8SKuninori Morimoto
36779149fb8SKuninori Morimoto        sndcpu: simple-audio-card,cpu {
36879149fb8SKuninori Morimoto            sound-dai = <&rcar_sound>;
36979149fb8SKuninori Morimoto        };
37079149fb8SKuninori Morimoto
37179149fb8SKuninori Morimoto        sndcodec: simple-audio-card,codec {
37279149fb8SKuninori Morimoto            sound-dai = <&ak4643>;
37379149fb8SKuninori Morimoto            system-clock-frequency = <11289600>;
37479149fb8SKuninori Morimoto        };
37579149fb8SKuninori Morimoto    };
37679149fb8SKuninori Morimoto
37779149fb8SKuninori Morimoto#--------------------
37879149fb8SKuninori Morimoto# 2 CPU 1 Codec (Mixing)
37979149fb8SKuninori Morimoto#--------------------
38079149fb8SKuninori Morimoto  - |
38179149fb8SKuninori Morimoto    sound {
38279149fb8SKuninori Morimoto        compatible = "simple-audio-card";
383*5aaec71dSFabio Estevam        #address-cells = <1>;
384*5aaec71dSFabio Estevam        #size-cells = <0>;
38579149fb8SKuninori Morimoto
38679149fb8SKuninori Morimoto        simple-audio-card,name = "rsnd-ak4643";
38779149fb8SKuninori Morimoto        simple-audio-card,format = "left_j";
38879149fb8SKuninori Morimoto        simple-audio-card,bitclock-master = <&dpcmcpu>;
38979149fb8SKuninori Morimoto        simple-audio-card,frame-master = <&dpcmcpu>;
39079149fb8SKuninori Morimoto
39179149fb8SKuninori Morimoto        simple-audio-card,convert-rate = <48000>;
39279149fb8SKuninori Morimoto        simple-audio-card,convert-channels = <2>;
39379149fb8SKuninori Morimoto
39479149fb8SKuninori Morimoto        simple-audio-card,routing = "ak4642 Playback", "DAI0 Playback",
39579149fb8SKuninori Morimoto                                    "ak4642 Playback", "DAI1 Playback";
39679149fb8SKuninori Morimoto
39779149fb8SKuninori Morimoto        dpcmcpu: simple-audio-card,cpu@0 {
398*5aaec71dSFabio Estevam            reg = <0>;
39979149fb8SKuninori Morimoto            sound-dai = <&rcar_sound 0>;
40079149fb8SKuninori Morimoto        };
40179149fb8SKuninori Morimoto
40279149fb8SKuninori Morimoto        simple-audio-card,cpu@1 {
403*5aaec71dSFabio Estevam            reg = <1>;
40479149fb8SKuninori Morimoto            sound-dai = <&rcar_sound 1>;
40579149fb8SKuninori Morimoto        };
40679149fb8SKuninori Morimoto
40779149fb8SKuninori Morimoto        simple-audio-card,codec {
40879149fb8SKuninori Morimoto            prefix = "ak4642";
40979149fb8SKuninori Morimoto            sound-dai = <&ak4643>;
41079149fb8SKuninori Morimoto            clocks = <&audio_clock>;
41179149fb8SKuninori Morimoto        };
41279149fb8SKuninori Morimoto    };
41379149fb8SKuninori Morimoto
41479149fb8SKuninori Morimoto#--------------------
41579149fb8SKuninori Morimoto# Multi DAI links with DPCM:
41679149fb8SKuninori Morimoto#
41779149fb8SKuninori Morimoto# CPU0 ------ ak4613
41879149fb8SKuninori Morimoto# CPU1 ------ PCM3168A-p  /* DPCM 1ch/2ch */
41979149fb8SKuninori Morimoto# CPU2 --/                /* DPCM 3ch/4ch */
42079149fb8SKuninori Morimoto# CPU3 --/                /* DPCM 5ch/6ch */
42179149fb8SKuninori Morimoto# CPU4 --/                /* DPCM 7ch/8ch */
42279149fb8SKuninori Morimoto# CPU5 ------ PCM3168A-c
42379149fb8SKuninori Morimoto#--------------------
42479149fb8SKuninori Morimoto  - |
42579149fb8SKuninori Morimoto    sound {
42679149fb8SKuninori Morimoto        compatible = "simple-audio-card";
427*5aaec71dSFabio Estevam        #address-cells = <1>;
428*5aaec71dSFabio Estevam        #size-cells = <0>;
42979149fb8SKuninori Morimoto
43079149fb8SKuninori Morimoto        simple-audio-card,routing =
43179149fb8SKuninori Morimoto            "pcm3168a Playback", "DAI1 Playback",
43279149fb8SKuninori Morimoto            "pcm3168a Playback", "DAI2 Playback",
43379149fb8SKuninori Morimoto            "pcm3168a Playback", "DAI3 Playback",
43479149fb8SKuninori Morimoto            "pcm3168a Playback", "DAI4 Playback";
43579149fb8SKuninori Morimoto
43679149fb8SKuninori Morimoto        simple-audio-card,dai-link@0 {
437*5aaec71dSFabio Estevam            reg = <0>;
43879149fb8SKuninori Morimoto            format = "left_j";
43979149fb8SKuninori Morimoto            bitclock-master = <&sndcpu0>;
44079149fb8SKuninori Morimoto            frame-master = <&sndcpu0>;
44179149fb8SKuninori Morimoto
44279149fb8SKuninori Morimoto            sndcpu0: cpu {
44379149fb8SKuninori Morimoto                sound-dai = <&rcar_sound 0>;
44479149fb8SKuninori Morimoto            };
44579149fb8SKuninori Morimoto            codec {
44679149fb8SKuninori Morimoto                sound-dai = <&ak4613>;
44779149fb8SKuninori Morimoto            };
44879149fb8SKuninori Morimoto        };
44979149fb8SKuninori Morimoto
45079149fb8SKuninori Morimoto        simple-audio-card,dai-link@1 {
451*5aaec71dSFabio Estevam            reg = <1>;
45279149fb8SKuninori Morimoto            format = "i2s";
45379149fb8SKuninori Morimoto            bitclock-master = <&sndcpu1>;
45479149fb8SKuninori Morimoto            frame-master = <&sndcpu1>;
45579149fb8SKuninori Morimoto
45679149fb8SKuninori Morimoto            convert-channels = <8>; /* TDM Split */
45779149fb8SKuninori Morimoto
458*5aaec71dSFabio Estevam            sndcpu1: cpu0 {
45979149fb8SKuninori Morimoto                sound-dai = <&rcar_sound 1>;
46079149fb8SKuninori Morimoto            };
461*5aaec71dSFabio Estevam            cpu1 {
46279149fb8SKuninori Morimoto                sound-dai = <&rcar_sound 2>;
46379149fb8SKuninori Morimoto            };
464*5aaec71dSFabio Estevam            cpu2 {
46579149fb8SKuninori Morimoto                sound-dai = <&rcar_sound 3>;
46679149fb8SKuninori Morimoto            };
467*5aaec71dSFabio Estevam            cpu3 {
46879149fb8SKuninori Morimoto                sound-dai = <&rcar_sound 4>;
46979149fb8SKuninori Morimoto            };
47079149fb8SKuninori Morimoto            codec {
47179149fb8SKuninori Morimoto                mclk-fs = <512>;
47279149fb8SKuninori Morimoto                prefix = "pcm3168a";
47379149fb8SKuninori Morimoto                dai-tdm-slot-num = <8>;
47479149fb8SKuninori Morimoto                sound-dai = <&pcm3168a 0>;
47579149fb8SKuninori Morimoto            };
47679149fb8SKuninori Morimoto        };
47779149fb8SKuninori Morimoto
47879149fb8SKuninori Morimoto        simple-audio-card,dai-link@2 {
479*5aaec71dSFabio Estevam            reg = <2>;
48079149fb8SKuninori Morimoto            format = "i2s";
48179149fb8SKuninori Morimoto            bitclock-master = <&sndcpu2>;
48279149fb8SKuninori Morimoto            frame-master = <&sndcpu2>;
48379149fb8SKuninori Morimoto
48479149fb8SKuninori Morimoto            sndcpu2: cpu {
48579149fb8SKuninori Morimoto                sound-dai = <&rcar_sound 5>;
48679149fb8SKuninori Morimoto            };
48779149fb8SKuninori Morimoto            codec {
48879149fb8SKuninori Morimoto                mclk-fs = <512>;
48979149fb8SKuninori Morimoto                prefix = "pcm3168a";
49079149fb8SKuninori Morimoto                sound-dai = <&pcm3168a 1>;
49179149fb8SKuninori Morimoto            };
49279149fb8SKuninori Morimoto        };
49379149fb8SKuninori Morimoto    };
494