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