// SPDX-License-Identifier: GPL-2.0 /* * Device Tree for ULCB + Kingfisher + Audio Graph Card2 (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 { compatible = "audio-graph-card2"; label = "snd-kf-split"; routing = "pcm3168a Playback", "DAI2 Playback", "pcm3168a Playback", "DAI3 Playback", "pcm3168a Playback", "DAI4 Playback", "pcm3168a Playback", "DAI5 Playback", "DAI6 Capture", "pcm3168a Capture"; links = <&fe_c /* (C) CPU2 */ &fe_d /* (D) CPU3 */ &fe_e /* (E) CPU4 */ &fe_f /* (F) CPU5 */ &rsnd_g /* (G) CPU6 */ &be_y /* (Y) PCM3168A-p */ >; dpcm { #address-cells = <1>; #size-cells = <0>; ports@0 { #address-cells = <1>; #size-cells = <0>; reg = <0>; /* * FE * * (C) CPU2 * (D) CPU3 * (E) CPU4 * (F) CPU5 */ fe_c: port@2 { reg = <2>; fe_c_ep: endpoint { remote-endpoint = <&rsnd_c_ep>; }; }; fe_d: port@3 { reg = <3>; fe_d_ep: endpoint { remote-endpoint = <&rsnd_d_ep>; }; }; fe_e: port@4 { reg = <4>; fe_e_ep: endpoint { remote-endpoint = <&rsnd_e_ep>; }; }; fe_f: port@5 { reg = <5>; fe_f_ep: endpoint { remote-endpoint = <&rsnd_f_ep>; }; }; }; ports@1 { reg = <1>; /* * BE * * (Y) PCM3168A-p */ be_y: port { be_y_ep: endpoint { remote-endpoint = <&pcm3168a_y_ep>; }; }; }; }; }; }; &pcm3168a { ports { #address-cells = <1>; #size-cells = <0>; mclk-fs = <512>; prefix = "pcm3168a"; /* * (Y) PCM3168A-p */ port@0 { reg = <0>; convert-channels = <8>; /* to 8ch TDM */ pcm3168a_y_ep: endpoint { remote-endpoint = <&be_y_ep>; clocks = <&clksndsel>; }; }; /* * (Z) PCM3168A-c */ port@1 { reg = <1>; pcm3168a_z_ep: endpoint { remote-endpoint = <&rsnd_g_ep>; clocks = <&clksndsel>; }; }; }; }; &rcar_sound { ports@1 { #address-cells = <1>; #size-cells = <0>; reg = <1>; /* * (C) CPU2 */ port@2 { reg = <2>; rsnd_c_ep: endpoint { remote-endpoint = <&fe_c_ep>; bitclock-master; frame-master; playback = <&ssiu30 &ssi3>; }; }; /* * (D) CPU3 */ port@3 { reg = <3>; rsnd_d_ep: endpoint { remote-endpoint = <&fe_d_ep>; bitclock-master; frame-master; playback = <&ssiu31 &ssi3>; }; }; /* * (E) CPU4 */ port@4 { reg = <4>; rsnd_e_ep: endpoint { remote-endpoint = <&fe_e_ep>; bitclock-master; frame-master; playback = <&ssiu32 &ssi3>; }; }; /* * (F) CPU5 */ port@5 { reg = <5>; rsnd_f_ep: endpoint { remote-endpoint = <&fe_f_ep>; bitclock-master; frame-master; playback = <&ssiu33 &ssi3>; }; }; /* * (G) CPU6 */ rsnd_g: port@6 { reg = <6>; rsnd_g_ep: endpoint { remote-endpoint = <&pcm3168a_z_ep>; bitclock-master; frame-master; capture = <&ssi4>; }; }; }; };