// 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 (2ch) <---- (6ch) (Z) PCM3168A-c (TDM-a: 0,1ch) * (H) CPU7 (2ch) <--/ (TDM-b: 2,3ch) * (I) CPU8 (2ch) <--/ (TDM-c: 4,5ch) * * (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 (TDM-a) * (H) arecord -D plughw:1,5 xxx.wav (TDM-b) * (I) arecord -D plughw:1,6 xxx.wav (TDM-c) */ / { 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", "DAI7 Capture", "pcm3168a Capture", "DAI8 Capture", "pcm3168a Capture"; links = <&fe_c /* (C) CPU2 */ &fe_d /* (D) CPU3 */ &fe_e /* (E) CPU4 */ &fe_f /* (F) CPU5 */ &fe_g /* (G) CPU6 */ &fe_h /* (H) CPU7 */ &fe_i /* (I) CPU8 */ &be_y /* (Y) PCM3168A-p */ &be_z /* (Z) PCM3168A-c */ >; dpcm: dpcm { #address-cells = <1>; #size-cells = <0>; non-supplier; ports@0 { #address-cells = <1>; #size-cells = <0>; reg = <0>; /* * FE * * (C) CPU2 * (D) CPU3 * (E) CPU4 * (F) CPU5 * (G) CPU6 * (H) CPU7 * (I) CPU8 */ 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>; }; }; fe_g: port@6 { reg = <6>; fe_g_ep: endpoint { remote-endpoint = <&rsnd_g_ep>; }; }; fe_h: port@7 { reg = <7>; fe_h_ep: endpoint { remote-endpoint = <&rsnd_h_ep>; }; }; fe_i: port@8 { reg = <8>; fe_i_ep: endpoint { remote-endpoint = <&rsnd_i_ep>; }; }; }; ports@1 { #address-cells = <1>; #size-cells = <0>; reg = <1>; /* * BE * * (Y) PCM3168A-p * (Z) PCM3168A-c */ be_y: port@0 { reg = <0>; be_y_ep: endpoint { remote-endpoint = <&pcm3168a_y_ep>; }; }; be_z: port@1 { reg = <1>; be_z_ep: endpoint { remote-endpoint = <&pcm3168a_z_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>; convert-channels = <6>; /* to 6ch TDM */ pcm3168a_z_ep: endpoint { remote-endpoint = <&be_z_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 */ port@6 { reg = <6>; rsnd_g_ep: endpoint { remote-endpoint = <&fe_g_ep>; bitclock-master; frame-master; capture = <&ssiu40 &ssi4>; }; }; /* * (H) CPU7 */ port@7 { reg = <7>; rsnd_h_ep: endpoint { remote-endpoint = <&fe_h_ep>; bitclock-master; frame-master; capture = <&ssiu41 &ssi4>; }; }; /* * (I) CPU8 */ port@8 { reg = <8>; rsnd_i_ep: endpoint { remote-endpoint = <&fe_i_ep>; bitclock-master; frame-master; capture = <&ssiu42 &ssi4>; }; }; }; };