18c2ecf20Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0
28c2ecf20Sopenharmony_ci%YAML 1.2
38c2ecf20Sopenharmony_ci---
48c2ecf20Sopenharmony_ci$id: http://devicetree.org/schemas/sound/simple-card.yaml#
58c2ecf20Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
68c2ecf20Sopenharmony_ci
78c2ecf20Sopenharmony_cititle: Simple Audio Card Driver Device Tree Bindings
88c2ecf20Sopenharmony_ci
98c2ecf20Sopenharmony_cimaintainers:
108c2ecf20Sopenharmony_ci  - Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
118c2ecf20Sopenharmony_ci
128c2ecf20Sopenharmony_cidefinitions:
138c2ecf20Sopenharmony_ci
148c2ecf20Sopenharmony_ci  frame-master:
158c2ecf20Sopenharmony_ci    description: Indicates dai-link frame master.
168c2ecf20Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/phandle-array
178c2ecf20Sopenharmony_ci    maxItems: 1
188c2ecf20Sopenharmony_ci
198c2ecf20Sopenharmony_ci  bitclock-master:
208c2ecf20Sopenharmony_ci    description: Indicates dai-link bit clock master
218c2ecf20Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/phandle-array
228c2ecf20Sopenharmony_ci    maxItems: 1
238c2ecf20Sopenharmony_ci
248c2ecf20Sopenharmony_ci  frame-inversion:
258c2ecf20Sopenharmony_ci    description: dai-link uses frame clock inversion
268c2ecf20Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/flag
278c2ecf20Sopenharmony_ci
288c2ecf20Sopenharmony_ci  bitclock-inversion:
298c2ecf20Sopenharmony_ci    description: dai-link uses bit clock inversion
308c2ecf20Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/flag
318c2ecf20Sopenharmony_ci
328c2ecf20Sopenharmony_ci  dai-tdm-slot-num:
338c2ecf20Sopenharmony_ci    description: see tdm-slot.txt.
348c2ecf20Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/uint32
358c2ecf20Sopenharmony_ci
368c2ecf20Sopenharmony_ci  dai-tdm-slot-width:
378c2ecf20Sopenharmony_ci    description: see tdm-slot.txt.
388c2ecf20Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/uint32
398c2ecf20Sopenharmony_ci
408c2ecf20Sopenharmony_ci  system-clock-frequency:
418c2ecf20Sopenharmony_ci    description: |
428c2ecf20Sopenharmony_ci      If a clock is specified and a multiplication factor is given with
438c2ecf20Sopenharmony_ci      mclk-fs, the clock will be set to the calculated mclk frequency
448c2ecf20Sopenharmony_ci      when the stream starts.
458c2ecf20Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/uint32
468c2ecf20Sopenharmony_ci
478c2ecf20Sopenharmony_ci  system-clock-direction-out:
488c2ecf20Sopenharmony_ci    description: |
498c2ecf20Sopenharmony_ci      specifies clock direction as 'out' on initialization.
508c2ecf20Sopenharmony_ci      It is useful for some aCPUs with fixed clocks.
518c2ecf20Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/flag
528c2ecf20Sopenharmony_ci
538c2ecf20Sopenharmony_ci  mclk-fs:
548c2ecf20Sopenharmony_ci    description: |
558c2ecf20Sopenharmony_ci      Multiplication factor between stream rate and codec mclk.
568c2ecf20Sopenharmony_ci      When defined, mclk-fs property defined in dai-link sub nodes are ignored.
578c2ecf20Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/uint32
588c2ecf20Sopenharmony_ci
598c2ecf20Sopenharmony_ci  aux-devs:
608c2ecf20Sopenharmony_ci    description: |
618c2ecf20Sopenharmony_ci      List of phandles pointing to auxiliary devices, such
628c2ecf20Sopenharmony_ci      as amplifiers, to be added to the sound card.
638c2ecf20Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/phandle-array
648c2ecf20Sopenharmony_ci
658c2ecf20Sopenharmony_ci  convert-rate:
668c2ecf20Sopenharmony_ci    description: CPU to Codec rate convert.
678c2ecf20Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/uint32
688c2ecf20Sopenharmony_ci
698c2ecf20Sopenharmony_ci  convert-channels:
708c2ecf20Sopenharmony_ci    description: CPU to Codec rate channels.
718c2ecf20Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/uint32
728c2ecf20Sopenharmony_ci
738c2ecf20Sopenharmony_ci  prefix:
748c2ecf20Sopenharmony_ci    description: "device name prefix"
758c2ecf20Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/string
768c2ecf20Sopenharmony_ci
778c2ecf20Sopenharmony_ci  label:
788c2ecf20Sopenharmony_ci    maxItems: 1
798c2ecf20Sopenharmony_ci
808c2ecf20Sopenharmony_ci  routing:
818c2ecf20Sopenharmony_ci    description: |
828c2ecf20Sopenharmony_ci      A list of the connections between audio components.
838c2ecf20Sopenharmony_ci      Each entry is a pair of strings, the first being the
848c2ecf20Sopenharmony_ci      connection's sink, the second being the connection's source.
858c2ecf20Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/non-unique-string-array
868c2ecf20Sopenharmony_ci
878c2ecf20Sopenharmony_ci  widgets:
888c2ecf20Sopenharmony_ci    description: User specified audio sound widgets.
898c2ecf20Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/non-unique-string-array
908c2ecf20Sopenharmony_ci
918c2ecf20Sopenharmony_ci  pin-switches:
928c2ecf20Sopenharmony_ci    description: the widget names for which pin switches must be created.
938c2ecf20Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/string-array
948c2ecf20Sopenharmony_ci
958c2ecf20Sopenharmony_ci  format:
968c2ecf20Sopenharmony_ci    description: audio format.
978c2ecf20Sopenharmony_ci    items:
988c2ecf20Sopenharmony_ci      enum:
998c2ecf20Sopenharmony_ci        - i2s
1008c2ecf20Sopenharmony_ci        - right_j
1018c2ecf20Sopenharmony_ci        - left_j
1028c2ecf20Sopenharmony_ci        - dsp_a
1038c2ecf20Sopenharmony_ci        - dsp_b
1048c2ecf20Sopenharmony_ci        - ac97
1058c2ecf20Sopenharmony_ci        - pdm
1068c2ecf20Sopenharmony_ci        - msb
1078c2ecf20Sopenharmony_ci        - lsb
1088c2ecf20Sopenharmony_ci
1098c2ecf20Sopenharmony_ci  dai:
1108c2ecf20Sopenharmony_ci    type: object
1118c2ecf20Sopenharmony_ci    properties:
1128c2ecf20Sopenharmony_ci      sound-dai:
1138c2ecf20Sopenharmony_ci        maxItems: 1
1148c2ecf20Sopenharmony_ci
1158c2ecf20Sopenharmony_ci      # common properties
1168c2ecf20Sopenharmony_ci      mclk-fs:
1178c2ecf20Sopenharmony_ci        $ref: "#/definitions/mclk-fs"
1188c2ecf20Sopenharmony_ci      prefix:
1198c2ecf20Sopenharmony_ci        $ref: "#/definitions/prefix"
1208c2ecf20Sopenharmony_ci      frame-inversion:
1218c2ecf20Sopenharmony_ci        $ref: "#/definitions/frame-inversion"
1228c2ecf20Sopenharmony_ci      bitclock-inversion:
1238c2ecf20Sopenharmony_ci        $ref: "#/definitions/bitclock-inversion"
1248c2ecf20Sopenharmony_ci      frame-master:
1258c2ecf20Sopenharmony_ci        $ref: /schemas/types.yaml#/definitions/flag
1268c2ecf20Sopenharmony_ci      bitclock-master:
1278c2ecf20Sopenharmony_ci        $ref: /schemas/types.yaml#/definitions/flag
1288c2ecf20Sopenharmony_ci
1298c2ecf20Sopenharmony_ci      dai-tdm-slot-num:
1308c2ecf20Sopenharmony_ci        $ref: "#/definitions/dai-tdm-slot-num"
1318c2ecf20Sopenharmony_ci      dai-tdm-slot-width:
1328c2ecf20Sopenharmony_ci        $ref: "#/definitions/dai-tdm-slot-width"
1338c2ecf20Sopenharmony_ci      clocks:
1348c2ecf20Sopenharmony_ci        maxItems: 1
1358c2ecf20Sopenharmony_ci      system-clock-frequency:
1368c2ecf20Sopenharmony_ci        $ref: "#/definitions/system-clock-frequency"
1378c2ecf20Sopenharmony_ci      system-clock-direction-out:
1388c2ecf20Sopenharmony_ci        $ref: "#/definitions/system-clock-direction-out"
1398c2ecf20Sopenharmony_ci    required:
1408c2ecf20Sopenharmony_ci      - sound-dai
1418c2ecf20Sopenharmony_ci
1428c2ecf20Sopenharmony_ciproperties:
1438c2ecf20Sopenharmony_ci  compatible:
1448c2ecf20Sopenharmony_ci    contains:
1458c2ecf20Sopenharmony_ci      enum:
1468c2ecf20Sopenharmony_ci        - simple-audio-card
1478c2ecf20Sopenharmony_ci        - simple-scu-audio-card
1488c2ecf20Sopenharmony_ci
1498c2ecf20Sopenharmony_ci  "#address-cells":
1508c2ecf20Sopenharmony_ci    const: 1
1518c2ecf20Sopenharmony_ci  "#size-cells":
1528c2ecf20Sopenharmony_ci    const: 0
1538c2ecf20Sopenharmony_ci
1548c2ecf20Sopenharmony_ci  label:
1558c2ecf20Sopenharmony_ci    $ref: "#/definitions/label"
1568c2ecf20Sopenharmony_ci
1578c2ecf20Sopenharmony_ci  simple-audio-card,name:
1588c2ecf20Sopenharmony_ci    description: User specified audio sound card name.
1598c2ecf20Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/string
1608c2ecf20Sopenharmony_ci
1618c2ecf20Sopenharmony_ci# use patternProperties to avoid naming "xxx,yyy" issue
1628c2ecf20Sopenharmony_cipatternProperties:
1638c2ecf20Sopenharmony_ci  "^simple-audio-card,widgets$":
1648c2ecf20Sopenharmony_ci    $ref: "#/definitions/widgets"
1658c2ecf20Sopenharmony_ci  "^simple-audio-card,routing$":
1668c2ecf20Sopenharmony_ci    $ref: "#/definitions/routing"
1678c2ecf20Sopenharmony_ci  "^simple-audio-card,cpu(@[0-9a-f]+)?":
1688c2ecf20Sopenharmony_ci    $ref: "#/definitions/dai"
1698c2ecf20Sopenharmony_ci  "^simple-audio-card,codec(@[0-9a-f]+)?":
1708c2ecf20Sopenharmony_ci    $ref: "#/definitions/dai"
1718c2ecf20Sopenharmony_ci
1728c2ecf20Sopenharmony_ci  # common properties
1738c2ecf20Sopenharmony_ci  "^simple-audio-card,frame-master$":
1748c2ecf20Sopenharmony_ci    $ref: "#/definitions/frame-master"
1758c2ecf20Sopenharmony_ci  "^simple-audio-card,bitclock-master$":
1768c2ecf20Sopenharmony_ci    $ref: "#/definitions/bitclock-master"
1778c2ecf20Sopenharmony_ci  "^simple-audio-card,frame-inversion$":
1788c2ecf20Sopenharmony_ci    $ref: "#/definitions/frame-inversion"
1798c2ecf20Sopenharmony_ci  "^simple-audio-card,bitclock-inversion$":
1808c2ecf20Sopenharmony_ci    $ref: "#/definitions/bitclock-inversion"
1818c2ecf20Sopenharmony_ci  "^simple-audio-card,format$":
1828c2ecf20Sopenharmony_ci    $ref: "#/definitions/format"
1838c2ecf20Sopenharmony_ci  "^simple-audio-card,mclk-fs$":
1848c2ecf20Sopenharmony_ci    $ref: "#/definitions/mclk-fs"
1858c2ecf20Sopenharmony_ci  "^simple-audio-card,aux-devs$":
1868c2ecf20Sopenharmony_ci    $ref: "#/definitions/aux-devs"
1878c2ecf20Sopenharmony_ci  "^simple-audio-card,convert-rate$":
1888c2ecf20Sopenharmony_ci    $ref: "#/definitions/convert-rate"
1898c2ecf20Sopenharmony_ci  "^simple-audio-card,convert-channels$":
1908c2ecf20Sopenharmony_ci    $ref: "#/definitions/convert-channels"
1918c2ecf20Sopenharmony_ci  "^simple-audio-card,prefix$":
1928c2ecf20Sopenharmony_ci    $ref: "#/definitions/prefix"
1938c2ecf20Sopenharmony_ci  "^simple-audio-card,pin-switches$":
1948c2ecf20Sopenharmony_ci    $ref: "#/definitions/pin-switches"
1958c2ecf20Sopenharmony_ci  "^simple-audio-card,hp-det-gpio$":
1968c2ecf20Sopenharmony_ci    maxItems: 1
1978c2ecf20Sopenharmony_ci  "^simple-audio-card,mic-det-gpio$":
1988c2ecf20Sopenharmony_ci    maxItems: 1
1998c2ecf20Sopenharmony_ci
2008c2ecf20Sopenharmony_ci  "^simple-audio-card,dai-link(@[0-9a-f]+)?$":
2018c2ecf20Sopenharmony_ci    description: |
2028c2ecf20Sopenharmony_ci      Container for dai-link level properties and the CPU and CODEC sub-nodes.
2038c2ecf20Sopenharmony_ci      This container may be omitted when the card has only one DAI link.
2048c2ecf20Sopenharmony_ci    type: object
2058c2ecf20Sopenharmony_ci    properties:
2068c2ecf20Sopenharmony_ci      reg:
2078c2ecf20Sopenharmony_ci        maxItems: 1
2088c2ecf20Sopenharmony_ci
2098c2ecf20Sopenharmony_ci      # common properties
2108c2ecf20Sopenharmony_ci      frame-master:
2118c2ecf20Sopenharmony_ci        $ref: "#/definitions/frame-master"
2128c2ecf20Sopenharmony_ci      bitclock-master:
2138c2ecf20Sopenharmony_ci        $ref: "#/definitions/bitclock-master"
2148c2ecf20Sopenharmony_ci      frame-inversion:
2158c2ecf20Sopenharmony_ci        $ref: "#/definitions/frame-inversion"
2168c2ecf20Sopenharmony_ci      bitclock-inversion:
2178c2ecf20Sopenharmony_ci        $ref: "#/definitions/bitclock-inversion"
2188c2ecf20Sopenharmony_ci      format:
2198c2ecf20Sopenharmony_ci        $ref: "#/definitions/format"
2208c2ecf20Sopenharmony_ci      mclk-fs:
2218c2ecf20Sopenharmony_ci        $ref: "#/definitions/mclk-fs"
2228c2ecf20Sopenharmony_ci      aux-devs:
2238c2ecf20Sopenharmony_ci        $ref: "#/definitions/aux-devs"
2248c2ecf20Sopenharmony_ci      convert-rate:
2258c2ecf20Sopenharmony_ci        $ref: "#/definitions/convert-rate"
2268c2ecf20Sopenharmony_ci      convert-channels:
2278c2ecf20Sopenharmony_ci        $ref: "#/definitions/convert-channels"
2288c2ecf20Sopenharmony_ci      prefix:
2298c2ecf20Sopenharmony_ci        $ref: "#/definitions/prefix"
2308c2ecf20Sopenharmony_ci      pin-switches:
2318c2ecf20Sopenharmony_ci        $ref: "#/definitions/pin-switches"
2328c2ecf20Sopenharmony_ci      hp-det-gpio:
2338c2ecf20Sopenharmony_ci        maxItems: 1
2348c2ecf20Sopenharmony_ci      mic-det-gpio:
2358c2ecf20Sopenharmony_ci        maxItems: 1
2368c2ecf20Sopenharmony_ci
2378c2ecf20Sopenharmony_ci    patternProperties:
2388c2ecf20Sopenharmony_ci      "^cpu(@[0-9a-f]+)?":
2398c2ecf20Sopenharmony_ci        $ref: "#/definitions/dai"
2408c2ecf20Sopenharmony_ci      "^codec(@[0-9a-f]+)?":
2418c2ecf20Sopenharmony_ci        $ref: "#/definitions/dai"
2428c2ecf20Sopenharmony_ci    additionalProperties: false
2438c2ecf20Sopenharmony_ci
2448c2ecf20Sopenharmony_cirequired:
2458c2ecf20Sopenharmony_ci  - compatible
2468c2ecf20Sopenharmony_ci
2478c2ecf20Sopenharmony_ciadditionalProperties: false
2488c2ecf20Sopenharmony_ci
2498c2ecf20Sopenharmony_ciexamples:
2508c2ecf20Sopenharmony_ci#--------------------
2518c2ecf20Sopenharmony_ci# single DAI link
2528c2ecf20Sopenharmony_ci#--------------------
2538c2ecf20Sopenharmony_ci  - |
2548c2ecf20Sopenharmony_ci    sound {
2558c2ecf20Sopenharmony_ci        compatible = "simple-audio-card";
2568c2ecf20Sopenharmony_ci        simple-audio-card,name = "VF610-Tower-Sound-Card";
2578c2ecf20Sopenharmony_ci        simple-audio-card,format = "left_j";
2588c2ecf20Sopenharmony_ci        simple-audio-card,bitclock-master = <&dailink0_master>;
2598c2ecf20Sopenharmony_ci        simple-audio-card,frame-master = <&dailink0_master>;
2608c2ecf20Sopenharmony_ci        simple-audio-card,widgets =
2618c2ecf20Sopenharmony_ci                "Microphone", "Microphone Jack",
2628c2ecf20Sopenharmony_ci                "Headphone", "Headphone Jack",
2638c2ecf20Sopenharmony_ci                "Speaker", "External Speaker";
2648c2ecf20Sopenharmony_ci        simple-audio-card,routing =
2658c2ecf20Sopenharmony_ci                "MIC_IN", "Microphone Jack",
2668c2ecf20Sopenharmony_ci                "Headphone Jack", "HP_OUT",
2678c2ecf20Sopenharmony_ci                "External Speaker", "LINE_OUT";
2688c2ecf20Sopenharmony_ci
2698c2ecf20Sopenharmony_ci        simple-audio-card,cpu {
2708c2ecf20Sopenharmony_ci            sound-dai = <&sh_fsi2 0>;
2718c2ecf20Sopenharmony_ci        };
2728c2ecf20Sopenharmony_ci
2738c2ecf20Sopenharmony_ci        dailink0_master: simple-audio-card,codec {
2748c2ecf20Sopenharmony_ci            sound-dai = <&ak4648>;
2758c2ecf20Sopenharmony_ci            clocks = <&osc>;
2768c2ecf20Sopenharmony_ci        };
2778c2ecf20Sopenharmony_ci    };
2788c2ecf20Sopenharmony_ci
2798c2ecf20Sopenharmony_ci#--------------------
2808c2ecf20Sopenharmony_ci# Multi DAI links
2818c2ecf20Sopenharmony_ci#--------------------
2828c2ecf20Sopenharmony_ci  - |
2838c2ecf20Sopenharmony_ci    sound {
2848c2ecf20Sopenharmony_ci        compatible = "simple-audio-card";
2858c2ecf20Sopenharmony_ci        simple-audio-card,name = "Cubox Audio";
2868c2ecf20Sopenharmony_ci
2878c2ecf20Sopenharmony_ci        #address-cells = <1>;
2888c2ecf20Sopenharmony_ci        #size-cells = <0>;
2898c2ecf20Sopenharmony_ci
2908c2ecf20Sopenharmony_ci        simple-audio-card,dai-link@0 {		/* I2S - HDMI */
2918c2ecf20Sopenharmony_ci            reg = <0>;
2928c2ecf20Sopenharmony_ci            format = "i2s";
2938c2ecf20Sopenharmony_ci            cpu {
2948c2ecf20Sopenharmony_ci                sound-dai = <&audio0>;
2958c2ecf20Sopenharmony_ci            };
2968c2ecf20Sopenharmony_ci            codec {
2978c2ecf20Sopenharmony_ci                sound-dai = <&tda998x0>;
2988c2ecf20Sopenharmony_ci            };
2998c2ecf20Sopenharmony_ci        };
3008c2ecf20Sopenharmony_ci
3018c2ecf20Sopenharmony_ci        simple-audio-card,dai-link@1 {		/* S/PDIF - HDMI */
3028c2ecf20Sopenharmony_ci            reg = <1>;
3038c2ecf20Sopenharmony_ci            cpu {
3048c2ecf20Sopenharmony_ci                sound-dai = <&audio1>;
3058c2ecf20Sopenharmony_ci            };
3068c2ecf20Sopenharmony_ci            codec {
3078c2ecf20Sopenharmony_ci                sound-dai = <&tda998x1>;
3088c2ecf20Sopenharmony_ci            };
3098c2ecf20Sopenharmony_ci        };
3108c2ecf20Sopenharmony_ci
3118c2ecf20Sopenharmony_ci        simple-audio-card,dai-link@2 {		/* S/PDIF - S/PDIF */
3128c2ecf20Sopenharmony_ci            reg = <2>;
3138c2ecf20Sopenharmony_ci            cpu {
3148c2ecf20Sopenharmony_ci                sound-dai = <&audio2>;
3158c2ecf20Sopenharmony_ci            };
3168c2ecf20Sopenharmony_ci            codec {
3178c2ecf20Sopenharmony_ci                sound-dai = <&spdif_codec>;
3188c2ecf20Sopenharmony_ci            };
3198c2ecf20Sopenharmony_ci        };
3208c2ecf20Sopenharmony_ci    };
3218c2ecf20Sopenharmony_ci
3228c2ecf20Sopenharmony_ci#--------------------
3238c2ecf20Sopenharmony_ci# route audio from IMX6 SSI2 through TLV320DAC3100 codec
3248c2ecf20Sopenharmony_ci# through TPA6130A2 amplifier to headphones:
3258c2ecf20Sopenharmony_ci#--------------------
3268c2ecf20Sopenharmony_ci  - |
3278c2ecf20Sopenharmony_ci    sound {
3288c2ecf20Sopenharmony_ci        compatible = "simple-audio-card";
3298c2ecf20Sopenharmony_ci
3308c2ecf20Sopenharmony_ci        simple-audio-card,widgets =
3318c2ecf20Sopenharmony_ci            "Headphone", "Headphone Jack";
3328c2ecf20Sopenharmony_ci        simple-audio-card,routing =
3338c2ecf20Sopenharmony_ci            "Headphone Jack", "HPLEFT",
3348c2ecf20Sopenharmony_ci            "Headphone Jack", "HPRIGHT",
3358c2ecf20Sopenharmony_ci            "LEFTIN", "HPL",
3368c2ecf20Sopenharmony_ci            "RIGHTIN", "HPR";
3378c2ecf20Sopenharmony_ci        simple-audio-card,aux-devs = <&amp>;
3388c2ecf20Sopenharmony_ci        simple-audio-card,cpu {
3398c2ecf20Sopenharmony_ci            sound-dai = <&ssi2>;
3408c2ecf20Sopenharmony_ci        };
3418c2ecf20Sopenharmony_ci        simple-audio-card,codec {
3428c2ecf20Sopenharmony_ci            sound-dai = <&codec>;
3438c2ecf20Sopenharmony_ci            clocks = <&clocks>;
3448c2ecf20Sopenharmony_ci        };
3458c2ecf20Sopenharmony_ci    };
3468c2ecf20Sopenharmony_ci
3478c2ecf20Sopenharmony_ci#--------------------
3488c2ecf20Sopenharmony_ci# Sampling Rate Conversion
3498c2ecf20Sopenharmony_ci#--------------------
3508c2ecf20Sopenharmony_ci  - |
3518c2ecf20Sopenharmony_ci    sound {
3528c2ecf20Sopenharmony_ci        compatible = "simple-audio-card";
3538c2ecf20Sopenharmony_ci
3548c2ecf20Sopenharmony_ci        simple-audio-card,name = "rsnd-ak4643";
3558c2ecf20Sopenharmony_ci        simple-audio-card,format = "left_j";
3568c2ecf20Sopenharmony_ci        simple-audio-card,bitclock-master = <&sndcodec>;
3578c2ecf20Sopenharmony_ci        simple-audio-card,frame-master = <&sndcodec>;
3588c2ecf20Sopenharmony_ci
3598c2ecf20Sopenharmony_ci        simple-audio-card,convert-rate = <48000>;
3608c2ecf20Sopenharmony_ci
3618c2ecf20Sopenharmony_ci        simple-audio-card,prefix = "ak4642";
3628c2ecf20Sopenharmony_ci        simple-audio-card,routing = "ak4642 Playback", "DAI0 Playback",
3638c2ecf20Sopenharmony_ci                                    "DAI0 Capture", "ak4642 Capture";
3648c2ecf20Sopenharmony_ci
3658c2ecf20Sopenharmony_ci        sndcpu: simple-audio-card,cpu {
3668c2ecf20Sopenharmony_ci            sound-dai = <&rcar_sound>;
3678c2ecf20Sopenharmony_ci        };
3688c2ecf20Sopenharmony_ci
3698c2ecf20Sopenharmony_ci        sndcodec: simple-audio-card,codec {
3708c2ecf20Sopenharmony_ci            sound-dai = <&ak4643>;
3718c2ecf20Sopenharmony_ci            system-clock-frequency = <11289600>;
3728c2ecf20Sopenharmony_ci        };
3738c2ecf20Sopenharmony_ci    };
3748c2ecf20Sopenharmony_ci
3758c2ecf20Sopenharmony_ci#--------------------
3768c2ecf20Sopenharmony_ci# 2 CPU 1 Codec (Mixing)
3778c2ecf20Sopenharmony_ci#--------------------
3788c2ecf20Sopenharmony_ci  - |
3798c2ecf20Sopenharmony_ci    sound {
3808c2ecf20Sopenharmony_ci        compatible = "simple-audio-card";
3818c2ecf20Sopenharmony_ci        #address-cells = <1>;
3828c2ecf20Sopenharmony_ci        #size-cells = <0>;
3838c2ecf20Sopenharmony_ci
3848c2ecf20Sopenharmony_ci        simple-audio-card,name = "rsnd-ak4643";
3858c2ecf20Sopenharmony_ci        simple-audio-card,format = "left_j";
3868c2ecf20Sopenharmony_ci        simple-audio-card,bitclock-master = <&dpcmcpu>;
3878c2ecf20Sopenharmony_ci        simple-audio-card,frame-master = <&dpcmcpu>;
3888c2ecf20Sopenharmony_ci
3898c2ecf20Sopenharmony_ci        simple-audio-card,convert-rate = <48000>;
3908c2ecf20Sopenharmony_ci        simple-audio-card,convert-channels = <2>;
3918c2ecf20Sopenharmony_ci
3928c2ecf20Sopenharmony_ci        simple-audio-card,routing = "ak4642 Playback", "DAI0 Playback",
3938c2ecf20Sopenharmony_ci                                    "ak4642 Playback", "DAI1 Playback";
3948c2ecf20Sopenharmony_ci
3958c2ecf20Sopenharmony_ci        dpcmcpu: simple-audio-card,cpu@0 {
3968c2ecf20Sopenharmony_ci            reg = <0>;
3978c2ecf20Sopenharmony_ci            sound-dai = <&rcar_sound 0>;
3988c2ecf20Sopenharmony_ci        };
3998c2ecf20Sopenharmony_ci
4008c2ecf20Sopenharmony_ci        simple-audio-card,cpu@1 {
4018c2ecf20Sopenharmony_ci            reg = <1>;
4028c2ecf20Sopenharmony_ci            sound-dai = <&rcar_sound 1>;
4038c2ecf20Sopenharmony_ci        };
4048c2ecf20Sopenharmony_ci
4058c2ecf20Sopenharmony_ci        simple-audio-card,codec {
4068c2ecf20Sopenharmony_ci            prefix = "ak4642";
4078c2ecf20Sopenharmony_ci            sound-dai = <&ak4643>;
4088c2ecf20Sopenharmony_ci            clocks = <&audio_clock>;
4098c2ecf20Sopenharmony_ci        };
4108c2ecf20Sopenharmony_ci    };
4118c2ecf20Sopenharmony_ci
4128c2ecf20Sopenharmony_ci#--------------------
4138c2ecf20Sopenharmony_ci# Multi DAI links with DPCM:
4148c2ecf20Sopenharmony_ci#
4158c2ecf20Sopenharmony_ci# CPU0 ------ ak4613
4168c2ecf20Sopenharmony_ci# CPU1 ------ PCM3168A-p  /* DPCM 1ch/2ch */
4178c2ecf20Sopenharmony_ci# CPU2 --/                /* DPCM 3ch/4ch */
4188c2ecf20Sopenharmony_ci# CPU3 --/                /* DPCM 5ch/6ch */
4198c2ecf20Sopenharmony_ci# CPU4 --/                /* DPCM 7ch/8ch */
4208c2ecf20Sopenharmony_ci# CPU5 ------ PCM3168A-c
4218c2ecf20Sopenharmony_ci#--------------------
4228c2ecf20Sopenharmony_ci  - |
4238c2ecf20Sopenharmony_ci    sound {
4248c2ecf20Sopenharmony_ci        compatible = "simple-audio-card";
4258c2ecf20Sopenharmony_ci        #address-cells = <1>;
4268c2ecf20Sopenharmony_ci        #size-cells = <0>;
4278c2ecf20Sopenharmony_ci
4288c2ecf20Sopenharmony_ci        simple-audio-card,routing =
4298c2ecf20Sopenharmony_ci            "pcm3168a Playback", "DAI1 Playback",
4308c2ecf20Sopenharmony_ci            "pcm3168a Playback", "DAI2 Playback",
4318c2ecf20Sopenharmony_ci            "pcm3168a Playback", "DAI3 Playback",
4328c2ecf20Sopenharmony_ci            "pcm3168a Playback", "DAI4 Playback";
4338c2ecf20Sopenharmony_ci
4348c2ecf20Sopenharmony_ci        simple-audio-card,dai-link@0 {
4358c2ecf20Sopenharmony_ci            reg = <0>;
4368c2ecf20Sopenharmony_ci            format = "left_j";
4378c2ecf20Sopenharmony_ci            bitclock-master = <&sndcpu0>;
4388c2ecf20Sopenharmony_ci            frame-master = <&sndcpu0>;
4398c2ecf20Sopenharmony_ci
4408c2ecf20Sopenharmony_ci            sndcpu0: cpu {
4418c2ecf20Sopenharmony_ci                sound-dai = <&rcar_sound 0>;
4428c2ecf20Sopenharmony_ci            };
4438c2ecf20Sopenharmony_ci            codec {
4448c2ecf20Sopenharmony_ci                sound-dai = <&ak4613>;
4458c2ecf20Sopenharmony_ci            };
4468c2ecf20Sopenharmony_ci        };
4478c2ecf20Sopenharmony_ci
4488c2ecf20Sopenharmony_ci        simple-audio-card,dai-link@1 {
4498c2ecf20Sopenharmony_ci            reg = <1>;
4508c2ecf20Sopenharmony_ci            format = "i2s";
4518c2ecf20Sopenharmony_ci            bitclock-master = <&sndcpu1>;
4528c2ecf20Sopenharmony_ci            frame-master = <&sndcpu1>;
4538c2ecf20Sopenharmony_ci
4548c2ecf20Sopenharmony_ci            convert-channels = <8>; /* TDM Split */
4558c2ecf20Sopenharmony_ci
4568c2ecf20Sopenharmony_ci            sndcpu1: cpu0 {
4578c2ecf20Sopenharmony_ci                sound-dai = <&rcar_sound 1>;
4588c2ecf20Sopenharmony_ci            };
4598c2ecf20Sopenharmony_ci            cpu1 {
4608c2ecf20Sopenharmony_ci                sound-dai = <&rcar_sound 2>;
4618c2ecf20Sopenharmony_ci            };
4628c2ecf20Sopenharmony_ci            cpu2 {
4638c2ecf20Sopenharmony_ci                sound-dai = <&rcar_sound 3>;
4648c2ecf20Sopenharmony_ci            };
4658c2ecf20Sopenharmony_ci            cpu3 {
4668c2ecf20Sopenharmony_ci                sound-dai = <&rcar_sound 4>;
4678c2ecf20Sopenharmony_ci            };
4688c2ecf20Sopenharmony_ci            codec {
4698c2ecf20Sopenharmony_ci                mclk-fs = <512>;
4708c2ecf20Sopenharmony_ci                prefix = "pcm3168a";
4718c2ecf20Sopenharmony_ci                dai-tdm-slot-num = <8>;
4728c2ecf20Sopenharmony_ci                sound-dai = <&pcm3168a 0>;
4738c2ecf20Sopenharmony_ci            };
4748c2ecf20Sopenharmony_ci        };
4758c2ecf20Sopenharmony_ci
4768c2ecf20Sopenharmony_ci        simple-audio-card,dai-link@2 {
4778c2ecf20Sopenharmony_ci            reg = <2>;
4788c2ecf20Sopenharmony_ci            format = "i2s";
4798c2ecf20Sopenharmony_ci            bitclock-master = <&sndcpu2>;
4808c2ecf20Sopenharmony_ci            frame-master = <&sndcpu2>;
4818c2ecf20Sopenharmony_ci
4828c2ecf20Sopenharmony_ci            sndcpu2: cpu {
4838c2ecf20Sopenharmony_ci                sound-dai = <&rcar_sound 5>;
4848c2ecf20Sopenharmony_ci            };
4858c2ecf20Sopenharmony_ci            codec {
4868c2ecf20Sopenharmony_ci                mclk-fs = <512>;
4878c2ecf20Sopenharmony_ci                prefix = "pcm3168a";
4888c2ecf20Sopenharmony_ci                sound-dai = <&pcm3168a 1>;
4898c2ecf20Sopenharmony_ci            };
4908c2ecf20Sopenharmony_ci        };
4918c2ecf20Sopenharmony_ci    };
492