1ccb26ac5SKuninori Morimoto// SPDX-License-Identifier: GPL-2.0 2ccb26ac5SKuninori Morimoto/* 3ccb26ac5SKuninori Morimoto * Device Tree for ULCB + Kingfisher + Audio Graph Card (MIX + TDM Split) 4ccb26ac5SKuninori Morimoto * 5ccb26ac5SKuninori Morimoto * Copyright (C) 2022 Renesas Electronics Corp. 6ccb26ac5SKuninori Morimoto */ 7ccb26ac5SKuninori Morimoto 8ccb26ac5SKuninori Morimoto/* 9ccb26ac5SKuninori Morimoto * Note: 10ccb26ac5SKuninori Morimoto * The HDMI output is ignored due to the limited number of subdevices 11ccb26ac5SKuninori Morimoto * 12ccb26ac5SKuninori Morimoto * (A) CPU0 (2ch) <----> (2ch) (X) ak4613 (MIX-0) 13ccb26ac5SKuninori Morimoto * (B) CPU1 (2ch) --/ (MIX-1) 14ccb26ac5SKuninori Morimoto * (C) CPU2 (2ch) ----> (8ch) (Y) PCM3168A-p (TDM-0 : 0,1ch) 15ccb26ac5SKuninori Morimoto * (D) CPU3 (2ch) --/ (TDM-1 : 2,3ch) 16ccb26ac5SKuninori Morimoto * (E) CPU4 (2ch) --/ (TDM-2 : 4,5ch) 17ccb26ac5SKuninori Morimoto * (F) CPU5 (2ch) --/ (TDM-3 : 6,7ch) 18*35a1c35eSKuninori Morimoto * (G) CPU6 (2ch) <---- (6ch) (Z) PCM3168A-c (TDM-a: 0,1ch) 19*35a1c35eSKuninori Morimoto * (H) CPU7 (2ch) <--/ (TDM-b: 2,3ch) 20*35a1c35eSKuninori Morimoto * (I) CPU8 (2ch) <--/ (TDM-c: 4,5ch) 21ccb26ac5SKuninori Morimoto * 22ccb26ac5SKuninori Morimoto * (A) aplay -D plughw:0,0 xxx.wav (MIX-0) 23ccb26ac5SKuninori Morimoto * (B) aplay -D plughw:0,1 xxx.wav (MIX-1) 24d70be079SKuninori Morimoto * (C) aplay -D plughw:1,0 xxx.wav (TDM-0) 25d70be079SKuninori Morimoto * (D) aplay -D plughw:1,1 xxx.wav (TDM-1) 26d70be079SKuninori Morimoto * (E) aplay -D plughw:1,2 xxx.wav (TDM-2) 27d70be079SKuninori Morimoto * (F) aplay -D plughw:1,3 xxx.wav (TDM-3) 28ccb26ac5SKuninori Morimoto * 29ccb26ac5SKuninori Morimoto * (A) arecord -D plughw:0,0 xxx.wav 30*35a1c35eSKuninori Morimoto * (G) arecord -D plughw:1,4 xxx.wav (TDM-a) 31*35a1c35eSKuninori Morimoto * (H) arecord -D plughw:1,5 xxx.wav (TDM-b) 32*35a1c35eSKuninori Morimoto * (I) arecord -D plughw:1,6 xxx.wav (TDM-c) 33ccb26ac5SKuninori Morimoto */ 34d70be079SKuninori Morimoto/ { 35d70be079SKuninori Morimoto sound_card_kf: expand-sound { 36d70be079SKuninori Morimoto compatible = "audio-graph-scu-card"; 37d70be079SKuninori Morimoto label = "snd-kf-split"; 38ccb26ac5SKuninori Morimoto 39d70be079SKuninori Morimoto routing = "pcm3168a Playback", "DAI2 Playback", 40ccb26ac5SKuninori Morimoto "pcm3168a Playback", "DAI3 Playback", 41ccb26ac5SKuninori Morimoto "pcm3168a Playback", "DAI4 Playback", 42*35a1c35eSKuninori Morimoto "pcm3168a Playback", "DAI5 Playback", 43*35a1c35eSKuninori Morimoto "DAI6 Capture", "pcm3168a Capture", 44*35a1c35eSKuninori Morimoto "DAI7 Capture", "pcm3168a Capture", 45*35a1c35eSKuninori Morimoto "DAI8 Capture", "pcm3168a Capture"; 46ccb26ac5SKuninori Morimoto 47d70be079SKuninori Morimoto dais = <&snd_kf1 /* (C) CPU2 */ 48d70be079SKuninori Morimoto &snd_kf2 /* (D) CPU3 */ 49d70be079SKuninori Morimoto &snd_kf3 /* (E) CPU4 */ 50d70be079SKuninori Morimoto &snd_kf4 /* (F) CPU5 */ 51*35a1c35eSKuninori Morimoto &snd_kf5 /* (G) CPU6 */ 52*35a1c35eSKuninori Morimoto &snd_kf6 /* (H) CPU7 */ 53*35a1c35eSKuninori Morimoto &snd_kf7 /* (I) CPU8 */ 54ccb26ac5SKuninori Morimoto >; 55ccb26ac5SKuninori Morimoto }; 56d70be079SKuninori Morimoto}; 57ccb26ac5SKuninori Morimoto 58ccb26ac5SKuninori Morimoto&pcm3168a { 59ccb26ac5SKuninori Morimoto ports { 60ccb26ac5SKuninori Morimoto #address-cells = <1>; 61ccb26ac5SKuninori Morimoto #size-cells = <0>; 62*35a1c35eSKuninori Morimoto 63ccb26ac5SKuninori Morimoto mclk-fs = <512>; 64*35a1c35eSKuninori Morimoto prefix = "pcm3168a"; 65ccb26ac5SKuninori Morimoto 66ccb26ac5SKuninori Morimoto /* 67ccb26ac5SKuninori Morimoto * (Y) PCM3168A-p 68ccb26ac5SKuninori Morimoto */ 69ccb26ac5SKuninori Morimoto port@0 { 70ccb26ac5SKuninori Morimoto #address-cells = <1>; 71ccb26ac5SKuninori Morimoto #size-cells = <0>; 72ccb26ac5SKuninori Morimoto reg = <0>; 73ccb26ac5SKuninori Morimoto convert-channels = <8>; /* to 8ch TDM */ 74ccb26ac5SKuninori Morimoto 75ccb26ac5SKuninori Morimoto /* (C) CPU2 -> (Y) PCM3168A-p */ 76ccb26ac5SKuninori Morimoto pcm3168a_endpoint_p1: endpoint@0 { 77ccb26ac5SKuninori Morimoto reg = <0>; 78ccb26ac5SKuninori Morimoto remote-endpoint = <&rsnd_for_pcm3168a_play1>; 79ccb26ac5SKuninori Morimoto clocks = <&clksndsel>; 80ccb26ac5SKuninori Morimoto }; 81ccb26ac5SKuninori Morimoto /* (D) CPU3 -> (Y) PCM3168A-p */ 82ccb26ac5SKuninori Morimoto pcm3168a_endpoint_p2: endpoint@1 { 83ccb26ac5SKuninori Morimoto reg = <1>; 84ccb26ac5SKuninori Morimoto remote-endpoint = <&rsnd_for_pcm3168a_play2>; 85ccb26ac5SKuninori Morimoto clocks = <&clksndsel>; 86ccb26ac5SKuninori Morimoto }; 87ccb26ac5SKuninori Morimoto /* (E) CPU4 -> (Y) PCM3168A-p */ 88ccb26ac5SKuninori Morimoto pcm3168a_endpoint_p3: endpoint@2 { 89ccb26ac5SKuninori Morimoto reg = <2>; 90ccb26ac5SKuninori Morimoto remote-endpoint = <&rsnd_for_pcm3168a_play3>; 91ccb26ac5SKuninori Morimoto clocks = <&clksndsel>; 92ccb26ac5SKuninori Morimoto }; 93ccb26ac5SKuninori Morimoto /* (F) CPU5 -> (Y) PCM3168A-p */ 94ccb26ac5SKuninori Morimoto pcm3168a_endpoint_p4: endpoint@3 { 95ccb26ac5SKuninori Morimoto reg = <3>; 96ccb26ac5SKuninori Morimoto remote-endpoint = <&rsnd_for_pcm3168a_play4>; 97ccb26ac5SKuninori Morimoto clocks = <&clksndsel>; 98ccb26ac5SKuninori Morimoto }; 99ccb26ac5SKuninori Morimoto }; 100ccb26ac5SKuninori Morimoto /* 101ccb26ac5SKuninori Morimoto * (Z) PCM3168A-c 102ccb26ac5SKuninori Morimoto */ 103ccb26ac5SKuninori Morimoto port@1 { 104*35a1c35eSKuninori Morimoto #address-cells = <1>; 105*35a1c35eSKuninori Morimoto #size-cells = <0>; 106ccb26ac5SKuninori Morimoto reg = <1>; 107*35a1c35eSKuninori Morimoto 108*35a1c35eSKuninori Morimoto convert-channels = <6>; /* to 6ch TDM */ 109*35a1c35eSKuninori Morimoto 110ccb26ac5SKuninori Morimoto /* (G) CPU6 <- PCM3168A-c */ 111*35a1c35eSKuninori Morimoto pcm3168a_endpoint_c1: endpoint@0 { 112*35a1c35eSKuninori Morimoto reg = <0>; 113*35a1c35eSKuninori Morimoto remote-endpoint = <&rsnd_for_pcm3168a_capture1>; 114*35a1c35eSKuninori Morimoto clocks = <&clksndsel>; 115*35a1c35eSKuninori Morimoto }; 116*35a1c35eSKuninori Morimoto /* (H) CPU7 <- PCM3168A-c */ 117*35a1c35eSKuninori Morimoto pcm3168a_endpoint_c2: endpoint@1 { 118*35a1c35eSKuninori Morimoto reg = <1>; 119*35a1c35eSKuninori Morimoto remote-endpoint = <&rsnd_for_pcm3168a_capture2>; 120*35a1c35eSKuninori Morimoto clocks = <&clksndsel>; 121*35a1c35eSKuninori Morimoto }; 122*35a1c35eSKuninori Morimoto /* (I) CPU8 <- PCM3168A-c */ 123*35a1c35eSKuninori Morimoto pcm3168a_endpoint_c3: endpoint@2 { 124*35a1c35eSKuninori Morimoto reg = <2>; 125*35a1c35eSKuninori Morimoto remote-endpoint = <&rsnd_for_pcm3168a_capture3>; 126ccb26ac5SKuninori Morimoto clocks = <&clksndsel>; 127ccb26ac5SKuninori Morimoto }; 128ccb26ac5SKuninori Morimoto }; 129ccb26ac5SKuninori Morimoto }; 130ccb26ac5SKuninori Morimoto}; 131ccb26ac5SKuninori Morimoto 132ccb26ac5SKuninori Morimoto&rcar_sound { 133d70be079SKuninori Morimoto ports@1 { 134d70be079SKuninori Morimoto #address-cells = <1>; 135d70be079SKuninori Morimoto #size-cells = <0>; 136d70be079SKuninori Morimoto reg = <1>; 137ccb26ac5SKuninori Morimoto 138ccb26ac5SKuninori Morimoto /* 139ccb26ac5SKuninori Morimoto * (C) CPU2 140ccb26ac5SKuninori Morimoto */ 141d70be079SKuninori Morimoto snd_kf1: port@2 { 142ccb26ac5SKuninori Morimoto reg = <2>; 143ccb26ac5SKuninori Morimoto rsnd_for_pcm3168a_play1: endpoint { 144ccb26ac5SKuninori Morimoto remote-endpoint = <&pcm3168a_endpoint_p1>; 145ccb26ac5SKuninori Morimoto bitclock-master; 146ccb26ac5SKuninori Morimoto frame-master; 147ccb26ac5SKuninori Morimoto playback = <&ssiu30 &ssi3>; 148ccb26ac5SKuninori Morimoto }; 149ccb26ac5SKuninori Morimoto }; 150ccb26ac5SKuninori Morimoto /* 151ccb26ac5SKuninori Morimoto * (D) CPU3 152ccb26ac5SKuninori Morimoto */ 153d70be079SKuninori Morimoto snd_kf2: port@3 { 154ccb26ac5SKuninori Morimoto reg = <3>; 155ccb26ac5SKuninori Morimoto rsnd_for_pcm3168a_play2: endpoint { 156ccb26ac5SKuninori Morimoto remote-endpoint = <&pcm3168a_endpoint_p2>; 157ccb26ac5SKuninori Morimoto bitclock-master; 158ccb26ac5SKuninori Morimoto frame-master; 159ccb26ac5SKuninori Morimoto playback = <&ssiu31 &ssi3>; 160ccb26ac5SKuninori Morimoto }; 161ccb26ac5SKuninori Morimoto }; 162ccb26ac5SKuninori Morimoto /* 163ccb26ac5SKuninori Morimoto * (E) CPU4 164ccb26ac5SKuninori Morimoto */ 165d70be079SKuninori Morimoto snd_kf3: port@4 { 166ccb26ac5SKuninori Morimoto reg = <4>; 167ccb26ac5SKuninori Morimoto rsnd_for_pcm3168a_play3: endpoint { 168ccb26ac5SKuninori Morimoto remote-endpoint = <&pcm3168a_endpoint_p3>; 169ccb26ac5SKuninori Morimoto bitclock-master; 170ccb26ac5SKuninori Morimoto frame-master; 171ccb26ac5SKuninori Morimoto playback = <&ssiu32 &ssi3>; 172ccb26ac5SKuninori Morimoto }; 173ccb26ac5SKuninori Morimoto }; 174ccb26ac5SKuninori Morimoto /* 175ccb26ac5SKuninori Morimoto * (F) CPU5 176ccb26ac5SKuninori Morimoto */ 177d70be079SKuninori Morimoto snd_kf4: port@5 { 178ccb26ac5SKuninori Morimoto reg = <5>; 179ccb26ac5SKuninori Morimoto rsnd_for_pcm3168a_play4: endpoint { 180ccb26ac5SKuninori Morimoto remote-endpoint = <&pcm3168a_endpoint_p4>; 181ccb26ac5SKuninori Morimoto bitclock-master; 182ccb26ac5SKuninori Morimoto frame-master; 183ccb26ac5SKuninori Morimoto playback = <&ssiu33 &ssi3>; 184ccb26ac5SKuninori Morimoto }; 185ccb26ac5SKuninori Morimoto }; 186ccb26ac5SKuninori Morimoto /* 187ccb26ac5SKuninori Morimoto * (G) CPU6 188ccb26ac5SKuninori Morimoto */ 189d70be079SKuninori Morimoto snd_kf5: port@6 { 190ccb26ac5SKuninori Morimoto reg = <6>; 191*35a1c35eSKuninori Morimoto rsnd_for_pcm3168a_capture1: endpoint { 192*35a1c35eSKuninori Morimoto remote-endpoint = <&pcm3168a_endpoint_c1>; 193ccb26ac5SKuninori Morimoto bitclock-master; 194ccb26ac5SKuninori Morimoto frame-master; 195*35a1c35eSKuninori Morimoto capture = <&ssiu40 &ssi4>; 196*35a1c35eSKuninori Morimoto }; 197*35a1c35eSKuninori Morimoto }; 198*35a1c35eSKuninori Morimoto /* 199*35a1c35eSKuninori Morimoto * (H) CPU7 200*35a1c35eSKuninori Morimoto */ 201*35a1c35eSKuninori Morimoto snd_kf6: port@7 { 202*35a1c35eSKuninori Morimoto reg = <7>; 203*35a1c35eSKuninori Morimoto rsnd_for_pcm3168a_capture2: endpoint { 204*35a1c35eSKuninori Morimoto remote-endpoint = <&pcm3168a_endpoint_c2>; 205*35a1c35eSKuninori Morimoto bitclock-master; 206*35a1c35eSKuninori Morimoto frame-master; 207*35a1c35eSKuninori Morimoto capture = <&ssiu41 &ssi4>; 208*35a1c35eSKuninori Morimoto }; 209*35a1c35eSKuninori Morimoto }; 210*35a1c35eSKuninori Morimoto /* 211*35a1c35eSKuninori Morimoto * (I) CPU8 212*35a1c35eSKuninori Morimoto */ 213*35a1c35eSKuninori Morimoto snd_kf7: port@8 { 214*35a1c35eSKuninori Morimoto reg = <8>; 215*35a1c35eSKuninori Morimoto rsnd_for_pcm3168a_capture3: endpoint { 216*35a1c35eSKuninori Morimoto remote-endpoint = <&pcm3168a_endpoint_c3>; 217*35a1c35eSKuninori Morimoto bitclock-master; 218*35a1c35eSKuninori Morimoto frame-master; 219*35a1c35eSKuninori Morimoto capture = <&ssiu42 &ssi4>; 220ccb26ac5SKuninori Morimoto }; 221ccb26ac5SKuninori Morimoto }; 222ccb26ac5SKuninori Morimoto }; 223ccb26ac5SKuninori Morimoto}; 224