115ec87e0SKuninori Morimoto// SPDX-License-Identifier: GPL-2.0 215ec87e0SKuninori Morimoto/* 315ec87e0SKuninori Morimoto * Device Tree for ULCB + Kingfisher + Audio Graph Card2 (MIX + TDM Split) 415ec87e0SKuninori Morimoto * 515ec87e0SKuninori Morimoto * Copyright (C) 2022 Renesas Electronics Corp. 615ec87e0SKuninori Morimoto */ 715ec87e0SKuninori Morimoto 815ec87e0SKuninori Morimoto/* 915ec87e0SKuninori Morimoto * Note: 1015ec87e0SKuninori Morimoto * The HDMI output is ignored due to the limited number of subdevices 1115ec87e0SKuninori Morimoto * 1215ec87e0SKuninori Morimoto * (A) CPU0 (2ch) <----> (2ch) (X) ak4613 (MIX-0) 1315ec87e0SKuninori Morimoto * (B) CPU1 (2ch) --/ (MIX-1) 1415ec87e0SKuninori Morimoto * (C) CPU3 (2ch) ----> (8ch) (Y) PCM3168A-p (TDM-0 : 0,1ch) 1515ec87e0SKuninori Morimoto * (D) CPU2 (2ch) --/ (TDM-1 : 2,3ch) 1615ec87e0SKuninori Morimoto * (E) CPU4 (2ch) --/ (TDM-2 : 4,5ch) 1715ec87e0SKuninori Morimoto * (F) CPU5 (2ch) --/ (TDM-3 : 6,7ch) 1815ec87e0SKuninori Morimoto * (G) CPU6 (6ch) <---- (6ch) (Z) PCM3168A-c 1915ec87e0SKuninori Morimoto * 2015ec87e0SKuninori Morimoto * (A) aplay -D plughw:0,0 xxx.wav (MIX-0) 2115ec87e0SKuninori Morimoto * (B) aplay -D plughw:0,1 xxx.wav (MIX-1) 22*d70be079SKuninori Morimoto * (C) aplay -D plughw:1,0 xxx.wav (TDM-0) 23*d70be079SKuninori Morimoto * (D) aplay -D plughw:1,1 xxx.wav (TDM-1) 24*d70be079SKuninori Morimoto * (E) aplay -D plughw:1,2 xxx.wav (TDM-2) 25*d70be079SKuninori Morimoto * (F) aplay -D plughw:1,3 xxx.wav (TDM-3) 2615ec87e0SKuninori Morimoto * 2715ec87e0SKuninori Morimoto * (A) arecord -D plughw:0,0 xxx.wav 28*d70be079SKuninori Morimoto * (G) arecord -D plughw:1,4 xxx.wav 2915ec87e0SKuninori Morimoto */ 30*d70be079SKuninori Morimoto/ { 31*d70be079SKuninori Morimoto sound_card_kf: expand-sound { 32*d70be079SKuninori Morimoto compatible = "audio-graph-card2"; 33*d70be079SKuninori Morimoto label = "snd-kf-split"; 34*d70be079SKuninori Morimoto 35*d70be079SKuninori Morimoto routing = "pcm3168a Playback", "DAI2 Playback", 3615ec87e0SKuninori Morimoto "pcm3168a Playback", "DAI3 Playback", 3715ec87e0SKuninori Morimoto "pcm3168a Playback", "DAI4 Playback", 3815ec87e0SKuninori Morimoto "pcm3168a Playback", "DAI5 Playback", 3915ec87e0SKuninori Morimoto "DAI6 Capture", "pcm3168a Capture"; 4015ec87e0SKuninori Morimoto 41*d70be079SKuninori Morimoto links = <&fe_c /* (C) CPU2 */ 4215ec87e0SKuninori Morimoto &fe_d /* (D) CPU3 */ 4315ec87e0SKuninori Morimoto &fe_e /* (E) CPU4 */ 4415ec87e0SKuninori Morimoto &fe_f /* (F) CPU5 */ 4515ec87e0SKuninori Morimoto &rsnd_g /* (G) CPU6 */ 4615ec87e0SKuninori Morimoto &be_y /* (Y) PCM3168A-p */ 4715ec87e0SKuninori Morimoto >; 4815ec87e0SKuninori Morimoto 4915ec87e0SKuninori Morimoto dpcm { 50*d70be079SKuninori Morimoto #address-cells = <1>; 51*d70be079SKuninori Morimoto #size-cells = <0>; 52*d70be079SKuninori Morimoto 5315ec87e0SKuninori Morimoto ports@0 { 54*d70be079SKuninori Morimoto #address-cells = <1>; 55*d70be079SKuninori Morimoto #size-cells = <0>; 56*d70be079SKuninori Morimoto reg = <0>; 57*d70be079SKuninori Morimoto 5815ec87e0SKuninori Morimoto /* 5915ec87e0SKuninori Morimoto * FE 6015ec87e0SKuninori Morimoto * 6115ec87e0SKuninori Morimoto * (C) CPU2 6215ec87e0SKuninori Morimoto * (D) CPU3 6315ec87e0SKuninori Morimoto * (E) CPU4 6415ec87e0SKuninori Morimoto * (F) CPU5 6515ec87e0SKuninori Morimoto */ 6615ec87e0SKuninori Morimoto fe_c: port@2 { reg = <2>; fe_c_ep: endpoint { remote-endpoint = <&rsnd_c_ep>; }; }; 6715ec87e0SKuninori Morimoto fe_d: port@3 { reg = <3>; fe_d_ep: endpoint { remote-endpoint = <&rsnd_d_ep>; }; }; 6815ec87e0SKuninori Morimoto fe_e: port@4 { reg = <4>; fe_e_ep: endpoint { remote-endpoint = <&rsnd_e_ep>; }; }; 6915ec87e0SKuninori Morimoto fe_f: port@5 { reg = <5>; fe_f_ep: endpoint { remote-endpoint = <&rsnd_f_ep>; }; }; 7015ec87e0SKuninori Morimoto }; 7115ec87e0SKuninori Morimoto 7215ec87e0SKuninori Morimoto ports@1 { 73*d70be079SKuninori Morimoto reg = <1>; 7415ec87e0SKuninori Morimoto /* 7515ec87e0SKuninori Morimoto * BE 7615ec87e0SKuninori Morimoto * 7715ec87e0SKuninori Morimoto * (Y) PCM3168A-p 7815ec87e0SKuninori Morimoto */ 79*d70be079SKuninori Morimoto be_y: port { be_y_ep: endpoint { remote-endpoint = <&pcm3168a_y_ep>; }; }; 80*d70be079SKuninori Morimoto }; 8115ec87e0SKuninori Morimoto }; 8215ec87e0SKuninori Morimoto }; 8315ec87e0SKuninori Morimoto}; 8415ec87e0SKuninori Morimoto 8515ec87e0SKuninori Morimoto&pcm3168a { 8615ec87e0SKuninori Morimoto ports { 8715ec87e0SKuninori Morimoto #address-cells = <1>; 8815ec87e0SKuninori Morimoto #size-cells = <0>; 8915ec87e0SKuninori Morimoto 9015ec87e0SKuninori Morimoto mclk-fs = <512>; 9115ec87e0SKuninori Morimoto prefix = "pcm3168a"; 9215ec87e0SKuninori Morimoto 9315ec87e0SKuninori Morimoto /* 9415ec87e0SKuninori Morimoto * (Y) PCM3168A-p 9515ec87e0SKuninori Morimoto */ 9615ec87e0SKuninori Morimoto port@0 { 9715ec87e0SKuninori Morimoto reg = <0>; 9815ec87e0SKuninori Morimoto convert-channels = <8>; /* to 8ch TDM */ 9915ec87e0SKuninori Morimoto pcm3168a_y_ep: endpoint { 10015ec87e0SKuninori Morimoto remote-endpoint = <&be_y_ep>; 10115ec87e0SKuninori Morimoto clocks = <&clksndsel>; 10215ec87e0SKuninori Morimoto }; 10315ec87e0SKuninori Morimoto }; 10415ec87e0SKuninori Morimoto /* 10515ec87e0SKuninori Morimoto * (Z) PCM3168A-c 10615ec87e0SKuninori Morimoto */ 10715ec87e0SKuninori Morimoto port@1 { 10815ec87e0SKuninori Morimoto reg = <1>; 10915ec87e0SKuninori Morimoto pcm3168a_z_ep: endpoint { 11015ec87e0SKuninori Morimoto remote-endpoint = <&rsnd_g_ep>; 11115ec87e0SKuninori Morimoto clocks = <&clksndsel>; 11215ec87e0SKuninori Morimoto }; 11315ec87e0SKuninori Morimoto }; 11415ec87e0SKuninori Morimoto }; 11515ec87e0SKuninori Morimoto}; 11615ec87e0SKuninori Morimoto 11715ec87e0SKuninori Morimoto&rcar_sound { 118*d70be079SKuninori Morimoto ports@1 { 119*d70be079SKuninori Morimoto #address-cells = <1>; 120*d70be079SKuninori Morimoto #size-cells = <0>; 121*d70be079SKuninori Morimoto reg = <1>; 12215ec87e0SKuninori Morimoto 12315ec87e0SKuninori Morimoto /* 12415ec87e0SKuninori Morimoto * (C) CPU2 12515ec87e0SKuninori Morimoto */ 12615ec87e0SKuninori Morimoto port@2 { 12715ec87e0SKuninori Morimoto reg = <2>; 12815ec87e0SKuninori Morimoto rsnd_c_ep: endpoint { 12915ec87e0SKuninori Morimoto remote-endpoint = <&fe_c_ep>; 13015ec87e0SKuninori Morimoto bitclock-master; 13115ec87e0SKuninori Morimoto frame-master; 13215ec87e0SKuninori Morimoto playback = <&ssiu30 &ssi3>; 13315ec87e0SKuninori Morimoto }; 13415ec87e0SKuninori Morimoto }; 13515ec87e0SKuninori Morimoto /* 13615ec87e0SKuninori Morimoto * (D) CPU3 13715ec87e0SKuninori Morimoto */ 13815ec87e0SKuninori Morimoto port@3 { 13915ec87e0SKuninori Morimoto reg = <3>; 14015ec87e0SKuninori Morimoto rsnd_d_ep: endpoint { 14115ec87e0SKuninori Morimoto remote-endpoint = <&fe_d_ep>; 14215ec87e0SKuninori Morimoto bitclock-master; 14315ec87e0SKuninori Morimoto frame-master; 14415ec87e0SKuninori Morimoto playback = <&ssiu31 &ssi3>; 14515ec87e0SKuninori Morimoto }; 14615ec87e0SKuninori Morimoto }; 14715ec87e0SKuninori Morimoto /* 14815ec87e0SKuninori Morimoto * (E) CPU4 14915ec87e0SKuninori Morimoto */ 15015ec87e0SKuninori Morimoto port@4 { 15115ec87e0SKuninori Morimoto reg = <4>; 15215ec87e0SKuninori Morimoto rsnd_e_ep: endpoint { 15315ec87e0SKuninori Morimoto remote-endpoint = <&fe_e_ep>; 15415ec87e0SKuninori Morimoto bitclock-master; 15515ec87e0SKuninori Morimoto frame-master; 15615ec87e0SKuninori Morimoto playback = <&ssiu32 &ssi3>; 15715ec87e0SKuninori Morimoto }; 15815ec87e0SKuninori Morimoto }; 15915ec87e0SKuninori Morimoto /* 16015ec87e0SKuninori Morimoto * (F) CPU5 16115ec87e0SKuninori Morimoto */ 16215ec87e0SKuninori Morimoto port@5 { 16315ec87e0SKuninori Morimoto reg = <5>; 16415ec87e0SKuninori Morimoto rsnd_f_ep: endpoint { 16515ec87e0SKuninori Morimoto remote-endpoint = <&fe_f_ep>; 16615ec87e0SKuninori Morimoto bitclock-master; 16715ec87e0SKuninori Morimoto frame-master; 16815ec87e0SKuninori Morimoto playback = <&ssiu33 &ssi3>; 16915ec87e0SKuninori Morimoto }; 17015ec87e0SKuninori Morimoto }; 17115ec87e0SKuninori Morimoto /* 17215ec87e0SKuninori Morimoto * (G) CPU6 17315ec87e0SKuninori Morimoto */ 17415ec87e0SKuninori Morimoto rsnd_g: port@6 { 17515ec87e0SKuninori Morimoto reg = <6>; 17615ec87e0SKuninori Morimoto rsnd_g_ep: endpoint { 17715ec87e0SKuninori Morimoto remote-endpoint = <&pcm3168a_z_ep>; 17815ec87e0SKuninori Morimoto bitclock-master; 17915ec87e0SKuninori Morimoto frame-master; 18015ec87e0SKuninori Morimoto capture = <&ssi4>; 18115ec87e0SKuninori Morimoto }; 18215ec87e0SKuninori Morimoto }; 18315ec87e0SKuninori Morimoto }; 18415ec87e0SKuninori Morimoto}; 185