1*15ec87e0SKuninori Morimoto// SPDX-License-Identifier: GPL-2.0 2*15ec87e0SKuninori Morimoto/* 3*15ec87e0SKuninori Morimoto * Device Tree for ULCB + Kingfisher + Audio Graph Card2 (MIX + TDM Split) 4*15ec87e0SKuninori Morimoto * 5*15ec87e0SKuninori Morimoto * Copyright (C) 2022 Renesas Electronics Corp. 6*15ec87e0SKuninori Morimoto */ 7*15ec87e0SKuninori Morimoto 8*15ec87e0SKuninori Morimoto/* 9*15ec87e0SKuninori Morimoto * Note: 10*15ec87e0SKuninori Morimoto * The HDMI output is ignored due to the limited number of subdevices 11*15ec87e0SKuninori Morimoto * 12*15ec87e0SKuninori Morimoto * (A) CPU0 (2ch) <----> (2ch) (X) ak4613 (MIX-0) 13*15ec87e0SKuninori Morimoto * (B) CPU1 (2ch) --/ (MIX-1) 14*15ec87e0SKuninori Morimoto * (C) CPU3 (2ch) ----> (8ch) (Y) PCM3168A-p (TDM-0 : 0,1ch) 15*15ec87e0SKuninori Morimoto * (D) CPU2 (2ch) --/ (TDM-1 : 2,3ch) 16*15ec87e0SKuninori Morimoto * (E) CPU4 (2ch) --/ (TDM-2 : 4,5ch) 17*15ec87e0SKuninori Morimoto * (F) CPU5 (2ch) --/ (TDM-3 : 6,7ch) 18*15ec87e0SKuninori Morimoto * (G) CPU6 (6ch) <---- (6ch) (Z) PCM3168A-c 19*15ec87e0SKuninori Morimoto * 20*15ec87e0SKuninori Morimoto * (A) aplay -D plughw:0,0 xxx.wav (MIX-0) 21*15ec87e0SKuninori Morimoto * (B) aplay -D plughw:0,1 xxx.wav (MIX-1) 22*15ec87e0SKuninori Morimoto * (C) aplay -D plughw:0,2 xxx.wav (TDM-0) 23*15ec87e0SKuninori Morimoto * (D) aplay -D plughw:0,3 xxx.wav (TDM-1) 24*15ec87e0SKuninori Morimoto * (E) aplay -D plughw:0,4 xxx.wav (TDM-2) 25*15ec87e0SKuninori Morimoto * (F) aplay -D plughw:0,5 xxx.wav (TDM-3) 26*15ec87e0SKuninori Morimoto * 27*15ec87e0SKuninori Morimoto * (A) arecord -D plughw:0,0 xxx.wav 28*15ec87e0SKuninori Morimoto * (G) arecord -D plughw:0,6 xxx.wav 29*15ec87e0SKuninori Morimoto */ 30*15ec87e0SKuninori Morimoto&sound_card { 31*15ec87e0SKuninori Morimoto routing = "ak4613 Playback", "DAI0 Playback", 32*15ec87e0SKuninori Morimoto "ak4613 Playback", "DAI1 Playback", 33*15ec87e0SKuninori Morimoto "DAI0 Capture", "ak4613 Capture", 34*15ec87e0SKuninori Morimoto "pcm3168a Playback", "DAI2 Playback", 35*15ec87e0SKuninori Morimoto "pcm3168a Playback", "DAI3 Playback", 36*15ec87e0SKuninori Morimoto "pcm3168a Playback", "DAI4 Playback", 37*15ec87e0SKuninori Morimoto "pcm3168a Playback", "DAI5 Playback", 38*15ec87e0SKuninori Morimoto "DAI6 Capture", "pcm3168a Capture"; 39*15ec87e0SKuninori Morimoto 40*15ec87e0SKuninori Morimoto /delete-property/ dais; 41*15ec87e0SKuninori Morimoto links = <&fe_a /* (A) CPU0 */ 42*15ec87e0SKuninori Morimoto &fe_b /* (B) CPU1 */ 43*15ec87e0SKuninori Morimoto &fe_c /* (C) CPU2 */ 44*15ec87e0SKuninori Morimoto &fe_d /* (D) CPU3 */ 45*15ec87e0SKuninori Morimoto &fe_e /* (E) CPU4 */ 46*15ec87e0SKuninori Morimoto &fe_f /* (F) CPU5 */ 47*15ec87e0SKuninori Morimoto &rsnd_g /* (G) CPU6 */ 48*15ec87e0SKuninori Morimoto &be_x /* (X) ak4613 */ 49*15ec87e0SKuninori Morimoto &be_y /* (Y) PCM3168A-p */ 50*15ec87e0SKuninori Morimoto >; 51*15ec87e0SKuninori Morimoto 52*15ec87e0SKuninori Morimoto dpcm { 53*15ec87e0SKuninori Morimoto ports@0 { 54*15ec87e0SKuninori Morimoto /* 55*15ec87e0SKuninori Morimoto * FE 56*15ec87e0SKuninori Morimoto * 57*15ec87e0SKuninori Morimoto * (A)/(B) are defined on ulcb 58*15ec87e0SKuninori Morimoto * (C) CPU2 59*15ec87e0SKuninori Morimoto * (D) CPU3 60*15ec87e0SKuninori Morimoto * (E) CPU4 61*15ec87e0SKuninori Morimoto * (F) CPU5 62*15ec87e0SKuninori Morimoto */ 63*15ec87e0SKuninori Morimoto fe_c: port@2 { reg = <2>; fe_c_ep: endpoint { remote-endpoint = <&rsnd_c_ep>; }; }; 64*15ec87e0SKuninori Morimoto fe_d: port@3 { reg = <3>; fe_d_ep: endpoint { remote-endpoint = <&rsnd_d_ep>; }; }; 65*15ec87e0SKuninori Morimoto fe_e: port@4 { reg = <4>; fe_e_ep: endpoint { remote-endpoint = <&rsnd_e_ep>; }; }; 66*15ec87e0SKuninori Morimoto fe_f: port@5 { reg = <5>; fe_f_ep: endpoint { remote-endpoint = <&rsnd_f_ep>; }; }; 67*15ec87e0SKuninori Morimoto }; 68*15ec87e0SKuninori Morimoto 69*15ec87e0SKuninori Morimoto ports@1 { 70*15ec87e0SKuninori Morimoto /* 71*15ec87e0SKuninori Morimoto * BE 72*15ec87e0SKuninori Morimoto * 73*15ec87e0SKuninori Morimoto * (X) is defined on ulcb 74*15ec87e0SKuninori Morimoto * (Y) PCM3168A-p 75*15ec87e0SKuninori Morimoto */ 76*15ec87e0SKuninori Morimoto be_y: port@1 { reg = <1>; be_y_ep: endpoint { remote-endpoint = <&pcm3168a_y_ep>; }; }; 77*15ec87e0SKuninori Morimoto }; 78*15ec87e0SKuninori Morimoto }; 79*15ec87e0SKuninori Morimoto}; 80*15ec87e0SKuninori Morimoto 81*15ec87e0SKuninori Morimoto&pcm3168a { 82*15ec87e0SKuninori Morimoto ports { 83*15ec87e0SKuninori Morimoto #address-cells = <1>; 84*15ec87e0SKuninori Morimoto #size-cells = <0>; 85*15ec87e0SKuninori Morimoto 86*15ec87e0SKuninori Morimoto mclk-fs = <512>; 87*15ec87e0SKuninori Morimoto prefix = "pcm3168a"; 88*15ec87e0SKuninori Morimoto 89*15ec87e0SKuninori Morimoto /* 90*15ec87e0SKuninori Morimoto * (Y) PCM3168A-p 91*15ec87e0SKuninori Morimoto */ 92*15ec87e0SKuninori Morimoto port@0 { 93*15ec87e0SKuninori Morimoto reg = <0>; 94*15ec87e0SKuninori Morimoto convert-channels = <8>; /* to 8ch TDM */ 95*15ec87e0SKuninori Morimoto pcm3168a_y_ep: endpoint { 96*15ec87e0SKuninori Morimoto remote-endpoint = <&be_y_ep>; 97*15ec87e0SKuninori Morimoto clocks = <&clksndsel>; 98*15ec87e0SKuninori Morimoto }; 99*15ec87e0SKuninori Morimoto }; 100*15ec87e0SKuninori Morimoto /* 101*15ec87e0SKuninori Morimoto * (Z) PCM3168A-c 102*15ec87e0SKuninori Morimoto */ 103*15ec87e0SKuninori Morimoto port@1 { 104*15ec87e0SKuninori Morimoto reg = <1>; 105*15ec87e0SKuninori Morimoto pcm3168a_z_ep: endpoint { 106*15ec87e0SKuninori Morimoto remote-endpoint = <&rsnd_g_ep>; 107*15ec87e0SKuninori Morimoto clocks = <&clksndsel>; 108*15ec87e0SKuninori Morimoto }; 109*15ec87e0SKuninori Morimoto }; 110*15ec87e0SKuninori Morimoto }; 111*15ec87e0SKuninori Morimoto}; 112*15ec87e0SKuninori Morimoto 113*15ec87e0SKuninori Morimoto&rcar_sound { 114*15ec87e0SKuninori Morimoto ports { 115*15ec87e0SKuninori Morimoto /* (A)/(B) are defined in ulcb.dtsi */ 116*15ec87e0SKuninori Morimoto 117*15ec87e0SKuninori Morimoto /* 118*15ec87e0SKuninori Morimoto * (C) CPU2 119*15ec87e0SKuninori Morimoto */ 120*15ec87e0SKuninori Morimoto port@2 { 121*15ec87e0SKuninori Morimoto reg = <2>; 122*15ec87e0SKuninori Morimoto rsnd_c_ep: endpoint { 123*15ec87e0SKuninori Morimoto remote-endpoint = <&fe_c_ep>; 124*15ec87e0SKuninori Morimoto bitclock-master; 125*15ec87e0SKuninori Morimoto frame-master; 126*15ec87e0SKuninori Morimoto playback = <&ssiu30 &ssi3>; 127*15ec87e0SKuninori Morimoto }; 128*15ec87e0SKuninori Morimoto }; 129*15ec87e0SKuninori Morimoto /* 130*15ec87e0SKuninori Morimoto * (D) CPU3 131*15ec87e0SKuninori Morimoto */ 132*15ec87e0SKuninori Morimoto port@3 { 133*15ec87e0SKuninori Morimoto reg = <3>; 134*15ec87e0SKuninori Morimoto rsnd_d_ep: endpoint { 135*15ec87e0SKuninori Morimoto remote-endpoint = <&fe_d_ep>; 136*15ec87e0SKuninori Morimoto bitclock-master; 137*15ec87e0SKuninori Morimoto frame-master; 138*15ec87e0SKuninori Morimoto playback = <&ssiu31 &ssi3>; 139*15ec87e0SKuninori Morimoto }; 140*15ec87e0SKuninori Morimoto }; 141*15ec87e0SKuninori Morimoto /* 142*15ec87e0SKuninori Morimoto * (E) CPU4 143*15ec87e0SKuninori Morimoto */ 144*15ec87e0SKuninori Morimoto port@4 { 145*15ec87e0SKuninori Morimoto reg = <4>; 146*15ec87e0SKuninori Morimoto rsnd_e_ep: endpoint { 147*15ec87e0SKuninori Morimoto remote-endpoint = <&fe_e_ep>; 148*15ec87e0SKuninori Morimoto bitclock-master; 149*15ec87e0SKuninori Morimoto frame-master; 150*15ec87e0SKuninori Morimoto playback = <&ssiu32 &ssi3>; 151*15ec87e0SKuninori Morimoto }; 152*15ec87e0SKuninori Morimoto }; 153*15ec87e0SKuninori Morimoto /* 154*15ec87e0SKuninori Morimoto * (F) CPU5 155*15ec87e0SKuninori Morimoto */ 156*15ec87e0SKuninori Morimoto port@5 { 157*15ec87e0SKuninori Morimoto reg = <5>; 158*15ec87e0SKuninori Morimoto rsnd_f_ep: endpoint { 159*15ec87e0SKuninori Morimoto remote-endpoint = <&fe_f_ep>; 160*15ec87e0SKuninori Morimoto bitclock-master; 161*15ec87e0SKuninori Morimoto frame-master; 162*15ec87e0SKuninori Morimoto playback = <&ssiu33 &ssi3>; 163*15ec87e0SKuninori Morimoto }; 164*15ec87e0SKuninori Morimoto }; 165*15ec87e0SKuninori Morimoto /* 166*15ec87e0SKuninori Morimoto * (G) CPU6 167*15ec87e0SKuninori Morimoto */ 168*15ec87e0SKuninori Morimoto rsnd_g: port@6 { 169*15ec87e0SKuninori Morimoto reg = <6>; 170*15ec87e0SKuninori Morimoto rsnd_g_ep: endpoint { 171*15ec87e0SKuninori Morimoto remote-endpoint = <&pcm3168a_z_ep>; 172*15ec87e0SKuninori Morimoto bitclock-master; 173*15ec87e0SKuninori Morimoto frame-master; 174*15ec87e0SKuninori Morimoto capture = <&ssi4>; 175*15ec87e0SKuninori Morimoto }; 176*15ec87e0SKuninori Morimoto }; 177*15ec87e0SKuninori Morimoto }; 178*15ec87e0SKuninori Morimoto}; 179