// SPDX-License-Identifier: GPL-2.0 /* * Device Tree for ULCB + Kingfisher + Simple Audio Card (MIX + TDM Split) * * Copyright (C) 2022 Renesas Electronics Corp. */ /* * Note: * The HDMI output is ignored due to the limited number of subdevices * * (A) CPU0 (2ch) <----> (2ch) (X) ak4613 (MIX-0) * (B) CPU1 (2ch) --/ (MIX-1) * (C) CPU3 (2ch) ----> (8ch) (Y) PCM3168A-p (TDM-0 : 0,1ch) * (D) CPU2 (2ch) --/ (TDM-1 : 2,3ch) * (E) CPU4 (2ch) --/ (TDM-2 : 4,5ch) * (F) CPU5 (2ch) --/ (TDM-3 : 6,7ch) * (G) CPU6 (6ch) <---- (6ch) (Z) PCM3168A-c * * (A) aplay -D plughw:0,0 xxx.wav (MIX-0) * (B) aplay -D plughw:0,1 xxx.wav (MIX-1) * (C) aplay -D plughw:1,0 xxx.wav (TDM-0) * (D) aplay -D plughw:1,1 xxx.wav (TDM-1) * (E) aplay -D plughw:1,2 xxx.wav (TDM-2) * (F) aplay -D plughw:1,3 xxx.wav (TDM-3) * * (A) arecord -D plughw:0,0 xxx.wav * (G) arecord -D plughw:1,4 xxx.wav */ / { sound_card_kf: expand-sound { #address-cells = <1>; #size-cells = <0>; compatible = "simple-scu-audio-card"; label = "snd-kf-split"; simple-audio-card,routing = "pcm3168a Playback", "DAI2 Playback", "pcm3168a Playback", "DAI3 Playback", "pcm3168a Playback", "DAI4 Playback", "pcm3168a Playback", "DAI5 Playback"; simple-audio-card,dai-link@0 { #address-cells = <1>; #size-cells = <0>; reg = <0>; convert-channels = <8>; /* to 8ch TDM */ /* * (C) CPU2 */ cpu@0 { reg = <0>; bitclock-master; frame-master; sound-dai = <&rcar_sound 2>; }; /* * (D) CPU3 */ cpu@1 { reg = <1>; sound-dai = <&rcar_sound 3>; }; /* * (E) CPU4 */ cpu@2 { reg = <2>; sound-dai = <&rcar_sound 4>; }; /* * (F) CPU5 */ cpu@3 { reg = <3>; sound-dai = <&rcar_sound 5>; }; /* * (Y) PCM3168A-p */ codec { prefix = "pcm3168a"; mclk-fs = <512>; sound-dai = <&pcm3168a 0>; }; }; simple-audio-card,dai-link@1 { reg = <1>; /* * (G) CPU6 */ cpu { bitclock-master; frame-master; sound-dai = <&rcar_sound 6>; }; /* * (Z) PCM3168A-c */ codec { prefix = "pcm3168a"; mclk-fs = <512>; sound-dai = <&pcm3168a 1>; }; }; }; }; &pcm3168a { /* * (Y) PCM3168A-p * (Z) PCM3168A-c */ #sound-dai-cells = <1>; }; &rcar_sound { rcar_sound,dai@1 { reg = <1>; /* dai0-1 are defined in ulcb.dtsi */ /* * (C) CPU2 */ dai2 { playback = <&ssiu30 &ssi3>; }; /* * (D) CPU3 */ dai3 { playback = <&ssiu31 &ssi3>; }; /* * (E) CPU4 */ dai4 { playback = <&ssiu32 &ssi3>; }; /* * (F) CPU5 */ dai5 { playback = <&ssiu33 &ssi3>; }; /* * (G) CPU6 */ dai6 { capture = <&ssi4>; }; }; };